diff options
Diffstat (limited to 'core/src/main')
82 files changed, 326 insertions, 21 deletions
diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml index 3a5db2c36..3257c13a7 100644 --- a/core/src/main/AndroidManifest.xml +++ b/core/src/main/AndroidManifest.xml @@ -12,7 +12,7 @@ <application android:allowBackup="true" - android:icon="@drawable/ic_launcher"> + android:icon="@mipmap/ic_launcher"> <service android:name=".service.download.DownloadService" 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 2d551e1b2..a22422596 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 @@ -554,15 +554,9 @@ public class FeedMedia extends FeedFile implements Playable { public Callable<String> loadShownotes() { return () -> { if (item == null) { - item = DBReader.getFeedItem( - itemID); + item = DBReader.getFeedItem(itemID); } - if (item.getContentEncoded() == null || item.getDescription() == null) { - DBReader.loadExtraInformationOfFeedItem( - item); - - } - return (item.getContentEncoded() != null) ? item.getContentEncoded() : item.getDescription(); + return item.loadShownotes().call(); }; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index 743ee135d..a93012d59 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -74,6 +74,7 @@ public class UserPreferences { private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray"; private static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss"; private static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall"; + public static final String PREF_VIDEO_BEHAVIOR = "prefVideoBehavior"; // Network private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; @@ -85,7 +86,7 @@ public class UserPreferences { public static final String PREF_ENABLE_AUTODL = "prefEnableAutoDl"; public static final String PREF_ENABLE_AUTODL_ON_BATTERY = "prefEnableAutoDownloadOnBattery"; public static final String PREF_ENABLE_AUTODL_WIFI_FILTER = "prefEnableAutoDownloadWifiFilter"; - private static final String PREF_ENABLE_AUTODL_ON_MOBILE = "prefEnableAutoDownloadOnMobile"; + public static final String PREF_ENABLE_AUTODL_ON_MOBILE = "prefEnableAutoDownloadOnMobile"; private static final String PREF_AUTODL_SELECTED_NETWORKS = "prefAutodownloadSelectedNetworks"; private static final String PREF_PROXY_TYPE = "prefProxyType"; private static final String PREF_PROXY_HOST = "prefProxyHost"; @@ -661,6 +662,14 @@ public class UserPreferences { .apply(); } + public static VideoBackgroundBehavior getVideoBackgroundBehavior() { + switch (prefs.getString(PREF_VIDEO_BEHAVIOR, "stop")) { + case "stop": return VideoBackgroundBehavior.STOP; + case "pip": return VideoBackgroundBehavior.PICTURE_IN_PICTURE; + case "continue": return VideoBackgroundBehavior.CONTINUE_PLAYING; + default: return VideoBackgroundBehavior.STOP; + } + } public static EpisodeCleanupAlgorithm getEpisodeCleanupAlgorithm() { int cleanupValue = Integer.parseInt(prefs.getString(PREF_EPISODE_CLEANUP, "-1")); @@ -839,4 +848,8 @@ public class UserPreferences { public static boolean isCastEnabled() { return prefs.getBoolean(PREF_CAST_ENABLED, false); } + + public enum VideoBackgroundBehavior { + STOP, PICTURE_IN_PICTURE, CONTINUE_PLAYING + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java index af735aefd..0e64f484f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java @@ -609,6 +609,9 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { public void shutdown() { executor.shutdown(); if (mediaPlayer != null) { + try { + mediaPlayer.stop(); + } catch (Exception ignore) { } mediaPlayer.release(); } releaseWifiLockIfNecessary(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index dd7e84857..0bd516f4e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -1435,6 +1435,12 @@ public class PlaybackService extends MediaBrowserServiceCompat { @Override public void onReceive(Context context, Intent intent) { + if (isInitialStickyBroadcast ()) { + // Don't pause playback after we just started, just because the receiver + // delivers the current headset state (instead of a change) + return; + } + if (TextUtils.equals(intent.getAction(), Intent.ACTION_HEADSET_PLUG)) { int state = intent.getIntExtra("state", -1); if (state != -1) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index 75510d2f6..8cdf82e15 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -43,6 +43,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadStatus; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.util.LongList; +import de.danoeh.antennapod.core.util.Permutor; import de.danoeh.antennapod.core.util.flattr.FlattrStatus; import de.danoeh.antennapod.core.util.flattr.FlattrThing; import de.danoeh.antennapod.core.util.flattr.SimpleFlattrThing; @@ -187,6 +188,9 @@ public class DBWriter { if(queue.remove(item)) { removed.add(item); } + if (item.getState() == FeedItem.State.PLAYING && PlaybackService.isRunning) { + context.stopService(new Intent(context, PlaybackService.class)); + } if (item.getMedia() != null && item.getMedia().isDownloaded()) { File mediaFile = new File(item.getMedia() @@ -992,6 +996,32 @@ public class DBWriter { } /** + * Similar to sortQueue, but allows more complex reordering by providing whole-queue context. + * @param permutor Encapsulates whole-Queue reordering logic. + * @param broadcastUpdate <code>true</code> if this operation should trigger a + * QueueUpdateBroadcast. This option should be set to <code>false</code> + * if the caller wants to avoid unexpected updates of the GUI. + */ + public static Future<?> reorderQueue(final Permutor<FeedItem> permutor, final boolean broadcastUpdate) { + return dbExec.submit(() -> { + final PodDBAdapter adapter = PodDBAdapter.getInstance(); + adapter.open(); + final List<FeedItem> queue = DBReader.getQueue(adapter); + + if (queue != null) { + permutor.reorder(queue); + adapter.setQueue(queue); + if (broadcastUpdate) { + EventBus.getDefault().post(QueueEvent.sorted(queue)); + } + } else { + Log.e(TAG, "reorderQueue: Could not load queue"); + } + adapter.close(); + }); + } + + /** * Sets the 'auto_download'-attribute of specific FeedItem. * * @param feedItem FeedItem. diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java index ea1b724d4..b512dce3f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java @@ -1,6 +1,6 @@ package de.danoeh.antennapod.core.syndication.namespace.atom; -import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.text.StringEscapeUtils; import de.danoeh.antennapod.core.syndication.namespace.Namespace; import de.danoeh.antennapod.core.syndication.namespace.SyndElement; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java index 892e5ff38..76a6549ae 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java @@ -75,4 +75,18 @@ public class FeedItemUtil { return false; } + /** + * Get the link for the feed item for the purpose of Share. It fallbacks to + * use the feed's link if the named feed item has no link. + */ + public static String getLinkWithFallback(FeedItem item) { + if (item == null) { + return null; + } else if (item.getLink() != null) { + return item.getLink(); + } else if (item.getFeed() != null) { + return item.getFeed().getLink(); + } + return null; + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java index a93dd8ee3..e99461806 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java @@ -3,7 +3,8 @@ package de.danoeh.antennapod.core.util; import android.text.TextUtils; import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.text.RandomStringGenerator; + /** Generates valid filenames for a given string. */ public class FileNameGenerator { @@ -34,7 +35,11 @@ public class FileNameGenerator { } String filename = buf.toString().trim(); if(TextUtils.isEmpty(filename)) { - return RandomStringUtils.randomAlphanumeric(8); + return new RandomStringGenerator.Builder() + .withinRange('0', 'z') + .filteredBy(Character::isLetterOrDigit) + .build() + .generate(8); } return filename; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Permutor.java b/core/src/main/java/de/danoeh/antennapod/core/util/Permutor.java new file mode 100644 index 000000000..7d6e20ab1 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/util/Permutor.java @@ -0,0 +1,17 @@ +package de.danoeh.antennapod.core.util; + +import java.util.List; + +/** + * Interface for passing around list permutor method. This is used for cases where a simple comparator + * won't work (e.g. Random, Smart Shuffle, etc). + * + * @param <E> the type of elements in the list + */ +public interface Permutor<E> { + /** + * Reorders the specified list. + * @param queue A (modifiable) list of elements to be reordered + */ + void reorder(List<E> queue); +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java b/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java index c3b4c0e15..5c827dfe9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java @@ -2,7 +2,12 @@ package de.danoeh.antennapod.core.util; import android.content.Context; +import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; @@ -20,11 +25,15 @@ public class QueueSorter { DURATION_ASC, DURATION_DESC, FEED_TITLE_ASC, - FEED_TITLE_DESC + FEED_TITLE_DESC, + RANDOM, + SMART_SHUFFLE_ASC, + SMART_SHUFFLE_DESC } public static void sort(final Context context, final Rule rule, final boolean broadcastUpdate) { Comparator<FeedItem> comparator = null; + Permutor<FeedItem> permutor = null; switch (rule) { case EPISODE_TITLE_ASC: @@ -68,11 +77,109 @@ public class QueueSorter { case FEED_TITLE_DESC: comparator = (f1, f2) -> f2.getFeed().getTitle().compareTo(f1.getFeed().getTitle()); break; + case RANDOM: + permutor = Collections::shuffle; + break; + case SMART_SHUFFLE_ASC: + permutor = (queue) -> smartShuffle(queue, true); + break; + case SMART_SHUFFLE_DESC: + permutor = (queue) -> smartShuffle(queue, false); + break; default: } if (comparator != null) { DBWriter.sortQueue(comparator, broadcastUpdate); + } else if (permutor != null) { + DBWriter.reorderQueue(permutor, broadcastUpdate); + } + } + + /** + * Implements a reordering by pubdate that avoids consecutive episodes from the same feed in + * the queue. + * + * A listener might want to hear episodes from any given feed in pubdate order, but would + * prefer a more balanced ordering that avoids having to listen to clusters of consecutive + * episodes from the same feed. This is what "Smart Shuffle" tries to accomplish. + * + * The Smart Shuffle algorithm involves choosing episodes (in round-robin fashion) from a + * collection of individual, pubdate-sorted lists that each contain only items from a specific + * feed. + * + * Of course, clusters of consecutive episodes <i>at the end of the queue</i> may be + * unavoidable. This seems unlikely to be an issue for most users who presumably maintain + * large queues with new episodes continuously being added. + * + * For example, given a queue containing three episodes each from three different feeds + * (A, B, and C), a simple pubdate sort might result in a queue that looks like the following: + * + * B1, B2, B3, A1, A2, C1, C2, C3, A3 + * + * (note that feed B episodes were all published before the first feed A episode, so a simple + * pubdate sort will often result in significant clustering of episodes from a single feed) + * + * Using Smart Shuffle, the resulting queue would look like the following: + * + * A1, B1, C1, A2, B2, C2, A3, B3, C3 + * + * (note that episodes above <i>aren't strictly ordered in terms of pubdate</i>, but episodes + * of each feed <b>do</b> appear in pubdate order) + * + * @param queue A (modifiable) list of FeedItem elements to be reordered. + * @param ascending {@code true} to use ascending pubdate in the reordering; + * {@code false} for descending. + */ + private static void smartShuffle(List<FeedItem> queue, boolean ascending) { + + // Divide FeedItems into lists by feed + + Map<Long, List<FeedItem>> map = new HashMap<>(); + + while (!queue.isEmpty()) { + FeedItem item = queue.remove(0); + Long id = item.getFeedId(); + if (!map.containsKey(id)) { + map.put(id, new ArrayList<>()); + } + map.get(id).add(item); + } + + // Sort each individual list by PubDate (ascending/descending) + + Comparator<FeedItem> itemComparator = ascending + ? (f1, f2) -> f1.getPubDate().compareTo(f2.getPubDate()) + : (f1, f2) -> f2.getPubDate().compareTo(f1.getPubDate()); + + for (Long id : map.keySet()) { + Collections.sort(map.get(id), itemComparator); + } + + // Create a list of the individual FeedItems lists, and sort it by feed title (ascending). + // Doing this ensures that the feed order we use is predictable/deterministic. + + List<List<FeedItem>> feeds = new ArrayList<>(map.values()); + Collections.sort(feeds, + // (we use a desc sort here, since we're iterating back-to-front below) + (f1, f2) -> f2.get(0).getFeed().getTitle().compareTo(f1.get(0).getFeed().getTitle())); + + // Cycle through the (sorted) feed lists in a round-robin fashion, removing the first item + // and adding it back into to the original queue + + while (!feeds.isEmpty()) { + // Iterate across the (sorted) list of feeds, removing the first item in each, and + // appending it to the queue. Note that we're iterating back-to-front here, since we + // will be deleting feed lists as they become empty. + for (int i = feeds.size() - 1; i >= 0; --i) { + List<FeedItem> items = feeds.get(i); + queue.add(items.remove(0)); + // Removed the last item in this particular feed? Then remove this feed from the + // list of feeds. + if (items.isEmpty()) { + feeds.remove(i); + } + } } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/ShareUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/ShareUtils.java index 898f7bedb..5ae00460e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/ShareUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/ShareUtils.java @@ -50,11 +50,15 @@ public class ShareUtils { return item.getFeed().getTitle() + ": " + item.getTitle(); } + public static boolean hasLinkToShare(FeedItem item) { + return FeedItemUtil.getLinkWithFallback(item) != null; + } + public static void shareFeedItemLink(Context context, FeedItem item, boolean withPosition) { - String text = getItemShareText(item) + " " + item.getLink(); + String text = getItemShareText(item) + " " + FeedItemUtil.getLinkWithFallback(item); if(withPosition) { int pos = item.getMedia().getPosition(); - text = item.getLink() + " [" + Converter.getDurationStringLong(pos) + "]"; + text += " [" + Converter.getDurationStringLong(pos) + "]"; } shareLink(context, text); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java new file mode 100644 index 000000000..f763653a1 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java @@ -0,0 +1,27 @@ +package de.danoeh.antennapod.core.util.gui; + +import android.app.Activity; +import android.content.pm.PackageManager; +import android.os.Build; + +public class PictureInPictureUtil { + private PictureInPictureUtil() { + } + + public static boolean supportsPictureInPicture(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + PackageManager packageManager = activity.getPackageManager(); + return packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE); + } else { + return false; + } + } + + public static boolean isInPictureInPictureMode(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && supportsPictureInPicture(activity)) { + return activity.isInPictureInPictureMode(); + } else { + return false; + } + } +} diff --git a/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..212948b70 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_white_24dp.png Binary files differnew file mode 100644 index 000000000..cce69655d --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_white_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_launcher.png b/core/src/main/res/drawable-hdpi/ic_launcher.png Binary files differdeleted file mode 100644 index 8bd22b54a..000000000 --- a/core/src/main/res/drawable-hdpi/ic_launcher.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_poll_box_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_poll_box_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..2ee172a51 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_poll_box_grey600_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_poll_box_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_poll_box_white_24dp.png Binary files differnew file mode 100644 index 000000000..3fe2256c7 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_poll_box_white_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_sd_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_sd_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..2c7c210d3 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_sd_grey600_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_sd_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_sd_white_24dp.png Binary files differnew file mode 100644 index 000000000..77fd16301 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_sd_white_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_swap_vertical_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_swap_vertical_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..cd3508d72 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_swap_vertical_grey600_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_swap_vertical_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_swap_vertical_white_24dp.png Binary files differnew file mode 100644 index 000000000..b26af6aac --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_swap_vertical_white_24dp.png diff --git a/core/src/main/res/drawable-ldpi/ic_launcher.png b/core/src/main/res/drawable-ldpi/ic_launcher.png Binary files differdeleted file mode 100644 index 494468020..000000000 --- a/core/src/main/res/drawable-ldpi/ic_launcher.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..498ddf8eb --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_white_24dp.png Binary files differnew file mode 100644 index 000000000..66a6d7681 --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_white_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_launcher.png b/core/src/main/res/drawable-mdpi/ic_launcher.png Binary files differdeleted file mode 100644 index 219e8c5ab..000000000 --- a/core/src/main/res/drawable-mdpi/ic_launcher.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_poll_box_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_poll_box_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..6fefa8b8c --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_poll_box_grey600_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_poll_box_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_poll_box_white_24dp.png Binary files differnew file mode 100644 index 000000000..cf45cde6d --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_poll_box_white_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_sd_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_sd_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..81c5f77d9 --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_sd_grey600_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_sd_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_sd_white_24dp.png Binary files differnew file mode 100644 index 000000000..a012f237c --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_sd_white_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_swap_vertical_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_swap_vertical_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..c2aeb3b5d --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_swap_vertical_grey600_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_swap_vertical_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_swap_vertical_white_24dp.png Binary files differnew file mode 100644 index 000000000..ea4faabdf --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_swap_vertical_white_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..df64c26fe --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png Binary files differnew file mode 100644 index 000000000..9e49cbe0a --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_launcher.png b/core/src/main/res/drawable-xhdpi/ic_launcher.png Binary files differdeleted file mode 100644 index 2dbfd8874..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_launcher.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_poll_box_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_poll_box_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..e09b052b9 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_poll_box_grey600_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_poll_box_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_poll_box_white_24dp.png Binary files differnew file mode 100644 index 000000000..9ed41f906 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_poll_box_white_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_sd_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_sd_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..c2bc3fa9f --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_sd_grey600_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_sd_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_sd_white_24dp.png Binary files differnew file mode 100644 index 000000000..76e620405 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_sd_white_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_swap_vertical_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_swap_vertical_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..c6139c821 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_swap_vertical_grey600_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_swap_vertical_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_swap_vertical_white_24dp.png Binary files differnew file mode 100644 index 000000000..c4bee7069 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_swap_vertical_white_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..951244d68 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png Binary files differnew file mode 100644 index 000000000..3eaedd318 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_launcher.png b/core/src/main/res/drawable-xxhdpi/ic_launcher.png Binary files differdeleted file mode 100644 index 41b261b4f..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_launcher.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_poll_box_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_poll_box_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..3d24d9670 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_poll_box_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_poll_box_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_poll_box_white_24dp.png Binary files differnew file mode 100644 index 000000000..3d9f54b6c --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_poll_box_white_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_sd_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_sd_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..7e8fa947e --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_sd_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_sd_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_sd_white_24dp.png Binary files differnew file mode 100644 index 000000000..66c74428e --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_sd_white_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_swap_vertical_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_swap_vertical_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..2d71e15fc --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_swap_vertical_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_swap_vertical_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_swap_vertical_white_24dp.png Binary files differnew file mode 100644 index 000000000..24df5b942 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_swap_vertical_white_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..6c4c2b94c --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png Binary files differnew file mode 100644 index 000000000..fd5114044 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_poll_box_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_poll_box_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..c97eba579 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_poll_box_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_poll_box_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_poll_box_white_24dp.png Binary files differnew file mode 100644 index 000000000..54e169d54 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_poll_box_white_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_sd_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_sd_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..744b2c8f4 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_sd_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_sd_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_sd_white_24dp.png Binary files differnew file mode 100644 index 000000000..1bee910ed --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_sd_white_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_swap_vertical_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_swap_vertical_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..631ef6d0a --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_swap_vertical_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_swap_vertical_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_swap_vertical_white_24dp.png Binary files differnew file mode 100644 index 000000000..5bf24ac32 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_swap_vertical_white_24dp.png diff --git a/core/src/main/res/drawable/bg_splash.xml b/core/src/main/res/drawable/bg_splash.xml index dd66e3083..32241ec22 100644 --- a/core/src/main/res/drawable/bg_splash.xml +++ b/core/src/main/res/drawable/bg_splash.xml @@ -2,12 +2,12 @@ <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item - android:drawable="@color/overlay_dark"/> + android:drawable="@color/ic_launcher_background"/> <item> <bitmap android:gravity="center" - android:src="@drawable/ic_launcher"/> + android:src="@mipmap/ic_launcher_foreground"/> </item> </layer-list>
\ No newline at end of file diff --git a/core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..036d09bc5 --- /dev/null +++ b/core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@color/ic_launcher_background"/> + <foreground android:drawable="@mipmap/ic_launcher_foreground"/> +</adaptive-icon>
\ No newline at end of file diff --git a/core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..036d09bc5 --- /dev/null +++ b/core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@color/ic_launcher_background"/> + <foreground android:drawable="@mipmap/ic_launcher_foreground"/> +</adaptive-icon>
\ No newline at end of file diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher.png b/core/src/main/res/mipmap-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..12e9b3395 --- /dev/null +++ b/core/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png Binary files differnew file mode 100644 index 000000000..d687f94bb --- /dev/null +++ b/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_round.png b/core/src/main/res/mipmap-hdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000..12e9b3395 --- /dev/null +++ b/core/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher.png b/core/src/main/res/mipmap-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..1da13d374 --- /dev/null +++ b/core/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png Binary files differnew file mode 100644 index 000000000..2e7a4b74d --- /dev/null +++ b/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_round.png b/core/src/main/res/mipmap-mdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000..1da13d374 --- /dev/null +++ b/core/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher.png b/core/src/main/res/mipmap-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..32b022ada --- /dev/null +++ b/core/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png Binary files differnew file mode 100644 index 000000000..5f90a1d11 --- /dev/null +++ b/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000..32b022ada --- /dev/null +++ b/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..321600e15 --- /dev/null +++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png Binary files differnew file mode 100644 index 000000000..d72ffedbb --- /dev/null +++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000..321600e15 --- /dev/null +++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..ff2870dca --- /dev/null +++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png Binary files differnew file mode 100644 index 000000000..0af16fadf --- /dev/null +++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png Binary files differnew file mode 100644 index 000000000..ff2870dca --- /dev/null +++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index 45650495c..9d9a2453d 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -224,4 +224,26 @@ <item>@string/fast_forward_label</item> <item>@string/skip_episode_label</item> </string-array> + + <string-array name="video_background_behavior_options"> + <item>@string/stop_playback</item> + <item>@string/player_go_to_picture_in_picture</item> + <item>@string/continue_playback</item> + </string-array> + + <string-array name="video_background_behavior_values"> + <item>stop</item> + <item>pip</item> + <item>continue</item> + </string-array> + + <string-array name="video_background_behavior_options_without_pip"> + <item>@string/stop_playback</item> + <item>@string/continue_playback</item> + </string-array> + + <string-array name="video_background_behavior_values_without_pip"> + <item>stop</item> + <item>continue</item> + </string-array> </resources> diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml index 04ad7ea64..b005d4dc3 100644 --- a/core/src/main/res/values/attrs.xml +++ b/core/src/main/res/values/attrs.xml @@ -12,6 +12,8 @@ <attr name="av_rewind" format="reference"/> <attr name="content_discard" format="reference"/> <attr name="content_new" format="reference"/> + <attr name="storage" format="reference"/> + <attr name="statistics" format="reference"/> <attr name="feed" format="reference"/> <attr name="location_web_site" format="reference"/> <attr name="navigation_accept" format="reference"/> @@ -44,6 +46,7 @@ <attr name="ic_unfav" format="reference"/> <attr name="ic_sleep" format="reference"/> <attr name="ic_sleep_off" format="reference"/> + <attr name="checkbox_multiple" format="reference"/> <attr name="ic_check_box" format="reference"/> <attr name="ic_check_box_outline" format="reference"/> <attr name="ic_indeterminate_check_box" format="reference"/> @@ -51,6 +54,8 @@ <attr name="ic_sd_storage" format="reference"/> <attr name="ic_create_new_folder" format="reference"/> <attr name="ic_cast_disconnect" format="reference"/> + <attr name="ic_swap" format="reference"/> + <attr name="master_switch_background" format="color"/> <!-- Used in itemdescription --> <attr name="non_transparent_background" format="reference"/> diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index 969500928..c9a5b3d6a 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -33,4 +33,7 @@ <color name="antennapod_blue">#147BAF</color> + <color name="master_switch_background_light">#DDDDDD</color> + <color name="master_switch_background_dark">#191919</color> + </resources> diff --git a/core/src/main/res/values/ic_launcher_background.xml b/core/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 000000000..3df03b8f4 --- /dev/null +++ b/core/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="ic_launcher_background">#008AB8</color> +</resources>
\ No newline at end of file diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index aa36eab33..46bac68c9 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -11,6 +11,7 @@ <string name="add_feed_label">Add Podcast</string> <string name="episodes_label">Episodes</string> <string name="all_episodes_short_label">All</string> + <string name="new_episodes_label">New</string> <string name="favorite_episodes_label">Favorites</string> <string name="new_label">New</string> <string name="settings_label">Settings</string> @@ -23,6 +24,7 @@ <string name="cancel_download_label">Cancel\nDownload</string> <string name="playback_history_label">Playback History</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Synchronize with other devices</string> <string name="gpodnet_auth_label">gpodder.net Login</string> <string name="free_space_label">%1$s free</string> <string name="episode_cache_full_title">Episode cache full</string> @@ -122,6 +124,9 @@ <string name="mark_all_seen_msg">Marked all Episodes as seen</string> <string name="mark_all_seen_confirmation_msg">Please confirm that you want to mark all episodes as seen.</string> <string name="show_info_label">Show information</string> + <string name="show_feed_settings_label">Show feed settings</string> + <string name="feed_info_label">Feed info</string> + <string name="feed_settings_label">Feed settings</string> <string name="rename_feed_label">Rename Podcast</string> <string name="remove_feed_label">Remove Podcast</string> <string name="share_label">Share…</string> @@ -135,7 +140,7 @@ <string name="feed_remover_msg">Removing Feed</string> <string name="load_complete_feed">Refresh complete Feed</string> <string name="hide_episodes_title">Hide Episodes</string> - <string name="episode_actions">Apply actions</string> + <string name="batch_edit">Batch edit</string> <string name="hide_unplayed_episodes_label">Unplayed</string> <string name="hide_paused_episodes_label">Paused</string> <string name="hide_played_episodes_label">Played</string> @@ -236,6 +241,7 @@ <string name="no_media_playing_label">No media playing</string> <string name="position_default_label" translate="false">00:00:00</string> <string name="player_buffering_msg">Buffering</string> + <string name="player_go_to_picture_in_picture">Picture-in-picture mode</string> <string name="playbackservice_notification_title">Playing podcast</string> <string name="unknown_media_key">AntennaPod - Unknown media key: %1$d</string> @@ -254,6 +260,8 @@ <string name="duration">Duration</string> <string name="episode_title">Episode title</string> <string name="feed_title">Feed title</string> + <string name="random">Random</string> + <string name="smart_shuffle">Smart Shuffle</string> <string name="ascending">Ascending</string> <string name="descending">Descending</string> <string name="clear_queue_confirmation_msg">Please confirm that you want to clear the queue of ALL of the episodes in it</string> @@ -305,8 +313,17 @@ <string name="other_pref">Other</string> <string name="about_pref">About</string> <string name="queue_label">Queue</string> - <string name="services_label">Services</string> + <string name="integrations_label">Integrations</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">Micropayment service</string> + <string name="automation">Automation</string> + <string name="download_pref_details">Details</string> + <string name="import_export_pref">Import/Export</string> + <string name="appearance">Appearance</string> + <string name="external_elements">External elements</string> + <string name="interruptions">Interruptions</string> + <string name="buttons">Buttons</string> + <string name="media_player">Media player</string> <string name="pref_episode_cleanup_title">Episode Cleanup</string> <string name="pref_episode_cleanup_summary">Episodes that aren\'t in the queue and aren\'t favorites should be eligible for removal if Auto Download needs space for new episodes</string> <string name="pref_pauseOnDisconnect_sum">Pause playback when headphones or bluetooth are disconnected</string> @@ -439,6 +456,10 @@ <string name="pref_cast_message_free_flavor">Chromecast requires third party proprietary libraries that are disabled in this version of AntennaPod</string> <string name="pref_enqueue_downloaded_title">Enqueue Downloaded</string> <string name="pref_enqueue_downloaded_summary">Add downloaded episodes to the queue</string> + <string name="pref_videoBehavior_title">Video behavior</string> + <string name="pref_videoBehavior_sum">Behavior when leaving video playback</string> + <string name="stop_playback">Stop playback</string> + <string name="continue_playback">Continue playback</string> <!-- Auto-Flattr dialog --> <string name="auto_flattr_enable">Enable automatic flattring</string> diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index 13d956bab..77758a223 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -12,7 +12,11 @@ <item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item> <item type="attr" name="action_bar_icon_color">@color/grey600</item> + <item type="attr" name="storage">@drawable/ic_sd_grey600_24dp</item> + <item type="attr" name="ic_swap">@drawable/ic_swap_vertical_grey600_24dp</item> + <item type="attr" name="statistics">@drawable/ic_poll_box_grey600_24dp</item> <item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item> + <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_grey600_24dp</item> <item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item> <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item> <item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item> @@ -62,6 +66,7 @@ <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> + <item type="attr" name="master_switch_background">@color/master_switch_background_light</item> </style> <style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark"> @@ -75,7 +80,11 @@ <item name="progressBarTheme">@style/ProgressBarDark</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item> <item type="attr" name="action_bar_icon_color">@color/white</item> - <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item>g + <item type="attr" name="storage">@drawable/ic_sd_white_24dp</item> + <item type="attr" name="ic_swap">@drawable/ic_swap_vertical_white_24dp</item> + <item type="attr" name="statistics">@drawable/ic_poll_box_white_24dp</item> + <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item> + <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_white_24dp</item> <item type="attr" name="action_search">@drawable/ic_search_white_24dp</item> <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item> <item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item> @@ -125,6 +134,7 @@ <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> + <item type="attr" name="master_switch_background">@color/master_switch_background_dark</item> </style> <style name="Theme.AntennaPod.Light.NoTitle" parent="Theme.Base.AntennaPod.Light.NoTitle"> @@ -139,7 +149,11 @@ <item name="colorAccent">@color/holo_blue_light</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item> + <item type="attr" name="storage">@drawable/ic_sd_grey600_24dp</item> + <item type="attr" name="ic_swap">@drawable/ic_swap_vertical_grey600_24dp</item> + <item type="attr" name="statistics">@drawable/ic_poll_box_grey600_24dp</item> <item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item> + <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_grey600_24dp</item> <item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item> <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item> <item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item> @@ -189,6 +203,7 @@ <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> + <item type="attr" name="master_switch_background">@color/master_switch_background_light</item> </style> <style name="Theme.AntennaPod.Dark.NoTitle" parent="Theme.Base.AntennaPod.Dark.NoTitle"> @@ -203,7 +218,11 @@ <item name="colorControlNormal">@color/white</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item> + <item type="attr" name="storage">@drawable/ic_sd_white_24dp</item> + <item type="attr" name="ic_swap">@drawable/ic_swap_vertical_white_24dp</item> + <item type="attr" name="statistics">@drawable/ic_poll_box_white_24dp</item> <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item> + <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_white_24dp</item> <item type="attr" name="action_search">@drawable/ic_search_white_24dp</item> <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item> <item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item> @@ -253,6 +272,7 @@ <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> + <item type="attr" name="master_switch_background">@color/master_switch_background_dark</item> </style> <style name="Theme.AntennaPod.Dark.Splash" parent="Theme.AppCompat.NoActionBar"> |