From 3c5e1138ca1c616dd7add9d567442cc0d9a510ac Mon Sep 17 00:00:00 2001 From: Herbert Reiter <46045854+damoasda@users.noreply.github.com> Date: Sat, 8 Aug 2020 14:37:51 +0200 Subject: Local feeds: Use default cover image if source folder doesn't contain a file like folder.png --- .../antennapod/core/feed/LocalFeedUpdater.java | 30 +++++++++++++++++----- .../antennapod/core/glide/ApOkHttpUrlLoader.java | 4 ++- 2 files changed, 27 insertions(+), 7 deletions(-) (limited to 'core/src/main/java/de') diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java index f9863b0a6..706aed2c3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java @@ -1,16 +1,14 @@ package de.danoeh.antennapod.core.feed; +import android.content.ContentResolver; import android.content.Context; import android.media.MediaMetadataRetriever; import android.net.Uri; import android.text.TextUtils; -import android.util.Log; + import androidx.documentfile.provider.DocumentFile; -import de.danoeh.antennapod.core.service.download.DownloadStatus; -import de.danoeh.antennapod.core.storage.DBTasks; -import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.util.DateUtils; -import de.danoeh.antennapod.core.util.DownloadError; + +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.Arrays; @@ -21,6 +19,12 @@ import java.util.List; import java.util.Set; import java.util.UUID; +import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.core.service.download.DownloadStatus; +import de.danoeh.antennapod.core.storage.DBTasks; +import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.core.util.DownloadError; + public class LocalFeedUpdater { public static void updateFeed(Feed feed, Context context) { @@ -81,6 +85,10 @@ public class LocalFeedUpdater { break; } } + if (StringUtils.isBlank(feed.getImageUrl())) { + // set default feed image + feed.setImageUrl(getDefaultIconUrl(context)); + } // update items, delete items without existing file; // only delete items if the folder contains at least one element to avoid accidentally @@ -89,6 +97,16 @@ public class LocalFeedUpdater { DBTasks.updateFeed(context, feed, removeUnlistedItems); } + /** + * Returns the URL of the default icon for a local feed. The URL refers to an app resource file. + */ + public static String getDefaultIconUrl(Context context) { + String resourceEntryName = context.getResources().getResourceEntryName(R.raw.local_feed_default_icon); + return ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + + context.getPackageName() + "/raw/" + + resourceEntryName; + } + private static FeedItem feedContainsFile(Feed feed, String filename) { List items = feed.getItems(); for (FeedItem i : items) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java index 963ce7596..8c80e9151 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java @@ -83,7 +83,9 @@ class ApOkHttpUrlLoader implements ModelLoader { @Override public boolean handles(@NonNull String model) { // Leave content URIs to Glide's default loaders - return !TextUtils.isEmpty(model) && !model.startsWith(ContentResolver.SCHEME_CONTENT); + return !TextUtils.isEmpty(model) + && !model.startsWith(ContentResolver.SCHEME_CONTENT) + && !model.startsWith(ContentResolver.SCHEME_ANDROID_RESOURCE); } private static class NetworkAllowanceInterceptor implements Interceptor { -- cgit v1.2.3