summaryrefslogtreecommitdiff
path: root/app/src/main/java/de
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2022-12-17 10:37:15 +0100
committerGitHub <noreply@github.com>2022-12-17 10:37:15 +0100
commitaa6b7b86f8340b39622e5df87e8aabbd8722739c (patch)
treeadfaa36720b6108565b43abfe29f28c1b89151f1 /app/src/main/java/de
parentb670cf6111a0c04dee0bac1687c6fa3320bba89c (diff)
parent95eae1519a54b443f80715c19eb3ca6e0dd253f9 (diff)
downloadAntennaPod-aa6b7b86f8340b39622e5df87e8aabbd8722739c.zip
Merge pull request #6223 from ByteHamster/material-dialogs
Migrate ListPreference to Material Design 3
Diffstat (limited to 'app/src/main/java/de')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/EpisodeFilterDialog.java4
-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
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();
+ }
+}