From d8ecda1b6297205b678342e6ef42f54e32e7504e Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 4 Sep 2022 10:56:42 +0200 Subject: [PATCH] Multi-select to remove from inbox --- .../antennapod/dialog/SwipeActionsDialog.java | 4 +- .../fragment/CompletedDownloadsFragment.java | 1 + .../fragment/FeedItemlistFragment.java | 1 + .../antennapod/fragment/QueueFragment.java | 1 + .../EpisodeMultiSelectActionHandler.java | 13 ++++++ .../menu/episodes_apply_action_speeddial.xml | 45 ++++++++++++------- ui/i18n/src/main/res/values/strings.xml | 4 ++ 7 files changed, 51 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SwipeActionsDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SwipeActionsDialog.java index fd0a32e03..6849e641b 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/SwipeActionsDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/SwipeActionsDialog.java @@ -60,13 +60,15 @@ public class SwipeActionsDialog { switch (tag) { case InboxFragment.TAG: forFragment = context.getString(R.string.inbox_label); - keys = Stream.of(keys).filter(a -> !a.getId().equals(SwipeAction.TOGGLE_PLAYED)).toList(); + keys = Stream.of(keys).filter(a -> !a.getId().equals(SwipeAction.TOGGLE_PLAYED) + && !a.getId().equals(SwipeAction.DELETE)).toList(); break; case AllEpisodesFragment.TAG: forFragment = context.getString(R.string.episodes_label); break; case CompletedDownloadsFragment.TAG: forFragment = context.getString(R.string.downloads_label); + keys = Stream.of(keys).filter(a -> !a.getId().equals(SwipeAction.REMOVE_FROM_INBOX)).toList(); break; case FeedItemlistFragment.TAG: forFragment = context.getString(R.string.feeds_label); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index b4e4bebb9..fbd627516 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -104,6 +104,7 @@ public class CompletedDownloadsFragment extends Fragment speedDialView.removeActionItemById(R.id.mark_read_batch); speedDialView.removeActionItemById(R.id.mark_unread_batch); speedDialView.removeActionItemById(R.id.remove_from_queue_batch); + speedDialView.removeActionItemById(R.id.remove_all_inbox_item); speedDialView.setOnChangeListener(new SpeedDialView.OnChangeListener() { @Override public boolean onMainActionSelected() { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java index dfae22491..39918782d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java @@ -376,6 +376,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem speedDialBinding.fabSD.removeActionItemById(R.id.download_batch); speedDialBinding.fabSD.removeActionItemById(R.id.delete_batch); } + speedDialBinding.fabSD.removeActionItemById(R.id.remove_all_inbox_item); speedDialBinding.fabSD.setVisibility(View.VISIBLE); updateToolbar(); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index 467299e4c..f84e995a9 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -483,6 +483,7 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi speedDialView.removeActionItemById(R.id.mark_read_batch); speedDialView.removeActionItemById(R.id.mark_unread_batch); speedDialView.removeActionItemById(R.id.add_to_queue_batch); + speedDialView.removeActionItemById(R.id.remove_all_inbox_item); speedDialView.setOnChangeListener(new SpeedDialView.OnChangeListener() { @Override public boolean onMainActionSelected() { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java b/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java index 0dc416e0e..0e7c019f1 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java @@ -35,6 +35,8 @@ public class EpisodeMultiSelectActionHandler { queueChecked(items); } else if (actionId == R.id.remove_from_queue_batch) { removeFromQueueChecked(items); + } else if (actionId == R.id.remove_from_inbox_batch) { + removeFromInboxChecked(items); } else if (actionId == R.id.mark_read_batch) { markedCheckedPlayed(items); } else if (actionId == R.id.mark_unread_batch) { @@ -66,6 +68,17 @@ public class EpisodeMultiSelectActionHandler { showMessage(R.plurals.removed_from_queue_batch_label, checkedIds.length); } + private void removeFromInboxChecked(List items) { + LongList markUnplayed = new LongList(); + for (FeedItem episode : items) { + if (episode.isNew()) { + markUnplayed.add(episode.getId()); + } + } + DBWriter.markItemPlayed(FeedItem.UNPLAYED, markUnplayed.toArray()); + showMessage(R.plurals.removed_from_inbox_batch_label, markUnplayed.size()); + } + private void markedCheckedPlayed(List items) { long[] checkedIds = getSelectedIds(items); DBWriter.markItemPlayed(FeedItem.PLAYED, checkedIds); diff --git a/app/src/main/res/menu/episodes_apply_action_speeddial.xml b/app/src/main/res/menu/episodes_apply_action_speeddial.xml index 0ebcb238c..944d2e7c9 100644 --- a/app/src/main/res/menu/episodes_apply_action_speeddial.xml +++ b/app/src/main/res/menu/episodes_apply_action_speeddial.xml @@ -1,34 +1,45 @@ - + + - - + + - + + + android:title="@string/mark_unread_label" /> + - + + + android:title="@string/remove_from_queue_label" /> + + android:title="@string/add_to_queue_label" /> + + + diff --git a/ui/i18n/src/main/res/values/strings.xml b/ui/i18n/src/main/res/values/strings.xml index a19a60892..dbb30dffd 100644 --- a/ui/i18n/src/main/res/values/strings.xml +++ b/ui/i18n/src/main/res/values/strings.xml @@ -239,6 +239,10 @@ %d episode removed from queue. %d episodes removed from queue. + + %d episode removed from inbox. + %d episodes removed from inbox. + Add to Favorites Remove from Favorites Visit Website