summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java120
1 files changed, 44 insertions, 76 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java
index 0ff0bd24a..6e5db0963 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java
@@ -1,116 +1,84 @@
package de.danoeh.antennapod.fragment;
+import android.content.DialogInterface;
import android.os.Bundle;
-import android.view.MenuItem;
-import android.widget.FrameLayout;
-import androidx.annotation.NonNull;
-import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-
-import java.util.List;
-
+import android.widget.Toast;
+import androidx.annotation.NonNull;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.core.event.DownloadEvent;
-import de.danoeh.antennapod.core.menuhandler.MenuItemUtils;
-import de.danoeh.antennapod.core.service.download.DownloadService;
-import de.danoeh.antennapod.fragment.swipeactions.SwipeActions;
-import de.danoeh.antennapod.model.feed.FeedItem;
+import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
import de.danoeh.antennapod.core.storage.DBReader;
+import de.danoeh.antennapod.core.storage.DBWriter;
+import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedItemFilter;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
+
+import java.util.List;
/**
* Like 'EpisodesFragment' except that it only shows new episodes and
* supports swiping to mark as read.
*/
-public class InboxFragment extends EpisodesListFragment implements Toolbar.OnMenuItemClickListener {
+public class InboxFragment extends EpisodesListFragment {
public static final String TAG = "NewEpisodesFragment";
private static final String PREF_NAME = "PrefNewEpisodesFragment";
- private static final String KEY_UP_ARROW = "up_arrow";
-
- private Toolbar toolbar;
- private boolean displayUpArrow;
- private volatile boolean isUpdatingFeeds;
-
- @Override
- protected String getPrefName() {
- return PREF_NAME;
- }
-
- @Override
- protected boolean shouldUpdatedItemRemainInList(FeedItem item) {
- return item.isNew();
- }
@NonNull
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View inboxContainer = View.inflate(getContext(), R.layout.list_container_fragment, null);
- View root = super.onCreateView(inflater, container, savedInstanceState);
- ((FrameLayout) inboxContainer.findViewById(R.id.listContent)).addView(root);
+ final View root = super.onCreateView(inflater, container, savedInstanceState);
+ toolbar.inflateMenu(R.menu.inbox);
+ toolbar.setTitle(R.string.inbox_label);
+ updateToolbar();
+ emptyView.setIcon(R.drawable.ic_inbox);
emptyView.setTitle(R.string.no_inbox_head_label);
emptyView.setMessage(R.string.no_inbox_label);
-
- toolbar = inboxContainer.findViewById(R.id.toolbar);
- toolbar.setOnMenuItemClickListener(this);
- toolbar.inflateMenu(R.menu.inbox);
- toolbar.setOnLongClickListener(v -> {
- recyclerView.scrollToPosition(5);
- recyclerView.post(() -> recyclerView.smoothScrollToPosition(0));
- return false;
- });
- displayUpArrow = getParentFragmentManager().getBackStackEntryCount() != 0;
- if (savedInstanceState != null) {
- displayUpArrow = savedInstanceState.getBoolean(KEY_UP_ARROW);
- }
- ((MainActivity) getActivity()).setupToolbarToggle(toolbar, displayUpArrow);
-
- SwipeActions swipeActions = new SwipeActions(this, TAG).attachTo(recyclerView);
- swipeActions.setFilter(new FeedItemFilter(FeedItemFilter.NEW));
-
speedDialView.removeActionItemById(R.id.mark_unread_batch);
speedDialView.removeActionItemById(R.id.remove_from_queue_batch);
speedDialView.removeActionItemById(R.id.delete_batch);
- return inboxContainer;
- }
-
- private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker =
- () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds();
-
- private void updateToolbar() {
- isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(toolbar.getMenu(),
- R.id.refresh_item, updateRefreshMenuItemChecker);
+ return root;
}
@Override
- public void onStart() {
- super.onStart();
- if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) {
- updateToolbar();
- }
+ protected FeedItemFilter getFilter() {
+ return new FeedItemFilter(FeedItemFilter.NEW);
}
- @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
- public void onEventMainThread(DownloadEvent event) {
- super.onEventMainThread(event);
- if (event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
- updateToolbar();
- }
+ @Override
+ protected String getFragmentTag() {
+ return TAG;
}
@Override
- public boolean onMenuItemClick(MenuItem item) {
- return super.onOptionsItemSelected(item);
+ protected String getPrefName() {
+ return PREF_NAME;
}
@Override
- public void onSaveInstanceState(@NonNull Bundle outState) {
- outState.putBoolean(KEY_UP_ARROW, displayUpArrow);
- super.onSaveInstanceState(outState);
+ public boolean onMenuItemClick(MenuItem item) {
+ if (super.onOptionsItemSelected(item)) {
+ return true;
+ }
+ if (item.getItemId() == R.id.remove_all_inbox_item) {
+ ConfirmationDialog removeAllNewFlagsConfirmationDialog = new ConfirmationDialog(getActivity(),
+ R.string.remove_all_inbox_label,
+ R.string.remove_all_inbox_confirmation_msg) {
+
+ @Override
+ public void onConfirmButtonPressed(DialogInterface dialog) {
+ dialog.dismiss();
+ DBWriter.removeAllNewFlags();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(
+ R.string.removed_all_inbox_msg, Toast.LENGTH_SHORT);
+ }
+ };
+ removeAllNewFlagsConfirmationDialog.createNewDialog().show();
+ return true;
+ }
+ return false;
}
@NonNull