diff options
author | ByteHamster <info@bytehamster.com> | 2021-03-04 22:46:11 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2021-03-04 22:58:13 +0100 |
commit | cfa873af6db0445978db6439c47ed6c565952b91 (patch) | |
tree | c3a3063383d356cc5c0f7a9fdaaa01261fc5f617 /core/src/main/java/de | |
parent | 0a6855ac9e5d21339d825233645b0b06b5a88a07 (diff) | |
download | AntennaPod-cfa873af6db0445978db6439c47ed6c565952b91.zip |
Removed ShownotesProvider interface
Diffstat (limited to 'core/src/main/java/de')
6 files changed, 26 insertions, 69 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java index 133caaebd..d6926385e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java @@ -13,19 +13,16 @@ import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; -import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.PodDBAdapter; -import de.danoeh.antennapod.core.util.ShownotesProvider; /** * Item (episode) within a feed. * * @author daniel */ -public class FeedItem extends FeedComponent implements ShownotesProvider, Serializable { +public class FeedItem extends FeedComponent implements Serializable { /** tag that indicates this item is in the queue */ public static final String TAG_QUEUE = "Queue"; @@ -352,16 +349,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Serial return media != null && media.isPlaying(); } - @Override - public Callable<String> loadShownotes() { - return () -> { - if (description == null) { - DBReader.loadDescriptionOfFeedItem(FeedItem.this); - } - return description; - }; - } - public String getImageLocation() { if (imageUrl != null) { return imageUrl; diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java index 34c9b8ca7..3070f882c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java @@ -14,7 +14,6 @@ import android.support.v4.media.MediaDescriptionCompat; import java.util.Date; import java.util.List; -import java.util.concurrent.Callable; import de.danoeh.antennapod.core.preferences.GpodnetPreferences; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; @@ -286,6 +285,14 @@ public class FeedMedia extends FeedFile implements Playable { this.size = size; } + @Override + public String getDescription() { + if (item != null) { + return item.getDescription(); + } + return null; + } + /** * Indicates we asked the service what the size was, but didn't * get a valid answer and we shoudln't check using the network again. @@ -529,16 +536,6 @@ public class FeedMedia extends FeedFile implements Playable { } } - @Override - public Callable<String> loadShownotes() { - return () -> { - if (item == null) { - item = DBReader.getFeedItem(itemID); - } - return item.loadShownotes().call(); - }; - } - public static final Parcelable.Creator<FeedMedia> CREATOR = new Parcelable.Creator<FeedMedia>() { public FeedMedia createFromParcel(Parcel in) { final long id = in.readLong(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/ShownotesProvider.java b/core/src/main/java/de/danoeh/antennapod/core/util/ShownotesProvider.java deleted file mode 100644 index a4cd83f70..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/ShownotesProvider.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.danoeh.antennapod.core.util; - -import java.util.concurrent.Callable; - -/** - * Created by daniel on 04.08.13. - */ -public interface ShownotesProvider { - /** - * Loads shownotes. If the shownotes have to be loaded from a file or from a - * database, it should be done in a separate thread. After the shownotes - * have been loaded, callback.onShownotesLoaded should be called. - */ - Callable<String> loadShownotes(); - -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java index f103b32bf..feba6db1c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java @@ -7,14 +7,13 @@ import android.os.Parcelable; import androidx.annotation.Nullable; import de.danoeh.antennapod.core.feed.Chapter; import de.danoeh.antennapod.core.feed.MediaType; -import de.danoeh.antennapod.core.util.ShownotesProvider; import java.util.Date; import java.util.List; /** * Interface for objects that can be played by the PlaybackService. */ -public interface Playable extends Parcelable, ShownotesProvider { +public interface Playable extends Parcelable { public static final int INVALID_TIME = -1; /** @@ -83,6 +82,13 @@ public interface Playable extends Parcelable, ShownotesProvider { long getLastPlayedTime(); /** + * Returns the description of the item, if available. + * For FeedItems, the description needs to be loaded from the database first. + */ + @Nullable + String getDescription(); + + /** * Returns the type of media. This method should return the correct value * BEFORE loadMetadata() is called. */ diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java index 219edd2e7..926eaa315 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java @@ -13,7 +13,6 @@ import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.MediaType; import java.util.Date; import java.util.List; -import java.util.concurrent.Callable; import org.apache.commons.lang3.builder.HashCodeBuilder; /** @@ -260,8 +259,8 @@ public class RemoteMedia implements Playable { } @Override - public Callable<String> loadShownotes() { - return () -> (notes != null) ? notes : ""; + public String getDescription() { + return notes; } @Override diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java index 40849a262..e125c7e66 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java @@ -9,7 +9,7 @@ import android.text.TextUtils; import android.util.Log; import android.util.TypedValue; -import de.danoeh.antennapod.core.feed.FeedItem; +import androidx.annotation.Nullable; import org.apache.commons.io.IOUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -24,7 +24,6 @@ import java.util.regex.Pattern; import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.util.Converter; -import de.danoeh.antennapod.core.util.ShownotesProvider; /** * Connects chapter information and shownotes of a shownotesProvider, for example by making it possible to use the @@ -42,17 +41,16 @@ public class Timeline { private static final Pattern TIMECODE_REGEX = Pattern.compile("\\b((\\d+):)?(\\d+):(\\d{2})\\b"); private static final Pattern LINE_BREAK_REGEX = Pattern.compile("<br */?>"); - private final ShownotesProvider shownotesProvider; + private final String rawShownotes; private final String noShownotesLabel; + private final int playableDuration; private final String webviewStyle; - public Timeline(Context context, ShownotesProvider shownotesProvider) { - if (shownotesProvider == null) { - throw new IllegalArgumentException("shownotesProvider = null"); - } - this.shownotesProvider = shownotesProvider; + public Timeline(Context context, @Nullable String rawShownotes, int playableDuration) { + this.rawShownotes = rawShownotes; noShownotesLabel = context.getString(R.string.no_shownotes_label); + this.playableDuration = playableDuration; final String colorPrimary = colorToHtml(context, android.R.attr.textColorPrimary); final String colorAccent = colorToHtml(context, R.attr.colorAccent); final int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, @@ -87,13 +85,7 @@ public class Timeline { */ @NonNull public String processShownotes() { - String shownotes; - try { - shownotes = shownotesProvider.loadShownotes().call(); - } catch (Exception e) { - Log.e(TAG, "processShownotes() - encounters exceptions unexpectedly in load, treat as if no shownotes.", e); - shownotes = ""; - } + String shownotes = rawShownotes; if (TextUtils.isEmpty(shownotes)) { Log.d(TAG, "shownotesProvider contained no shownotes. Returning 'no shownotes' message"); @@ -147,14 +139,6 @@ public class Timeline { // No elements with timecodes return; } - - int playableDuration = Integer.MAX_VALUE; - if (shownotesProvider instanceof Playable) { - playableDuration = ((Playable) shownotesProvider).getDuration(); - } else if (shownotesProvider instanceof FeedItem && ((FeedItem) shownotesProvider).getMedia() != null) { - playableDuration = ((FeedItem) shownotesProvider).getMedia().getDuration(); - } - boolean useHourFormat = true; if (playableDuration != Integer.MAX_VALUE) { |