Merge pull request #3505 from xgouchet/feature/3070_episode_image
Add an option to replace Episode cover with Podcast cover
This commit is contained in:
commit
38a670139f
|
@ -13,7 +13,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackSpeedHelper;
|
||||
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||
import de.danoeh.antennapod.dialog.VariableSpeedDialog;
|
||||
|
@ -83,7 +83,7 @@ public class AudioplayerActivity extends MediaplayerInfoActivity {
|
|||
}
|
||||
float speed = 1.0f;
|
||||
if(controller.canSetPlaybackSpeed()) {
|
||||
speed = PlaybackSpeedHelper.getCurrentPlaybackSpeed(controller.getMedia());
|
||||
speed = PlaybackSpeedUtils.getCurrentPlaybackSpeed(controller.getMedia());
|
||||
}
|
||||
String speedStr = new DecimalFormat("0.00").format(speed);
|
||||
txtvPlaybackSpeed.setText(speedStr);
|
||||
|
|
|
@ -35,6 +35,7 @@ import de.danoeh.antennapod.core.feed.FeedMedia;
|
|||
import de.danoeh.antennapod.core.storage.DownloadRequester;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.util.DateUtils;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.util.LongList;
|
||||
import de.danoeh.antennapod.core.util.NetworkUtils;
|
||||
import de.danoeh.antennapod.core.util.ThemeUtils;
|
||||
|
@ -194,7 +195,7 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR
|
|||
holder.butSecondary.setTag(item);
|
||||
|
||||
new CoverLoader(mainActivityRef.get())
|
||||
.withUri(item.getImageLocation())
|
||||
.withUri(ImageResourceUtils.getImageLocation(item))
|
||||
.withFallbackUri(item.getFeed().getImageLocation())
|
||||
.withPlaceholderView(holder.placeholder)
|
||||
.withCoverView(holder.cover)
|
||||
|
|
|
@ -17,9 +17,9 @@ import com.bumptech.glide.request.RequestOptions;
|
|||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.glide.ApGlideSettings;
|
||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.util.DateUtils;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
|
||||
/**
|
||||
* Shows a list of downloaded episodes
|
||||
|
@ -79,7 +79,7 @@ public class DownloadedEpisodesListAdapter extends BaseAdapter {
|
|||
}
|
||||
|
||||
Glide.with(context)
|
||||
.load(item.getImageLocation())
|
||||
.load(ImageResourceUtils.getImageLocation(item))
|
||||
.apply(new RequestOptions()
|
||||
.placeholder(R.color.light_gray)
|
||||
.error(R.color.light_gray)
|
||||
|
|
|
@ -40,6 +40,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
|
|||
import de.danoeh.antennapod.core.storage.DownloadRequester;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.util.DateUtils;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.util.LongList;
|
||||
import de.danoeh.antennapod.core.util.NetworkUtils;
|
||||
import de.danoeh.antennapod.core.util.ThemeUtils;
|
||||
|
@ -322,7 +323,7 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap
|
|||
butSecondary.setTag(item);
|
||||
|
||||
new CoverLoader(mainActivity.get())
|
||||
.withUri(item.getImageLocation())
|
||||
.withUri(ImageResourceUtils.getImageLocation(item))
|
||||
.withFallbackUri(item.getFeed().getImageLocation())
|
||||
.withPlaceholderView(placeholder)
|
||||
.withCoverView(cover)
|
||||
|
|
|
@ -11,7 +11,7 @@ import android.widget.TextView;
|
|||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import java.util.Locale;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackSpeedHelper;
|
||||
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||
|
@ -212,6 +212,6 @@ public class PlaybackControlsDialog extends DialogFragment {
|
|||
media = controller.getMedia();
|
||||
}
|
||||
|
||||
return PlaybackSpeedHelper.getCurrentPlaybackSpeed(media);
|
||||
return PlaybackSpeedUtils.getCurrentPlaybackSpeed(media);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import com.bumptech.glide.Glide;
|
|||
import com.bumptech.glide.request.RequestOptions;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.core.glide.ApGlideSettings;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||
import io.reactivex.Maybe;
|
||||
|
@ -70,7 +71,7 @@ public class CoverFragment extends Fragment {
|
|||
txtvPodcastTitle.setText(media.getFeedTitle());
|
||||
txtvEpisodeTitle.setText(media.getEpisodeTitle());
|
||||
Glide.with(this)
|
||||
.load(media.getImageLocation())
|
||||
.load(ImageResourceUtils.getImageLocation(media))
|
||||
.apply(new RequestOptions()
|
||||
.diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
|
||||
.dontAnimate()
|
||||
|
|
|
@ -22,6 +22,7 @@ import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
|
|||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
import de.danoeh.antennapod.core.glide.ApGlideSettings;
|
||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||
import io.reactivex.Maybe;
|
||||
|
@ -227,7 +228,7 @@ public class ExternalPlayerFragment extends Fragment {
|
|||
onPositionObserverUpdate();
|
||||
|
||||
Glide.with(getActivity())
|
||||
.load(media.getImageLocation())
|
||||
.load(ImageResourceUtils.getImageLocation(media))
|
||||
.apply(new RequestOptions()
|
||||
.placeholder(R.color.light_gray)
|
||||
.error(R.color.light_gray)
|
||||
|
|
|
@ -62,6 +62,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester;
|
|||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.util.DateUtils;
|
||||
import de.danoeh.antennapod.core.util.Flavors;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.util.IntentUtils;
|
||||
import de.danoeh.antennapod.core.util.NetworkUtils;
|
||||
import de.danoeh.antennapod.core.util.ShareUtils;
|
||||
|
@ -384,7 +385,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
|
|||
}
|
||||
|
||||
Glide.with(getActivity())
|
||||
.load(item.getImageLocation())
|
||||
.load(ImageResourceUtils.getImageLocation(item))
|
||||
.apply(new RequestOptions()
|
||||
.placeholder(R.color.light_gray)
|
||||
.error(R.color.light_gray)
|
||||
|
|
|
@ -44,7 +44,7 @@ import de.danoeh.antennapod.core.event.QueueEvent;
|
|||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackSpeedHelper;
|
||||
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.service.download.DownloadService;
|
||||
import de.danoeh.antennapod.core.service.download.Downloader;
|
||||
|
@ -637,7 +637,7 @@ public class QueueFragment extends Fragment {
|
|||
if(queue.size() > 0) {
|
||||
long timeLeft = 0;
|
||||
for(FeedItem item : queue) {
|
||||
float playbackSpeed = PlaybackSpeedHelper.getCurrentPlaybackSpeed(item.getMedia());
|
||||
float playbackSpeed = PlaybackSpeedUtils.getCurrentPlaybackSpeed(item.getMedia());
|
||||
if(item.getMedia() != null) {
|
||||
timeLeft +=
|
||||
(long) ((item.getMedia().getDuration() - item.getMedia().getPosition())
|
||||
|
|
|
@ -32,6 +32,13 @@
|
|||
android:summary="@string/pref_nav_drawer_feed_counter_sum"
|
||||
android:defaultValue="0"
|
||||
app:useStockLayout="true"/>
|
||||
<SwitchPreference
|
||||
android:title="@string/pref_episode_cover_title"
|
||||
android:key="prefEpisodeCover"
|
||||
android:summary="@string/pref_episode_cover_summary"
|
||||
android:defaultValue="true"
|
||||
android:enabled="true"
|
||||
app:useStockLayout="true"/>
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/external_elements">
|
||||
<SwitchPreference
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
package de.danoeh.antennapod.core.feed.util;
|
||||
|
||||
import de.danoeh.antennapod.core.asynctask.ImageResource;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
|
||||
/**
|
||||
* Utility class to use the appropriate image resource based on {@link UserPreferences}
|
||||
*/
|
||||
public final class ImageResourceUtils {
|
||||
|
||||
private ImageResourceUtils() {
|
||||
}
|
||||
|
||||
public static String getImageLocation(ImageResource resource) {
|
||||
if (UserPreferences.getUseEpisodeCoverSetting()) {
|
||||
return resource.getImageLocation();
|
||||
} else {
|
||||
return getShowImageLocation(resource);
|
||||
}
|
||||
}
|
||||
|
||||
private static String getShowImageLocation(ImageResource resource) {
|
||||
|
||||
if (resource instanceof FeedItem) {
|
||||
FeedItem item = (FeedItem) resource;
|
||||
if (item.getFeed() != null) {
|
||||
return item.getFeed().getImageLocation();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else if (resource instanceof FeedMedia) {
|
||||
FeedMedia media = (FeedMedia) resource;
|
||||
FeedItem item = media.getItem();
|
||||
if (item != null && item.getFeed() != null) {
|
||||
return item.getFeed().getImageLocation();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return resource.getImageLocation();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +1,22 @@
|
|||
package de.danoeh.antennapod.core.preferences;
|
||||
package de.danoeh.antennapod.core.feed.util;
|
||||
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||
|
||||
import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL;
|
||||
|
||||
public class PlaybackSpeedHelper {
|
||||
/**
|
||||
* Utility class to use the appropriate playback speed based on {@link PlaybackPreferences}
|
||||
*/
|
||||
public final class PlaybackSpeedUtils {
|
||||
|
||||
private PlaybackSpeedUtils() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the currently configured playback speed for the specified media.
|
|
@ -53,6 +53,7 @@ public class UserPreferences {
|
|||
private static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder";
|
||||
private static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator";
|
||||
public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
|
||||
public static final String PREF_USE_EPISODE_COVER = "prefEpisodeCover";
|
||||
private static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify";
|
||||
public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons";
|
||||
public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground";
|
||||
|
@ -231,6 +232,13 @@ public class UserPreferences {
|
|||
return Integer.parseInt(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@code true} if episodes should use their own cover, {@code false} otherwise
|
||||
*/
|
||||
public static boolean getUseEpisodeCoverSetting() {
|
||||
return prefs.getBoolean(PREF_USE_EPISODE_COVER, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns notification priority.
|
||||
*
|
||||
|
|
|
@ -24,12 +24,13 @@ import java.util.concurrent.TimeUnit;
|
|||
|
||||
import de.danoeh.antennapod.core.R;
|
||||
import de.danoeh.antennapod.core.glide.ApGlideSettings;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackSpeedHelper;
|
||||
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
|
||||
import de.danoeh.antennapod.core.receiver.PlayerWidget;
|
||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.util.TimeSpeedConverter;
|
||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||
|
||||
|
@ -128,7 +129,7 @@ public class PlayerWidgetJobService extends SafeJobIntentService {
|
|||
int iconSize = getResources().getDimensionPixelSize(android.R.dimen.app_icon_size);
|
||||
icon = Glide.with(PlayerWidgetJobService.this)
|
||||
.asBitmap()
|
||||
.load(media.getImageLocation())
|
||||
.load(ImageResourceUtils.getImageLocation(media))
|
||||
.apply(RequestOptions.diskCacheStrategyOf(ApGlideSettings.AP_DISK_CACHE_STRATEGY))
|
||||
.submit(iconSize, iconSize)
|
||||
.get(500, TimeUnit.MILLISECONDS);
|
||||
|
@ -147,7 +148,7 @@ public class PlayerWidgetJobService extends SafeJobIntentService {
|
|||
progressString = getProgressString(playbackService.getCurrentPosition(),
|
||||
playbackService.getDuration(), playbackService.getCurrentPlaybackSpeed());
|
||||
} else {
|
||||
progressString = getProgressString(media.getPosition(), media.getDuration(), PlaybackSpeedHelper.getCurrentPlaybackSpeed(media));
|
||||
progressString = getProgressString(media.getPosition(), media.getDuration(), PlaybackSpeedUtils.getCurrentPlaybackSpeed(media));
|
||||
}
|
||||
|
||||
if (progressString != null) {
|
||||
|
|
|
@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackSpeedHelper;
|
||||
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.util.RewindAfterPauseUtils;
|
||||
import de.danoeh.antennapod.core.util.playback.AudioPlayer;
|
||||
|
@ -243,7 +243,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
|||
try {
|
||||
media.loadMetadata();
|
||||
callback.onMediaChanged(false);
|
||||
setPlaybackParams(PlaybackSpeedHelper.getCurrentPlaybackSpeed(media), UserPreferences.isSkipSilence());
|
||||
setPlaybackParams(PlaybackSpeedUtils.getCurrentPlaybackSpeed(media), UserPreferences.isSkipSilence());
|
||||
if (stream) {
|
||||
mediaPlayer.setDataSource(media.getStreamUrl());
|
||||
} else if (media.getLocalMediaUrl() != null && new File(media.getLocalMediaUrl()).canRead()) {
|
||||
|
@ -307,7 +307,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
|||
Log.d(TAG, "Resuming/Starting playback");
|
||||
acquireWifiLockIfNecessary();
|
||||
|
||||
setPlaybackParams(PlaybackSpeedHelper.getCurrentPlaybackSpeed(media), UserPreferences.isSkipSilence());
|
||||
setPlaybackParams(PlaybackSpeedUtils.getCurrentPlaybackSpeed(media), UserPreferences.isSkipSilence());
|
||||
setVolume(UserPreferences.getLeftVolume(), UserPreferences.getRightVolume());
|
||||
|
||||
if (playerStatus == PlayerStatus.PREPARED && media.getPosition() > 0) {
|
||||
|
|
|
@ -67,6 +67,7 @@ import de.danoeh.antennapod.core.storage.DBReader;
|
|||
import de.danoeh.antennapod.core.storage.DBTasks;
|
||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||
import de.danoeh.antennapod.core.storage.FeedSearcher;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.util.IntentUtils;
|
||||
import de.danoeh.antennapod.core.util.NetworkUtils;
|
||||
import de.danoeh.antennapod.core.util.QueueAccess;
|
||||
|
@ -1138,7 +1139,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, p.getEpisodeTitle());
|
||||
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, p.getFeedTitle());
|
||||
|
||||
String imageLocation = p.getImageLocation();
|
||||
String imageLocation = ImageResourceUtils.getImageLocation(p);
|
||||
|
||||
if (!TextUtils.isEmpty(imageLocation)) {
|
||||
if (UserPreferences.setLockscreenBackground()) {
|
||||
|
|
|
@ -24,6 +24,7 @@ import de.danoeh.antennapod.core.glide.ApGlideSettings;
|
|||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.util.IntList;
|
||||
import de.danoeh.antennapod.core.util.TimeSpeedConverter;
|
||||
import de.danoeh.antennapod.core.util.gui.NotificationUtils;
|
||||
|
@ -76,7 +77,7 @@ public class PlaybackServiceNotificationBuilder {
|
|||
try {
|
||||
icon = Glide.with(context)
|
||||
.asBitmap()
|
||||
.load(playable.getImageLocation())
|
||||
.load(ImageResourceUtils.getImageLocation(playable))
|
||||
.apply(RequestOptions.diskCacheStrategyOf(ApGlideSettings.AP_DISK_CACHE_STRATEGY))
|
||||
.apply(new RequestOptions().centerCrop())
|
||||
.submit(iconSize, iconSize)
|
||||
|
|
|
@ -29,7 +29,7 @@ import de.danoeh.antennapod.core.feed.Chapter;
|
|||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackSpeedHelper;
|
||||
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||
import de.danoeh.antennapod.core.service.playback.PlaybackServiceMediaPlayer;
|
||||
|
@ -705,7 +705,7 @@ public class PlaybackController {
|
|||
if (playbackService != null && canSetPlaybackSpeed()) {
|
||||
return playbackService.getCurrentPlaybackSpeed();
|
||||
} else {
|
||||
return PlaybackSpeedHelper.getCurrentPlaybackSpeed(getMedia());
|
||||
return PlaybackSpeedUtils.getCurrentPlaybackSpeed(getMedia());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -403,6 +403,8 @@
|
|||
<string name="pref_parallel_downloads_title">Parallel Downloads</string>
|
||||
<string name="pref_episode_cache_title">Episode Cache</string>
|
||||
<string name="pref_episode_cache_summary">Total number of downloaded episodes cached on the device. Automatic download will be suspended if this number is reached.</string>
|
||||
<string name="pref_episode_cover_title">Use Episode Cover</string>
|
||||
<string name="pref_episode_cover_summary">Use the episode specific cover whenever available. If unchecked, the app will always use the podcast cover image.</string>
|
||||
<string name="pref_theme_title_use_system">Use system theme</string>
|
||||
<string name="pref_theme_title_light">Light</string>
|
||||
<string name="pref_theme_title_dark">Dark</string>
|
||||
|
|
Loading…
Reference in New Issue