From c277166f77351bdeda7c2dc10db21df420fb2987 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Fri, 3 Apr 2015 10:47:01 -0400 Subject: [PATCH] Can now undo swipe to mark as read. Behavior isn't ideal when the user is displaying all the items in their feed. (you can swipe new and read items and they don't go away (obviously)). --- .../fragment/NewEpisodesFragment.java | 22 +++++++++++++++++++ .../main/res/layout/new_episodes_fragment.xml | 14 ++++++++++++ core/src/main/res/values/strings.xml | 1 + 3 files changed, 37 insertions(+) diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java index e96c428fe..715222295 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -7,6 +7,7 @@ import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; +import android.os.Parcelable; import android.support.v4.app.Fragment; import android.support.v7.widget.SearchView; import android.util.Log; @@ -45,6 +46,7 @@ import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.QueueAccess; import de.danoeh.antennapod.core.util.gui.FeedItemUndoToken; +import de.danoeh.antennapod.core.util.gui.UndoBarController; import de.danoeh.antennapod.menuhandler.MenuItemUtils; import de.danoeh.antennapod.menuhandler.NavDrawerActivity; @@ -68,6 +70,8 @@ public class NewEpisodesFragment extends Fragment { private TextView txtvEmpty; private ProgressBar progLoading; + private UndoBarController undoBarController; + private List unreadItems; private List recentItems; private QueueAccess queueAccess; @@ -135,6 +139,7 @@ public class NewEpisodesFragment extends Fragment { listAdapter = null; activity.set(null); viewsCreated = false; + undoBarController = null; if (downloadObserver != null) { downloadObserver.onPause(); } @@ -262,6 +267,10 @@ public class NewEpisodesFragment extends Fragment { stopItemLoader(); FeedItem item = (FeedItem) listView.getAdapter().getItem(which); DBWriter.markItemRead(getActivity(), item.getId(), true); + undoBarController.showUndoBar(false, + getString(R.string.marked_as_read_label), new FeedItemUndoToken(item, + which) + ); // TODO: provide undo? /* undoBarController.showUndoBar(false, @@ -272,6 +281,19 @@ public class NewEpisodesFragment extends Fragment { } }); + undoBarController = new UndoBarController(root.findViewById(R.id.undobar), new UndoBarController.UndoListener() { + @Override + public void onUndo(Parcelable token) { + // Perform the undo + FeedItemUndoToken undoToken = (FeedItemUndoToken) token; + if (token != null) { + long itemId = undoToken.getFeedItemId(); + int position = undoToken.getPosition(); + DBWriter.markItemRead(getActivity(), itemId, false); + } + } + }); + final int secondColor = (UserPreferences.getTheme() == R.style.Theme_AntennaPod_Dark) ? R.color.swipe_refresh_secondary_color_dark : R.color.swipe_refresh_secondary_color_light; if (!itemsLoaded) { diff --git a/app/src/main/res/layout/new_episodes_fragment.xml b/app/src/main/res/layout/new_episodes_fragment.xml index de60bd5dc..e90171630 100644 --- a/app/src/main/res/layout/new_episodes_fragment.xml +++ b/app/src/main/res/layout/new_episodes_fragment.xml @@ -50,4 +50,18 @@ tools:layout_height="64dp" tools:background="@android:color/holo_red_light"/> + + + + +