From 036445a57b149dec82c72e48b98ae4b7b7c6c2b8 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Sun, 8 Jan 2023 23:56:30 -0600 Subject: Initial progress of huge refactoring job that I really, really shouldn't be doing --- .../dsub/activity/SubsonicActivity.java | 346 ++++++++++----------- 1 file changed, 157 insertions(+), 189 deletions(-) (limited to 'app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java') diff --git a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java index 167f3dd7..1063c72e 100644 --- a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java +++ b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java @@ -19,20 +19,21 @@ package github.daneren2005.dsub.activity; import android.Manifest; -import android.app.UiModeManager; +import android.annotation.SuppressLint; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; -import android.content.res.Configuration; import android.media.AudioManager; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import com.google.android.material.navigation.NavigationView; + +import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.appcompat.app.ActionBarDrawerToggle; @@ -49,10 +50,8 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -import android.view.Window; import android.view.WindowManager; import android.view.animation.AnimationUtils; import android.widget.AdapterView; @@ -67,6 +66,7 @@ import java.io.File; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import github.daneren2005.dsub.R; import github.daneren2005.dsub.domain.ServerInfo; @@ -103,7 +103,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte private boolean drawerIdle = true; private boolean destroyed = false; private boolean finished = false; - protected List backStack = new ArrayList(); + protected List backStack = new ArrayList<>(); protected SubsonicFragment currentFragment; protected View primaryContainer; protected View secondaryContainer; @@ -111,7 +111,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte protected boolean touchscreen = true; protected Handler handler = new Handler(); Spinner actionBarSpinner; - ArrayAdapter spinnerAdapter; + ArrayAdapter spinnerAdapter; ViewGroup rootView; DrawerLayout drawer; ActionBarDrawerToggle drawerToggle; @@ -127,15 +127,11 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte SharedPreferences.OnSharedPreferenceChangeListener preferencesListener; static { - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO); + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); } @Override protected void onCreate(Bundle bundle) { - UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE); - if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { - // tv = true; - } PackageManager pm = getPackageManager(); if(!pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN)) { touchscreen = false; @@ -153,30 +149,27 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte } if(preferencesListener == null) { - preferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() { - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - // When changing drawer settings change visibility - switch(key) { - case Constants.PREFERENCES_KEY_PODCASTS_ENABLED: - setDrawerItemVisible(R.id.drawer_podcasts, false); - break; - case Constants.PREFERENCES_KEY_BOOKMARKS_ENABLED: - setDrawerItemVisible(R.id.drawer_bookmarks, false); - break; - case Constants.PREFERENCES_KEY_INTERNET_RADIO_ENABLED: - setDrawerItemVisible(R.id.drawer_internet_radio_stations, false); - break; - case Constants.PREFERENCES_KEY_SHARED_ENABLED: - setDrawerItemVisible(R.id.drawer_shares, false); - break; - case Constants.PREFERENCES_KEY_CHAT_ENABLED: - setDrawerItemVisible(R.id.drawer_chat, false); - break; - case Constants.PREFERENCES_KEY_ADMIN_ENABLED: - setDrawerItemVisible(R.id.drawer_admin, false); - break; - } + preferencesListener = (sharedPreferences, key) -> { + // When changing drawer settings change visibility + switch(key) { + case Constants.PREFERENCES_KEY_PODCASTS_ENABLED: + setDrawerItemVisible(R.id.drawer_podcasts, false); + break; + case Constants.PREFERENCES_KEY_BOOKMARKS_ENABLED: + setDrawerItemVisible(R.id.drawer_bookmarks, false); + break; + case Constants.PREFERENCES_KEY_INTERNET_RADIO_ENABLED: + setDrawerItemVisible(R.id.drawer_internet_radio_stations, false); + break; + case Constants.PREFERENCES_KEY_SHARED_ENABLED: + setDrawerItemVisible(R.id.drawer_shares, false); + break; + case Constants.PREFERENCES_KEY_CHAT_ENABLED: + setDrawerItemVisible(R.id.drawer_chat, false); + break; + case Constants.PREFERENCES_KEY_ADMIN_ENABLED: + setDrawerItemVisible(R.id.drawer_admin, false); + break; } }; Util.getPreferences(this).registerOnSharedPreferenceChangeListener(preferencesListener); @@ -199,22 +192,19 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte } @Override - public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: { // If request is cancelled, the result arrays are empty. - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - - } else { + if (grantResults.length <= 0 || grantResults[0] != PackageManager.PERMISSION_GRANTED) { Util.toast(this, R.string.permission_external_storage_failed); finish(); } } case PERMISSIONS_REQUEST_LOCATION: { // If request is cancelled, the result arrays are empty. - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - - } else { + if (grantResults.length <= 0 || grantResults[0] != PackageManager.PERMISSION_GRANTED) { Util.toast(this, R.string.permission_location_failed); } } @@ -228,7 +218,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte if(spinnerAdapter == null) { createCustomActionBarView(); } - getSupportActionBar().setDisplayHomeAsUpEnabled(true); + Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); // Sync the toggle state after onRestoreInstanceState has occurred. @@ -245,15 +235,17 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte protected void createCustomActionBarView() { actionBarSpinner = (Spinner) getLayoutInflater().inflate(R.layout.actionbar_spinner, null); - if((this instanceof SubsonicFragmentActivity || this instanceof SettingsActivity) && (Util.getPreferences(this).getBoolean(Constants.PREFERENCES_KEY_COLOR_ACTION_BAR, true) || ThemeUtil.getThemeRes(this) != R.style.Theme_DSub_Light_No_Color)) { - actionBarSpinner.setBackgroundDrawable(DrawableTint.getTintedDrawableFromColor(this, R.drawable.abc_spinner_mtrl_am_alpha, android.R.color.white)); + if((this instanceof SubsonicFragmentActivity || this instanceof SettingsActivity) + && (Util.getPreferences(this).getBoolean(Constants.PREFERENCES_KEY_COLOR_ACTION_BAR, true) + || ThemeUtil.getThemeRes(this) != R.style.Theme_DSub_Light_No_Color)) { + actionBarSpinner.setBackground(DrawableTint.getTintedDrawableFromColor(this, R.drawable.abc_spinner_mtrl_am_alpha, android.R.color.white)); } - spinnerAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item); + spinnerAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); actionBarSpinner.setOnItemSelectedListener(this); actionBarSpinner.setAdapter(spinnerAdapter); - getSupportActionBar().setCustomView(actionBarSpinner); + Objects.requireNonNull(getSupportActionBar()).setCustomView(actionBarSpinner); } @Override @@ -303,6 +295,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte Util.disablePendingTransition(this); } + @SuppressLint("ClickableViewAccessibility") @Override public void setContentView(int viewId) { if(isTv()) { @@ -320,88 +313,79 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte } drawerList = (NavigationView) findViewById(R.id.left_drawer); - drawerList.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { - @Override - public boolean onNavigationItemSelected(final MenuItem menuItem) { - if(showingTabs) { - // Settings are on a different selectable track - if (menuItem.getItemId() != R.id.drawer_settings && menuItem.getItemId() != R.id.drawer_admin && menuItem.getItemId() != R.id.drawer_offline) { + drawerList.setNavigationItemSelectedListener(menuItem -> { + if(showingTabs) { + // Settings are on a different selectable track + if (menuItem.getItemId() != R.id.drawer_settings && menuItem.getItemId() != R.id.drawer_admin && menuItem.getItemId() != R.id.drawer_offline) { + menuItem.setChecked(true); + lastSelectedPosition = menuItem.getItemId(); + } + + int id = menuItem.getItemId(); + if (id == R.id.drawer_home) { + drawerItemSelected("Home"); + return true; + } else if (id == R.id.drawer_library) { + drawerItemSelected("Artist"); + return true; + } else if (id == R.id.drawer_playlists) { + drawerItemSelected("Playlist"); + return true; + } else if (id == R.id.drawer_podcasts) { + drawerItemSelected("Podcast"); + return true; + } else if (id == R.id.drawer_bookmarks) { + drawerItemSelected("Bookmark"); + return true; + } else if (id == R.id.drawer_internet_radio_stations) { + drawerItemSelected("Internet Radio"); + return true; + } else if (id == R.id.drawer_shares) { + drawerItemSelected("Share"); + return true; + } else if (id == R.id.drawer_chat) { + drawerItemSelected("Chat"); + return true; + } else if (id == R.id.drawer_admin) { + if (UserUtil.isCurrentAdmin()) { + UserUtil.confirmCredentials(SubsonicActivity.this, () -> { + drawerItemSelected("Admin"); + menuItem.setChecked(true); + lastSelectedPosition = menuItem.getItemId(); + }); + } else { + drawerItemSelected("Admin"); menuItem.setChecked(true); lastSelectedPosition = menuItem.getItemId(); } - - switch (menuItem.getItemId()) { - case R.id.drawer_home: - drawerItemSelected("Home"); - return true; - case R.id.drawer_library: - drawerItemSelected("Artist"); - return true; - case R.id.drawer_playlists: - drawerItemSelected("Playlist"); - return true; - case R.id.drawer_podcasts: - drawerItemSelected("Podcast"); - return true; - case R.id.drawer_bookmarks: - drawerItemSelected("Bookmark"); - return true; - case R.id.drawer_internet_radio_stations: - drawerItemSelected("Internet Radio"); - return true; - case R.id.drawer_shares: - drawerItemSelected("Share"); - return true; - case R.id.drawer_chat: - drawerItemSelected("Chat"); - return true; - case R.id.drawer_admin: - if (UserUtil.isCurrentAdmin()) { - UserUtil.confirmCredentials(SubsonicActivity.this, new Runnable() { - @Override - public void run() { - drawerItemSelected("Admin"); - menuItem.setChecked(true); - lastSelectedPosition = menuItem.getItemId(); - } - }); - } else { - drawerItemSelected("Admin"); - menuItem.setChecked(true); - lastSelectedPosition = menuItem.getItemId(); - } - return true; - case R.id.drawer_downloading: - drawerItemSelected("Download"); - return true; - case R.id.drawer_offline: - toggleOffline(); - return true; - case R.id.drawer_settings: - startActivity(new Intent(SubsonicActivity.this, SettingsActivity.class)); - drawer.closeDrawers(); - return true; - } - } else { - int activeServer = menuItem.getItemId() - MENU_ITEM_SERVER_BASE; - SubsonicActivity.this.setActiveServer(activeServer); - populateTabs(); return true; + } else if (id == R.id.drawer_downloading) { + drawerItemSelected("Download"); + return true; + } else if (id == R.id.drawer_offline) { + toggleOffline(); + return true; + } else if (id == R.id.drawer_settings) { + startActivity(new Intent(SubsonicActivity.this, SettingsActivity.class)); + drawer.closeDrawers(); + return true; } - - return false; + } else { + int activeServer = menuItem.getItemId() - MENU_ITEM_SERVER_BASE; + SubsonicActivity.this.setActiveServer(activeServer); + populateTabs(); + return true; } + + return false; }); drawerHeader = drawerList.inflateHeaderView(R.layout.drawer_header); - drawerHeader.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if(showingTabs) { - populateServers(); - } else { - populateTabs(); - } + drawerHeader.setOnClickListener(v -> { + if(showingTabs) { + populateServers(); + } else { + populateTabs(); } }); @@ -448,16 +432,14 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte drawerIdle = false; } }; - drawer.setDrawerListener(drawerToggle); + drawer.addDrawerListener(drawerToggle); drawerToggle.setDrawerIndicatorEnabled(true); - drawer.setOnTouchListener(new View.OnTouchListener() { - public boolean onTouch(View v, MotionEvent event) { - if (drawerIdle && currentFragment != null && currentFragment.getGestureDetector() != null) { - return currentFragment.getGestureDetector().onTouchEvent(event); - } else { - return false; - } + drawer.setOnTouchListener((v, event) -> { + if (drawerIdle && currentFragment != null && currentFragment.getGestureDetector() != null) { + return currentFragment.getGestureDetector().onTouchEvent(event); + } else { + return false; } }); } @@ -470,7 +452,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte } @Override - public void onSaveInstanceState(Bundle savedInstanceState) { + public void onSaveInstanceState(@NonNull Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); String[] ids = new String[backStack.size() + 1]; ids[0] = currentFragment.getTag(); @@ -490,17 +472,23 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte String[] ids = savedInstanceState.getStringArray(Constants.MAIN_BACK_STACK); FragmentManager fm = getSupportFragmentManager(); currentFragment = (SubsonicFragment)fm.findFragmentByTag(ids[0]); - currentFragment.setPrimaryFragment(true); - currentFragment.setSupportTag(ids[0]); + if (currentFragment != null) { + currentFragment.setPrimaryFragment(true); + currentFragment.setSupportTag(ids[0]); + } supportInvalidateOptionsMenu(); FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); for(int i = 1; i < size; i++) { SubsonicFragment frag = (SubsonicFragment)fm.findFragmentByTag(ids[i]); - frag.setSupportTag(ids[i]); - if(secondaryContainer != null) { + if (frag != null) { + frag.setSupportTag(ids[i]); + } + if(frag != null && secondaryContainer != null) { frag.setPrimaryFragment(false, true); } - trans.hide(frag); + if(frag != null) { + trans.hide(frag); + } backStack.add(frag); } trans.commit(); @@ -599,7 +587,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte } } public void setSubtitle(CharSequence title) { - getSupportActionBar().setSubtitle(title); + Objects.requireNonNull(getSupportActionBar()).setSubtitle(title); } @Override @@ -771,10 +759,12 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte currentFragment.setPrimaryFragment(true); supportInvalidateOptionsMenu(); - if(secondaryContainer == null || oldFragment.isAlwaysFullscreen() || currentFragment.isAlwaysStartFullscreen()) { + if(secondaryContainer == null || Objects.requireNonNull(oldFragment).isAlwaysFullscreen() || currentFragment.isAlwaysStartFullscreen()) { FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); trans.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right); - trans.hide(oldFragment); + if (oldFragment != null) { + trans.hide(oldFragment); + } trans.add(R.id.fragment_container, fragment, tag + ""); trans.commit(); } else { @@ -787,9 +777,9 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte if(backStack.size() > 1) { // Move old right to left if there is a backstack already SubsonicFragment newLeftFragment = backStack.get(backStack.size() - 1); - if(replaceCurrent) { - // trans.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right); - } +// if(replaceCurrent) { +// trans.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right); +// } trans.remove(newLeftFragment); // Only move right to left if replaceCurrent is false @@ -911,7 +901,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte if(currentFragment == null || currentFragment.getTitle() == null) { return; } - if(spinnerAdapter == null || getSupportActionBar().getCustomView() == null) { + if(spinnerAdapter == null || Objects.requireNonNull(getSupportActionBar()).getCustomView() == null) { createCustomActionBarView(); } @@ -921,30 +911,30 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte for(int i = 0; i < backStack.size(); i++) { CharSequence title = backStack.get(i).getTitle(); if(title != null) { - spinnerAdapter.add(title); + spinnerAdapter.add(title.toString()); } else { spinnerAdapter.add("null"); } } if(currentFragment.getTitle() != null) { - spinnerAdapter.add(currentFragment.getTitle()); + spinnerAdapter.add(currentFragment.getTitle().toString()); } else { spinnerAdapter.add("null"); } spinnerAdapter.notifyDataSetChanged(); actionBarSpinner.setSelection(spinnerAdapter.getCount() - 1); if(!isTv()) { - getSupportActionBar().setDisplayShowTitleEnabled(false); + Objects.requireNonNull(getSupportActionBar()).setDisplayShowTitleEnabled(false); getSupportActionBar().setDisplayShowCustomEnabled(true); } if(drawerToggle.isDrawerIndicatorEnabled()) { - getSupportActionBar().setDisplayHomeAsUpEnabled(false); + Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(false); drawerToggle.setDrawerIndicatorEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } else if(!isTv()) { - getSupportActionBar().setDisplayShowTitleEnabled(true); + Objects.requireNonNull(getSupportActionBar()).setDisplayShowTitleEnabled(true); getSupportActionBar().setTitle(currentFragment.getTitle()); getSupportActionBar().setDisplayShowCustomEnabled(false); drawerToggle.setDrawerIndicatorEnabled(true); @@ -971,7 +961,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte private void applyTheme() { theme = ThemeUtil.getTheme(this); - if(theme != null && theme.indexOf("fullscreen") != -1) { + if(theme != null && theme.contains("fullscreen")) { theme = theme.substring(0, theme.indexOf("_fullscreen")); ThemeUtil.setTheme(this, theme); } @@ -983,15 +973,11 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte fullScreen = Util.getPreferences(this).getBoolean(Constants.PREFERENCES_KEY_FULL_SCREEN, false); if(fullScreen || isTv()) { // Hide additional elements on higher Android versions - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - int flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | - View.SYSTEM_UI_FLAG_FULLSCREEN | - View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; - - getWindow().getDecorView().setSystemUiVisibility(flags); - } else if(Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - getWindow().requestFeature(Window.FEATURE_NO_TITLE); - } + int flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_FULLSCREEN | + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + + getWindow().getDecorView().setSystemUiVisibility(flags); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } } @@ -1048,12 +1034,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte } private void checkIfServiceAvailable() { if(getDownloadService() == null) { - handler.postDelayed(new Runnable() { - @Override - public void run() { - checkIfServiceAvailable(); - } - }, 50); + handler.postDelayed(this::checkIfServiceAvailable, 50); } else if(afterServiceAvailable.size() > 0) { for(Runnable runnable: afterServiceAvailable) { handler.post(runnable); @@ -1086,7 +1067,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte if (service != null) { new SilentBackgroundTask(this) { @Override - protected Void doInBackground() throws Throwable { + protected Void doInBackground() { service.clearIncomplete(); return null; } @@ -1159,28 +1140,17 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte .setTitle(R.string.offline_sync_dialog_title) .setMessage(this.getResources().getString(R.string.offline_sync_dialog_message, scrobbleCount, starsCount)) .setView(checkBoxView) - .setPositiveButton(R.string.common_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if(checkBox.isChecked()) { - Util.setSyncDefault(SubsonicActivity.this, "sync"); - } - syncOffline(scrobbleCount, starsCount); + .setPositiveButton(R.string.common_ok, (dialogInterface, i) -> { + if(checkBox.isChecked()) { + Util.setSyncDefault(SubsonicActivity.this, "sync"); } - }).setNeutralButton(R.string.common_cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - dialogInterface.dismiss(); - } - }).setNegativeButton(R.string.common_delete, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (checkBox.isChecked()) { - Util.setSyncDefault(SubsonicActivity.this, "delete"); - } - deleteOffline(); - } - }); + syncOffline(scrobbleCount, starsCount); + }).setNeutralButton(R.string.common_cancel, (dialogInterface, i) -> dialogInterface.dismiss()).setNegativeButton(R.string.common_delete, (dialogInterface, i) -> { + if (checkBox.isChecked()) { + Util.setSyncDefault(SubsonicActivity.this, "delete"); + } + deleteOffline(); + }); builder.create().show(); } @@ -1214,7 +1184,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte SharedPreferences.Editor offline = Util.getOfflineSync(this).edit(); offline.putInt(Constants.OFFLINE_SCROBBLE_COUNT, 0); offline.putInt(Constants.OFFLINE_STAR_COUNT, 0); - offline.commit(); + offline.apply(); } public int getDrawerItemId(String fragmentType) { @@ -1223,8 +1193,6 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte } switch(fragmentType) { - case "Home": - return R.id.drawer_home; case "Artist": return R.id.drawer_library; case "Playlist": @@ -1265,7 +1233,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte } @Override - public void uncaughtException(Thread thread, Throwable throwable) { + public void uncaughtException(@NonNull Thread thread, @NonNull Throwable throwable) { File file = null; PrintWriter printWriter = null; try { @@ -1273,7 +1241,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); file = new File(Environment.getExternalStorageDirectory(), "dsub-stacktrace.txt"); printWriter = new PrintWriter(file); - printWriter.println("Android API level: " + Build.VERSION.SDK); + printWriter.println("Android API level: " + Build.VERSION.SDK_INT); printWriter.println("Subsonic version name: " + packageInfo.versionName); printWriter.println("Subsonic version code: " + packageInfo.versionCode); printWriter.println(); -- cgit v1.2.3