From 8850c09920723559895062050163817979bcd8d2 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Sun, 5 Apr 2015 20:49:11 +0200 Subject: QueueEvents, Queue shows undobar on removal of an item --- .../danoeh/antennapod/activity/MainActivity.java | 17 ++++-- .../danoeh/antennapod/fragment/ItemFragment.java | 7 ++- .../antennapod/fragment/ItemlistFragment.java | 8 ++- .../antennapod/fragment/NewEpisodesFragment.java | 35 ++++++++----- .../fragment/PlaybackHistoryFragment.java | 7 +++ .../danoeh/antennapod/fragment/QueueFragment.java | 61 +++++++++++++++------- .../menuhandler/FeedItemMenuHandler.java | 3 +- 7 files changed, 99 insertions(+), 39 deletions(-) (limited to 'app/src/main/java/de/danoeh') diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 7f0dceb77..a28e4114b 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -52,8 +52,7 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | EventDistributor.DOWNLOAD_QUEUED | EventDistributor.FEED_LIST_UPDATE - | EventDistributor.UNREAD_ITEMS_UPDATE - | EventDistributor.QUEUE_UPDATE; + | EventDistributor.UNREAD_ITEMS_UPDATE; public static final String PREF_NAME = "MainActivityPrefs"; public static final String PREF_IS_FIRST_LAUNCH = "prefMainActivityIsFirstLaunch"; @@ -324,6 +323,13 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity } + @Override + public void onStart() { + super.onStart(); + EventDistributor.getInstance().register(contentUpdate); + EventBus.getDefault().register(this); + } + @Override protected void onPause() { super.onPause(); @@ -333,7 +339,6 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity protected void onResume() { super.onResume(); StorageUtils.checkStorageAvailability(this); - EventDistributor.getInstance().register(contentUpdate); Intent intent = getIntent(); if (navDrawerData != null && intent.hasExtra(EXTRA_NAV_INDEX) && intent.hasExtra(EXTRA_NAV_TYPE)) { @@ -348,6 +353,7 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity super.onStop(); cancelLoadTask(); EventDistributor.getInstance().unregister(contentUpdate); + EventBus.getDefault().unregister(this); } @Override @@ -436,6 +442,11 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity } } + public void onEvent(QueueEvent event) { + Log.d(TAG, "onEvent(" + event + ")"); + loadData(); + } + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java index b6edd30aa..10409a421 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java @@ -67,7 +67,6 @@ public class ItemFragment extends Fragment implements LoaderManager.LoaderCallba private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | EventDistributor.DOWNLOAD_QUEUED | - EventDistributor.QUEUE_UPDATE | EventDistributor.UNREAD_ITEMS_UPDATE; private static final String ARG_FEEDITEM = "feeditem"; @@ -129,6 +128,7 @@ public class ItemFragment extends Fragment implements LoaderManager.LoaderCallba public void onStart() { super.onStart(); EventDistributor.getInstance().register(contentUpdate); + EventBus.getDefault().register(this); if (downloadObserver != null) { downloadObserver.setActivity(getActivity()); downloadObserver.onResume(); @@ -143,6 +143,7 @@ public class ItemFragment extends Fragment implements LoaderManager.LoaderCallba public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); + EventBus.getDefault().unregister(this); } private void resetViewState() { @@ -392,6 +393,10 @@ public class ItemFragment extends Fragment implements LoaderManager.LoaderCallba } } + public void onEvent(QueueEvent event) { + Log.d(TAG, "onEvent(" + event + ")"); + getLoaderManager().restartLoader(0, null, ItemFragment.this); + } @Override public Loader> onCreateLoader(int id, Bundle args) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java index d59add6b3..a2cb8da18 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -67,7 +67,6 @@ public class ItemlistFragment extends ListFragment { private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | EventDistributor.DOWNLOAD_QUEUED - | EventDistributor.QUEUE_UPDATE | EventDistributor.UNREAD_ITEMS_UPDATE | EventDistributor.PLAYER_STATUS_UPDATE; @@ -120,6 +119,7 @@ public class ItemlistFragment extends ListFragment { public void onStart() { super.onStart(); EventDistributor.getInstance().register(contentUpdate); + EventBus.getDefault().register(this); if (downloadObserver != null) { downloadObserver.setActivity(getActivity()); downloadObserver.onResume(); @@ -133,6 +133,7 @@ public class ItemlistFragment extends ListFragment { public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); + EventBus.getDefault().unregister(this); stopItemLoader(); } @@ -285,6 +286,11 @@ public class ItemlistFragment extends ListFragment { } } + public void onEvent(QueueEvent event) { + Log.d(TAG, "onEvent(" + event + ")"); + startItemLoader(); + } + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override 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 9ed44a8dd..b24bf195a 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -7,7 +7,6 @@ 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,13 +44,9 @@ import de.danoeh.antennapod.core.storage.DBReader; 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.QueueAccess; +import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.gui.FeedItemUndoToken; import de.danoeh.antennapod.core.util.gui.UndoBarController; - -import de.danoeh.antennapod.core.util.LongList; - import de.danoeh.antennapod.menuhandler.MenuItemUtils; import de.danoeh.antennapod.menuhandler.NavDrawerActivity; import de.greenrobot.event.EventBus; @@ -112,6 +107,7 @@ public class NewEpisodesFragment extends Fragment { public void onStart() { super.onStart(); EventDistributor.getInstance().register(contentUpdate); + EventBus.getDefault().register(this); this.activity.set((MainActivity) getActivity()); if (downloadObserver != null) { downloadObserver.setActivity(getActivity()); @@ -126,6 +122,7 @@ public class NewEpisodesFragment extends Fragment { public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); + EventBus.getDefault().unregister(this); stopItemLoader(); } @@ -269,17 +266,26 @@ public class NewEpisodesFragment extends Fragment { } }); - undoBarController = new UndoBarController(root.findViewById(R.id.undobar), new UndoBarController.UndoListener() { + undoBarController = new UndoBarController(root.findViewById(R.id.undobar), new UndoBarController.UndoListener() { @Override - public void onUndo(Parcelable token) { - // Perform the undo - FeedItemUndoToken undoToken = (FeedItemUndoToken) token; + public void onUndo(FeedItemUndoToken token) { if (token != null) { - long itemId = undoToken.getFeedItemId(); - int position = undoToken.getPosition(); + long itemId = token.getFeedItemId(); + int position = token.getPosition(); DBWriter.markItemRead(getActivity(), itemId, false); } } + @Override + public void onHide(FeedItemUndoToken token) { + if (token != null) { + long itemId = token.getFeedItemId(); + FeedItem item = DBReader.getFeedItem(getActivity(), itemId); + FeedMedia media = item.getMedia(); + if(media != null && media.hasAlmostEnded() && UserPreferences.isAutoDelete()) { + DBWriter.deleteFeedMediaOfItem(getActivity(), media.getId()); + } + } + } }); final int secondColor = (UserPreferences.getTheme() == R.style.Theme_AntennaPod_Dark) ? R.color.swipe_refresh_secondary_color_dark : R.color.swipe_refresh_secondary_color_light; @@ -371,6 +377,11 @@ public class NewEpisodesFragment extends Fragment { }; + public void onEvent(QueueEvent event) { + Log.d(TAG, "onEvent(" + event + ")"); + startItemLoader(); + } + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java index 6e2e6834c..647fe550d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -70,12 +70,14 @@ public class PlaybackHistoryFragment extends ListFragment { public void onStart() { super.onStart(); EventDistributor.getInstance().register(contentUpdate); + EventBus.getDefault().register(this); } @Override public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); + EventBus.getDefault().unregister(this); stopItemLoader(); } @@ -169,6 +171,11 @@ public class PlaybackHistoryFragment extends ListFragment { } } + public void onEvent(QueueEvent event) { + Log.d(TAG, "onEvent(" + event + ")"); + startItemLoader(); + } + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override 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 509c9fc31..93b99c728 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -58,7 +58,6 @@ public class QueueFragment extends Fragment { private static final String TAG = "QueueFragment"; private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | EventDistributor.DOWNLOAD_QUEUED | - EventDistributor.QUEUE_UPDATE | EventDistributor.PLAYER_STATUS_UPDATE; private DragSortListView listView; @@ -66,7 +65,7 @@ public class QueueFragment extends Fragment { private TextView txtvEmpty; private ProgressBar progLoading; - private UndoBarController undoBarController; + private UndoBarController undoBarController; private List queue; private List downloaderList; @@ -106,6 +105,7 @@ public class QueueFragment extends Fragment { public void onStart() { super.onStart(); EventDistributor.getInstance().register(contentUpdate); + EventBus.getDefault().register(this); this.activity.set((MainActivity) getActivity()); if (downloadObserver != null) { downloadObserver.setActivity(getActivity()); @@ -126,6 +126,7 @@ public class QueueFragment extends Fragment { public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); + EventBus.getDefault().unregister(this); stopItemLoader(); } @@ -135,6 +136,15 @@ public class QueueFragment extends Fragment { this.activity.set((MainActivity) activity); } + public void onEventMainThread(QueueEvent event) { + Log.d(TAG, "onEvent(" + event + ")"); + if(event.action == QueueEvent.Action.REMOVED) { + undoBarController.showUndoBar(false, getString(R.string.removed_from_queue), + new FeedItemUndoToken(event.item, event.position)); + } + startItemLoader(); + } + private void saveScrollPosition() { SharedPreferences prefs = getActivity().getSharedPreferences(PREFS, Context.MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); @@ -345,29 +355,40 @@ public class QueueFragment extends Fragment { @Override public void remove(int which) { - Log.d(TAG, "remove("+which+")"); + Log.d(TAG, "remove(" + which + ")"); 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) - ); + DBWriter.markItemRead(getActivity(), item.getId(), true); + DBWriter.removeQueueItem(getActivity(), item, true); } }); - 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); - } - } - }); + undoBarController = new UndoBarController(root.findViewById(R.id.undobar), + new UndoBarController.UndoListener() { + + @Override + public void onUndo(FeedItemUndoToken token) { + if (token != null) { + long itemId = token.getFeedItemId(); + int position = token.getPosition(); + DBWriter.markItemRead(getActivity(), itemId, false); + DBWriter.addQueueItemAt(getActivity(), itemId, position, false); + } + } + + @Override + public void onHide(FeedItemUndoToken token) { + if (token != null) { + long itemId = token.getFeedItemId(); + FeedItem item = DBReader.getFeedItem(getActivity(), itemId); + FeedMedia media = item.getMedia(); + if(media != null && media.hasAlmostEnded() && UserPreferences.isAutoDelete()) { + DBWriter.deleteFeedMediaOfItem(getActivity(), media.getId()); + } + } + } + + }); registerForContextMenu(listView); diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java index b23f0ef28..ebb0a9e58 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java @@ -17,7 +17,6 @@ import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.LongList; -import de.danoeh.antennapod.core.util.QueueAccess; import de.danoeh.antennapod.core.util.ShareUtils; /** @@ -57,7 +56,7 @@ public class FeedItemMenuHandler { * @return Returns true if selectedItem is not null. */ public static boolean onPrepareMenu(MenuInterface mi, - FeedItem selectedItem, boolean showExtendedMenu, QueueAccess queueAccess) { + FeedItem selectedItem, boolean showExtendedMenu, LongList queueAccess) { if (selectedItem == null) { return false; } -- cgit v1.2.3