summaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2022-12-05 22:36:35 +0100
committerByteHamster <info@bytehamster.com>2022-12-16 20:31:58 +0100
commitef97411fbba3c229d63718966430469cb0f334b9 (patch)
treeed90fb9c9057204f6c6acfa2f6fbbee85518ffd2 /app/src/main
parent45137119811011eb41ed988407a314194d0db2c8 (diff)
downloadAntennaPod-ef97411fbba3c229d63718966430469cb0f334b9.zip
Migrate ListPreference to Material Design 3
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java8
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/MaterialListPreference.java43
-rw-r--r--app/src/main/res/xml/feed_settings.xml4
-rw-r--r--app/src/main/res/xml/preferences_autodownload.xml4
-rw-r--r--app/src/main/res/xml/preferences_playback.xml10
-rw-r--r--app/src/main/res/xml/preferences_user_interface.xml6
6 files changed, 59 insertions, 16 deletions
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"