From 3dae17beff1f8338bbc88716e70e7234d0dd3be4 Mon Sep 17 00:00:00 2001 From: "H. Lehmann" Date: Sun, 1 Mar 2020 00:10:39 +0100 Subject: Refactor action button in ItemFragment (#3898) Much more readable to have decision for action and action itself in one place. --- .../actionbutton/CancelDownloadActionButton.java | 4 +- .../adapter/actionbutton/DeleteActionButton.java | 43 ++++++++++++++++++++++ .../adapter/actionbutton/DownloadActionButton.java | 11 +++++- .../actionbutton/MarkAsPlayedActionButton.java | 4 +- .../adapter/actionbutton/PauseActionButton.java | 4 +- .../adapter/actionbutton/PlayActionButton.java | 4 +- .../adapter/actionbutton/StreamActionButton.java | 2 +- .../actionbutton/VisitWebsiteActionButton.java | 40 ++++++++++++++++++++ 8 files changed, 101 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DeleteActionButton.java create mode 100644 app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/VisitWebsiteActionButton.java (limited to 'app/src/main/java/de/danoeh/antennapod/adapter/actionbutton') diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java index 10458ed46..3b5baadef 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java @@ -12,9 +12,9 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.storage.DownloadRequester; -class CancelDownloadActionButton extends ItemActionButton { +public class CancelDownloadActionButton extends ItemActionButton { - CancelDownloadActionButton(FeedItem item) { + public CancelDownloadActionButton(FeedItem item) { super(item); } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DeleteActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DeleteActionButton.java new file mode 100644 index 000000000..7831c6450 --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DeleteActionButton.java @@ -0,0 +1,43 @@ +package de.danoeh.antennapod.adapter.actionbutton; + +import android.content.Context; +import android.view.View; +import androidx.annotation.AttrRes; +import androidx.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.DBWriter; + +public class DeleteActionButton extends ItemActionButton { + + public DeleteActionButton(FeedItem item) { + super(item); + } + + @Override + @StringRes + public int getLabel() { + return R.string.delete_label; + } + + @Override + @AttrRes + public int getDrawable() { + return R.attr.content_discard; + } + + @Override + public void onClick(Context context) { + final FeedMedia media = item.getMedia(); + if (media == null) { + return; + } + DBWriter.deleteFeedMediaOfItem(context, media.getId()); + } + + @Override + public int getVisibility() { + return (item.isPlayed()) ? View.INVISIBLE : View.VISIBLE; + } +} diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DownloadActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DownloadActionButton.java index 026386cf9..0a1199e9b 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DownloadActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DownloadActionButton.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.adapter.actionbutton; import android.content.Context; +import android.view.View; import android.widget.Toast; import androidx.annotation.AttrRes; @@ -16,10 +17,10 @@ import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.NetworkUtils; -class DownloadActionButton extends ItemActionButton { +public class DownloadActionButton extends ItemActionButton { private boolean isInQueue; - DownloadActionButton(FeedItem item, boolean isInQueue) { + public DownloadActionButton(FeedItem item, boolean isInQueue) { super(item); this.isInQueue = isInQueue; } @@ -36,6 +37,12 @@ class DownloadActionButton extends ItemActionButton { return R.attr.av_download; } + @Override + public int getVisibility() { + return (item.getMedia() != null && DownloadRequester.getInstance().isDownloadingFile(item.getMedia())) + ? View.INVISIBLE : View.VISIBLE; + } + @Override public void onClick(Context context) { final FeedMedia media = item.getMedia(); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MarkAsPlayedActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MarkAsPlayedActionButton.java index 71ac07c47..14fa94f7a 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MarkAsPlayedActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MarkAsPlayedActionButton.java @@ -9,9 +9,9 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.storage.DBWriter; -class MarkAsPlayedActionButton extends ItemActionButton { +public class MarkAsPlayedActionButton extends ItemActionButton { - MarkAsPlayedActionButton(FeedItem item) { + public MarkAsPlayedActionButton(FeedItem item) { super(item); } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PauseActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PauseActionButton.java index b839f7788..4ac03c50e 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PauseActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PauseActionButton.java @@ -10,9 +10,9 @@ import de.danoeh.antennapod.core.util.IntentUtils; import static de.danoeh.antennapod.core.service.playback.PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE; -class PauseActionButton extends ItemActionButton { +public class PauseActionButton extends ItemActionButton { - PauseActionButton(FeedItem item) { + public PauseActionButton(FeedItem item) { super(item); } 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 index 3432f1deb..0c6924469 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java @@ -8,9 +8,9 @@ import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter; -class PlayActionButton extends ItemActionButton { +public class PlayActionButton extends ItemActionButton { - PlayActionButton(FeedItem item) { + public PlayActionButton(FeedItem item) { super(item); } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java index c1e619fdf..3a43d3217 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java @@ -16,7 +16,7 @@ import static de.danoeh.antennapod.core.service.playback.PlaybackService.ACTION_ public class StreamActionButton extends ItemActionButton { - StreamActionButton(FeedItem item) { + public StreamActionButton(FeedItem item) { super(item); } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/VisitWebsiteActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/VisitWebsiteActionButton.java new file mode 100644 index 000000000..5eb8c1fb6 --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/VisitWebsiteActionButton.java @@ -0,0 +1,40 @@ +package de.danoeh.antennapod.adapter.actionbutton; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.view.View; +import androidx.annotation.AttrRes; +import androidx.annotation.StringRes; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.core.feed.FeedItem; + +public class VisitWebsiteActionButton extends ItemActionButton { + + public VisitWebsiteActionButton(FeedItem item) { + super(item); + } + + @Override + @StringRes + public int getLabel() { + return R.string.visit_website_label; + } + + @Override + @AttrRes + public int getDrawable() { + return R.attr.location_web_site; + } + + @Override + public void onClick(Context context) { + Uri uri = Uri.parse(item.getLink()); + context.startActivity(new Intent(Intent.ACTION_VIEW, uri)); + } + + @Override + public int getVisibility() { + return (item.getLink() != null) ? View.INVISIBLE : View.VISIBLE; + } +} -- cgit v1.2.3