From 723f1c0713c9c79ac005992dfcf32a52d858dee3 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Fri, 8 Oct 2021 20:21:08 +0800 Subject: New option: Main Page Back Button Action. It replaces Confirm to Exit. --- .../infinityforreddit/activities/MainActivity.java | 14 +++++--------- .../settings/MiscellaneousPreferenceFragment.java | 6 +++--- .../infinityforreddit/utils/SharedPreferencesUtils.java | 5 ++++- app/src/main/res/values/arrays.xml | 12 ++++++++++++ app/src/main/res/values/strings.xml | 4 +++- app/src/main/res/xml/miscellaneous_preferences.xml | 11 +++++++---- 6 files changed, 34 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java index 5afa6f17..1b25dffa 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java @@ -98,7 +98,6 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.SortTimeBottomS import ml.docilealligator.infinityforreddit.bottomsheetfragments.SortTypeBottomSheetFragment; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed; -import ml.docilealligator.infinityforreddit.events.ChangeConfirmToExitEvent; import ml.docilealligator.infinityforreddit.events.ChangeDisableSwipingBetweenTabsEvent; import ml.docilealligator.infinityforreddit.events.ChangeLockBottomAppBarEvent; import ml.docilealligator.infinityforreddit.events.ChangeNSFWEvent; @@ -231,7 +230,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb private String mMessageFullname; private String mNewAccountName; private boolean showBottomAppBar; - private boolean mConfirmToExit; + private int mBackButtonAction; private boolean mLockBottomAppBar; private boolean mDisableSwipingBetweenTabs; private boolean mShowFavoriteMultiReddits; @@ -312,7 +311,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb toggle.syncState(); showBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.BOTTOM_APP_BAR_KEY, true); - mConfirmToExit = mSharedPreferences.getBoolean(SharedPreferencesUtils.CONFIRM_TO_EXIT, false); + mBackButtonAction = Integer.parseInt(mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_BACK_BUTTON_ACTION, "0")); mLockBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.LOCK_BOTTOM_APP_BAR, false); mDisableSwipingBetweenTabs = mSharedPreferences.getBoolean(SharedPreferencesUtils.DISABLE_SWIPING_BETWEEN_TABS, false); @@ -1119,13 +1118,15 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { - if (mConfirmToExit) { + if (mBackButtonAction == SharedPreferencesUtils.MAIN_PAGE_BACK_BUTTON_ACTION_CONFIRM_EXIT) { new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme) .setTitle(R.string.exit_app) .setPositiveButton(R.string.yes, (dialogInterface, i) -> finish()) .setNegativeButton(R.string.no, null) .show(); + } else if (mBackButtonAction == SharedPreferencesUtils.MAIN_PAGE_BACK_BUTTON_ACTION_OPEN_NAVIGATION_DRAWER) { + drawer.openDrawer(GravityCompat.START); } else { super.onBackPressed(); } @@ -1245,11 +1246,6 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb ActivityCompat.recreate(this); } - @Subscribe - public void onChangeConfirmToExitEvent(ChangeConfirmToExitEvent changeConfirmToExitEvent) { - mConfirmToExit = changeConfirmToExitEvent.confirmToExit; - } - @Subscribe public void onChangeLockBottomAppBar(ChangeLockBottomAppBarEvent changeLockBottomAppBarEvent) { mLockBottomAppBar = changeLockBottomAppBarEvent.lockBottomAppBar; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/settings/MiscellaneousPreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/settings/MiscellaneousPreferenceFragment.java index f33dd57f..b98f37e5 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/settings/MiscellaneousPreferenceFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/settings/MiscellaneousPreferenceFragment.java @@ -39,12 +39,12 @@ public class MiscellaneousPreferenceFragment extends PreferenceFragmentCompat { ((Infinity) activity.getApplication()).getAppComponent().inject(this); - SwitchPreference confirmToExitSwitch = findPreference(SharedPreferencesUtils.CONFIRM_TO_EXIT); + ListPreference mainPageBackButtonActionListPreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_BACK_BUTTON_ACTION); SwitchPreference savePostFeedScrolledPositionSwitch = findPreference(SharedPreferencesUtils.SAVE_FRONT_PAGE_SCROLLED_POSITION); ListPreference languageListPreference = findPreference(SharedPreferencesUtils.LANGUAGE); - if (confirmToExitSwitch != null) { - confirmToExitSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + if (mainPageBackButtonActionListPreference != null) { + mainPageBackButtonActionListPreference.setOnPreferenceChangeListener((preference, newValue) -> { EventBus.getDefault().post(new RecreateActivityEvent()); return true; }); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java index e1694e47..6e83f822 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java @@ -105,7 +105,9 @@ public class SharedPreferencesUtils { public static final String SWAP_TAP_AND_LONG_COMMENTS = "swap_tap_and_long_in_comments"; public static final String SWIPE_UP_TO_HIDE_JUMP_TO_NEXT_TOP_LEVEL_COMMENT_BUTTON = "swipe_up_to_hide_jump_to_next_top_level_comments_button"; public static final String SHOW_TOP_LEVEL_COMMENTS_FIRST = "show_top_level_comments_first"; - public static final String CONFIRM_TO_EXIT = "confirm_to_exit"; + public static final String MAIN_PAGE_BACK_BUTTON_ACTION = "main_page_back_button_action"; + public static final int MAIN_PAGE_BACK_BUTTON_ACTION_CONFIRM_EXIT = 1; + public static final int MAIN_PAGE_BACK_BUTTON_ACTION_OPEN_NAVIGATION_DRAWER = 2; public static final String LOCK_BOTTOM_APP_BAR = "lock_bottom_app_bar"; public static final String COMMENT_TOOLBAR_HIDDEN = "comment_toolbar_hidden"; public static final String COMMENT_TOOLBAR_HIDE_ON_CLICK = "comment_toolbar_hide_on_click"; @@ -358,4 +360,5 @@ public class SharedPreferencesUtils { public static final String NSFW_KEY_LEGACY = "nsfw"; public static final String BLUR_NSFW_KEY_LEGACY = "blur_nsfw"; public static final String BLUR_SPOILER_KEY_LEGACY = "blur_spoiler"; + public static final String CONFIRM_TO_EXIT_LEGACY = "confirm_to_exit"; } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 330abd60..e59c5abd 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -508,4 +508,16 @@ 86400000 + + @string/default_in_array + @string/settings_confirm_to_exit + @string/settings_open_navigation_drawer + + + + 0 + 1 + 2 + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0a66d129..203126ca 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -190,7 +190,7 @@ Could not send this message Please select a subreddit first - The post need a good title + The post needs a good title Hey where is the link? Please select an image first Posting @@ -391,7 +391,9 @@ Automatically Try Accessing Redgifs if Videos on Gfycat are Removed. Ignore Navigation Bar in Video Player Prevent the Video Controller Having Extra Margin + Main Page Back Button Action Confirm to Exit + Open Navigation Drawer Comment Show Top-level Comments First Show Comment Divider diff --git a/app/src/main/res/xml/miscellaneous_preferences.xml b/app/src/main/res/xml/miscellaneous_preferences.xml index b17e7545..67a78aca 100644 --- a/app/src/main/res/xml/miscellaneous_preferences.xml +++ b/app/src/main/res/xml/miscellaneous_preferences.xml @@ -13,11 +13,14 @@ app:key="open_link_in_app" app:title="@string/settings_open_link_in_app_title" /> - + app:title="@string/settings_main_page_back_button_action" + app:useSimpleSummaryProvider="true" />