diff options
Diffstat (limited to 'app/src')
8 files changed, 63 insertions, 19 deletions
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 a0f2c17ea..909b7a5a2 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java @@ -409,7 +409,6 @@ public class PreferencesTest { clickPreference(R.string.network_pref); onView(withText(R.string.pref_automatic_download_title)).perform(click()); onView(withText(R.string.pref_episode_cleanup_title)).perform(click()); - onView(withId(R.id.select_dialog_listview)).perform(swipeUp()); onView(withText(R.string.episode_cleanup_after_listening)).perform(click()); Awaitility.await().atMost(1000, MILLISECONDS) .until(() -> { @@ -455,7 +454,6 @@ public class PreferencesTest { // Find next value (wrapping around to next) int newIndex = (currentIndex + 1) % deltas.length; onView(withText(deltas[newIndex] + " seconds")).perform(click()); - onView(withText("Confirm")).perform(click()); Awaitility.await().atMost(1000, MILLISECONDS) .until(() -> UserPreferences.getRewindSecs() == deltas[newIndex]); @@ -477,7 +475,6 @@ public class PreferencesTest { int newIndex = (currentIndex + 1) % deltas.length; onView(withText(deltas[newIndex] + " seconds")).perform(click()); - onView(withText("Confirm")).perform(click()); Awaitility.await().atMost(1000, MILLISECONDS) .until(() -> UserPreferences.getFastForwardSecs() == deltas[newIndex]); diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodeFilterDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodeFilterDialog.java index 2aa3ab31c..220650f0f 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodeFilterDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodeFilterDialog.java @@ -28,11 +28,15 @@ public abstract class EpisodeFilterDialog extends MaterialAlertDialogBuilder { setTitle(R.string.episode_filters_label); setView(viewBinding.getRoot()); + viewBinding.durationCheckBox.setOnCheckedChangeListener( + (buttonView, isChecked) -> viewBinding.episodeFilterDurationText.setEnabled(isChecked)); if (filter.hasMinimalDurationFilter()) { viewBinding.durationCheckBox.setChecked(true); // Store minimal duration in seconds, show in minutes viewBinding.episodeFilterDurationText .setText(String.valueOf(filter.getMinimalDurationFilter() / 60)); + } else { + viewBinding.episodeFilterDurationText.setEnabled(false); } if (filter.excludeOnly()) { diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java index 28b48963c..a5eca4bc2 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java @@ -37,9 +37,7 @@ public class SkipPreferenceDialog { MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context); builder.setTitle(direction == SkipDirection.SKIP_FORWARD ? R.string.pref_fast_forward : R.string.pref_rewind); - builder.setSingleChoiceItems(choices, checked, null); - builder.setNegativeButton(R.string.cancel_label, null); - builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> { + builder.setSingleChoiceItems(choices, checked, (dialog, which) -> { int choice = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); if (choice < 0 || choice >= values.length) { System.err.printf("Choice in showSkipPreference is out of bounds %d", choice); @@ -53,9 +51,11 @@ public class SkipPreferenceDialog { if (textView != null) { textView.setText(NumberFormat.getInstance().format(seconds)); } + dialog.dismiss(); } }); - builder.create().show(); + builder.setNegativeButton(R.string.cancel_label, null); + builder.show(); } public enum SkipDirection { diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/MaterialListPreference.java b/app/src/main/java/de/danoeh/antennapod/preferences/MaterialListPreference.java new file mode 100644 index 000000000..3ee08f369 --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/preferences/MaterialListPreference.java @@ -0,0 +1,43 @@ +package de.danoeh.antennapod.preferences; + +import android.content.Context; +import android.util.AttributeSet; +import androidx.preference.ListPreference; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +public class MaterialListPreference extends ListPreference { + + public MaterialListPreference(Context context) { + super(context); + } + + public MaterialListPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onClick() { + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext()); + builder.setTitle(getTitle()); + builder.setIcon(getDialogIcon()); + builder.setNegativeButton(getNegativeButtonText(), null); + + CharSequence[] values = getEntryValues(); + int selected = -1; + for (int i = 0; i < values.length; i++) { + if (values[i].toString().equals(getValue())) { + selected = i; + } + } + builder.setSingleChoiceItems(getEntries(), selected, (dialog, which) -> { + dialog.dismiss(); + if (which >= 0 && getEntryValues() != null) { + String value = getEntryValues()[which].toString(); + if (callChangeListener(value)) { + setValue(value); + } + } + }); + builder.show(); + } +} diff --git a/app/src/main/res/xml/feed_settings.xml b/app/src/main/res/xml/feed_settings.xml index 007f084c9..a2ea42f01 100644 --- a/app/src/main/res/xml/feed_settings.xml +++ b/app/src/main/res/xml/feed_settings.xml @@ -40,7 +40,7 @@ android:summary="@string/pref_feed_skip_sum" android:title="@string/pref_feed_skip" /> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:entries="@array/spnAutoDeleteItems" android:entryValues="@array/spnAutoDeleteValues" android:icon="@drawable/ic_delete" @@ -48,7 +48,7 @@ android:summary="@string/feed_auto_download_global" android:title="@string/auto_delete_label" /> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:defaultValue="off" android:entries="@array/spnVolumeReductionItems" android:entryValues="@array/spnVolumeReductionValues" diff --git a/app/src/main/res/xml/preferences_autodownload.xml b/app/src/main/res/xml/preferences_autodownload.xml index 2b541afa3..79e830b7f 100644 --- a/app/src/main/res/xml/preferences_autodownload.xml +++ b/app/src/main/res/xml/preferences_autodownload.xml @@ -8,14 +8,14 @@ android:title="@string/pref_automatic_download_title" search:summary="@string/pref_automatic_download_sum" android:defaultValue="false"/> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:defaultValue="25" android:entries="@array/episode_cache_size_entries" android:key="prefEpisodeCacheSize" android:title="@string/pref_episode_cache_title" android:summary="@string/pref_episode_cache_summary" android:entryValues="@array/episode_cache_size_values"/> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:defaultValue="-1" android:entries="@array/episode_cleanup_entries" android:key="prefEpisodeCleanup" diff --git a/app/src/main/res/xml/preferences_playback.xml b/app/src/main/res/xml/preferences_playback.xml index 969013056..832f3cfec 100644 --- a/app/src/main/res/xml/preferences_playback.xml +++ b/app/src/main/res/xml/preferences_playback.xml @@ -62,14 +62,14 @@ </PreferenceCategory> <PreferenceCategory android:title="@string/reassign_hardware_buttons"> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:defaultValue="@string/keycode_media_fast_forward" android:entries="@array/button_action_options" android:entryValues="@array/button_action_values" android:key="prefHardwareForwardButton" android:title="@string/pref_hardware_forward_button_title" android:summary="@string/pref_hardware_forward_button_summary"/> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:defaultValue="@string/keycode_media_rewind" android:entries="@array/button_action_options" android:entryValues="@array/button_action_values" @@ -85,7 +85,7 @@ android:key="prefEnqueueDownloaded" android:summary="@string/pref_enqueue_downloaded_summary" android:title="@string/pref_enqueue_downloaded_title" /> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:defaultValue="BACK" android:entries="@array/enqueue_location_options" android:entryValues="@array/enqueue_location_values" @@ -97,7 +97,7 @@ android:key="prefFollowQueue" android:summary="@string/pref_followQueue_sum" android:title="@string/pref_followQueue_title"/> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:defaultValue="30" android:entries="@array/smart_mark_as_played_values" android:entryValues="@array/smart_mark_as_played_values" @@ -113,7 +113,7 @@ </PreferenceCategory> <PreferenceCategory android:title="@string/experimental_pref"> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:defaultValue="exoplayer" android:entries="@array/media_player_options" android:key="prefMediaPlayer" diff --git a/app/src/main/res/xml/preferences_user_interface.xml b/app/src/main/res/xml/preferences_user_interface.xml index dd3810efc..0ad44fdc5 100644 --- a/app/src/main/res/xml/preferences_user_interface.xml +++ b/app/src/main/res/xml/preferences_user_interface.xml @@ -4,7 +4,7 @@ xmlns:search="http://schemas.android.com/apk/com.bytehamster.lib.preferencesearch"> <PreferenceCategory android:title="@string/appearance"> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:entryValues="@array/theme_values" android:entries="@array/theme_options" android:title="@string/pref_set_theme_title" @@ -33,7 +33,7 @@ android:title="@string/pref_nav_drawer_feed_order_title" android:key="prefDrawerFeedOrder" android:summary="@string/pref_nav_drawer_feed_order_sum"/> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:entryValues="@array/nav_drawer_feed_counter_values" android:entries="@array/nav_drawer_feed_counter_options" android:title="@string/pref_nav_drawer_feed_counter_title" @@ -76,7 +76,7 @@ android:title="@string/pref_lockscreen_background_title"/> </PreferenceCategory> <PreferenceCategory android:title="@string/behavior"> - <ListPreference + <de.danoeh.antennapod.preferences.MaterialListPreference android:entryValues="@array/default_page_values" android:entries="@array/default_page_titles" android:key="prefDefaultPage" |