diff options
23 files changed, 187 insertions, 326 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java index 415ee9b68..dbc86a228 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java @@ -18,7 +18,6 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.event.QueueEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; @@ -106,18 +105,8 @@ public class PlaybackServiceTaskManagerTest { assertNotNull(testQueue); assertTrue(testQueue.isEmpty()); - - final CountDownLatch countDownLatch = new CountDownLatch(1); - EventDistributor.EventListener queueListener = new EventDistributor.EventListener() { - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - countDownLatch.countDown(); - } - }; - EventDistributor.getInstance().register(queueListener); List<FeedItem> queue = writeTestQueue("a"); EventBus.getDefault().post(QueueEvent.setQueue(queue)); - countDownLatch.await(5000, TimeUnit.MILLISECONDS); assertNotNull(queue); testQueue = pstm.getQueue(); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java index 82dc63d68..35a4014ba 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -4,6 +4,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.util.Log; +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -18,7 +19,6 @@ import java.util.List; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.core.event.QueueEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; @@ -201,7 +201,7 @@ public class UITestUtils { adapter.setCompleteFeed(hostedFeeds.toArray(new Feed[hostedFeeds.size()])); adapter.setQueue(queue); adapter.close(); - EventDistributor.getInstance().sendFeedUpdateBroadcast(); + EventBus.getDefault().post(new FeedListUpdateEvent()); EventBus.getDefault().post(QueueEvent.setQueue(queue)); } diff --git a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java index 94d281a45..16c3dcf1b 100644 --- a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java +++ b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java @@ -10,7 +10,6 @@ import com.joanzapata.iconify.fonts.MaterialModule; import de.danoeh.antennapod.core.ApCoreEventBusIndex; import de.danoeh.antennapod.core.ClientConfig; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.spa.SPAUtil; import org.greenrobot.eventbus.EventBus; @@ -55,7 +54,6 @@ public class PodcastApp extends Application { ClientConfig.initialize(this); - EventDistributor.getInstance(); Iconify.with(new FontAwesomeModule()); Iconify.with(new MaterialModule()); 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 6a38f8f0a..31b708443 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -34,6 +34,8 @@ import android.widget.Toast; import com.bumptech.glide.Glide; +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; +import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.Validate; import org.greenrobot.eventbus.EventBus; @@ -48,7 +50,6 @@ import de.danoeh.antennapod.core.asynctask.FeedRemover; import de.danoeh.antennapod.core.dialog.ConfirmationDialog; import de.danoeh.antennapod.core.event.MessageEvent; import de.danoeh.antennapod.core.event.QueueEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences; @@ -84,9 +85,6 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi private static final String TAG = "MainActivity"; - private static final int EVENTS = EventDistributor.FEED_LIST_UPDATE - | EventDistributor.UNREAD_ITEMS_UPDATE; - public static final String PREF_NAME = "MainActivityPrefs"; public static final String PREF_IS_FIRST_LAUNCH = "prefMainActivityIsFirstLaunch"; public static final String PREF_LAST_FRAGMENT_TAG = "prefMainActivityLastFragmentTag"; @@ -490,7 +488,6 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi @Override public void onStart() { super.onStart(); - EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().register(this); RatingDialog.init(this); } @@ -518,7 +515,6 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi @Override protected void onStop() { super.onStop(); - EventDistributor.getInstance().unregister(contentUpdate); EventBus.getDefault().unregister(this); if (disposable != null) { disposable.dispose(); @@ -817,16 +813,16 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi snackbar.show(); } - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + @Subscribe + public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) { + loadData(); + } - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((EVENTS & arg) != 0) { - Log.d(TAG, "Received contentUpdate Intent."); - loadData(); - } - } - }; + + @Subscribe + public void onFeedListChanged(FeedListUpdateEvent event) { + loadData(); + } private void handleNavIntent() { Log.d(TAG, "handleNavIntent()"); diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java index 016168b45..21f4ad5be 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java @@ -36,8 +36,8 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.NavListAdapter; import de.danoeh.antennapod.core.asynctask.FeedRemover; import de.danoeh.antennapod.core.dialog.ConfirmationDialog; +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; import de.danoeh.antennapod.core.event.MessageEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.preferences.UserPreferences; @@ -119,7 +119,6 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem if (disposable != null) { disposable.dispose(); } - EventDistributor.getInstance().unregister(contentUpdate); saveCurrentFragment(); } @@ -171,7 +170,6 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem @Override protected void onStart() { super.onStart(); - EventDistributor.getInstance().register(contentUpdate); loadData(); } @@ -445,16 +443,10 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem snackbar.show(); } - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((EventDistributor.FEED_LIST_UPDATE & arg) != 0) { - Log.d(TAG, "Received contentUpdate Intent."); - loadData(); - } - } - }; + @Subscribe + public void onFeedListChanged(FeedListUpdateEvent event) { + loadData(); + } private final NavListAdapter.ItemAccess itemAccess = new NavListAdapter.ItemAccess() { @Override diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index 9486c810f..97a2d5913 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -32,12 +32,11 @@ import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; import org.apache.commons.lang3.StringUtils; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; import java.io.File; import java.io.IOException; @@ -49,7 +48,6 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.FeedItemlistDescriptionAdapter; import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.core.event.DownloadEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedPreferences; @@ -94,7 +92,6 @@ public class OnlineFeedViewActivity extends AppCompatActivity { public static final String ARG_TITLE = "title"; private static final int RESULT_ERROR = 2; private static final String TAG = "OnlineFeedViewActivity"; - private static final int EVENTS = EventDistributor.FEED_LIST_UPDATE; private volatile List<Feed> feeds; private Feed feed; private String selectedDownloadUrl; @@ -109,30 +106,6 @@ public class OnlineFeedViewActivity extends AppCompatActivity { private Disposable download; private Disposable parser; private Disposable updater; - private final EventDistributor.EventListener listener = new EventDistributor.EventListener() { - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EventDistributor.FEED_LIST_UPDATE) != 0) { - updater = Observable.fromCallable(DBReader::getFeedList) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - feeds -> { - OnlineFeedViewActivity.this.feeds = feeds; - setSubscribeButtonState(feed); - }, error -> Log.e(TAG, Log.getStackTraceString(error)) - ); - } else if ((arg & EVENTS) != 0) { - setSubscribeButtonState(feed); - } - } - }; - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEventMainThread(DownloadEvent event) { - Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); - setSubscribeButtonState(feed); - } @Override protected void onCreate(Bundle savedInstanceState) { @@ -202,7 +175,6 @@ public class OnlineFeedViewActivity extends AppCompatActivity { protected void onStart() { super.onStart(); isPaused = false; - EventDistributor.getInstance().register(listener); EventBus.getDefault().register(this); } @@ -210,7 +182,6 @@ public class OnlineFeedViewActivity extends AppCompatActivity { protected void onStop() { super.onStop(); isPaused = true; - EventDistributor.getInstance().unregister(listener); EventBus.getDefault().unregister(this); if (downloader != null && !downloader.isFinished()) { downloader.cancel(); @@ -312,6 +283,25 @@ public class OnlineFeedViewActivity extends AppCompatActivity { } } + @Subscribe + public void onFeedListChanged(FeedListUpdateEvent event) { + updater = Observable.fromCallable(DBReader::getFeedList) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + feeds -> { + OnlineFeedViewActivity.this.feeds = feeds; + setSubscribeButtonState(feed); + }, error -> Log.e(TAG, Log.getStackTraceString(error)) + ); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(DownloadEvent event) { + Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); + setSubscribeButtonState(feed); + } + private void parseFeed() { if (feed == null || (feed.getFile_url() == null && feed.isDownloaded())) { throw new IllegalStateException("feed must be non-null and downloaded when parseFeed is called"); @@ -388,7 +378,6 @@ public class OnlineFeedViewActivity extends AppCompatActivity { this.feed = feed; this.selectedDownloadUrl = feed.getDownload_url(); - EventDistributor.getInstance().register(listener); ListView listView = findViewById(R.id.listview); listView.setSelector(android.R.color.transparent); LayoutInflater inflater = LayoutInflater.from(this); 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 7196198cc..fc1eec071 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -17,7 +17,7 @@ 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.event.UnreadItemsUpdateEvent; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; @@ -67,14 +67,12 @@ public class CompletedDownloadsFragment 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(); } @@ -141,20 +139,16 @@ public class CompletedDownloadsFragment extends ListFragment { } }; - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EventDistributor.UNREAD_ITEMS_UPDATE) != 0) { - loadItems(); - } - } - }; - @Subscribe public void onDownloadLogChanged(DownloadLogEvent event) { loadItems(); } + @Subscribe + public void onUnreadItemsChanged(UnreadItemsUpdateEvent 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 2c5417b85..16337b00d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -20,7 +20,6 @@ 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; import de.danoeh.antennapod.core.service.download.DownloadStatus; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java index 3fc67f795..3802e1f65 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java @@ -24,7 +24,10 @@ import android.widget.Toast; import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration; +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; import de.danoeh.antennapod.core.event.PlaybackPositionEvent; +import de.danoeh.antennapod.core.event.PlayerStatusEvent; +import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -39,7 +42,6 @@ import de.danoeh.antennapod.core.dialog.ConfirmationDialog; import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.DownloaderUpdate; import de.danoeh.antennapod.core.event.FeedItemEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.service.download.DownloadRequest; @@ -64,11 +66,6 @@ import io.reactivex.schedulers.Schedulers; public abstract class EpisodesListFragment extends Fragment { public static final String TAG = "EpisodesListFragment"; - - private static final int EVENTS = EventDistributor.FEED_LIST_UPDATE | - EventDistributor.UNREAD_ITEMS_UPDATE | - EventDistributor.PLAYER_STATUS_UPDATE; - private static final String DEFAULT_PREF_NAME = "PrefAllEpisodesFragment"; private static final String PREF_SCROLL_POSITION = "scroll_position"; private static final String PREF_SCROLL_OFFSET = "scroll_offset"; @@ -102,7 +99,6 @@ public abstract class EpisodesListFragment extends Fragment { public void onStart() { super.onStart(); setHasOptionsMenu(true); - EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().register(this); loadItems(); } @@ -124,7 +120,6 @@ public abstract class EpisodesListFragment extends Fragment { public void onStop() { super.onStop(); EventBus.getDefault().unregister(this); - EventDistributor.getInstance().unregister(contentUpdate); if (disposable != null) { disposable.dispose(); } @@ -414,17 +409,27 @@ public abstract class EpisodesListFragment extends Fragment { } } - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EVENTS) != 0) { - loadItems(); - if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) { - requireActivity().invalidateOptionsMenu(); - } - } + private void updateUi() { + loadItems(); + if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) { + requireActivity().invalidateOptionsMenu(); } - }; + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onPlayerStatusChanged(PlayerStatusEvent event) { + updateUi(); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) { + updateUi(); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onFeedListChanged(FeedListUpdateEvent event) { + updateUi(); + } void loadItems() { if (disposable != null) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java index 076320754..48c84344c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java @@ -45,8 +45,12 @@ import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.DownloaderUpdate; import de.danoeh.antennapod.core.event.FeedItemEvent; + +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; import de.danoeh.antennapod.core.event.PlaybackPositionEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; +import de.danoeh.antennapod.core.event.PlayerStatusEvent; +import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; + import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedEvent; import de.danoeh.antennapod.core.feed.FeedItem; @@ -81,12 +85,6 @@ import io.reactivex.schedulers.Schedulers; @SuppressLint("ValidFragment") public class FeedItemlistFragment extends ListFragment { private static final String TAG = "ItemlistFragment"; - - private static final int EVENTS = EventDistributor.UNREAD_ITEMS_UPDATE - | EventDistributor.FEED_LIST_UPDATE - | EventDistributor.PLAYER_STATUS_UPDATE; - - public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.danoeh.antennapod.activity.selected_feeditem"; private static final String ARGUMENT_FEED_ID = "argument.de.danoeh.antennapod.feed_id"; private FeedItemlistAdapter adapter; @@ -153,7 +151,6 @@ public class FeedItemlistFragment extends ListFragment { registerForContextMenu(getListView()); - EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().register(this); loadItems(); } @@ -162,7 +159,6 @@ public class FeedItemlistFragment extends ListFragment { public void onDestroyView() { super.onDestroyView(); - EventDistributor.getInstance().unregister(contentUpdate); EventBus.getDefault().unregister(this); if (disposable != null) { disposable.dispose(); @@ -395,18 +391,26 @@ public class FeedItemlistFragment extends ListFragment { } } - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private void updateUi() { + refreshHeaderView(); + loadItems(); + updateProgressBarVisibility(); + } - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((EVENTS & arg) != 0) { - Log.d(TAG, "Received contentUpdate Intent. arg " + arg); - refreshHeaderView(); - loadItems(); - updateProgressBarVisibility(); - } - } - }; + @Subscribe(threadMode = ThreadMode.MAIN) + public void onPlayerStatusChanged(PlayerStatusEvent event) { + updateUi(); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) { + updateUi(); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onFeedListChanged(FeedListUpdateEvent event) { + updateUi(); + } private void updateProgressBarVisibility() { if (isUpdatingFeed != updateRefreshMenuItemChecker.isRefreshing()) { 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 2f64ac106..959ff39f2 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java @@ -35,6 +35,7 @@ import com.bumptech.glide.request.RequestOptions; import com.joanzapata.iconify.Iconify; import com.joanzapata.iconify.widget.IconButton; +import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; import org.apache.commons.lang3.ArrayUtils; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -49,7 +50,6 @@ import de.danoeh.antennapod.adapter.actionbutton.ItemActionButton; import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.DownloaderUpdate; import de.danoeh.antennapod.core.event.FeedItemEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.glide.ApGlideSettings; @@ -81,9 +81,6 @@ import io.reactivex.schedulers.Schedulers; public class ItemFragment extends Fragment implements OnSwipeGesture { private static final String TAG = "ItemFragment"; - - private static final int EVENTS = EventDistributor.UNREAD_ITEMS_UPDATE; - private static final String ARG_FEEDITEMS = "feeditems"; private static final String ARG_FEEDITEM_POS = "feeditem_pos"; @@ -268,7 +265,6 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { @Override public void onStart() { super.onStart(); - EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().register(this); load(); } @@ -285,7 +281,6 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { @Override public void onStop() { super.onStop(); - EventDistributor.getInstance().unregister(contentUpdate); EventBus.getDefault().unregister(this); } @@ -558,15 +553,10 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { } } - - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EVENTS) != 0) { - load(); - } - } - }; + @Subscribe + public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) { + load(); + } private void load() { if(disposable != null) { 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 ab15c3602..e04bd7488 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -13,6 +13,7 @@ import android.view.View; import android.widget.ListView; import de.danoeh.antennapod.core.event.PlaybackHistoryEvent; +import de.danoeh.antennapod.core.event.PlayerStatusEvent; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -25,7 +26,6 @@ import de.danoeh.antennapod.adapter.FeedItemlistAdapter; import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.DownloaderUpdate; import de.danoeh.antennapod.core.event.FeedItemEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.service.download.Downloader; @@ -40,11 +40,8 @@ import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; public class PlaybackHistoryFragment extends ListFragment { - public static final String TAG = "PlaybackHistoryFragment"; - private static final int EVENTS = EventDistributor.PLAYER_STATUS_UPDATE; - private List<FeedItem> playbackHistory; private FeedItemlistAdapter adapter; private List<Downloader> downloaderList; @@ -83,7 +80,6 @@ public class PlaybackHistoryFragment extends ListFragment { @Override public void onStart() { super.onStart(); - EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().register(this); loadItems(); } @@ -92,7 +88,6 @@ public class PlaybackHistoryFragment extends ListFragment { public void onStop() { super.onStop(); EventBus.getDefault().unregister(this); - EventDistributor.getInstance().unregister(contentUpdate); if (disposable != null) { disposable.dispose(); } @@ -172,16 +167,11 @@ public class PlaybackHistoryFragment extends ListFragment { getActivity().supportInvalidateOptionsMenu(); } - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EVENTS) != 0) { - loadItems(); - getActivity().supportInvalidateOptionsMenu(); - } - } - }; + @Subscribe(threadMode = ThreadMode.MAIN) + public void onPlayerStatusChanged(PlayerStatusEvent event) { + loadItems(); + getActivity().supportInvalidateOptionsMenu(); + } private void onFragmentLoaded() { adapter.notifyDataSetChanged(); 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 c0552775f..8f54e0574 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -41,8 +41,9 @@ import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.DownloaderUpdate; import de.danoeh.antennapod.core.event.FeedItemEvent; import de.danoeh.antennapod.core.event.PlaybackPositionEvent; +import de.danoeh.antennapod.core.event.PlayerStatusEvent; +import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; import de.danoeh.antennapod.core.event.QueueEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils; @@ -73,12 +74,8 @@ import static de.danoeh.antennapod.dialog.EpisodesApplyActionFragment.ACTION_REM * Shows all items in the queue */ public class QueueFragment extends Fragment { - public static final String TAG = "QueueFragment"; - 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; private QueueRecyclerAdapter recyclerAdapter; @@ -116,7 +113,6 @@ public class QueueFragment extends Fragment { onFragmentLoaded(true); } loadItems(true); - EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().register(this); } @@ -129,9 +125,8 @@ public class QueueFragment extends Fragment { @Override public void onStop() { super.onStop(); - EventDistributor.getInstance().unregister(contentUpdate); EventBus.getDefault().unregister(this); - if(disposable != null) { + if (disposable != null) { disposable.dispose(); } } @@ -221,6 +216,23 @@ public class QueueFragment extends Fragment { } } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onPlayerStatusChanged(PlayerStatusEvent event) { + loadItems(false); + if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) { + getActivity().supportInvalidateOptionsMenu(); + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) { + // Sent when playback position is reset + loadItems(false); + if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) { + getActivity().supportInvalidateOptionsMenu(); + } + } + private void saveScrollPosition() { int firstItem = layoutManager.findFirstVisibleItemPosition(); View firstItemView = layoutManager.findViewByPosition(firstItem); @@ -710,19 +722,6 @@ public class QueueFragment extends Fragment { } }; - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EVENTS) != 0) { - Log.d(TAG, "arg: " + arg); - loadItems(false); - if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) { - getActivity().supportInvalidateOptionsMenu(); - } - } - } - }; - private void loadItems(final boolean restoreScrollPosition) { Log.d(TAG, "loadItems()"); if(disposable != null) { 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 b05b7025c..d124d6aa2 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java @@ -20,7 +20,7 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.adapter.SearchlistAdapter; -import de.danoeh.antennapod.core.feed.EventDistributor; +import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedComponent; import de.danoeh.antennapod.core.feed.FeedItem; @@ -30,6 +30,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; /** * Performs a search operation on all feeds or one specific feed and displays the search result. @@ -76,7 +78,6 @@ public class SearchFragment extends ListFragment { @Override public void onStart() { super.onStart(); - EventDistributor.getInstance().register(contentUpdate); search(); } @@ -86,7 +87,6 @@ public class SearchFragment extends ListFragment { if(disposable != null) { disposable.dispose(); } - EventDistributor.getInstance().unregister(contentUpdate); } @Override @@ -103,6 +103,13 @@ public class SearchFragment extends ListFragment { searchAdapter = new SearchlistAdapter(getActivity(), itemAccess); setListAdapter(searchAdapter); + EventBus.getDefault().register(this); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + EventBus.getDefault().unregister(this); } @Override @@ -145,14 +152,10 @@ public class SearchFragment extends ListFragment { MenuItemCompat.setActionView(item, sv); } - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EventDistributor.UNREAD_ITEMS_UPDATE) != 0) { - search(); - } - } - }; + @Subscribe + public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) { + search(); + } private void onSearchResults(List<SearchResult> results) { searchResults = results; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java index 253c99c4e..da0c50d03 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java @@ -28,7 +28,8 @@ import de.danoeh.antennapod.adapter.SubscriptionsAdapter; import de.danoeh.antennapod.core.asynctask.FeedRemover; import de.danoeh.antennapod.core.dialog.ConfirmationDialog; import de.danoeh.antennapod.core.event.DownloadEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; +import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.service.download.DownloadService; @@ -55,9 +56,6 @@ import org.greenrobot.eventbus.ThreadMode; public class SubscriptionFragment extends Fragment { public static final String TAG = "SubscriptionFragment"; - - private static final int EVENTS = EventDistributor.FEED_LIST_UPDATE - | EventDistributor.UNREAD_ITEMS_UPDATE; private static final String PREFS = "SubscriptionFragment"; private static final String PREF_NUM_COLUMNS = "columns"; @@ -159,7 +157,6 @@ public class SubscriptionFragment extends Fragment { @Override public void onStart() { super.onStart(); - EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().register(this); loadSubscriptions(); } @@ -167,7 +164,6 @@ public class SubscriptionFragment extends Fragment { @Override public void onStop() { super.onStop(); - EventDistributor.getInstance().unregister(contentUpdate); EventBus.getDefault().unregister(this); if(disposable != null) { disposable.dispose(); @@ -294,15 +290,15 @@ public class SubscriptionFragment extends Fragment { dialog.createNewDialog().show(); } - private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { - @Override - public void update(EventDistributor eventDistributor, Integer arg) { - if ((EVENTS & arg) != 0) { - Log.d(TAG, "Received contentUpdate Intent."); - loadSubscriptions(); - } - } - }; + @Subscribe + public void onFeedListChanged(FeedListUpdateEvent event) { + loadSubscriptions(); + } + + @Subscribe + public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) { + loadSubscriptions(); + } @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEventMainThread(DownloadEvent event) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/FeedListUpdateEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/FeedListUpdateEvent.java new file mode 100644 index 000000000..6073eb3bc --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/event/FeedListUpdateEvent.java @@ -0,0 +1,6 @@ +package de.danoeh.antennapod.core.event; + +public class FeedListUpdateEvent { + public FeedListUpdateEvent() { + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/PlayerStatusEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/PlayerStatusEvent.java new file mode 100644 index 000000000..fe7f17968 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/event/PlayerStatusEvent.java @@ -0,0 +1,6 @@ +package de.danoeh.antennapod.core.event; + +public class PlayerStatusEvent { + public PlayerStatusEvent() { + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/UnreadItemsUpdateEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/UnreadItemsUpdateEvent.java new file mode 100644 index 000000000..c3efbfe8b --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/event/UnreadItemsUpdateEvent.java @@ -0,0 +1,6 @@ +package de.danoeh.antennapod.core.event; + +public class UnreadItemsUpdateEvent { + public UnreadItemsUpdateEvent() { + } +} 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 deleted file mode 100644 index de57a776b..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java +++ /dev/null @@ -1,101 +0,0 @@ -package de.danoeh.antennapod.core.feed; - -import android.os.Handler; -import android.util.Log; - -import java.util.AbstractQueue; -import java.util.Observable; -import java.util.Observer; -import java.util.concurrent.ConcurrentLinkedQueue; - -/** - * Notifies its observers about changes in the feed database. Observers can - * register by retrieving an instance of this class and registering an - * EventListener. When new events arrive, the EventDistributor will process the - * event queue in a handler that runs on the main thread. The observers will only - * be notified once if the event queue contains multiple elements. - * - * Events can be sent with the send* methods. - */ -public class EventDistributor extends Observable { - private static final String TAG = "EventDistributor"; - - public static final int FEED_LIST_UPDATE = 1; - public static final int UNREAD_ITEMS_UPDATE = 2; - public static final int PLAYER_STATUS_UPDATE = 128; - - private final Handler handler; - private final AbstractQueue<Integer> events; - - private static EventDistributor instance; - - private EventDistributor() { - this.handler = new Handler(); - events = new ConcurrentLinkedQueue<>(); - } - - public static synchronized EventDistributor getInstance() { - if (instance == null) { - instance = new EventDistributor(); - } - return instance; - } - - public void register(EventListener el) { - addObserver(el); - } - - public void unregister(EventListener el) { - deleteObserver(el); - } - - private void addEvent(Integer i) { - events.offer(i); - handler.post(EventDistributor.this::processEventQueue); - } - - private void processEventQueue() { - Integer result = 0; - Log.d(TAG, "Processing event queue. Number of events: " + events.size()); - for (Integer current = events.poll(); current != null; current = events - .poll()) { - result |= current; - } - if (result != 0) { - Log.d(TAG, "Notifying observers. Data: " + result); - setChanged(); - notifyObservers(result); - } else { - Log.d(TAG, "Event queue didn't contain any new events. Observers will not be notified."); - } - } - - @Override - public void addObserver(Observer observer) { - super.addObserver(observer); - } - - public void sendUnreadItemsUpdateBroadcast() { - addEvent(UNREAD_ITEMS_UPDATE); - } - - public void sendFeedUpdateBroadcast() { - addEvent(FEED_LIST_UPDATE); - } - - public void sendPlayerStatusUpdateBroadcast() { addEvent(PLAYER_STATUS_UPDATE); } - - public abstract static class EventListener implements Observer { - - @Override - public void update(Observable observable, Object data) { - if (observable instanceof EventDistributor - && data instanceof Integer) { - update((EventDistributor) observable, (Integer) data); - } - } - - public abstract void update(EventDistributor eventDistributor, - Integer arg); - } -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java index 192674f0d..4e2233407 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java @@ -5,11 +5,12 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.util.Log; -import de.danoeh.antennapod.core.feed.EventDistributor; +import de.danoeh.antennapod.core.event.PlayerStatusEvent; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.MediaType; import de.danoeh.antennapod.core.service.playback.PlayerStatus; import de.danoeh.antennapod.core.util.playback.Playable; +import org.greenrobot.eventbus.EventBus; import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL; @@ -97,7 +98,7 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(PREF_CURRENT_PLAYER_STATUS)) { - EventDistributor.getInstance().sendPlayerStatusUpdateBroadcast(); + EventBus.getDefault().post(new PlayerStatusEvent()); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java index 948a21efc..d5245cc10 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java @@ -31,7 +31,6 @@ import de.danoeh.antennapod.core.util.comparator.PlaybackCompletionDateComparato * Provides methods for reading data from the AntennaPod database. * In general, all database calls in DBReader-methods are executed on the caller's thread. * This means that the caller should make sure that DBReader-methods are not executed on the GUI-thread. - * This class will use the {@link de.danoeh.antennapod.core.feed.EventDistributor} to notify listeners about changes in the database. */ public final class DBReader { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java index 46fa4b99c..84f57e87a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java @@ -21,7 +21,7 @@ import java.util.concurrent.FutureTask; import java.util.concurrent.atomic.AtomicBoolean; import de.danoeh.antennapod.core.ClientConfig; -import de.danoeh.antennapod.core.feed.EventDistributor; +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; @@ -35,6 +35,7 @@ import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator; import de.danoeh.antennapod.core.util.exception.MediaFileNotFoundException; import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter; +import org.greenrobot.eventbus.EventBus; import static android.content.Context.MODE_PRIVATE; @@ -298,7 +299,7 @@ public final class DBTasks { media.setDownloaded(false); media.setFile_url(null); DBWriter.setFeedMedia(media); - EventDistributor.getInstance().sendFeedUpdateBroadcast(); + EventBus.getDefault().post(new FeedListUpdateEvent()); } /** @@ -563,7 +564,7 @@ public final class DBTasks { e.printStackTrace(); } - EventDistributor.getInstance().sendFeedUpdateBroadcast(); + EventBus.getDefault().post(new FeedListUpdateEvent()); return resultFeeds; } 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 32b04deea..919123950 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 @@ -8,7 +8,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import de.danoeh.antennapod.core.event.DownloadLogEvent; +import de.danoeh.antennapod.core.event.FeedListUpdateEvent; import de.danoeh.antennapod.core.event.PlaybackHistoryEvent; +import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; import org.greenrobot.eventbus.EventBus; import java.io.File; @@ -27,7 +29,6 @@ import de.danoeh.antennapod.core.event.FavoritesEvent; import de.danoeh.antennapod.core.event.FeedItemEvent; import de.danoeh.antennapod.core.event.MessageEvent; import de.danoeh.antennapod.core.event.QueueEvent; -import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedEvent; import de.danoeh.antennapod.core.feed.FeedItem; @@ -50,8 +51,6 @@ import de.danoeh.antennapod.core.util.SortOrder; * In general, DBWriter-methods will be executed on an internal ExecutorService. * Some methods return a Future-object which the caller can use for waiting for the method's completion. The returned Future's * will NOT contain any results. - * The caller can also use the {@link EventDistributor} in order to be notified about the method's completion asynchronously. - * This class will use the {@link EventDistributor} to notify listeners about changes in the database. */ public class DBWriter { @@ -126,7 +125,7 @@ public class DBWriter { } } EventBus.getDefault().post(FeedItemEvent.deletedMedia(Collections.singletonList(media.getItem()))); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); return true; } @@ -174,7 +173,7 @@ public class DBWriter { if (ClientConfig.gpodnetCallbacks.gpodnetEnabled()) { GpodnetPreferences.addRemovedFeed(feed.getDownload_url()); } - EventDistributor.getInstance().sendFeedUpdateBroadcast(); + EventBus.getDefault().post(new FeedListUpdateEvent()); // 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 @@ -612,7 +611,7 @@ public class DBWriter { adapter.setFeedItemRead(played, itemIds); adapter.close(); if (broadcastUpdate) { - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); } }); } @@ -644,7 +643,7 @@ public class DBWriter { resetMediaPosition); adapter.close(); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); }); } @@ -660,7 +659,7 @@ public class DBWriter { adapter.setFeedItems(FeedItem.NEW, FeedItem.UNPLAYED, feedId); adapter.close(); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); }); } @@ -676,7 +675,7 @@ public class DBWriter { adapter.setFeedItems(FeedItem.PLAYED, feedId); adapter.close(); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); }); } @@ -690,7 +689,7 @@ public class DBWriter { adapter.setFeedItems(FeedItem.PLAYED); adapter.close(); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); }); } @@ -704,7 +703,7 @@ public class DBWriter { adapter.setFeedItems(FeedItem.NEW, FeedItem.UNPLAYED); adapter.close(); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); }); } @@ -804,7 +803,7 @@ public class DBWriter { adapter.open(); adapter.setFeedPreferences(preferences); adapter.close(); - EventDistributor.getInstance().sendFeedUpdateBroadcast(); + EventBus.getDefault().post(new FeedListUpdateEvent()); }); } @@ -843,7 +842,7 @@ public class DBWriter { adapter.open(); adapter.setFeedCustomTitle(feed.getId(), feed.getCustomTitle()); adapter.close(); - EventDistributor.getInstance().sendFeedUpdateBroadcast(); + EventBus.getDefault().post(new FeedListUpdateEvent()); }); } @@ -891,7 +890,7 @@ public class DBWriter { adapter.open(); adapter.setFeedItemAutoDownload(feedItem, autoDownload ? 1 : 0); adapter.close(); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); }); } @@ -910,7 +909,7 @@ public class DBWriter { adapter.open(); adapter.setFeedItemAutoDownload(feedItem, autoDownload); adapter.close(); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); }); } @@ -928,7 +927,7 @@ public class DBWriter { adapter.open(); adapter.setFeedsItemsAutoDownload(feed, autoDownload); adapter.close(); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + EventBus.getDefault().post(new UnreadItemsUpdateEvent()); }); } |