summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2019-09-29 17:31:34 +0200
committerGitHub <noreply@github.com>2019-09-29 17:31:34 +0200
commit5bf721606473c6187980255c6f1fcfe5c09e51f4 (patch)
tree639f748d0672fb41bf5094b2e64e7ea5e1d46c37 /app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
parentb6fc27fe12e48f4de5c170e7edeb06ccb5bf6419 (diff)
parent170987753166b1c06c45a79c5f9caba55acfe5ff (diff)
downloadAntennaPod-5bf721606473c6187980255c6f1fcfe5c09e51f4.zip
Merge branch 'develop' into feat/simple-adjust-volume-per-feed
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
new file mode 100644
index 000000000..607084c42
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
@@ -0,0 +1,62 @@
+package de.danoeh.antennapod.dialog;
+
+import android.content.Context;
+import android.support.v7.app.AlertDialog;
+import android.text.TextUtils;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.feed.FeedItemFilter;
+
+public abstract class FilterDialog {
+
+ protected FeedItemFilter filter;
+ protected Context context;
+
+ public FilterDialog(Context context, FeedItemFilter feedItemFilter) {
+ this.context = context;
+ this.filter = feedItemFilter;
+ }
+
+ public void openDialog() {
+ final String[] items = context.getResources().getStringArray(R.array.episode_filter_options);
+ final String[] values = context.getResources().getStringArray(R.array.episode_filter_values);
+ final boolean[] checkedItems = new boolean[items.length];
+
+ final Set<String> filterValues = new HashSet<>(Arrays.asList(filter.getValues()));
+
+ // make sure we have no empty strings in the filter list
+ for (String filterValue : filterValues) {
+ if (TextUtils.isEmpty(filterValue)) {
+ filterValues.remove(filterValue);
+ }
+ }
+
+ for (int i = 0; i < values.length; i++) {
+ String value = values[i];
+ if (filterValues.contains(value)) {
+ checkedItems[i] = true;
+ }
+ }
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setTitle(R.string.filter);
+ builder.setMultiChoiceItems(items, checkedItems, (dialog, which, isChecked) -> {
+ if (isChecked) {
+ filterValues.add(values[which]);
+ } else {
+ filterValues.remove(values[which]);
+ }
+ });
+ builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
+ updateFilter(filterValues);
+ });
+ builder.setNegativeButton(R.string.cancel_label, null);
+ builder.create().show();
+ }
+
+ protected abstract void updateFilter(Set<String> filterValues);
+}