From 9ec0d735c86c62c2d2a65229c1f1bf8e0e44dec5 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Sun, 26 Apr 2015 13:37:27 +0200 Subject: Add feed item filter --- .../menuhandler/FeedItemMenuHandler.java | 2 +- .../antennapod/menuhandler/FeedMenuHandler.java | 47 ++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) (limited to 'app/src/main/java/de/danoeh/antennapod/menuhandler') diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java index ebb0a9e58..2b1770ee1 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java @@ -23,10 +23,10 @@ import de.danoeh.antennapod.core.util.ShareUtils; * Handles interactions with the FeedItemMenu. */ public class FeedItemMenuHandler { + private static final String TAG = "FeedItemMenuHandler"; private FeedItemMenuHandler() { - } /** diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java index efb4adb01..6947c73c9 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java @@ -1,5 +1,6 @@ package de.danoeh.antennapod.menuhandler; +import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -9,6 +10,10 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.BuildConfig; import de.danoeh.antennapod.core.dialog.ConfirmationDialog; @@ -62,6 +67,9 @@ public class FeedMenuHandler { case R.id.refresh_complete_item: DBTasks.refreshCompleteFeed(context, selectedFeed); break; + case R.id.hide_items: + showHideDialog(context, selectedFeed); + break; case R.id.mark_all_read_item: ConfirmationDialog conDialog = new ConfirmationDialog(context, R.string.mark_all_read_label, @@ -94,4 +102,43 @@ public class FeedMenuHandler { } return true; } + + private static void showHideDialog(final Context context, final Feed feed) { + + final String[] items = context.getResources().getStringArray(R.array.episode_hide_options); + final String[] values = context.getResources().getStringArray(R.array.episode_hide_values); + final boolean[] checkedItems = new boolean[items.length]; + + final List hidden = new ArrayList(Arrays.asList(feed.getItemFilter().getValues())); + for(int i=0; i < values.length; i++) { + String value = values[i]; + if(hidden.contains(value)) { + checkedItems[i] = true; + } + } + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.hide_episodes_title); + builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialog, int which, boolean isChecked) { + if (isChecked) { + hidden.add(values[which]); + } else { + hidden.remove(values[which]); + } + } + }); + builder.setPositiveButton(R.string.confirm_label, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + feed.setFeedItemsFilter(hidden.toArray(new String[hidden.size()])); + DBWriter.setFeedItemsFilter(context, feed.getId(), hidden); + } + }); + builder.setNegativeButton(R.string.cancel_label, null); + builder.create().show(); + + } + } -- cgit v1.2.3