diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2022-12-17 10:37:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-17 10:37:15 +0100 |
commit | aa6b7b86f8340b39622e5df87e8aabbd8722739c (patch) | |
tree | adfaa36720b6108565b43abfe29f28c1b89151f1 /app/src/main/java/de | |
parent | b670cf6111a0c04dee0bac1687c6fa3320bba89c (diff) | |
parent | 95eae1519a54b443f80715c19eb3ca6e0dd253f9 (diff) | |
download | AntennaPod-aa6b7b86f8340b39622e5df87e8aabbd8722739c.zip |
Merge pull request #6223 from ByteHamster/material-dialogs
Migrate ListPreference to Material Design 3
Diffstat (limited to 'app/src/main/java/de')
3 files changed, 51 insertions, 4 deletions
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(); + } +} |