diff options
Diffstat (limited to 'core/src/main')
9 files changed, 125 insertions, 74 deletions
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 719383d23..d9bfd846a 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 @@ -1,8 +1,10 @@ package de.danoeh.antennapod.core.feed; import android.text.TextUtils; +import android.util.Log; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import de.danoeh.antennapod.core.storage.DBReader; @@ -11,17 +13,21 @@ import de.danoeh.antennapod.core.util.LongList; import static de.danoeh.antennapod.core.feed.FeedItem.TAG_FAVORITE; public class FeedItemFilter { + private final String[] mProperties; private boolean showPlayed = false; private boolean showUnplayed = false; private boolean showPaused = false; + private boolean showNotPaused = false; private boolean showQueued = false; private boolean showNotQueued = false; private boolean showDownloaded = false; private boolean showNotDownloaded = false; private boolean showHasMedia = false; + private boolean showNoMedia = false; private boolean showIsFavorite = false; + private boolean showNotFavorite = false; public FeedItemFilter(String properties) { this(TextUtils.split(properties, ",")); @@ -29,14 +35,17 @@ public class FeedItemFilter { public FeedItemFilter(String[] properties) { this.mProperties = properties; - for(String property : properties) { + Log.d("***xxx***", Arrays.toString(properties)); + for (String property : properties) { // see R.arrays.feed_filter_values - switch(property) { + switch ("" + property) { case "unplayed": showUnplayed = true; break; case "paused": showPaused = true; + case "not_paused": + showNotPaused = true; break; case "played": showPlayed = true; @@ -55,10 +64,14 @@ public class FeedItemFilter { break; case "has_media": showHasMedia = true; + case "no_media": + showNoMedia = true; break; case "is_favorite": showIsFavorite = true; break; + case "not_favorite": + showNotFavorite = true; } } } @@ -67,7 +80,7 @@ public class FeedItemFilter { * Run a list of feed items through the filter. */ public List<FeedItem> filter(List<FeedItem> items) { - if(mProperties.length == 0) return items; + if (mProperties.length == 0) return items; List<FeedItem> result = new ArrayList<>(); @@ -77,12 +90,15 @@ public class FeedItemFilter { if (showQueued && showNotQueued) return result; if (showDownloaded && showNotDownloaded) return result; - final LongList queuedIds = DBReader.getQueueIDList(); - for(FeedItem item : items) { + final LongList queuedIds = DBReader.getQueueIDList(); + for (FeedItem item : items) { // If the item does not meet a requirement, skip it. + if (showPlayed && !item.isPlayed()) continue; if (showUnplayed && item.isPlayed()) continue; + if (showPaused && item.getState() != FeedItem.State.IN_PROGRESS) continue; + if (showNotPaused && item.getState() == FeedItem.State.IN_PROGRESS) continue; boolean queued = queuedIds.contains(item.getId()); if (showQueued && !queued) continue; @@ -93,8 +109,10 @@ public class FeedItemFilter { if (showNotDownloaded && downloaded) continue; if (showHasMedia && !item.hasMedia()) continue; + if (showNoMedia && item.hasMedia()) continue; if (showIsFavorite && !item.isTagged(TAG_FAVORITE)) continue; + if (showNotFavorite && item.isTagged(TAG_FAVORITE)) continue; // If the item reaches here, it meets all criteria result.add(item); diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilterGroup.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilterGroup.java index 45f22ef00..fcbe2e4ab 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilterGroup.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilterGroup.java @@ -6,10 +6,10 @@ public enum FeedItemFilterGroup { PLAYED(new ItemProperties(R.string.hide_played_episodes_label, "played"), new ItemProperties(R.string.not_played, "unplayed")), PAUSED(new ItemProperties(R.string.hide_paused_episodes_label, "paused"), - new ItemProperties(R.string.not_paused, "_no_id_not_paused")), + new ItemProperties(R.string.not_paused, "not_paused")), FAVORITE(new ItemProperties(R.string.hide_is_favorite_label, "is_favorite"), - new ItemProperties(R.string.not_favorite, "_no_id_not_favorite")), - MEDIA(new ItemProperties(R.string.has_media, "_no_id_no_media"), + new ItemProperties(R.string.not_favorite, "not_favorite")), + MEDIA(new ItemProperties(R.string.has_media, "has_media"), new ItemProperties(R.string.no_media, "no_media")), QUEUED(new ItemProperties(R.string.queued_label, "queued"), new ItemProperties(R.string.not_queued_label, "not_queued")), diff --git a/core/src/main/res/drawable/filter_dialog_button_background_dark.xml b/core/src/main/res/drawable/filter_dialog_button_background_dark.xml new file mode 100644 index 000000000..046e34caf --- /dev/null +++ b/core/src/main/res/drawable/filter_dialog_button_background_dark.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:drawable="@color/dialog_filter_button_active_dark" android:state_checked="true" /> + <item android:drawable="@color/dialog_filter_button_inactive_dark" /> +</selector>
\ No newline at end of file diff --git a/core/src/main/res/drawable/filter_dialog_button_background_light.xml b/core/src/main/res/drawable/filter_dialog_button_background_light.xml index c3a1b385e..5e58d3a26 100644 --- a/core/src/main/res/drawable/filter_dialog_button_background_light.xml +++ b/core/src/main/res/drawable/filter_dialog_button_background_light.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@color/accent_light" android:state_checked="true" /> - <item android:drawable="@color/master_switch_background_light" /> + <item android:drawable="@color/dialog_filter_button_active_light" android:state_checked="true" /> + <item android:drawable="@color/dialog_filter_button_inactive_light" /> </selector>
\ No newline at end of file diff --git a/core/src/main/res/drawable/ic_filter_close_dark.xml b/core/src/main/res/drawable/ic_filter_close_dark.xml index b25b42df3..fb2c5cf81 100644 --- a/core/src/main/res/drawable/ic_filter_close_dark.xml +++ b/core/src/main/res/drawable/ic_filter_close_dark.xml @@ -10,7 +10,7 @@ <shape android:shape="oval"> <stroke android:width="4dp" - android:color="@color/grey" /> + android:color="?attr/filter_dialog_clear_active" /> </shape> </item> @@ -29,7 +29,7 @@ <shape android:shape="line"> <stroke android:width="4dp" - android:color="@color/grey" /> + android:color="?attr/filter_dialog_clear_active" /> </shape> </rotate> </item> @@ -47,7 +47,7 @@ <shape android:shape="line"> <stroke android:width="4dp" - android:color="@color/grey" /> + android:color="?attr/filter_dialog_clear_active" /> </shape> </rotate> diff --git a/core/src/main/res/drawable/ic_filter_close_light.xml b/core/src/main/res/drawable/ic_filter_close_light.xml index 003b82834..63e9a29b9 100644 --- a/core/src/main/res/drawable/ic_filter_close_light.xml +++ b/core/src/main/res/drawable/ic_filter_close_light.xml @@ -10,7 +10,7 @@ <shape android:shape="oval"> <stroke android:width="4dp" - android:color="@color/master_switch_background_light" /> + android:color="?attr/filter_dialog_clear_inactive" /> </shape> </item> @@ -28,7 +28,7 @@ <shape android:shape="line"> <stroke android:width="4dp" - android:color="@color/master_switch_background_light" /> + android:color="?attr/filter_dialog_clear_inactive" /> </shape> </rotate> </item> @@ -46,7 +46,7 @@ <shape android:shape="line"> <stroke android:width="4dp" - android:color="@color/master_switch_background_light" /> + android:color="?attr/filter_dialog_clear_inactive" /> </shape> </rotate> diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml index b89a819f1..998b086c6 100644 --- a/core/src/main/res/values/attrs.xml +++ b/core/src/main/res/values/attrs.xml @@ -1,69 +1,73 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <attr name="action_about" format="reference"/> - <attr name="action_search" format="reference"/> - <attr name="action_stream" format="reference"/> - <attr name="av_download" format="reference"/> - <attr name="av_fast_forward" format="reference"/> - <attr name="av_pause" format="reference"/> - <attr name="av_play" format="reference"/> - <attr name="av_skip" format="reference"/> - <attr name="av_rewind" format="reference"/> - <attr name="ic_delete" format="reference"/> - <attr name="content_new" format="reference"/> - <attr name="content_remove_from_queue" format="reference"/> - <attr name="storage" format="reference"/> - <attr name="statistics" format="reference"/> - <attr name="feed" format="reference"/> - <attr name="location_web_site" format="reference"/> - <attr name="navigation_accept" format="reference"/> - <attr name="navigation_cancel" format="reference"/> - <attr name="ic_load_more" format="reference"/> - <attr name="navigation_refresh" format="reference"/> - <attr name="navigation_up" format="reference"/> - <attr name="stat_playlist" format="reference"/> - <attr name="ic_folder" format="reference"/> - <attr name="type_video" format="reference"/> - <attr name="dragview_background" format="reference"/> - <attr name="ic_history" format="reference"/> - <attr name="ic_sliders" format="reference"/> - <attr name="ic_settings_playback" format="reference"/> - <attr name="ic_settings" format="reference"/> - <attr name="ic_lock_open" format="reference"/> - <attr name="ic_lock_closed" format="reference"/> - <attr name="ic_filter" format="reference"/> - <attr name="progressBarTheme" format="reference"/> - <attr name="ic_fav" format="reference"/> - <attr name="ic_unfav" format="reference"/> - <attr name="ic_sleep" format="reference"/> - <attr name="ic_sleep_off" format="reference"/> - <attr name="checkbox_multiple" format="reference"/> - <attr name="ic_select_all" format="reference"/> - <attr name="ic_select_none" format="reference"/> - <attr name="ic_sort" format="reference"/> - <attr name="ic_key" format="reference"/> - <attr name="ic_volume_adaption" format="reference"/> - <attr name="ic_network" format="reference"/> - <attr name="ic_appearance" format="reference"/> + <attr name="filter_dialog_button_background" format="reference" /> + <attr name="filter_dialog_button_clear" format="reference" /> + <attr name="filter_dialog_clear_active" format="reference" /> + <attr name="filter_dialog_clear_inactive" format="reference" /> + <attr name="action_about" format="reference" /> + <attr name="action_search" format="reference" /> + <attr name="action_stream" format="reference" /> + <attr name="av_download" format="reference" /> + <attr name="av_fast_forward" format="reference" /> + <attr name="av_pause" format="reference" /> + <attr name="av_play" format="reference" /> + <attr name="av_skip" format="reference" /> + <attr name="av_rewind" format="reference" /> + <attr name="ic_delete" format="reference" /> + <attr name="content_new" format="reference" /> + <attr name="content_remove_from_queue" format="reference" /> + <attr name="storage" format="reference" /> + <attr name="statistics" format="reference" /> + <attr name="feed" format="reference" /> + <attr name="location_web_site" format="reference" /> + <attr name="navigation_accept" format="reference" /> + <attr name="navigation_cancel" format="reference" /> + <attr name="ic_load_more" format="reference" /> + <attr name="navigation_refresh" format="reference" /> + <attr name="navigation_up" format="reference" /> + <attr name="stat_playlist" format="reference" /> + <attr name="ic_folder" format="reference" /> + <attr name="type_video" format="reference" /> + <attr name="dragview_background" format="reference" /> + <attr name="ic_history" format="reference" /> + <attr name="ic_sliders" format="reference" /> + <attr name="ic_settings_playback" format="reference" /> + <attr name="ic_settings" format="reference" /> + <attr name="ic_lock_open" format="reference" /> + <attr name="ic_lock_closed" format="reference" /> + <attr name="ic_filter" format="reference" /> + <attr name="progressBarTheme" format="reference" /> + <attr name="ic_fav" format="reference" /> + <attr name="ic_unfav" format="reference" /> + <attr name="ic_sleep" format="reference" /> + <attr name="ic_sleep_off" format="reference" /> + <attr name="checkbox_multiple" format="reference" /> + <attr name="ic_select_all" format="reference" /> + <attr name="ic_select_none" format="reference" /> + <attr name="ic_sort" format="reference" /> + <attr name="ic_key" format="reference" /> + <attr name="ic_volume_adaption" format="reference" /> + <attr name="ic_network" format="reference" /> + <attr name="ic_appearance" format="reference" /> <attr name="ic_questionmark" format="reference" /> - <attr name="ic_chat" format="reference"/> + <attr name="ic_chat" format="reference" /> <attr name="ic_bug" format="reference" /> - <attr name="master_switch_background" format="color"/> - <attr name="currently_playing_background" format="color"/> - <attr name="ic_bookmark" format="reference"/> + <attr name="master_switch_background" format="color" /> + <attr name="currently_playing_background" format="color" /> + <attr name="ic_bookmark" format="reference" /> <attr name="ic_settings_speed" format="reference" /> <attr name="ic_settings_skip" format="reference" /> - <attr name="drawer_activated_color" format="color"/> - <attr name="batch_edit_fab_icon" format="reference"/> - <attr name="action_icon_color" format="color"/> - <attr name="scrollbar_thumb" format="reference"/> - <attr name="background_elevated" format="color"/> + <attr name="drawer_activated_color" format="color" /> + <attr name="batch_edit_fab_icon" format="reference" /> + <attr name="action_icon_color" format="color" /> + <attr name="scrollbar_thumb" format="reference" /> + <attr name="background_elevated" format="color" /> <declare-styleable name="SquareImageView"> <attr name="direction" format="enum"> - <enum name="width" value="0"/> - <enum name="height" value="1"/> - <enum name="minimum" value="2"/> + <enum name="width" value="0" /> + <enum name="height" value="1" /> + <enum name="minimum" value="2" /> </attr> </declare-styleable> </resources> diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index a86d61eba..148919db7 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -28,4 +28,16 @@ <color name="master_switch_background_light">#DDDDDD</color> <color name="master_switch_background_dark">#191919</color> + <!-- filter dialog --> + <color name="dialog_filter_button_inactive_dark">#757575</color> + <color name="dialog_filter_button_inactive_light">#DDDDDD</color> + <color name="dialog_filter_button_active_dark">#3D8BFF</color> + <color name="dialog_filter_button_active_light">#0078C2</color> + + <color name="dialog_filter_clear_active_light">#46C6C6C6</color> + <color name="dialog_filter_clear_active_dark">#43707070</color> + + <color name="dialog_filter_clear_inactive_light">#757575</color> + <color name="dialog_filter_clear_inactive_dark">#46C6C6C6</color> + </resources> diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index ab78eac47..1aaa67e2d 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -1,11 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> -<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"> +<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <style name="Theme.AntennaPod.Light" parent="Theme.Base.AntennaPod.Light"> <!-- Room for API dependent attributes --> </style> <style name="Theme.Base.AntennaPod.Light" parent="Theme.MaterialComponents.Light"> + <item name="filter_dialog_button_background"> + @drawable/filter_dialog_button_background_light + </item> + <item name="filter_dialog_button_clear">@drawable/filter_dialog_button_clear</item> + <item name="filter_dialog_clear_active">@color/dialog_filter_clear_active_light</item> + <item name="filter_dialog_clear_inactive">@color/dialog_filter_clear_inactive_light</item> <item name="colorPrimary">@color/accent_light</item> <item name="colorAccent">@color/accent_light</item> <item name="colorSecondary">@color/accent_light</item> @@ -80,6 +86,12 @@ </style> <style name="Theme.Base.AntennaPod.Dark" parent="Theme.MaterialComponents"> + <item name="filter_dialog_button_background"> + @drawable/filter_dialog_button_background_dark + </item> + <item name="filter_dialog_button_clear">@drawable/filter_dialog_button_clear</item> + <item name="filter_dialog_clear_active">@color/dialog_filter_clear_active_dark</item> + <item name="filter_dialog_clear_inactive">@color/dialog_filter_clear_inactive_dark</item> <item name="colorAccent">@color/accent_dark</item> <item name="colorSecondary">@color/accent_dark</item> <item name="colorOnSecondary">@color/black</item> |