diff options
9 files changed, 80 insertions, 39 deletions
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 1917e4c75..7196198cc 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -16,6 +16,7 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.adapter.DownloadedEpisodesListAdapter; +import de.danoeh.antennapod.core.event.DownloadLogEvent; import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.storage.DBReader; @@ -27,6 +28,8 @@ import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; import static de.danoeh.antennapod.dialog.EpisodesApplyActionFragment.ACTION_ADD_TO_QUEUE; import static de.danoeh.antennapod.dialog.EpisodesApplyActionFragment.ACTION_DELETE; @@ -38,10 +41,6 @@ public class CompletedDownloadsFragment extends ListFragment { private static final String TAG = CompletedDownloadsFragment.class.getSimpleName(); - private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | - EventDistributor.DOWNLOADLOG_UPDATE | - EventDistributor.UNREAD_ITEMS_UPDATE; - private List<FeedItem> items = new ArrayList<>(); private DownloadedEpisodesListAdapter listAdapter; private Disposable disposable; @@ -56,6 +55,13 @@ public class CompletedDownloadsFragment extends ListFragment { listAdapter = new DownloadedEpisodesListAdapter(getActivity(), itemAccess); setListAdapter(listAdapter); setListShown(false); + EventBus.getDefault().register(this); + } + + @Override + public void onDestroyView() { + EventBus.getDefault().unregister(this); + super.onDestroyView(); } @Override @@ -138,12 +144,17 @@ public class CompletedDownloadsFragment extends ListFragment { private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EVENTS) != 0) { + if ((arg & EventDistributor.UNREAD_ITEMS_UPDATE) != 0) { loadItems(); } } }; + @Subscribe + public void onDownloadLogChanged(DownloadLogEvent event) { + loadItems(); + } + private void loadItems() { if (disposable != null) { disposable.dispose(); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java index 528c50747..2c5417b85 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -19,6 +19,7 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.DownloadLogAdapter; +import de.danoeh.antennapod.core.event.DownloadLogEvent; import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedMedia; @@ -30,6 +31,8 @@ import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; /** * Shows the download log @@ -45,14 +48,12 @@ public class DownloadLogFragment extends ListFragment { @Override public void onStart() { super.onStart(); - EventDistributor.getInstance().register(contentUpdate); loadItems(); } @Override public void onStop() { super.onStop(); - EventDistributor.getInstance().unregister(contentUpdate); if (disposable != null) { disposable.dispose(); } @@ -77,6 +78,13 @@ public class DownloadLogFragment extends ListFragment { adapter = new DownloadLogAdapter(getActivity(), itemAccess); setListAdapter(adapter); + EventBus.getDefault().register(this); + } + + @Override + public void onDestroyView() { + EventBus.getDefault().unregister(this); + super.onDestroyView(); } private void onFragmentLoaded() { @@ -133,15 +141,10 @@ public class DownloadLogFragment extends ListFragment { } }; - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EventDistributor.DOWNLOADLOG_UPDATE) != 0) { - loadItems(); - } - } - }; + @Subscribe + public void onDownloadLogChanged(DownloadLogEvent event) { + loadItems(); + } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 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 f9fca87fc..ab15c3602 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -12,6 +12,7 @@ import android.view.MenuItem; import android.view.View; import android.widget.ListView; +import de.danoeh.antennapod.core.event.PlaybackHistoryEvent; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -42,8 +43,7 @@ public class PlaybackHistoryFragment extends ListFragment { public static final String TAG = "PlaybackHistoryFragment"; - private static final int EVENTS = EventDistributor.PLAYBACK_HISTORY_UPDATE | - EventDistributor.PLAYER_STATUS_UPDATE; + private static final int EVENTS = EventDistributor.PLAYER_STATUS_UPDATE; private List<FeedItem> playbackHistory; private FeedItemlistAdapter adapter; @@ -166,6 +166,12 @@ public class PlaybackHistoryFragment extends ListFragment { } } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onHistoryUpdated(PlaybackHistoryEvent event) { + loadItems(); + getActivity().supportInvalidateOptionsMenu(); + } + private final 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 b8ae7bb5b..37277a7c4 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -76,9 +76,8 @@ public class QueueFragment extends Fragment { public static final String TAG = "QueueFragment"; - private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | - EventDistributor.UNREAD_ITEMS_UPDATE | // sent when playback position is reset - EventDistributor.PLAYER_STATUS_UPDATE; + private static final int EVENTS = EventDistributor.UNREAD_ITEMS_UPDATE // sent when playback position is reset + | EventDistributor.PLAYER_STATUS_UPDATE; private TextView infoBar; private RecyclerView recyclerView; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java index 7f3c60e5d..b05b7025c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java @@ -148,8 +148,7 @@ public class SearchFragment extends ListFragment { private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & (EventDistributor.UNREAD_ITEMS_UPDATE - | EventDistributor.DOWNLOAD_HANDLED)) != 0) { + if ((arg & EventDistributor.UNREAD_ITEMS_UPDATE) != 0) { search(); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/DownloadLogEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/DownloadLogEvent.java new file mode 100644 index 000000000..7428c5b00 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/event/DownloadLogEvent.java @@ -0,0 +1,16 @@ +package de.danoeh.antennapod.core.event; + +public class DownloadLogEvent { + + private DownloadLogEvent() { + } + + public static DownloadLogEvent listUpdated() { + return new DownloadLogEvent(); + } + + @Override + public String toString() { + return "DownloadLogEvent"; + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/PlaybackHistoryEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/PlaybackHistoryEvent.java new file mode 100644 index 000000000..cd3f27bf5 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/event/PlaybackHistoryEvent.java @@ -0,0 +1,16 @@ +package de.danoeh.antennapod.core.event; + +public class PlaybackHistoryEvent { + + private PlaybackHistoryEvent() { + } + + public static PlaybackHistoryEvent listUpdated() { + return new PlaybackHistoryEvent(); + } + + @Override + public String toString() { + return "PlaybackHistoryEvent"; + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java b/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java index b769eaf55..de57a776b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java @@ -22,9 +22,6 @@ public class EventDistributor extends Observable { public static final int FEED_LIST_UPDATE = 1; public static final int UNREAD_ITEMS_UPDATE = 2; - public static final int DOWNLOADLOG_UPDATE = 8; - public static final int PLAYBACK_HISTORY_UPDATE = 16; - public static final int DOWNLOAD_HANDLED = 64; public static final int PLAYER_STATUS_UPDATE = 128; private final Handler handler; @@ -86,14 +83,6 @@ public class EventDistributor extends Observable { addEvent(FEED_LIST_UPDATE); } - public void sendPlaybackHistoryUpdateBroadcast() { - addEvent(PLAYBACK_HISTORY_UPDATE); - } - - public void sendDownloadLogUpdateBroadcast() { - addEvent(DOWNLOADLOG_UPDATE); - } - public void sendPlayerStatusUpdateBroadcast() { addEvent(PLAYER_STATUS_UPDATE); } public abstract static class EventListener implements Observer { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index e0e15c1ff..9225155cf 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -6,6 +6,8 @@ import android.util.Log; import androidx.annotation.NonNull; +import de.danoeh.antennapod.core.event.DownloadLogEvent; +import de.danoeh.antennapod.core.event.PlaybackHistoryEvent; import org.greenrobot.eventbus.EventBus; import java.io.File; @@ -176,7 +178,7 @@ public class DBWriter { // we assume we also removed download log entries for the feed or its media files. // especially important if download or refresh failed, as the user should not be able // to retry these - EventDistributor.getInstance().sendDownloadLogUpdateBroadcast(); + EventBus.getDefault().post(DownloadLogEvent.listUpdated()); BackupManager backupManager = new BackupManager(context); backupManager.dataChanged(); @@ -193,7 +195,7 @@ public class DBWriter { adapter.open(); adapter.clearPlaybackHistory(); adapter.close(); - EventDistributor.getInstance().sendPlaybackHistoryUpdateBroadcast(); + EventBus.getDefault().post(PlaybackHistoryEvent.listUpdated()); }); } @@ -206,7 +208,7 @@ public class DBWriter { adapter.open(); adapter.clearDownloadLog(); adapter.close(); - EventDistributor.getInstance().sendDownloadLogUpdateBroadcast(); + EventBus.getDefault().post(DownloadLogEvent.listUpdated()); }); } @@ -227,7 +229,7 @@ public class DBWriter { adapter.open(); adapter.setFeedMediaPlaybackCompletionDate(media); adapter.close(); - EventDistributor.getInstance().sendPlaybackHistoryUpdateBroadcast(); + EventBus.getDefault().post(PlaybackHistoryEvent.listUpdated()); }); } @@ -243,7 +245,7 @@ public class DBWriter { adapter.open(); adapter.setDownloadStatus(status); adapter.close(); - EventDistributor.getInstance().sendDownloadLogUpdateBroadcast(); + EventBus.getDefault().post(DownloadLogEvent.listUpdated()); }); } |