From 9444f266730b4b2b2a064a3d2557962d5db16a5f Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Wed, 4 Mar 2015 14:34:35 +0100 Subject: Show UndoBar when dismiss-by-swipe --- .../danoeh/antennapod/fragment/QueueFragment.java | 30 +++++++++++++++++++--- app/src/main/res/layout/queue_fragment.xml | 16 +++++++++++- 2 files changed, 42 insertions(+), 4 deletions(-) (limited to 'app') 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 30238ff51..62a01d0ad 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -6,6 +6,7 @@ import android.content.DialogInterface; 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; @@ -42,6 +43,8 @@ import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.QueueSorter; +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; @@ -59,6 +62,8 @@ public class QueueFragment extends Fragment { private TextView txtvEmpty; private ProgressBar progLoading; + private UndoBarController undoBarController; + private List queue; private List downloaderList; @@ -120,6 +125,7 @@ public class QueueFragment extends Fragment { unregisterForContextMenu(listView); listAdapter = null; activity.set(null); + undoBarController = null; viewsCreated = false; blockDownloadObserverUpdate = false; if (downloadObserver != null) { @@ -302,12 +308,30 @@ public class QueueFragment extends Fragment { @Override public void remove(int which) { Log.d(TAG, "remove("+which+")"); - final FeedItem item = queue.remove(which); - DBWriter.removeQueueItem(getActivity(), item.getId(), false); - listAdapter.notifyDataSetChanged(); + stopItemLoader(); + FeedItem item = (FeedItem) listView.getAdapter().getItem(which); + DBWriter.removeQueueItem(getActivity(), item.getId(), true); + undoBarController.showUndoBar(false, + getString(R.string.removed_from_queue), new FeedItemUndoToken(item, + which) + ); } }); + 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.addQueueItemAt(getActivity(), itemId, position, false); + } + } + }); + + registerForContextMenu(listView); if (!itemsLoaded) { diff --git a/app/src/main/res/layout/queue_fragment.xml b/app/src/main/res/layout/queue_fragment.xml index 6ac7fbb63..307d95a8d 100644 --- a/app/src/main/res/layout/queue_fragment.xml +++ b/app/src/main/res/layout/queue_fragment.xml @@ -43,4 +43,18 @@ android:indeterminateOnly="true" android:visibility="gone" /> - \ No newline at end of file + + + + +