summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2020-03-16 00:58:12 +0100
committerGitHub <noreply@github.com>2020-03-16 00:58:12 +0100
commit6fd1f8e692026982656b2489777e4e9cb17940a7 (patch)
treec4c54d5b9be692fac7b33df3afb875dcf36cb402 /app/src/main/java/de/danoeh/antennapod
parent436187842756beee9b76dba898a172d2a73a7b5e (diff)
parentf7411d2d98033ab8bce3be9c4428b18fe5201e74 (diff)
downloadAntennaPod-6fd1f8e692026982656b2489777e4e9cb17940a7.zip
Merge pull request #3882 from ByteHamster/stream-unsubscribed-episode
Allow to stream episodes from unsubscribed podcast
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java55
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java10
2 files changed, 44 insertions, 21 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java
index 8d469c7a6..f49892b63 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java
@@ -1,23 +1,29 @@
package de.danoeh.antennapod.adapter;
import android.content.Context;
-import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
+import android.widget.Button;
import android.widget.TextView;
-
-import java.util.List;
-
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.core.util.playback.RemoteMedia;
import de.danoeh.antennapod.core.feed.FeedItem;
+import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.util.DateUtils;
+import de.danoeh.antennapod.core.util.playback.Playable;
+import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
+import de.danoeh.antennapod.dialog.StreamingConfirmationDialog;
+
+import java.util.List;
/**
* List adapter for showing a list of FeedItems with their title and description.
*/
public class FeedItemlistDescriptionAdapter extends ArrayAdapter<FeedItem> {
+ private static final int MAX_LINES_COLLAPSED = 3;
public FeedItemlistDescriptionAdapter(Context context, int resource, List<FeedItem> objects) {
super(context, resource, objects);
@@ -32,12 +38,12 @@ public class FeedItemlistDescriptionAdapter extends ArrayAdapter<FeedItem> {
// Inflate layout
if (convertView == null) {
holder = new Holder();
- LayoutInflater inflater = (LayoutInflater) getContext()
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.itemdescription_listitem, parent, false);
holder.title = convertView.findViewById(R.id.txtvTitle);
holder.pubDate = convertView.findViewById(R.id.txtvPubDate);
holder.description = convertView.findViewById(R.id.txtvDescription);
+ holder.preview = convertView.findViewById(R.id.butPreview);
convertView.setTag(holder);
} else {
@@ -52,18 +58,34 @@ public class FeedItemlistDescriptionAdapter extends ArrayAdapter<FeedItem> {
.replaceAll("\\s+", " ")
.trim();
holder.description.setText(description);
-
- final int MAX_LINES_COLLAPSED = 3;
holder.description.setMaxLines(MAX_LINES_COLLAPSED);
- holder.description.setOnClickListener(v -> {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN
- && holder.description.getMaxLines() > MAX_LINES_COLLAPSED) {
- holder.description.setMaxLines(MAX_LINES_COLLAPSED);
- } else {
- holder.description.setMaxLines(2000);
- }
- });
}
+ holder.description.setTag(Boolean.FALSE); // not expanded
+ holder.preview.setVisibility(View.GONE);
+ holder.preview.setOnClickListener(v -> {
+ Playable playable = new RemoteMedia(item);
+ if (!NetworkUtils.isStreamingAllowed()) {
+ new StreamingConfirmationDialog(getContext(), playable).show();
+ return;
+ }
+ new PlaybackServiceStarter(getContext(), playable)
+ .shouldStream(true)
+ .startWhenPrepared(true)
+ .callEvenIfRunning(true)
+ .start();
+ getContext().startActivity(PlaybackService.getPlayerActivityIntent(getContext(), playable));
+ });
+ convertView.setOnClickListener(v -> {
+ if (holder.description.getTag() == Boolean.TRUE) {
+ holder.description.setMaxLines(MAX_LINES_COLLAPSED);
+ holder.preview.setVisibility(View.GONE);
+ holder.description.setTag(Boolean.FALSE);
+ } else {
+ holder.description.setMaxLines(2000);
+ holder.preview.setVisibility(View.VISIBLE);
+ holder.description.setTag(Boolean.TRUE);
+ }
+ });
return convertView;
}
@@ -71,5 +93,6 @@ public class FeedItemlistDescriptionAdapter extends ArrayAdapter<FeedItem> {
TextView title;
TextView pubDate;
TextView description;
+ Button preview;
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java
index 5b77fd319..81e86e217 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java
@@ -5,17 +5,17 @@ import android.view.View;
import android.widget.CheckBox;
import androidx.appcompat.app.AlertDialog;
import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.core.util.playback.Playable;
import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
public class StreamingConfirmationDialog {
private final Context context;
- private final FeedMedia media;
+ private final Playable playable;
- public StreamingConfirmationDialog(Context context, FeedMedia media) {
+ public StreamingConfirmationDialog(Context context, Playable playable) {
this.context = context;
- this.media = media;
+ this.playable = playable;
}
public void show() {
@@ -30,7 +30,7 @@ public class StreamingConfirmationDialog {
if (checkDoNotShowAgain.isChecked()) {
UserPreferences.setAllowMobileStreaming(true);
}
- new PlaybackServiceStarter(context, media)
+ new PlaybackServiceStarter(context, playable)
.callEvenIfRunning(true)
.startWhenPrepared(true)
.shouldStream(true)