diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index fffd751c9..4c25c5c28 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -656,12 +656,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi case SHOW_PROMPT: new AlertDialog.Builder(this) .setMessage(R.string.close_prompt) - .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - MainActivity.super.onBackPressed(); - } - }) + .setPositiveButton(R.string.yes, (dialogInterface, i) -> MainActivity.super.onBackPressed()) .setNegativeButton(R.string.no, null) .setCancelable(false) .show(); @@ -674,6 +669,27 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi super.onBackPressed(); } break; + case GO_TO_QUEUE: + if(getLastNavFragment().equals(QueueFragment.TAG)) { + super.onBackPressed(); + } else { + loadFragment(QueueFragment.TAG, null); + } + break; + case GO_TO_EPISODES: + if(getLastNavFragment().equals(EpisodesFragment.TAG)) { + super.onBackPressed(); + } else { + loadFragment(EpisodesFragment.TAG, null); + } + break; + case GO_TO_SUBSCRIPTIONS: + if(getLastNavFragment().equals(SubscriptionFragment.TAG)) { + super.onBackPressed(); + } else { + loadFragment(SubscriptionFragment.TAG, null); + } + break; default: super.onBackPressed(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index 1d93afad9..56af71dc4 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -227,6 +227,33 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc return true; }); + ui.findPreference(UserPreferences.PREF_BACK_BUTTON_BEHAVIOR) + .setOnPreferenceChangeListener((preference, newValue) -> { + if(newValue.equals("page")) { + final Context context = ui.getActivity(); + final String[] navTitles = context.getResources().getStringArray(R.array.back_button_go_to_pages); + final int choice[] = { UserPreferences.getBackButtonGoToPage() }; + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.back_button_go_to_page_title); + builder.setSingleChoiceItems(navTitles, choice[0], (dialogInterface, i) -> { + if(i >= 0) { + choice[0] = i; + } + }); + builder.setPositiveButton(R.string.confirm_label, (dialogInterface, i) -> { + if (choice[0] != UserPreferences.getBackButtonGoToPage()) { + UserPreferences.setBackButtonGoToPage(choice[0]); + } + }); + builder.setNegativeButton(R.string.cancel_label, null); + builder.create().show(); + return true; + } else { + return true; + } + }); + if (Build.VERSION.SDK_INT >= 26) { ui.findPreference(UserPreferences.PREF_EXPANDED_NOTIFICATION).setVisible(false); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index c80cfacba..f964fd23a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -52,7 +52,8 @@ public class UserPreferences { public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons"; public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground"; private static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport"; - private static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior"; + public static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior"; + private static final String PREF_BACK_BUTTON_GO_TO_PAGE = "prefBackButtonGoToPage"; // Queue private static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront"; @@ -812,7 +813,7 @@ public class UserPreferences { } public enum BackButtonBehavior { - DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT + DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT, GO_TO_QUEUE, GO_TO_EPISODES, GO_TO_SUBSCRIPTIONS } public static BackButtonBehavior getBackButtonBehavior() { @@ -821,7 +822,24 @@ public class UserPreferences { case "drawer": return BackButtonBehavior.OPEN_DRAWER; case "doubletap": return BackButtonBehavior.DOUBLE_TAP; case "prompt": return BackButtonBehavior.SHOW_PROMPT; + case "page": + switch (UserPreferences.getBackButtonGoToPage()) { + case 0: return BackButtonBehavior.GO_TO_QUEUE; + case 1: return BackButtonBehavior.GO_TO_EPISODES; + case 2: return BackButtonBehavior.GO_TO_SUBSCRIPTIONS; + default: return BackButtonBehavior.GO_TO_QUEUE; + } default: return BackButtonBehavior.DEFAULT; } } + + public static int getBackButtonGoToPage() { + return prefs.getInt(PREF_BACK_BUTTON_GO_TO_PAGE, 0); + } + + public static void setBackButtonGoToPage(int page) { + prefs.edit() + .putInt(PREF_BACK_BUTTON_GO_TO_PAGE, page) + .apply(); + } } diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index 2d84cbd70..3a618b8c2 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -280,6 +280,7 @@ @string/back_button_default + @string/back_button_go_to_page @string/back_button_open_drawer @string/back_button_double_tap @string/back_button_show_prompt @@ -287,8 +288,15 @@ default + page drawer doubletap prompt + + + @string/queue_label + @string/episodes_label + @string/subscriptions_label + diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index fd5535462..1a3c2373c 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -471,7 +471,7 @@ Stop playback Continue audio playback Behavior - Back button behavior + Back Button Behavior Change behavior of the back button. Default Open navigation drawer @@ -479,6 +479,8 @@ Confirm to exit Are you sure you want to close AntennaPod? Tap back button again to exit + Go to page + Select page Enable automatic flattring