summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java
diff options
context:
space:
mode:
authorAnderson Mesquita <andersonvom@gmail.com>2019-05-02 20:06:36 -0400
committerAnderson Mesquita <andersonvom@gmail.com>2019-05-27 16:01:54 -0400
commit1d64057fd41442d276fd690229dc0c0f9afd2b96 (patch)
tree50f23cc4b09101bf7d3f930c81dce07124f0bab8 /app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java
parentc327fd59c92992411395bc76586a50b5b2478c93 (diff)
downloadAntennaPod-1d64057fd41442d276fd690229dc0c0f9afd2b96.zip
Extract action button utils/callback into classes
This splits the logic in `ActionButtonUtils` and `DefaultActionButtonCallback` into multiple specialized classes to reduce duplication figuring out which button/action to use while at the same time making each individual button to have a single responsability.
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java
new file mode 100644
index 000000000..3992c7240
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java
@@ -0,0 +1,63 @@
+package de.danoeh.antennapod.adapter.actionbutton;
+
+import android.content.Context;
+import android.support.annotation.AttrRes;
+import android.support.annotation.StringRes;
+
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.feed.FeedItem;
+import de.danoeh.antennapod.core.feed.FeedMedia;
+import de.danoeh.antennapod.core.storage.DBTasks;
+import de.danoeh.antennapod.core.util.IntentUtils;
+import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
+
+import static de.danoeh.antennapod.core.service.playback.PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE;
+import static de.danoeh.antennapod.core.service.playback.PlaybackService.ACTION_RESUME_PLAY_CURRENT_EPISODE;
+
+class PlayActionButton extends ItemActionButton {
+
+ PlayActionButton(FeedItem item) {
+ super(item);
+ }
+
+ @Override
+ @StringRes
+ public int getLabel() {
+ return R.string.play_label;
+ }
+
+ @Override
+ @AttrRes
+ public int getDrawable() {
+ FeedMedia media = item.getMedia();
+ if (media != null && media.isCurrentlyPlaying()) {
+ return R.attr.av_pause;
+ } else {
+ return R.attr.av_play;
+ }
+ }
+
+ @Override
+ public void onClick(Context context) {
+ FeedMedia media = item.getMedia();
+ if (media == null) {
+ return;
+ }
+
+ if (media.isPlaying()) {
+ togglePlayPause(context, media);
+ } else {
+ DBTasks.playMedia(context, media, false, true, false);
+ }
+ }
+
+ private void togglePlayPause(Context context, FeedMedia media) {
+ new PlaybackServiceStarter(context, media)
+ .startWhenPrepared(true)
+ .shouldStream(false)
+ .start();
+
+ String pauseOrResume = media.isCurrentlyPlaying() ? ACTION_PAUSE_PLAY_CURRENT_EPISODE : ACTION_RESUME_PLAY_CURRENT_EPISODE;
+ IntentUtils.sendLocalBroadcast(context, pauseOrResume);
+ }
+}