summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2022-09-10 16:09:26 +0200
committerGitHub <noreply@github.com>2022-09-10 16:09:26 +0200
commitad9de4467bac4b8ca235010a6b8532621c3a03e1 (patch)
treecdcf5bcf47166ef4072b657372204e7456c55cba /app/src/main/java/de/danoeh/antennapod
parent5ace16b31bdbed175c4f65a14a15bd7f133ba504 (diff)
downloadAntennaPod-ad9de4467bac4b8ca235010a6b8532621c3a03e1.zip
Add 'default screen' setting (replaces 'back button behavior') (#6041)
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java63
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/DrawerPreferencesDialog.java50
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java33
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java67
4 files changed, 79 insertions, 134 deletions
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 5e570828c..d453af615 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -16,11 +16,9 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
-import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBarDrawerToggle;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.drawerlayout.widget.DrawerLayout;
@@ -88,7 +86,6 @@ public class MainActivity extends CastEnabledActivity {
private @Nullable ActionBarDrawerToggle drawerToggle;
private View navDrawer;
private LockableBottomSheetBehavior sheetBehavior;
- private long lastBackButtonPressTime = 0;
private RecyclerView.RecycledViewPool recycledViewPool = new RecyclerView.RecycledViewPool();
private int lastTheme = 0;
@@ -117,17 +114,21 @@ public class MainActivity extends CastEnabledActivity {
final FragmentManager fm = getSupportFragmentManager();
if (fm.findFragmentByTag(MAIN_FRAGMENT_TAG) == null) {
- String lastFragment = NavDrawerFragment.getLastNavFragment(this);
- if (ArrayUtils.contains(NavDrawerFragment.NAV_DRAWER_TAGS, lastFragment)) {
- loadFragment(lastFragment, null);
+ if (!UserPreferences.DEFAULT_PAGE_REMEMBER.equals(UserPreferences.getDefaultPage())) {
+ loadFragment(UserPreferences.getDefaultPage(), null);
} else {
- try {
- loadFeedFragmentById(Integer.parseInt(lastFragment), null);
- } catch (NumberFormatException e) {
- // it's not a number, this happens if we removed
- // a label from the NAV_DRAWER_TAGS
- // give them a nice default...
- loadFragment(QueueFragment.TAG, null);
+ String lastFragment = NavDrawerFragment.getLastNavFragment(this);
+ if (ArrayUtils.contains(NavDrawerFragment.NAV_DRAWER_TAGS, lastFragment)) {
+ loadFragment(lastFragment, null);
+ } else {
+ try {
+ loadFeedFragmentById(Integer.parseInt(lastFragment), null);
+ } catch (NumberFormatException e) {
+ // it's not a number, this happens if we removed
+ // a label from the NAV_DRAWER_TAGS
+ // give them a nice default...
+ loadFragment(HomeFragment.TAG, null);
+ }
}
}
}
@@ -467,36 +468,12 @@ public class MainActivity extends CastEnabledActivity {
} else if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
super.onBackPressed();
} else {
- switch (UserPreferences.getBackButtonBehavior()) {
- case OPEN_DRAWER:
- if (drawerLayout != null) { // Tablet layout does not have drawer
- drawerLayout.openDrawer(navDrawer);
- }
- break;
- case SHOW_PROMPT:
- new AlertDialog.Builder(this)
- .setMessage(R.string.close_prompt)
- .setPositiveButton(R.string.yes, (dialogInterface, i) -> MainActivity.super.onBackPressed())
- .setNegativeButton(R.string.no, null)
- .setCancelable(false)
- .show();
- break;
- case DOUBLE_TAP:
- if (lastBackButtonPressTime < System.currentTimeMillis() - 2000) {
- Toast.makeText(this, R.string.double_tap_toast, Toast.LENGTH_SHORT).show();
- lastBackButtonPressTime = System.currentTimeMillis();
- } else {
- super.onBackPressed();
- }
- break;
- case GO_TO_PAGE:
- if (NavDrawerFragment.getLastNavFragment(this).equals(UserPreferences.getBackButtonGoToPage())) {
- super.onBackPressed();
- } else {
- loadFragment(UserPreferences.getBackButtonGoToPage(), null);
- }
- break;
- default: super.onBackPressed();
+ String toPage = UserPreferences.getDefaultPage();
+ if (NavDrawerFragment.getLastNavFragment(this).equals(toPage)
+ || UserPreferences.DEFAULT_PAGE_REMEMBER.equals(toPage)) {
+ super.onBackPressed();
+ } else {
+ loadFragment(toPage, null);
}
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/DrawerPreferencesDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/DrawerPreferencesDialog.java
new file mode 100644
index 000000000..9fa9e583d
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/DrawerPreferencesDialog.java
@@ -0,0 +1,50 @@
+package de.danoeh.antennapod.dialog;
+
+import android.content.Context;
+import androidx.appcompat.app.AlertDialog;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.fragment.NavDrawerFragment;
+
+import java.util.List;
+
+public class DrawerPreferencesDialog {
+ public static void show(Context context, Runnable callback) {
+ final List<String> hiddenDrawerItems = UserPreferences.getHiddenDrawerItems();
+ final String[] navTitles = context.getResources().getStringArray(R.array.nav_drawer_titles);
+ boolean[] checked = new boolean[NavDrawerFragment.NAV_DRAWER_TAGS.length];
+ for (int i = 0; i < NavDrawerFragment.NAV_DRAWER_TAGS.length; i++) {
+ String tag = NavDrawerFragment.NAV_DRAWER_TAGS[i];
+ if (!hiddenDrawerItems.contains(tag)) {
+ checked[i] = true;
+ }
+ }
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setTitle(R.string.drawer_preferences);
+ builder.setMultiChoiceItems(navTitles, checked, (dialog, which, isChecked) -> {
+ if (isChecked) {
+ hiddenDrawerItems.remove(NavDrawerFragment.NAV_DRAWER_TAGS[which]);
+ } else {
+ hiddenDrawerItems.add(NavDrawerFragment.NAV_DRAWER_TAGS[which]);
+ }
+ });
+ builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
+ UserPreferences.setHiddenDrawerItems(hiddenDrawerItems);
+
+ if (hiddenDrawerItems.contains(UserPreferences.getDefaultPage())) {
+ for (String tag : NavDrawerFragment.NAV_DRAWER_TAGS) {
+ if (!hiddenDrawerItems.contains(tag)) {
+ UserPreferences.setDefaultPage(tag);
+ break;
+ }
+ }
+ }
+
+ if (callback != null) {
+ callback.run();
+ }
+ });
+ builder.setNegativeButton(R.string.cancel_label, null);
+ builder.create().show();
+ }
+}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
index 7d8cadd02..8339b050c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
@@ -16,7 +16,6 @@ import android.widget.ProgressBar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
-import androidx.appcompat.app.AlertDialog;
import androidx.core.util.Pair;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -32,6 +31,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.NavDrawerData;
+import de.danoeh.antennapod.dialog.DrawerPreferencesDialog;
import de.danoeh.antennapod.dialog.RemoveFeedDialog;
import de.danoeh.antennapod.dialog.RenameItemDialog;
import de.danoeh.antennapod.dialog.SubscriptionsFilterDialog;
@@ -219,35 +219,6 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS
loadData();
}
- private void showDrawerPreferencesDialog() {
- final List<String> hiddenDrawerItems = UserPreferences.getHiddenDrawerItems();
- String[] navLabels = new String[NAV_DRAWER_TAGS.length];
- final boolean[] checked = new boolean[NAV_DRAWER_TAGS.length];
- for (int i = 0; i < NAV_DRAWER_TAGS.length; i++) {
- String tag = NAV_DRAWER_TAGS[i];
- navLabels[i] = navAdapter.getLabel(tag);
- if (!hiddenDrawerItems.contains(tag)) {
- checked[i] = true;
- }
- }
-
- AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
- builder.setTitle(R.string.drawer_preferences);
- builder.setMultiChoiceItems(navLabels, checked, (dialog, which, isChecked) -> {
- if (isChecked) {
- hiddenDrawerItems.remove(NAV_DRAWER_TAGS[which]);
- } else {
- hiddenDrawerItems.add(NAV_DRAWER_TAGS[which]);
- }
- });
- builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
- UserPreferences.setHiddenDrawerItems(hiddenDrawerItems);
- navAdapter.notifyDataSetChanged(); // Update selection
- });
- builder.setNegativeButton(R.string.cancel_label, null);
- builder.create().show();
- }
-
private final NavListAdapter.ItemAccess itemAccess = new NavListAdapter.ItemAccess() {
@Override
public int getCount() {
@@ -367,7 +338,7 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS
@Override
public boolean onItemLongClick(int position) {
if (position < navAdapter.getFragmentTags().size()) {
- showDrawerPreferencesDialog();
+ DrawerPreferencesDialog.show(getContext(), () -> navAdapter.notifyDataSetChanged());
return true;
} else {
contextPressedItem = flatItemList.get(position - navAdapter.getSubscriptionOffset());
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
index ff974179e..ef6dabe24 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
@@ -3,20 +3,19 @@ package de.danoeh.antennapod.fragment.preferences;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
-import com.google.android.material.snackbar.Snackbar;
+import android.widget.ListView;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.ActivityCompat;
import androidx.preference.PreferenceFragmentCompat;
-import android.widget.ListView;
+import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.PreferenceActivity;
-import de.danoeh.antennapod.event.PlayerStatusEvent;
-import de.danoeh.antennapod.event.UnreadItemsUpdateEvent;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.dialog.SubscriptionsFilterDialog;
+import de.danoeh.antennapod.dialog.DrawerPreferencesDialog;
import de.danoeh.antennapod.dialog.FeedSortDialog;
-import de.danoeh.antennapod.fragment.NavDrawerFragment;
-import org.apache.commons.lang3.ArrayUtils;
+import de.danoeh.antennapod.dialog.SubscriptionsFilterDialog;
+import de.danoeh.antennapod.event.PlayerStatusEvent;
+import de.danoeh.antennapod.event.UnreadItemsUpdateEvent;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
@@ -55,7 +54,7 @@ public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat {
findPreference(UserPreferences.PREF_HIDDEN_DRAWER_ITEMS)
.setOnPreferenceClickListener(preference -> {
- showDrawerPreferencesDialog();
+ DrawerPreferencesDialog.show(getContext(), null);
return true;
});
@@ -64,31 +63,6 @@ public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat {
showNotificationButtonsDialog();
return true;
});
-
- findPreference(UserPreferences.PREF_BACK_BUTTON_BEHAVIOR)
- .setOnPreferenceChangeListener((preference, newValue) -> {
- if (!newValue.equals("page")) {
- return true;
- }
- final Context context = getActivity();
- final String[] navTitles = context.getResources().getStringArray(R.array.back_button_go_to_pages);
- final String[] navTags = context.getResources().getStringArray(R.array.back_button_go_to_pages_tags);
- final String[] choice = { UserPreferences.getBackButtonGoToPage() };
-
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(R.string.back_button_go_to_page_title);
- builder.setSingleChoiceItems(navTitles, ArrayUtils.indexOf(navTags,
- UserPreferences.getBackButtonGoToPage()), (dialogInterface, i) -> {
- if (i >= 0) {
- choice[0] = navTags[i];
- }
- });
- builder.setPositiveButton(R.string.confirm_label, (dialogInterface, i) -> UserPreferences.setBackButtonGoToPage(choice[0]));
- builder.setNegativeButton(R.string.cancel_label, null);
- builder.create().show();
- return true;
- });
-
findPreference(UserPreferences.PREF_FILTER_FEED)
.setOnPreferenceClickListener((preference -> {
SubscriptionsFilterDialog.showDialog(requireContext());
@@ -111,33 +85,6 @@ public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat {
}
}
- private void showDrawerPreferencesDialog() {
- final Context context = getActivity();
- final List<String> hiddenDrawerItems = UserPreferences.getHiddenDrawerItems();
- final String[] navTitles = context.getResources().getStringArray(R.array.nav_drawer_titles);
- final String[] NAV_DRAWER_TAGS = NavDrawerFragment.NAV_DRAWER_TAGS;
- boolean[] checked = new boolean[NavDrawerFragment.NAV_DRAWER_TAGS.length];
- for (int i = 0; i < NAV_DRAWER_TAGS.length; i++) {
- String tag = NAV_DRAWER_TAGS[i];
- if (!hiddenDrawerItems.contains(tag)) {
- checked[i] = true;
- }
- }
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(R.string.drawer_preferences);
- builder.setMultiChoiceItems(navTitles, checked, (dialog, which, isChecked) -> {
- if (isChecked) {
- hiddenDrawerItems.remove(NAV_DRAWER_TAGS[which]);
- } else {
- hiddenDrawerItems.add(NAV_DRAWER_TAGS[which]);
- }
- });
- builder.setPositiveButton(R.string.confirm_label, (dialog, which) ->
- UserPreferences.setHiddenDrawerItems(hiddenDrawerItems));
- builder.setNegativeButton(R.string.cancel_label, null);
- builder.create().show();
- }
-
private void showNotificationButtonsDialog() {
final Context context = getActivity();
final List<Integer> preferredButtons = UserPreferences.getCompactNotificationButtons();