summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'app/src')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java6
-rw-r--r--app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java2
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java100
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java32
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/QueueFragmentTest.java2
-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
-rw-r--r--app/src/main/res/xml/preferences_user_interface.xml12
10 files changed, 96 insertions, 271 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java b/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java
index df3dbb7f8..70282a6f3 100644
--- a/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java
+++ b/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java
@@ -172,12 +172,16 @@ public class EspressoTestUtils {
RatingDialog.saveRated();
}
- public static void setLastNavFragment(String tag) {
+ public static void setLaunchScreen(String tag) {
InstrumentationRegistry.getInstrumentation().getTargetContext()
.getSharedPreferences(NavDrawerFragment.PREF_NAME, Context.MODE_PRIVATE)
.edit()
.putString(NavDrawerFragment.PREF_LAST_FRAGMENT_TAG, tag)
.commit();
+ PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getInstrumentation().getTargetContext())
+ .edit()
+ .putString(UserPreferences.PREF_DEFAULT_PAGE, UserPreferences.DEFAULT_PAGE_REMEMBER)
+ .commit();
}
public static void clearDatabase() {
diff --git a/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java b/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java
index c68e13438..49a252ea1 100644
--- a/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java
@@ -48,7 +48,7 @@ public class ShareDialogTest {
context = InstrumentationRegistry.getInstrumentation().getTargetContext();
EspressoTestUtils.clearPreferences();
EspressoTestUtils.clearDatabase();
- EspressoTestUtils.setLastNavFragment(AllEpisodesFragment.TAG);
+ EspressoTestUtils.setLaunchScreen(AllEpisodesFragment.TAG);
UITestUtils uiTestUtils = new UITestUtils(context);
uiTestUtils.setup();
uiTestUtils.addLocalFeedData(true);
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
index 81d7731c5..a55670ed6 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
@@ -1,16 +1,15 @@
package de.test.antennapod.ui;
-import android.app.Activity;
import android.content.Intent;
-
import androidx.test.espresso.Espresso;
import androidx.test.espresso.intent.rule.IntentsTestRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
-
-import com.robotium.solo.Solo;
-
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.activity.MainActivity;
+import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.storage.database.PodDBAdapter;
+import de.test.antennapod.EspressoTestUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -19,27 +18,14 @@ import org.junit.runner.RunWith;
import java.io.IOException;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.model.feed.Feed;
-import de.test.antennapod.EspressoTestUtils;
-
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.replaceText;
import static androidx.test.espresso.action.ViewActions.scrollTo;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.contrib.ActivityResultMatchers.hasResultCode;
-import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant;
-import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
-import static de.test.antennapod.EspressoTestUtils.clickPreference;
import static de.test.antennapod.EspressoTestUtils.openNavDrawer;
import static de.test.antennapod.EspressoTestUtils.waitForViewGlobally;
-import static org.hamcrest.Matchers.allOf;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
/**
* User interface tests for MainActivity.
@@ -47,7 +33,6 @@ import static org.junit.Assert.assertTrue;
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
- private Solo solo;
private UITestUtils uiTestUtils;
@Rule
@@ -62,8 +47,6 @@ public class MainActivityTest {
uiTestUtils = new UITestUtils(InstrumentationRegistry.getInstrumentation().getTargetContext());
uiTestUtils.setup();
-
- solo = new Solo(InstrumentationRegistry.getInstrumentation(), activityRule.getActivity());
}
@After
@@ -91,79 +74,4 @@ public class MainActivityTest {
// wait for podcast feed item list
waitForViewGlobally(withId(R.id.butShowSettings), 15000);
}
-
- @Test
- public void testBackButtonBehaviorGoToPage() {
- openNavDrawer();
- onView(withText(R.string.settings_label)).perform(click());
- clickPreference(R.string.user_interface_label);
- clickPreference(R.string.pref_back_button_behavior_title);
-
- onView(withText(R.string.back_button_go_to_page)).perform(click());
- onView(withText(R.string.subscriptions_label)).perform(click());
- onView(withText(R.string.confirm_label)).perform(click());
-
- solo.goBackToActivity(MainActivity.class.getSimpleName());
- solo.goBack();
- solo.goBack();
- onView(allOf(withId(R.id.toolbar), isDisplayed())).check(
- matches(hasDescendant(withText(R.string.subscriptions_label))));
- solo.goBack();
- assertThat(activityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED));
- }
-
- @Test
- public void testBackButtonBehaviorOpenDrawer() {
- openNavDrawer();
- onView(withText(R.string.settings_label)).perform(click());
- clickPreference(R.string.user_interface_label);
- clickPreference(R.string.pref_back_button_behavior_title);
- onView(withText(R.string.back_button_open_drawer)).perform(click());
- solo.goBackToActivity(MainActivity.class.getSimpleName());
- solo.goBack();
- solo.goBack();
- assertTrue(((MainActivity) solo.getCurrentActivity()).isDrawerOpen());
- }
-
- @Test
- public void testBackButtonBehaviorDoubleTap() {
- openNavDrawer();
- onView(withText(R.string.settings_label)).perform(click());
- clickPreference(R.string.user_interface_label);
- clickPreference(R.string.pref_back_button_behavior_title);
- onView(withText(R.string.back_button_double_tap)).perform(click());
- solo.goBackToActivity(MainActivity.class.getSimpleName());
- solo.goBack();
- solo.goBack();
- solo.goBack();
- assertThat(activityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED));
- }
-
- @Test
- public void testBackButtonBehaviorPrompt() throws Exception {
- openNavDrawer();
- onView(withText(R.string.settings_label)).perform(click());
- clickPreference(R.string.user_interface_label);
- clickPreference(R.string.pref_back_button_behavior_title);
- onView(withText(R.string.back_button_show_prompt)).perform(click());
- solo.goBackToActivity(MainActivity.class.getSimpleName());
- solo.goBack();
- solo.goBack();
- onView(withText(R.string.yes)).perform(click());
- Thread.sleep(100);
- assertThat(activityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED));
- }
-
- @Test
- public void testBackButtonBehaviorDefault() {
- openNavDrawer();
- onView(withText(R.string.settings_label)).perform(click());
- clickPreference(R.string.user_interface_label);
- clickPreference(R.string.pref_back_button_behavior_title);
- onView(withText(R.string.back_button_default)).perform(click());
- solo.goBackToActivity(MainActivity.class.getSimpleName());
- solo.goBack();
- solo.goBack();
- assertThat(activityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED));
- }
}
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
index b8f2faa63..25eb60ff4 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
@@ -28,9 +28,6 @@ import de.danoeh.antennapod.core.storage.APNullCleanupAlgorithm;
import de.danoeh.antennapod.core.storage.APQueueCleanupAlgorithm;
import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm;
import de.danoeh.antennapod.core.storage.ExceptFavoriteCleanupAlgorithm;
-import de.danoeh.antennapod.fragment.AllEpisodesFragment;
-import de.danoeh.antennapod.fragment.QueueFragment;
-import de.danoeh.antennapod.fragment.SubscriptionFragment;
import de.test.antennapod.EspressoTestUtils;
import static androidx.test.espresso.Espresso.onData;
@@ -504,35 +501,6 @@ public class PreferencesTest {
}
@Test
- public void testBackButtonBehaviorGoToPageSelector() {
- clickPreference(R.string.user_interface_label);
- clickPreference(R.string.pref_back_button_behavior_title);
- onView(withText(R.string.back_button_go_to_page)).perform(click());
- onView(withText(R.string.queue_label)).perform(click());
- onView(withText(R.string.confirm_label)).perform(click());
- Awaitility.await().atMost(1000, MILLISECONDS)
- .until(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE);
- Awaitility.await().atMost(1000, MILLISECONDS)
- .until(() -> UserPreferences.getBackButtonGoToPage().equals(QueueFragment.TAG));
- clickPreference(R.string.pref_back_button_behavior_title);
- onView(withText(R.string.back_button_go_to_page)).perform(click());
- onView(withText(R.string.episodes_label)).perform(click());
- onView(withText(R.string.confirm_label)).perform(click());
- Awaitility.await().atMost(1000, MILLISECONDS)
- .until(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE);
- Awaitility.await().atMost(1000, MILLISECONDS)
- .until(() -> UserPreferences.getBackButtonGoToPage().equals(AllEpisodesFragment.TAG));
- clickPreference(R.string.pref_back_button_behavior_title);
- onView(withText(R.string.back_button_go_to_page)).perform(click());
- onView(withText(R.string.subscriptions_label)).perform(click());
- onView(withText(R.string.confirm_label)).perform(click());
- Awaitility.await().atMost(1000, MILLISECONDS)
- .until(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE);
- Awaitility.await().atMost(1000, MILLISECONDS)
- .until(() -> UserPreferences.getBackButtonGoToPage().equals(SubscriptionFragment.TAG));
- }
-
- @Test
public void testDeleteRemovesFromQueue() {
clickPreference(R.string.storage_pref);
if (!UserPreferences.shouldDeleteRemoveFromQueue()) {
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/QueueFragmentTest.java b/app/src/androidTest/java/de/test/antennapod/ui/QueueFragmentTest.java
index 460dfdb3e..da323af76 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/QueueFragmentTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/QueueFragmentTest.java
@@ -33,7 +33,7 @@ public class QueueFragmentTest {
public void setUp() {
EspressoTestUtils.clearPreferences();
EspressoTestUtils.clearDatabase();
- EspressoTestUtils.setLastNavFragment(QueueFragment.TAG);
+ EspressoTestUtils.setLaunchScreen(QueueFragment.TAG);
activityRule.launchActivity(new Intent());
}
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();
diff --git a/app/src/main/res/xml/preferences_user_interface.xml b/app/src/main/res/xml/preferences_user_interface.xml
index 59e7092a1..dd3810efc 100644
--- a/app/src/main/res/xml/preferences_user_interface.xml
+++ b/app/src/main/res/xml/preferences_user_interface.xml
@@ -77,12 +77,12 @@
</PreferenceCategory>
<PreferenceCategory android:title="@string/behavior">
<ListPreference
- android:entryValues="@array/back_button_behavior_values"
- android:entries="@array/back_button_behavior_options"
- android:key="prefBackButtonBehavior"
- android:title="@string/pref_back_button_behavior_title"
- android:summary="@string/pref_back_button_behavior_sum"
- android:defaultValue="default"/>
+ android:entryValues="@array/default_page_values"
+ android:entries="@array/default_page_titles"
+ android:key="prefDefaultPage"
+ android:title="@string/pref_default_page"
+ android:summary="@string/pref_default_page_sum"
+ android:defaultValue="HomeFragment"/>
<Preference
android:key="prefSwipe"
android:summary="@string/swipeactions_summary"