summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/preferences
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/java/de/danoeh/antennapod/preferences
parent45137119811011eb41ed988407a314194d0db2c8 (diff)
downloadAntennaPod-ef97411fbba3c229d63718966430469cb0f334b9.zip
Migrate ListPreference to Material Design 3
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/preferences')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/MaterialListPreference.java43
1 files changed, 43 insertions, 0 deletions
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();
+ }
+}