diff options
author | Tom Hennen <TomHennen@users.noreply.github.com> | 2015-12-12 11:05:40 -0500 |
---|---|---|
committer | Tom Hennen <TomHennen@users.noreply.github.com> | 2015-12-12 11:05:40 -0500 |
commit | b9f927ac2d6818cf51bf8cbbfdb1d238e6a525c8 (patch) | |
tree | f8a0735a64467b02d9722ac996920a9c90b0755a | |
parent | 2f1dc0fc5900391ad6ebd0e65f828d4d2853a8b8 (diff) | |
parent | 0e12da7ec6e79219c47600dce98d327e5f728679 (diff) | |
download | AntennaPod-b9f927ac2d6818cf51bf8cbbfdb1d238e6a525c8.zip |
Merge pull request #1455 from mfietz/issue/1454-filter
Fix episode filter
4 files changed, 28 insertions, 22 deletions
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 84da32a40..2d6d4cac1 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java @@ -5,15 +5,17 @@ import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.support.v7.app.AlertDialog; +import android.text.TextUtils; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.dialog.ConfirmationDialog; @@ -114,7 +116,14 @@ public class FeedMenuHandler { final String[] values = context.getResources().getStringArray(R.array.episode_hide_values); final boolean[] checkedItems = new boolean[items.length]; - final List<String> hidden = new ArrayList<String>(Arrays.asList(feed.getItemFilter().getValues())); + final Set<String> hidden = new HashSet<String>(Arrays.asList(feed.getItemFilter().getValues())); + Iterator<String> it = hidden.iterator(); + while(it.hasNext()) { + // make sure we have no empty strings in the filter list + if(TextUtils.isEmpty(it.next())) { + it.remove(); + } + } for(int i=0; i < values.length; i++) { String value = values[i]; if(hidden.contains(value)) { @@ -124,22 +133,16 @@ public class FeedMenuHandler { 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.setMultiChoiceItems(items, checkedItems, (dialog, which, 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.setHiddenItemProperties(hidden.toArray(new String[hidden.size()])); - DBWriter.setFeedItemsFilter(feed.getId(), hidden); - } + builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> { + feed.setHiddenItemProperties(hidden.toArray(new String[hidden.size()])); + DBWriter.setFeedItemsFilter(feed.getId(), hidden); }); builder.setNegativeButton(R.string.cancel_label, null); builder.create().show(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java index d3d5dd0a1..8636ac50a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java @@ -20,7 +20,7 @@ public class FeedItemFilter { private boolean hideNotDownloaded = false; public FeedItemFilter(String properties) { - this(TextUtils.split(",", properties)); + this(TextUtils.split(properties, ",")); } public FeedItemFilter(String[] properties) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index efc0c882a..24519f10d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -19,6 +19,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; +import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -1008,8 +1009,8 @@ public class DBWriter { * @param filterValues Values that represent properties to filter by */ public static Future<?> setFeedItemsFilter(final long feedId, - final List<String> filterValues) { - Log.d(TAG, "setFeedFilter"); + final Set<String> filterValues) { + Log.d(TAG, "setFeedItemsFilter() called with: " + "feedId = [" + feedId + "], filterValues = [" + filterValues + "]"); return dbExec.submit(() -> { PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java index 97d91ccd3..18457a330 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java @@ -16,6 +16,7 @@ import android.util.Log; import java.util.Arrays; import java.util.List; +import java.util.Set; import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.event.ProgressEvent; @@ -407,10 +408,11 @@ public class PodDBAdapter { db.update(TABLE_NAME_FEEDS, values, KEY_ID + "=?", new String[]{String.valueOf(prefs.getFeedID())}); } - public void setFeedItemFilter(long feedId, List<String> filterValues) { + public void setFeedItemFilter(long feedId, Set<String> filterValues) { + Log.d(TAG, "setFeedItemFilter() called with: " + "feedId = [" + feedId + "], " + + "filterValues = [" + TextUtils.join(",", filterValues) + "]"); ContentValues values = new ContentValues(); values.put(KEY_HIDE, TextUtils.join(",", filterValues)); - Log.d(TAG, TextUtils.join(",", filterValues)); db.update(TABLE_NAME_FEEDS, values, KEY_ID + "=?", new String[]{String.valueOf(feedId)}); } |