summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/build.gradle2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java17
-rw-r--r--app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearchResult.java37
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java5
-rw-r--r--app/src/main/res/layout/gpodnet_podcast_listitem.xml4
-rw-r--r--app/src/main/res/layout/itunes_podcast_listitem.xml4
-rw-r--r--app/src/main/res/layout/searchlist_item.xml2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java16
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java8
12 files changed, 85 insertions, 26 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 516179a6e..34a2421b9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -165,7 +165,7 @@ dependencies {
implementation "com.github.shts:TriangleLabelView:$triangleLabelViewVersion"
implementation 'com.leinardi.android:speed-dial:3.0.0'
implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion"
- implementation 'com.github.mfietz:fyydlin:v0.4.2'
+ implementation 'com.github.mfietz:fyydlin:v0.5.0'
implementation 'com.github.ByteHamster:SearchPreference:v2.0.0'
androidTestImplementation "org.awaitility:awaitility:$awaitilityVersion"
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 4e849b9d9..124394b64 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java
@@ -573,6 +573,13 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
titles.add(urlsMap.get(url));
}
+ if (urls.size() == 1) {
+ // Skip dialog and display the item directly
+ resetIntent(urls.get(0), titles.get(0));
+ startFeedDownload(urls.get(0), null, null);
+ return true;
+ }
+
final ArrayAdapter<String> adapter = new ArrayAdapter<>(OnlineFeedViewActivity.this, R.layout.ellipsize_start_listitem, R.id.txtvTitle, titles);
DialogInterface.OnClickListener onClickListener = (dialog, which) -> {
String selectedUrl = urls.get(which);
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 f49892b63..849bb3b64 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java
@@ -63,6 +63,9 @@ public class FeedItemlistDescriptionAdapter extends ArrayAdapter<FeedItem> {
holder.description.setTag(Boolean.FALSE); // not expanded
holder.preview.setVisibility(View.GONE);
holder.preview.setOnClickListener(v -> {
+ if (item.getMedia() == null) {
+ return;
+ }
Playable playable = new RemoteMedia(item);
if (!NetworkUtils.isStreamingAllowed()) {
new StreamingConfirmationDialog(getContext(), playable).show();
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java
index 06c80e173..62b22879a 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java
@@ -44,7 +44,7 @@ public class PodcastListAdapter extends ArrayAdapter<GpodnetPodcast> {
holder.image = convertView.findViewById(R.id.imgvCover);
holder.title = convertView.findViewById(R.id.txtvTitle);
holder.subscribers = convertView.findViewById(R.id.txtvSubscribers);
- holder.url = convertView.findViewById(R.id.txtvUrl);
+ holder.author = convertView.findViewById(R.id.txtvAuthor);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
@@ -64,7 +64,7 @@ public class PodcastListAdapter extends ArrayAdapter<GpodnetPodcast> {
holder.title.setText(podcast.getTitle());
holder.subscribers.setText(String.valueOf(podcast.getSubscribers()));
- holder.url.setText(podcast.getUrl());
+ holder.author.setText(podcast.getAuthor());
return convertView;
}
@@ -73,6 +73,6 @@ public class PodcastListAdapter extends ArrayAdapter<GpodnetPodcast> {
ImageView image;
TextView title;
TextView subscribers;
- TextView url;
+ TextView author;
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
index cc3b6fba0..7917c264f 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
@@ -65,13 +65,16 @@ public class ItunesAdapter extends ArrayAdapter<PodcastSearchResult> {
viewHolder = (PodcastViewHolder) view.getTag();
}
- //Set the title
+ // Set the title
viewHolder.titleView.setText(podcast.title);
- if(podcast.feedUrl != null && !podcast.feedUrl.contains("itunes.apple.com")) {
- viewHolder.urlView.setText(podcast.feedUrl);
- viewHolder.urlView.setVisibility(View.VISIBLE);
+ if (podcast.author != null && ! podcast.author.trim().isEmpty()) {
+ viewHolder.authorView.setText(podcast.author);
+ viewHolder.authorView.setVisibility(View.VISIBLE);
+ } else if (podcast.feedUrl != null && !podcast.feedUrl.contains("itunes.apple.com")) {
+ viewHolder.authorView.setText(podcast.feedUrl);
+ viewHolder.authorView.setVisibility(View.VISIBLE);
} else {
- viewHolder.urlView.setVisibility(View.GONE);
+ viewHolder.authorView.setVisibility(View.GONE);
}
//Update the empty imageView with the image from the feed
@@ -103,7 +106,7 @@ public class ItunesAdapter extends ArrayAdapter<PodcastSearchResult> {
*/
final TextView titleView;
- final TextView urlView;
+ final TextView authorView;
/**
@@ -113,7 +116,7 @@ public class ItunesAdapter extends ArrayAdapter<PodcastSearchResult> {
PodcastViewHolder(View view){
coverView = view.findViewById(R.id.imgvCover);
titleView = view.findViewById(R.id.txtvTitle);
- urlView = view.findViewById(R.id.txtvUrl);
+ authorView = view.findViewById(R.id.txtvAuthor);
}
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearchResult.java b/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearchResult.java
index 6535df5ef..481c232c8 100644
--- a/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearchResult.java
+++ b/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearchResult.java
@@ -25,15 +25,26 @@ public class PodcastSearchResult {
@Nullable
public final String feedUrl;
+ /**
+ * artistName of the podcast feed
+ */
+ @Nullable
+ public final String author;
- private PodcastSearchResult(String title, @Nullable String imageUrl, @Nullable String feedUrl) {
+
+ private PodcastSearchResult(String title, @Nullable String imageUrl, @Nullable String feedUrl, @Nullable String author) {
this.title = title;
this.imageUrl = imageUrl;
this.feedUrl = feedUrl;
+ this.author = author;
+ }
+
+ private PodcastSearchResult(String title, @Nullable String imageUrl, @Nullable String feedUrl) {
+ this(title, imageUrl, feedUrl, "");
}
public static PodcastSearchResult dummy() {
- return new PodcastSearchResult("", "", "");
+ return new PodcastSearchResult("", "", "", "");
}
/**
@@ -46,7 +57,8 @@ public class PodcastSearchResult {
String title = json.optString("collectionName", "");
String imageUrl = json.optString("artworkUrl100", null);
String feedUrl = json.optString("feedUrl", null);
- return new PodcastSearchResult(title, imageUrl, feedUrl);
+ String author = json.optString("artistName", null);
+ return new PodcastSearchResult(title, imageUrl, feedUrl, author);
}
/**
@@ -68,14 +80,27 @@ public class PodcastSearchResult {
}
String feedUrl = "https://itunes.apple.com/lookup?id=" +
json.getJSONObject("id").getJSONObject("attributes").getString("im:id");
- return new PodcastSearchResult(title, imageUrl, feedUrl);
+
+ String author = null;
+ try {
+ author = json.getJSONObject("im:artist").getString("label");
+ } catch (Exception e) {
+ // Some feeds have empty artist
+ }
+ return new PodcastSearchResult(title, imageUrl, feedUrl, author);
}
public static PodcastSearchResult fromFyyd(SearchHit searchHit) {
- return new PodcastSearchResult(searchHit.getTitle(), searchHit.getThumbImageURL(), searchHit.getXmlUrl());
+ return new PodcastSearchResult(searchHit.getTitle(),
+ searchHit.getThumbImageURL(),
+ searchHit.getXmlUrl(),
+ searchHit.getAuthor());
}
public static PodcastSearchResult fromGpodder(GpodnetPodcast searchHit) {
- return new PodcastSearchResult(searchHit.getTitle(), searchHit.getLogoUrl(), searchHit.getUrl());
+ return new PodcastSearchResult(searchHit.getTitle(),
+ searchHit.getLogoUrl(),
+ searchHit.getUrl(),
+ searchHit.getAuthor());
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
index 3ba6be3d9..8f6f4d964 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
@@ -76,7 +76,10 @@ public class AddFeedFragment extends Fragment {
EditText editText = content.findViewById(R.id.text);
editText.setHint(R.string.add_podcast_by_url_hint);
ClipboardManager clipboard = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
- editText.setText(clipboard.getText());
+ String clipboardContent = clipboard.getText().toString();
+ if (clipboardContent.startsWith("http")) {
+ editText.setText(clipboardContent);
+ }
builder.setView(content);
builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> addUrl(editText.getText().toString()));
builder.setNegativeButton(R.string.cancel_label, null);
diff --git a/app/src/main/res/layout/gpodnet_podcast_listitem.xml b/app/src/main/res/layout/gpodnet_podcast_listitem.xml
index 6e02fa090..e5f44220f 100644
--- a/app/src/main/res/layout/gpodnet_podcast_listitem.xml
+++ b/app/src/main/res/layout/gpodnet_podcast_listitem.xml
@@ -70,7 +70,7 @@
tools:background="@android:color/holo_green_dark" />
<TextView
- android:id="@+id/txtvUrl"
+ android:id="@+id/txtvAuthor"
style="android:style/TextAppearance.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -81,7 +81,7 @@
android:textColor="?android:attr/textColorSecondary"
android:ellipsize="middle"
android:maxLines="2"
- tools:text="http://www.example.com/feed"
+ tools:text="author"
tools:background="@android:color/holo_green_dark"/>
</RelativeLayout>
diff --git a/app/src/main/res/layout/itunes_podcast_listitem.xml b/app/src/main/res/layout/itunes_podcast_listitem.xml
index b2411c5df..d2472b0de 100644
--- a/app/src/main/res/layout/itunes_podcast_listitem.xml
+++ b/app/src/main/res/layout/itunes_podcast_listitem.xml
@@ -45,7 +45,7 @@
tools:text="Podcast title" />
<TextView
- android:id="@+id/txtvUrl"
+ android:id="@+id/txtvAuthor"
style="android:style/TextAppearance.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -53,7 +53,7 @@
android:textColor="?android:attr/textColorSecondary"
android:ellipsize="middle"
android:maxLines="2"
- tools:text="http://www.example.com/feed"
+ tools:text="author"
tools:background="@android:color/holo_green_dark"/>
</LinearLayout>
diff --git a/app/src/main/res/layout/searchlist_item.xml b/app/src/main/res/layout/searchlist_item.xml
index 4a055fea9..e8ff18c5f 100644
--- a/app/src/main/res/layout/searchlist_item.xml
+++ b/app/src/main/res/layout/searchlist_item.xml
@@ -52,4 +52,4 @@
tools:background="@android:color/holo_blue_light"/>
</LinearLayout>
-</RelativeLayout> \ No newline at end of file
+</RelativeLayout>
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java
index 97931237a..7cef4268f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java
@@ -688,8 +688,20 @@ public class GpodnetService {
website = (String) websiteObj;
}
String mygpoLink = object.getString("mygpo_link");
- return new GpodnetPodcast(url, title, description, subscribers,
- logoUrl, website, mygpoLink);
+
+ String author = null;
+ Object authorObj = object.opt("author");
+ if (authorObj != null && authorObj instanceof String) {
+ author = (String) authorObj;
+ }
+ return new GpodnetPodcast(url,
+ title,
+ description,
+ subscribers,
+ logoUrl,
+ website,
+ mygpoLink,
+ author);
}
private List<GpodnetDevice> readDeviceListFromJSONArray(@NonNull JSONArray array)
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java
index 2c2d759c9..5433e3ee0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java
@@ -10,6 +10,7 @@ public class GpodnetPodcast {
private final String logoUrl;
private final String website;
private final String mygpoLink;
+ private final String author;
public GpodnetPodcast(@NonNull String url,
@NonNull String title,
@@ -17,7 +18,9 @@ public class GpodnetPodcast {
int subscribers,
String logoUrl,
String website,
- String mygpoLink) {
+ String mygpoLink,
+ String author
+ ) {
this.url = url;
this.title = title;
this.description = description;
@@ -25,6 +28,7 @@ public class GpodnetPodcast {
this.logoUrl = logoUrl;
this.website = website;
this.mygpoLink = mygpoLink;
+ this.author = author;
}
@Override
@@ -59,6 +63,8 @@ public class GpodnetPodcast {
return website;
}
+ public String getAuthor() { return author; }
+
public String getMygpoLink() {
return mygpoLink;
}