diff options
author | ByteHamster <info@bytehamster.com> | 2022-12-05 22:36:35 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2022-12-16 20:31:58 +0100 |
commit | ef97411fbba3c229d63718966430469cb0f334b9 (patch) | |
tree | ed90fb9c9057204f6c6acfa2f6fbbee85518ffd2 /app/src/main/java/de/danoeh/antennapod/preferences | |
parent | 45137119811011eb41ed988407a314194d0db2c8 (diff) | |
download | AntennaPod-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.java | 43 |
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(); + } +} |