summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2019-09-24 17:50:26 +0200
committerGitHub <noreply@github.com>2019-09-24 17:50:26 +0200
commit049771d67cd4162606b9aca452d6a9a8dcd423a7 (patch)
tree50b220bef9f0b9129e54bb52594845711585ba8c /core/src
parente89f1733267124c26b6f998d5fb6c759fd999fbb (diff)
parenta92123340da7a3f7286adfd8510c868fec030d4e (diff)
downloadAntennaPod-049771d67cd4162606b9aca452d6a9a8dcd423a7.zip
Merge branch 'develop' into feedinfo-fragment
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/AndroidManifest.xml5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java23
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java22
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java21
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java30
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java117
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java38
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java15
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java27
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java2
-rwxr-xr-xcore/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.pngbin187 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cast_disabled_light.pngbin770 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cast_light.pngbin975 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cast_off_light.pngbin867 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cast_on_0_light.pngbin961 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cast_on_1_light.pngbin979 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cast_on_2_light.pngbin976 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cast_on_light.pngbin982 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_close_light.pngbin493 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.pngbin492 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.pngbin459 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.pngbin601 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_pause_light.pngbin191 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_play_light.pngbin562 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_stat_antenna_default.pngbin541 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_stat_authentication.pngbin371 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-ldpi/ic_stat_antenna_default.pngbin259 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.pngbin139 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cast_disabled_light.pngbin536 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cast_light.pngbin693 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cast_off_light.pngbin635 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cast_on_0_light.pngbin684 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cast_on_1_light.pngbin696 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cast_on_2_light.pngbin690 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cast_on_light.pngbin694 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_close_light.pngbin379 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.pngbin423 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.pngbin406 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.pngbin488 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_pause_light.pngbin280 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_play_light.pngbin447 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_stat_antenna_default.pngbin349 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_stat_authentication.pngbin244 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.pngbin212 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cast_disabled_light.pngbin976 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cast_light.pngbin1328 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cast_off_light.pngbin1161 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cast_on_0_light.pngbin1286 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cast_on_1_light.pngbin1308 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cast_on_2_light.pngbin1309 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cast_on_light.pngbin1331 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_close_light.pngbin526 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.pngbin504 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.pngbin462 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.pngbin602 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_pause_light.pngbin221 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_play_light.pngbin678 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.pngbin783 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_stat_authentication.pngbin418 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.pngbin276 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cast_disabled_light.pngbin1429 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cast_light.pngbin1952 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cast_off_light.pngbin1679 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cast_on_0_light.pngbin1832 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cast_on_1_light.pngbin1893 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cast_on_2_light.pngbin1910 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cast_on_light.pngbin1944 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_close_light.pngbin673 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.pngbin631 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.pngbin594 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.pngbin766 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_pause_light.pngbin317 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_play_light.pngbin955 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxhdpi/ic_stat_authentication.pngbin848 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.pngbin310 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_close_light.pngbin805 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.pngbin738 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.pngbin666 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.pngbin900 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_pause_light.pngbin400 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_play_light.pngbin1190 -> 0 bytes
-rw-r--r--core/src/main/res/drawable/ic_antenna.xml6
-rw-r--r--core/src/main/res/drawable/ic_chat_grey600.xml5
-rw-r--r--core/src/main/res/drawable/ic_chat_white.xml5
-rw-r--r--core/src/main/res/drawable/ic_notification.pngbin3887 -> 0 bytes
-rw-r--r--core/src/main/res/drawable/ic_notification_key.xml5
-rw-r--r--core/src/main/res/drawable/ic_playback_speed_dark.xml8
-rw-r--r--core/src/main/res/drawable/ic_playback_speed_white.xml8
-rw-r--r--core/src/main/res/drawable/ic_questionmark_grey600.xml5
-rw-r--r--core/src/main/res/drawable/ic_questionmark_white.xml5
-rw-r--r--core/src/main/res/drawable/white_circle.xml11
-rw-r--r--core/src/main/res/values-de/strings.xml6
-rw-r--r--core/src/main/res/values-hu/strings.xml1
-rw-r--r--core/src/main/res/values-in/strings.xml (renamed from core/src/main/res/values-id/strings.xml)0
-rw-r--r--core/src/main/res/values-land/styles.xml6
-rw-r--r--core/src/main/res/values-large/dimens.xml1
-rw-r--r--core/src/main/res/values-pl-rPL/strings.xml12
-rw-r--r--core/src/main/res/values-v16/styles.xml8
-rw-r--r--core/src/main/res/values-v19/colors.xml1
-rw-r--r--core/src/main/res/values/arrays.xml10
-rw-r--r--core/src/main/res/values/attrs.xml5
-rw-r--r--core/src/main/res/values/colors.xml6
-rw-r--r--core/src/main/res/values/dimens.xml3
-rw-r--r--core/src/main/res/values/integers.xml1
-rw-r--r--core/src/main/res/values/strings.xml53
-rw-r--r--core/src/main/res/values/styles.xml27
115 files changed, 163 insertions, 386 deletions
diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml
index 3b6edae42..7d84bdddb 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/core/src/main/AndroidManifest.xml
@@ -9,6 +9,11 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.VIBRATE" />
+ <!-- ACCESS_FINE_LOCATION is needed only on Android 10+,
+ for Automatic Download Wifi filter's UI, which uses
+ WifiManager.WifiManager.getConfiguredNetworks()
+ -->
+ <uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java
deleted file mode 100644
index 4a591c996..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package de.danoeh.antennapod.core.event;
-
-import de.danoeh.antennapod.core.feed.FeedMedia;
-
-public class FeedMediaEvent {
-
- public enum Action {
- UPDATE
- }
-
- private final Action action;
- private final FeedMedia media;
-
- private FeedMediaEvent(Action action, FeedMedia media) {
- this.action = action;
- this.media = media;
- }
-
- public static FeedMediaEvent update(FeedMedia media) {
- return new FeedMediaEvent(Action.UPDATE, media);
- }
-
-}
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 b75e1630c..bb34e2c0f 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
@@ -21,8 +21,12 @@ import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
import de.danoeh.antennapod.core.service.download.HttpDownloader;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.util.NetworkUtils;
-import okhttp3.*;
-import okhttp3.internal.http.RealResponseBody;
+import okhttp3.Interceptor;
+import okhttp3.OkHttpClient;
+import okhttp3.Protocol;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
/**
* @see com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader
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 b8ab1c888..a06047229 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
@@ -2,6 +2,7 @@ package de.danoeh.antennapod.core.preferences;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.res.Configuration;
import android.preference.PreferenceManager;
import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
@@ -164,7 +165,7 @@ public class UserPreferences {
* @return R.style.Theme_AntennaPod_Light or R.style.Theme_AntennaPod_Dark
*/
public static int getTheme() {
- return readThemeValue(prefs.getString(PREF_THEME, "0"));
+ return readThemeValue(prefs.getString(PREF_THEME, "system"));
}
public static int getNoTitleTheme() {
@@ -672,14 +673,18 @@ public class UserPreferences {
}
private static int readThemeValue(String valueFromPrefs) {
- switch (Integer.parseInt(valueFromPrefs)) {
- case 0:
+ switch (valueFromPrefs) {
+ case "0":
return R.style.Theme_AntennaPod_Light;
- case 1:
+ case "1":
return R.style.Theme_AntennaPod_Dark;
- case 2:
+ case "2":
return R.style.Theme_AntennaPod_TrueBlack;
default:
+ int nightMode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ if (nightMode == Configuration.UI_MODE_NIGHT_YES) {
+ return R.style.Theme_AntennaPod_Dark;
+ }
return R.style.Theme_AntennaPod_Light;
}
}
@@ -891,13 +896,6 @@ public class UserPreferences {
}
/**
- * Reads episode cache size as it is saved in the episode_cache_size_values array.
- */
- public static int readEpisodeCacheSize(String valueFromPrefs) {
- return readEpisodeCacheSizeInternal(valueFromPrefs);
- }
-
- /**
* Evaluates whether Cast support (Chromecast, Audio Cast, etc) is enabled on the preferences.
*/
public static boolean isCastEnabled() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
index 97007a214..04a6d5882 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
@@ -16,7 +16,9 @@ import java.net.Socket;
import java.net.SocketAddress;
import java.security.GeneralSecurityException;
import java.security.KeyStore;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLContext;
@@ -28,6 +30,8 @@ import javax.net.ssl.X509TrustManager;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.storage.DBWriter;
+import okhttp3.CipherSuite;
+import okhttp3.ConnectionSpec;
import okhttp3.Credentials;
import okhttp3.HttpUrl;
import okhttp3.JavaNetCookieJar;
@@ -138,9 +142,24 @@ public class AntennapodHttpClient {
});
}
}
- if(16 <= Build.VERSION.SDK_INT && Build.VERSION.SDK_INT < 21) {
+ if (16 <= Build.VERSION.SDK_INT && Build.VERSION.SDK_INT < 21) {
builder.sslSocketFactory(new CustomSslSocketFactory(), trustManager());
}
+
+ if (Build.VERSION.SDK_INT < 21) {
+ // workaround for Android 4.x for certain web sites.
+ // see: https://github.com/square/okhttp/issues/4053#issuecomment-402579554
+ List<CipherSuite> cipherSuites = new ArrayList<>();
+ cipherSuites.addAll(ConnectionSpec.MODERN_TLS.cipherSuites());
+ cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA);
+ cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA);
+
+ ConnectionSpec legacyTls = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
+ .cipherSuites(cipherSuites.toArray(new CipherSuite[0]))
+ .build();
+ builder.connectionSpecs(Arrays.asList(legacyTls, ConnectionSpec.CLEARTEXT));
+ }
+
return builder;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 787d465d8..0f346893e 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -546,7 +546,7 @@ public class DownloadService extends Service {
.setContentText(getText(R.string.authentication_notification_msg))
.setStyle(new NotificationCompat.BigTextStyle().bigText(getText(R.string.authentication_notification_msg)
+ ": " + resourceTitle))
- .setSmallIcon(R.drawable.ic_stat_authentication)
+ .setSmallIcon(R.drawable.ic_notification_key)
.setAutoCancel(true)
.setContentIntent(ClientConfig.downloadServiceCallbacks.getAuthentificationNotificationContentIntent(DownloadService.this, downloadRequest));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
@@ -1076,7 +1076,7 @@ public class DownloadService extends Service {
private static String compileNotificationString(List<Downloader> downloads) {
List<String> lines = new ArrayList<>(downloads.size());
for (Downloader downloader : downloads) {
- StringBuilder line = new StringBuilder("\u2022 ");
+ StringBuilder line = new StringBuilder("• ");
DownloadRequest request = downloader.getDownloadRequest();
switch (request.getFeedfileType()) {
case Feed.FEEDFILETYPE_FEED:
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java
index 5debc6d05..d88eb63f4 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java
@@ -193,10 +193,6 @@ public class DownloadStatus {
this.cancelled = true;
}
- public void setCompletionDate(Date completionDate) {
- this.completionDate = (Date) completionDate.clone();
- }
-
public void setId(long id) {
this.id = id;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
index f20525f73..7af33f8f9 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
@@ -2,6 +2,7 @@ package de.danoeh.antennapod.core.service.playback;
import android.content.Context;
import android.net.Uri;
+import android.os.Handler;
import android.view.SurfaceHolder;
import com.google.android.exoplayer2.C;
@@ -27,7 +28,6 @@ import com.google.android.exoplayer2.util.Util;
import org.antennapod.audio.MediaPlayer;
import de.danoeh.antennapod.core.util.playback.IPlayer;
-
public class ExoPlayerWrapper implements IPlayer {
private final Context mContext;
private SimpleExoPlayer mExoPlayer;
@@ -35,15 +35,35 @@ public class ExoPlayerWrapper implements IPlayer {
private MediaPlayer.OnSeekCompleteListener audioSeekCompleteListener;
private MediaPlayer.OnCompletionListener audioCompletionListener;
private MediaPlayer.OnErrorListener audioErrorListener;
+ private MediaPlayer.OnBufferingUpdateListener bufferingUpdateListener;
+ private boolean shouldCheckBufferingUpdates = true;
+
ExoPlayerWrapper(Context context) {
mContext = context;
mExoPlayer = createPlayer();
+
+ Handler handler = new Handler(); // Main thread
+ handler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ if (bufferingUpdateListener != null) {
+ bufferingUpdateListener.onBufferingUpdate(null, mExoPlayer.getBufferedPercentage());
+ }
+ if (shouldCheckBufferingUpdates) {
+ handler.postDelayed(this, 2000);
+ }
+ }
+ }, 2000);
}
private SimpleExoPlayer createPlayer() {
+ DefaultLoadControl.Builder loadControl = new DefaultLoadControl.Builder();
+ loadControl.setBufferDurationsMs(30000, 120000,
+ DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS,
+ DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS);
SimpleExoPlayer p = ExoPlayerFactory.newSimpleInstance(mContext, new DefaultRenderersFactory(mContext),
- new DefaultTrackSelector(), new DefaultLoadControl());
+ new DefaultTrackSelector(), loadControl.createDefaultLoadControl());
p.setSeekParameters(SeekParameters.PREVIOUS_SYNC);
p.addListener(new Player.EventListener() {
@Override
@@ -148,12 +168,14 @@ public class ExoPlayerWrapper implements IPlayer {
@Override
public void release() {
+ shouldCheckBufferingUpdates = false;
if (mExoPlayer != null) {
mExoPlayer.release();
}
audioSeekCompleteListener = null;
audioCompletionListener = null;
audioErrorListener = null;
+ bufferingUpdateListener = null;
}
@Override
@@ -247,4 +269,8 @@ public class ExoPlayerWrapper implements IPlayer {
}
return mExoPlayer.getVideoFormat().height;
}
+
+ void setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener bufferingUpdateListener) {
+ this.bufferingUpdateListener = bufferingUpdateListener;
+ }
}
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 5177fa6be..9164f561f 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
@@ -1025,6 +1025,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
ExoPlayerWrapper ap = (ExoPlayerWrapper) mp;
ap.setOnCompletionListener(audioCompletionListener);
ap.setOnSeekCompleteListener(audioSeekCompleteListener);
+ ap.setOnBufferingUpdateListener(audioBufferingUpdateListener);
ap.setOnErrorListener(audioErrorListener);
} else {
Log.w(TAG, "Unknown media player: " + mp);
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 e479a7711..ace89e40a 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
@@ -1086,7 +1086,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
editor.putInt(
PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, playerStatus);
- editor.commit();
+ editor.apply();
}
private void writePlayerStatusPlaybackPreferences() {
@@ -1095,11 +1095,8 @@ public class PlaybackService extends MediaBrowserServiceCompat {
SharedPreferences.Editor editor = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext()).edit();
int playerStatus = getCurrentPlayerStatusAsInt(mediaPlayer.getPlayerStatus());
-
- editor.putInt(
- PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, playerStatus);
-
- editor.commit();
+ editor.putInt(PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, playerStatus);
+ editor.apply();
}
private void sendNotificationBroadcast(int type, int code) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index e68bff16e..0fb181299 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -193,11 +193,6 @@ public final class DBTasks {
}).start();
}
- public static long getLastRefreshAllFeedsTimeMillis(final Context context) {
- SharedPreferences prefs = context.getSharedPreferences(DBTasks.PREF_NAME, MODE_PRIVATE);
- return prefs.getLong(DBTasks.PREF_LAST_REFRESH, 0);
- }
-
/**
* @param context
* @param feedList the list of feeds to refresh
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
index 892a4675a..9c48f31dd 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
@@ -34,7 +34,6 @@ import de.danoeh.antennapod.core.util.URLChecker;
public class DownloadRequester {
private static final String TAG = "DownloadRequester";
- public static final String IMAGE_DOWNLOADPATH = "images/";
private static final String FEED_DOWNLOADPATH = "cache/";
private static final String MEDIA_DOWNLOADPATH = "media/";
@@ -274,10 +273,6 @@ public class DownloadRequester {
return item.getDownload_url() != null && downloads.containsKey(item.getDownload_url());
}
- public synchronized DownloadRequest getDownload(String downloadUrl) {
- return downloads.get(downloadUrl);
- }
-
/**
* Checks if feedfile with the given download url is in the downloads list
*/
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index 13ea9daf0..a3271bcf9 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -55,16 +55,10 @@ public class PodDBAdapter {
*/
private static final int IN_OPERATOR_MAXIMUM = 800;
- /**
- * Maximum number of entries per search request.
- */
- public static final int SEARCH_LIMIT = 30;
-
// Key-constants
public static final String KEY_ID = "id";
public static final String KEY_TITLE = "title";
public static final String KEY_CUSTOM_TITLE = "custom_title";
- public static final String KEY_NAME = "name";
public static final String KEY_LINK = "link";
public static final String KEY_DESCRIPTION = "description";
public static final String KEY_FILE_URL = "file_url";
@@ -1400,13 +1394,6 @@ public class PodDBAdapter {
return db.rawQuery(query, null);
}
-
- public static final int IDX_FEEDSTATISTICS_FEED = 0;
- public static final int IDX_FEEDSTATISTICS_NUM_ITEMS = 1;
- public static final int IDX_FEEDSTATISTICS_NEW_ITEMS = 2;
- public static final int IDX_FEEDSTATISTICS_LATEST_EPISODE = 3;
- public static final int IDX_FEEDSTATISTICS_IN_PROGRESS_EPISODES = 4;
-
/**
* Select number of items, new items, the date of the latest episode and the number of episodes in progress. The result
* is sorted by the title of the feed.
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java b/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java
deleted file mode 100644
index 69dc38895..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Adapted from: http://thinking-in-code.blogspot.com/2008/11/duck-typing-in-java-using-dynamic.html */
-
-package de.danoeh.antennapod.core.util;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
-import de.danoeh.antennapod.core.BuildConfig;
-
-/**
- * Allows "duck typing" or dynamic invocation based on method signature rather
- * than type hierarchy. In other words, rather than checking whether something
- * IS-a duck, check whether it WALKS-like-a duck or QUACKS-like a duck.
- *
- * To use first use the coerce static method to indicate the object you want to
- * do Duck Typing for, then specify an interface to the to method which you want
- * to coerce the type to, e.g:
- *
- * public interface Foo { void aMethod(); } class Bar { ... public void
- * aMethod() { ... } ... } Bar bar = ...; Foo foo =
- * DuckType.coerce(bar).to(Foo.class); foo.aMethod();
- *
- *
- */
-public class DuckType {
-
- private final Object objectToCoerce;
-
- private DuckType(Object objectToCoerce) {
- this.objectToCoerce = objectToCoerce;
- }
-
- private class CoercedProxy implements InvocationHandler {
- @Override
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
- Method delegateMethod = findMethodBySignature(method);
- assert delegateMethod != null;
- return delegateMethod.invoke(DuckType.this.objectToCoerce, args);
- }
- }
-
- /**
- * Specify the duck typed object to coerce.
- *
- * @param object
- * the object to coerce
- * @return
- */
- public static DuckType coerce(Object object) {
- return new DuckType(object);
- }
-
- /**
- * Coerce the Duck Typed object to the given interface providing it
- * implements all the necessary methods.
- *
- * @param
- * @param iface
- * @return an instance of the given interface that wraps the duck typed
- * class
- * @throws ClassCastException
- * if the object being coerced does not implement all the
- * methods in the given interface.
- */
- @SuppressWarnings({ "rawtypes", "unchecked" })
- public <T> T to(Class iface) {
- if (BuildConfig.DEBUG && !iface.isInterface()) throw new AssertionError("cannot coerce object to a class, must be an interface");
- if (isA(iface)) {
- return (T) iface.cast(objectToCoerce);
- }
- if (quacksLikeA(iface)) {
- return generateProxy(iface);
- }
- throw new ClassCastException("Could not coerce object of type " + objectToCoerce.getClass() + " to " + iface);
- }
-
- @SuppressWarnings("rawtypes")
- private boolean isA(Class iface) {
- return objectToCoerce.getClass().isInstance(iface);
- }
-
- /**
- * Determine whether the duck typed object can be used with the given
- * interface.
- *
- * @param Type
- * of the interface to check.
- * @param iface
- * Interface class to check
- * @return true if the object will support all the methods in the interface,
- * false otherwise.
- */
- @SuppressWarnings("rawtypes")
- private boolean quacksLikeA(Class iface) {
- for (Method method : iface.getMethods()) {
- if (findMethodBySignature(method) == null) {
- return false;
- }
- }
- return true;
- }
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- private <T> T generateProxy(Class iface) {
- return (T) Proxy.newProxyInstance(iface.getClassLoader(), new Class[] { iface }, new CoercedProxy());
- }
-
- private Method findMethodBySignature(Method method) {
- try {
- return objectToCoerce.getClass().getMethod(method.getName(), method.getParameterTypes());
- } catch (NoSuchMethodException e) {
- return null;
- }
- }
-
-} \ No newline at end of file
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 826c06822..a8206d3bd 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
@@ -7,19 +7,6 @@ import de.danoeh.antennapod.core.feed.FeedItem;
public class FeedItemUtil {
private FeedItemUtil(){}
- public static int indexOfItemWithDownloadUrl(List<FeedItem> items, String downloadUrl) {
- if(items == null) {
- return -1;
- }
- for(int i=0; i < items.size(); i++) {
- FeedItem item = items.get(i);
- if(item.hasMedia() && item.getMedia().getDownload_url().equals(downloadUrl)) {
- return i;
- }
- }
- return -1;
- }
-
public static int indexOfItemWithId(List<FeedItem> items, long id) {
for(int i=0; i < items.size(); i++) {
FeedItem item = items.get(i);
@@ -40,17 +27,6 @@ public class FeedItemUtil {
return -1;
}
- public static long[] getIds(FeedItem... items) {
- if(items == null || items.length == 0) {
- return new long[0];
- }
- long[] result = new long[items.length];
- for(int i=0; i < items.length; i++) {
- result[i] = items[i].getId();
- }
- return result;
- }
-
public static long[] getIds(List<FeedItem> items) {
if(items == null || items.size() == 0) {
return new long[0];
@@ -62,20 +38,6 @@ public class FeedItemUtil {
return result;
}
- public static boolean containsAnyId(List<FeedItem> items, long[] ids) {
- if(items == null || items.size() == 0) {
- return false;
- }
- for(FeedItem item : items) {
- for(long id : ids) {
- if(item.getId() == id) {
- return true;
- }
- }
- }
- 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.
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java
deleted file mode 100644
index 29d095cd2..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package de.danoeh.antennapod.core.util;
-
-import java.util.Comparator;
-
-import de.danoeh.antennapod.core.feed.Feed;
-
-/** Compares the title of two feeds for sorting. */
-class FeedtitleComparator implements Comparator<Feed> {
-
- @Override
- public int compare(Feed lhs, Feed rhs) {
- return lhs.getTitle().compareToIgnoreCase(rhs.getTitle());
- }
-
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java
deleted file mode 100644
index 56a684475..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package de.danoeh.antennapod.core.util.comparator;
-
-import java.util.Comparator;
-
-import de.danoeh.antennapod.core.feed.FeedItem;
-import de.danoeh.antennapod.core.feed.SearchResult;
-
-public class SearchResultValueComparator implements Comparator<SearchResult> {
-
- /**
- * Compare items based, first, on where they were found (ie. title, chapters, or show notes).
- * If they were found in the same section, then compare based on the title, in lexicographic
- * order. This is still not ideal since, for example, "#12 Example A" would be considered
- * before "#8 Example B" due to the fact that "8" has a larger unicode value than "1"
- */
- @Override
- public int compare(SearchResult lhs, SearchResult rhs) {
- int value = rhs.getValue() - lhs.getValue();
- if (value == 0 && lhs.getComponent() instanceof FeedItem && rhs.getComponent() instanceof FeedItem) {
- String lhsTitle = ((FeedItem) lhs.getComponent()).getTitle();
- String rhsTitle = ((FeedItem) rhs.getComponent()).getTitle();
- return lhsTitle.compareTo(rhsTitle);
- }
- return value;
- }
-
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
index 645bae5f3..9b644c3ba 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
@@ -182,7 +182,7 @@ public class ExternalMedia implements Playable {
editor.putLong(PREF_LAST_PLAYED_TIME, timestamp);
position = newPosition;
lastPlayedTime = timestamp;
- editor.commit();
+ editor.apply();
}
@Override
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
index 0cfaaab3c..ac5418dd0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
@@ -728,6 +728,8 @@ public class PlaybackController {
public void setPlaybackSpeed(float speed) {
if (playbackService != null) {
playbackService.setSpeed(speed);
+ } else {
+ onPlaybackSpeedChange();
}
}
public void setSkipSilence(boolean skipSilence) {
diff --git a/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png
deleted file mode 100755
index 67924a5a2..000000000
--- a/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cast_disabled_light.png b/core/src/main/res/drawable-hdpi/ic_cast_disabled_light.png
deleted file mode 100644
index c0a55d555..000000000
--- a/core/src/main/res/drawable-hdpi/ic_cast_disabled_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cast_light.png b/core/src/main/res/drawable-hdpi/ic_cast_light.png
deleted file mode 100644
index b0c581a0e..000000000
--- a/core/src/main/res/drawable-hdpi/ic_cast_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cast_off_light.png b/core/src/main/res/drawable-hdpi/ic_cast_off_light.png
deleted file mode 100644
index 5f3c0179c..000000000
--- a/core/src/main/res/drawable-hdpi/ic_cast_off_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cast_on_0_light.png b/core/src/main/res/drawable-hdpi/ic_cast_on_0_light.png
deleted file mode 100644
index e872693a4..000000000
--- a/core/src/main/res/drawable-hdpi/ic_cast_on_0_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cast_on_1_light.png b/core/src/main/res/drawable-hdpi/ic_cast_on_1_light.png
deleted file mode 100644
index d8be1ebc6..000000000
--- a/core/src/main/res/drawable-hdpi/ic_cast_on_1_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cast_on_2_light.png b/core/src/main/res/drawable-hdpi/ic_cast_on_2_light.png
deleted file mode 100644
index 27cda9e9d..000000000
--- a/core/src/main/res/drawable-hdpi/ic_cast_on_2_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cast_on_light.png b/core/src/main/res/drawable-hdpi/ic_cast_on_light.png
deleted file mode 100644
index 4ee525875..000000000
--- a/core/src/main/res/drawable-hdpi/ic_cast_on_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_close_light.png b/core/src/main/res/drawable-hdpi/ic_close_light.png
deleted file mode 100644
index 93187e450..000000000
--- a/core/src/main/res/drawable-hdpi/ic_close_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png
deleted file mode 100644
index 3668c9a00..000000000
--- a/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png
deleted file mode 100644
index a1a2c5b68..000000000
--- a/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png
deleted file mode 100644
index da5398d15..000000000
--- a/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_pause_light.png b/core/src/main/res/drawable-hdpi/ic_pause_light.png
deleted file mode 100644
index 0c505d1c8..000000000
--- a/core/src/main/res/drawable-hdpi/ic_pause_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_play_light.png b/core/src/main/res/drawable-hdpi/ic_play_light.png
deleted file mode 100644
index 7957dff5b..000000000
--- a/core/src/main/res/drawable-hdpi/ic_play_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png
deleted file mode 100644
index af99f4b3b..000000000
--- a/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_stat_authentication.png b/core/src/main/res/drawable-hdpi/ic_stat_authentication.png
deleted file mode 100644
index 398dffa4b..000000000
--- a/core/src/main/res/drawable-hdpi/ic_stat_authentication.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png
deleted file mode 100644
index ddf545c0b..000000000
--- a/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png
deleted file mode 100755
index e87df752e..000000000
--- a/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cast_disabled_light.png b/core/src/main/res/drawable-mdpi/ic_cast_disabled_light.png
deleted file mode 100644
index 7940a0332..000000000
--- a/core/src/main/res/drawable-mdpi/ic_cast_disabled_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cast_light.png b/core/src/main/res/drawable-mdpi/ic_cast_light.png
deleted file mode 100644
index 1f5bec20b..000000000
--- a/core/src/main/res/drawable-mdpi/ic_cast_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cast_off_light.png b/core/src/main/res/drawable-mdpi/ic_cast_off_light.png
deleted file mode 100644
index 963db27d4..000000000
--- a/core/src/main/res/drawable-mdpi/ic_cast_off_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cast_on_0_light.png b/core/src/main/res/drawable-mdpi/ic_cast_on_0_light.png
deleted file mode 100644
index a90d9e305..000000000
--- a/core/src/main/res/drawable-mdpi/ic_cast_on_0_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cast_on_1_light.png b/core/src/main/res/drawable-mdpi/ic_cast_on_1_light.png
deleted file mode 100644
index bb2cf30bf..000000000
--- a/core/src/main/res/drawable-mdpi/ic_cast_on_1_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cast_on_2_light.png b/core/src/main/res/drawable-mdpi/ic_cast_on_2_light.png
deleted file mode 100644
index 3ed59e55b..000000000
--- a/core/src/main/res/drawable-mdpi/ic_cast_on_2_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cast_on_light.png b/core/src/main/res/drawable-mdpi/ic_cast_on_light.png
deleted file mode 100644
index 713427b97..000000000
--- a/core/src/main/res/drawable-mdpi/ic_cast_on_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_close_light.png b/core/src/main/res/drawable-mdpi/ic_close_light.png
deleted file mode 100644
index 2c52c9b0f..000000000
--- a/core/src/main/res/drawable-mdpi/ic_close_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png
deleted file mode 100644
index 726eae499..000000000
--- a/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png
deleted file mode 100644
index 0cc401dff..000000000
--- a/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png
deleted file mode 100644
index d3bcfe7b6..000000000
--- a/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_pause_light.png b/core/src/main/res/drawable-mdpi/ic_pause_light.png
deleted file mode 100644
index 6218a774f..000000000
--- a/core/src/main/res/drawable-mdpi/ic_pause_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_play_light.png b/core/src/main/res/drawable-mdpi/ic_play_light.png
deleted file mode 100644
index 1e0ccaf80..000000000
--- a/core/src/main/res/drawable-mdpi/ic_play_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png
deleted file mode 100644
index 41fd20655..000000000
--- a/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_stat_authentication.png b/core/src/main/res/drawable-mdpi/ic_stat_authentication.png
deleted file mode 100644
index 550b56b33..000000000
--- a/core/src/main/res/drawable-mdpi/ic_stat_authentication.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png
deleted file mode 100755
index 731f89c83..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_disabled_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_disabled_light.png
deleted file mode 100644
index fbb3e062c..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_cast_disabled_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_light.png
deleted file mode 100644
index f2713e20e..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_cast_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_off_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_off_light.png
deleted file mode 100644
index f4f8aaea8..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_cast_off_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_on_0_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_on_0_light.png
deleted file mode 100644
index 247fc95ba..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_cast_on_0_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_on_1_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_on_1_light.png
deleted file mode 100644
index ecf4b4723..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_cast_on_1_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_on_2_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_on_2_light.png
deleted file mode 100644
index 60e3afa5d..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_cast_on_2_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_on_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_on_light.png
deleted file mode 100644
index 40ce9d4f2..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_cast_on_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_close_light.png b/core/src/main/res/drawable-xhdpi/ic_close_light.png
deleted file mode 100644
index 49faa429a..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_close_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png
deleted file mode 100644
index 322adb6e0..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png
deleted file mode 100644
index c25860017..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png
deleted file mode 100644
index ac6876140..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_pause_light.png b/core/src/main/res/drawable-xhdpi/ic_pause_light.png
deleted file mode 100644
index 40cd79f14..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_pause_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_play_light.png b/core/src/main/res/drawable-xhdpi/ic_play_light.png
deleted file mode 100644
index 33f6a5919..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_play_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png
deleted file mode 100644
index 30431ed6a..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png b/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png
deleted file mode 100644
index e83cbc333..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png
deleted file mode 100755
index 255b82707..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_disabled_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_disabled_light.png
deleted file mode 100644
index e94df3889..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_cast_disabled_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_light.png
deleted file mode 100644
index c5722a6eb..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_cast_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_off_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_off_light.png
deleted file mode 100644
index 92ac67b34..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_cast_off_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_on_0_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_on_0_light.png
deleted file mode 100644
index 2742fcb4a..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_cast_on_0_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_on_1_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_on_1_light.png
deleted file mode 100644
index 405178e64..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_cast_on_1_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_on_2_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_on_2_light.png
deleted file mode 100644
index dfe52428d..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_cast_on_2_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_on_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_on_light.png
deleted file mode 100644
index 7e69a0864..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_cast_on_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_close_light.png b/core/src/main/res/drawable-xxhdpi/ic_close_light.png
deleted file mode 100644
index be519bfcb..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_close_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png
deleted file mode 100644
index 87f8073ea..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png
deleted file mode 100644
index da3433c61..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png
deleted file mode 100644
index 7a3204693..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_pause_light.png b/core/src/main/res/drawable-xxhdpi/ic_pause_light.png
deleted file mode 100644
index a36d4d11e..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_pause_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_play_light.png b/core/src/main/res/drawable-xxhdpi/ic_play_light.png
deleted file mode 100644
index b1424874a..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_play_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_stat_authentication.png b/core/src/main/res/drawable-xxhdpi/ic_stat_authentication.png
deleted file mode 100755
index 965fabc57..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_stat_authentication.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png b/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png
deleted file mode 100755
index 0d697e0f9..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_close_light.png b/core/src/main/res/drawable-xxxhdpi/ic_close_light.png
deleted file mode 100644
index 679c2a4d5..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_close_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png
deleted file mode 100644
index c56590fe0..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png
deleted file mode 100644
index 5deea3286..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png
deleted file mode 100644
index 0ae33696b..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_pause_light.png b/core/src/main/res/drawable-xxxhdpi/ic_pause_light.png
deleted file mode 100644
index 7de2ef4ed..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_pause_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_play_light.png b/core/src/main/res/drawable-xxxhdpi/ic_play_light.png
deleted file mode 100644
index 4428c8477..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_play_light.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable/ic_antenna.xml b/core/src/main/res/drawable/ic_antenna.xml
new file mode 100644
index 000000000..9fcfab000
--- /dev/null
+++ b/core/src/main/res/drawable/ic_antenna.xml
@@ -0,0 +1,6 @@
+<vector android:height="24dp" android:viewportHeight="12.7"
+ android:viewportWidth="12.7" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillAlpha="1" android:fillColor="#ffffff"
+ android:pathData="m6.0631,0.4728v0.3274c1.1582,0.0249 1.911,0.4225 2.5991,1.1189 0.6881,0.6964 1.0924,1.7043 1.1125,2.9246h0.3211c0.0078,-1.3792 -0.5291,-2.4905 -1.1981,-3.1576C8.2288,1.019 7.3415,0.4734 6.0631,0.4728ZM6.0631,1.4283v0.3453c0.859,0.0361 1.3465,0.2123 1.9398,0.8081 0.5933,0.5957 0.843,1.3669 0.8598,2.2621L9.2029,4.8438c-0.0088,-1.2333 -0.5414,-2.0907 -0.9568,-2.5047 -0.4154,-0.4139 -0.9948,-0.9065 -2.183,-0.9108zM6.0625,2.4323 L6.0631,2.7495c0.3968,0.007 0.8308,0.1395 1.2089,0.5642 0.3781,0.4247 0.495,1.0244 0.51,1.53h0.3255c-0.0016,-0.669 -0.2787,-1.3891 -0.6153,-1.747 -0.3366,-0.358 -0.7368,-0.6621 -1.4298,-0.6645zM6.0906,3.7766c-0.4059,0.0002 -0.7349,0.3294 -0.7347,0.7353 0.0001,0.2677 0.1459,0.5142 0.3804,0.6434l-3.0102,6.2227 0.5151,0.3351 0.607,-1.2485 5.3821,1.5453 0.083,0.1609 0.5732,-0.2508 -3.4927,-6.7397c0.2624,-0.1189 0.4311,-0.3802 0.4315,-0.6683 0.0002,-0.4059 -0.3287,-0.7352 -0.7347,-0.7353zM6.065,5.8631 L6.5929,6.8882 5.2882,7.4761zM6.6976,7.0918 L7.6065,8.8561 5.137,7.8016zM5.0259,8.0199 L7.611,9.1184 4.0314,10.0854zM7.8395,9.3086 L9.081,11.7201 4.1489,10.3069z"
+ android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="0.32680494"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_chat_grey600.xml b/core/src/main/res/drawable/ic_chat_grey600.xml
new file mode 100644
index 000000000..ebae2dbed
--- /dev/null
+++ b/core/src/main/res/drawable/ic_chat_grey600.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FF757575" android:pathData="M21,6h-2v9L6,15v2c0,0.55 0.45,1 1,1h11l4,4L22,7c0,-0.55 -0.45,-1 -1,-1zM17,12L17,3c0,-0.55 -0.45,-1 -1,-1L3,2c-0.55,0 -1,0.45 -1,1v14l4,-4h10c0.55,0 1,-0.45 1,-1z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_chat_white.xml b/core/src/main/res/drawable/ic_chat_white.xml
new file mode 100644
index 000000000..45691c525
--- /dev/null
+++ b/core/src/main/res/drawable/ic_chat_white.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FFFFFFFF" android:pathData="M21,6h-2v9L6,15v2c0,0.55 0.45,1 1,1h11l4,4L22,7c0,-0.55 -0.45,-1 -1,-1zM17,12L17,3c0,-0.55 -0.45,-1 -1,-1L3,2c-0.55,0 -1,0.45 -1,1v14l4,-4h10c0.55,0 1,-0.45 1,-1z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_notification.png b/core/src/main/res/drawable/ic_notification.png
deleted file mode 100644
index 8bd22b54a..000000000
--- a/core/src/main/res/drawable/ic_notification.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable/ic_notification_key.xml b/core/src/main/res/drawable/ic_notification_key.xml
new file mode 100644
index 000000000..b1e2f9b8c
--- /dev/null
+++ b/core/src/main/res/drawable/ic_notification_key.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FFFFFFFF" android:pathData="M12.65,10C11.83,7.67 9.61,6 7,6c-3.31,0 -6,2.69 -6,6s2.69,6 6,6c2.61,0 4.83,-1.67 5.65,-4H17v4h4v-4h2v-4H12.65zM7,14c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_playback_speed_dark.xml b/core/src/main/res/drawable/ic_playback_speed_dark.xml
new file mode 100644
index 000000000..7c7d1cf8c
--- /dev/null
+++ b/core/src/main/res/drawable/ic_playback_speed_dark.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path android:fillColor="#FF757575" android:pathData="M 12,14.888154 A 2.2284437,2.2284437 0 0 1 9.7715563,12.659711 c 0,-0.831952 0.4531167,-1.559911 1.1142217,-1.938746 L 18.098507,6.5463469 13.990743,13.66251 C 13.619336,14.390469 12.869093,14.888154 12,14.888154 m 0,-9.6565888 c 1.344494,0 2.599851,0.3714073 3.691789,0.9805151 L 14.131878,7.110886 C 13.485629,6.858329 12.742815,6.7171943 12,6.7171943 A 5.9425165,5.9425165 0 0 0 6.0574835,12.659711 c 0,1.64162 0.661105,3.127249 1.7381861,4.196902 h 0.00743 c 0.2896977,0.289697 0.2896977,0.757671 0,1.047369 -0.2896977,0.289697 -0.7650991,0.289697 -1.0547967,0.0075 v 0 C 5.4038067,16.566915 4.5718544,14.709879 4.5718544,12.659711 A 7.4281456,7.4281456 0 0 1 12,5.2315652 m 7.428145,7.4281458 c 0,2.050168 -0.831952,3.907204 -2.176446,5.251699 v 0 c -0.289698,0.282269 -0.757671,0.282269 -1.047369,-0.0075 -0.289697,-0.289698 -0.289697,-0.757671 0,-1.047368 v 0 c 1.077082,-1.077082 1.738186,-2.555282 1.738186,-4.196902 0,-0.742815 -0.141134,-1.48563 -0.401119,-2.154163 l 0.898805,-1.5599106 c 0.616537,1.1142216 0.987943,2.3621496 0.987943,3.7140736 z" />
+</vector> \ No newline at end of file
diff --git a/core/src/main/res/drawable/ic_playback_speed_white.xml b/core/src/main/res/drawable/ic_playback_speed_white.xml
new file mode 100644
index 000000000..cc6af0d55
--- /dev/null
+++ b/core/src/main/res/drawable/ic_playback_speed_white.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="48dp"
+ android:width="48dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path android:fillColor="#ffffffff" android:pathData="M 12,14.888154 A 2.2284437,2.2284437 0 0 1 9.7715563,12.659711 c 0,-0.831952 0.4531167,-1.559911 1.1142217,-1.938746 L 18.098507,6.5463469 13.990743,13.66251 C 13.619336,14.390469 12.869093,14.888154 12,14.888154 m 0,-9.6565888 c 1.344494,0 2.599851,0.3714073 3.691789,0.9805151 L 14.131878,7.110886 C 13.485629,6.858329 12.742815,6.7171943 12,6.7171943 A 5.9425165,5.9425165 0 0 0 6.0574835,12.659711 c 0,1.64162 0.661105,3.127249 1.7381861,4.196902 h 0.00743 c 0.2896977,0.289697 0.2896977,0.757671 0,1.047369 -0.2896977,0.289697 -0.7650991,0.289697 -1.0547967,0.0075 v 0 C 5.4038067,16.566915 4.5718544,14.709879 4.5718544,12.659711 A 7.4281456,7.4281456 0 0 1 12,5.2315652 m 7.428145,7.4281458 c 0,2.050168 -0.831952,3.907204 -2.176446,5.251699 v 0 c -0.289698,0.282269 -0.757671,0.282269 -1.047369,-0.0075 -0.289697,-0.289698 -0.289697,-0.757671 0,-1.047368 v 0 c 1.077082,-1.077082 1.738186,-2.555282 1.738186,-4.196902 0,-0.742815 -0.141134,-1.48563 -0.401119,-2.154163 l 0.898805,-1.5599106 c 0.616537,1.1142216 0.987943,2.3621496 0.987943,3.7140736 z" />
+</vector> \ No newline at end of file
diff --git a/core/src/main/res/drawable/ic_questionmark_grey600.xml b/core/src/main/res/drawable/ic_questionmark_grey600.xml
new file mode 100644
index 000000000..0907fcdec
--- /dev/null
+++ b/core/src/main/res/drawable/ic_questionmark_grey600.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FF757575" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_questionmark_white.xml b/core/src/main/res/drawable/ic_questionmark_white.xml
new file mode 100644
index 000000000..69b42fef8
--- /dev/null
+++ b/core/src/main/res/drawable/ic_questionmark_white.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FFFFFFFF" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"/>
+</vector>
diff --git a/core/src/main/res/drawable/white_circle.xml b/core/src/main/res/drawable/white_circle.xml
deleted file mode 100644
index 597b70a2d..000000000
--- a/core/src/main/res/drawable/white_circle.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="oval" >
-
- <solid android:color="@color/white" />
-
- <size
- android:height="4dp"
- android:width="4dp" />
-
-</shape> \ No newline at end of file
diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml
index b2b70575c..d191f4059 100644
--- a/core/src/main/res/values-de/strings.xml
+++ b/core/src/main/res/values-de/strings.xml
@@ -422,7 +422,7 @@
<string name="pref_gpodnet_full_sync_title">Jetzt komplett synchronisieren</string>
<string name="pref_gpodnet_full_sync_sum">Kompletten Abonnement- und Episoden-Status mit gpodder.net synchronisieren.</string>
<string name="pref_gpodnet_sync_sum_last_sync_line">Letzter Synchronisierungsversuch: %1$s (%2$s)</string>
- <string name="pref_gpodnet_sync_started">Synchronisation starten</string>
+ <string name="pref_gpodnet_sync_started">Synchronisation gestartet</string>
<string name="pref_gpodnet_full_sync_started">Komplette Synchronisierung gestartet</string>
<string name="pref_gpodnet_login_status"><![CDATA[Eingeloggt als <i>%1$s</i> mit dem Gerät <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">Zeige Benachrichtungen bei Synchronisierungsfehlern</string>
@@ -617,7 +617,7 @@
<string name="media_type_audio_label">Audio</string>
<string name="media_type_video_label">Video</string>
<string name="navigate_upwards_label">Nach oben navigieren</string>
- <string name="status_downloading_label">Episode wird gerade heruntergeladen</string>
+ <string name="status_downloading_label">Episode wird heruntergeladen</string>
<string name="in_queue_label">Episode befindet sich in der Abspielliste</string>
<string name="drag_handle_content_description">Ziehe, um die Position dieses Objekts zu verändern</string>
<string name="load_next_page_label">Nächste Seite laden</string>
@@ -726,7 +726,7 @@
<!--Notification channels-->
<string name="notification_channel_user_action">Handlung notwendig</string>
<string name="notification_channel_user_action_description">Wird gezeigt, wenn deine Handlung notwendig ist, zum Beispiel wenn du ein Passwort eingeben musst.</string>
- <string name="notification_channel_downloading">Lädt herunter</string>
+ <string name="notification_channel_downloading">Herunterladen</string>
<string name="notification_channel_downloading_description">Wird gezeigt beim Herunterladen.</string>
<string name="notification_channel_playing">Jetzt spielt</string>
<string name="notification_channel_playing_description">Erlaubt es, die Wiedergabe zu steuern. Dies ist die Hauptbenachrichtigung, die du siehst, während ein Podcast abgespielt wird.</string>
diff --git a/core/src/main/res/values-hu/strings.xml b/core/src/main/res/values-hu/strings.xml
index 4a42da4c3..706b13b79 100644
--- a/core/src/main/res/values-hu/strings.xml
+++ b/core/src/main/res/values-hu/strings.xml
@@ -107,6 +107,7 @@
<string name="podcastdirectories_label">Podcast keresése mappában</string>
<string name="podcastdirectories_descr">Új podcastokat kereshetsz iTunes-on vagy fyyd-en, vagy a gpodder.net-en név, kategória vagy cím alapján.</string>
<string name="browse_gpoddernet_label">gpodder.net böngészése</string>
+ <string name="discover">Felfedezés</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Az összes megjelölése lejátszottként</string>
<string name="mark_all_read_msg">Az összes epizód lejátszottként megjelölve</string>
diff --git a/core/src/main/res/values-id/strings.xml b/core/src/main/res/values-in/strings.xml
index 2f1ffecea..2f1ffecea 100644
--- a/core/src/main/res/values-id/strings.xml
+++ b/core/src/main/res/values-in/strings.xml
diff --git a/core/src/main/res/values-land/styles.xml b/core/src/main/res/values-land/styles.xml
deleted file mode 100644
index d964ef3d4..000000000
--- a/core/src/main/res/values-land/styles.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <style name="Theme.MediaPlayer" parent="@style/Theme.AppCompat.Light">
- <item name="android:windowActionBarOverlay">true</item>
- </style>
-</resources> \ No newline at end of file
diff --git a/core/src/main/res/values-large/dimens.xml b/core/src/main/res/values-large/dimens.xml
index 2da283c5b..2d107eef0 100644
--- a/core/src/main/res/values-large/dimens.xml
+++ b/core/src/main/res/values-large/dimens.xml
@@ -4,5 +4,4 @@
<dimen name="thumbnail_length">170dp</dimen>
<dimen name="thumbnail_length_queue_item">64dp</dimen>
<dimen name="thumbnail_length_downloaded_item">64dp</dimen>
- <dimen name="queue_title_text_size">@dimen/text_size_medium</dimen>
</resources> \ No newline at end of file
diff --git a/core/src/main/res/values-pl-rPL/strings.xml b/core/src/main/res/values-pl-rPL/strings.xml
index 405bfeaa7..3ebdbe487 100644
--- a/core/src/main/res/values-pl-rPL/strings.xml
+++ b/core/src/main/res/values-pl-rPL/strings.xml
@@ -7,6 +7,7 @@
<string name="add_feed_label">Dodaj podcast</string>
<string name="episodes_label">Odcinki</string>
<string name="all_episodes_short_label">Wszystkie</string>
+ <string name="new_episodes_label">Nowe</string>
<string name="favorite_episodes_label">Ulubione</string>
<string name="new_label">Nowy</string>
<string name="settings_label">Ustawienia</string>
@@ -104,6 +105,7 @@
<string name="podcastdirectories_label">Znajdź podcast w folderze</string>
<string name="podcastdirectories_descr">Możesz wyszukiwać nowe podcasty ze względu na nazwę, kategorię lub popularność na gpodder.net, Itunes lub fyyd</string>
<string name="browse_gpoddernet_label">Przeglądaj gpodder.net</string>
+ <string name="discover_more">więcej »</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Oznacz wszystkie jako odtworzone</string>
<string name="mark_all_read_msg">Wszystkie odcinki zaznaczono jako odtworzone</string>
@@ -134,7 +136,7 @@
<string name="hide_has_media_label">Ma media</string>
<string name="filtered_label">Przefiltrowany</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Ostatnie odświerzanie nie powiodło się</string>
- <string name="open_podcast">Otwarty Podcast</string>
+ <string name="open_podcast">Otwórz Podcast</string>
<!--actions on feeditems-->
<string name="download_label">Pobierz</string>
<string name="play_label">Odtwórz</string>
@@ -249,6 +251,8 @@
<!--Empty list labels-->
<string name="no_feeds_label">Nie subskrybowałeś jeszcze żadnego podcastu.</string>
<string name="no_shownotes_label">Ten epizod nie ma notatek.</string>
+ <string name="no_comp_downloads_head_label">Brak pobranych odcinków</string>
+ <string name="no_fav_episodes_head_label">Brak ulubionych odcinków</string>
<string name="no_chapters_label">Ten odcinek nie ma rozdziałów.</string>
<!--Preferences-->
<string name="storage_pref">Pamięć</string>
@@ -258,6 +262,8 @@
<string name="queue_label">Kolejka</string>
<string name="download_pref_details">Szczegóły</string>
<string name="appearance">Wygląd</string>
+ <string name="preference_search_no_results">Brak wyników</string>
+ <string name="preference_search_clear_history">Wyczyść historię</string>
<string name="pref_episode_cleanup_title">Usuwanie odcinków</string>
<string name="pref_episode_cleanup_summary">Odcinki niebędące w kolejce i niebędące na liście ulubiobych powinny nadawać się do usunięcia, jeśli Automatyczne Pobieranie potrzebuje miejsca na nowe odcinki.</string>
<string name="pref_pauseOnDisconnect_sum">Wstrzymaj odtwarzanie po rozłączeniu słuchawek lub Bluetooth</string>
@@ -292,6 +298,7 @@
<string name="pref_unpauseOnHeadsetReconnect_title">Słuchawki podłączone ponownie</string>
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth podłączony ponownie</string>
<string name="pref_mobileUpdate_title">Aktualizacje mobilne</string>
+ <string name="pref_mobileUpdate_auto_download">Automatyczne pobieranie</string>
<string name="refreshing_label">Odświeżanie</string>
<string name="user_interface_label">Interfejs użytkownika</string>
<string name="pref_set_theme_title">Wybierz motyw</string>
@@ -374,6 +381,9 @@
<string name="pref_cast_message_free_flavor">Chromecast wymagadodatkowych bibliotek, które są zablokowane w tej wersji AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Rzeczy z kolejki pobrane</string>
<string name="pref_enqueue_downloaded_summary">Dodaj pobrane odcinki do kolejki</string>
+ <string name="behavior">Zachowanie</string>
+ <string name="back_button_default">Domyślne</string>
+ <string name="back_button_open_drawer">Otwórz panel nawigacyjny</string>
<!--Search-->
<string name="search_hint">Szukaj odcinków</string>
<string name="found_in_shownotes_label">Znalezione w notatkach dotyczących show</string>
diff --git a/core/src/main/res/values-v16/styles.xml b/core/src/main/res/values-v16/styles.xml
index a92790152..947e43f38 100644
--- a/core/src/main/res/values-v16/styles.xml
+++ b/core/src/main/res/values-v16/styles.xml
@@ -6,12 +6,4 @@
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:fontFamily">sans-serif-light</item>
</style>
-
- <style name="AntennaPod.Dialog.Title" parent="@android:style/TextAppearance.Medium">
- <item name="android:textSize">@dimen/text_size_medium</item>
- <item name="android:textColor">@color/holo_blue_light</item>
- <item name="android:maxLines">2</item>
- <item name="android:ellipsize">end</item>
- <item name="android:fontFamily">sans-serif-light</item>
- </style>
</resources> \ No newline at end of file
diff --git a/core/src/main/res/values-v19/colors.xml b/core/src/main/res/values-v19/colors.xml
index 16c065d75..4154280e8 100644
--- a/core/src/main/res/values-v19/colors.xml
+++ b/core/src/main/res/values-v19/colors.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="selection_background_color_dark">#484B4D</color>
- <color name="selection_background_color_light">#E3E3E3</color>
</resources> \ No newline at end of file
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
index 0eaf0e5e7..5e7eab1ea 100644
--- a/core/src/main/res/values/arrays.xml
+++ b/core/src/main/res/values/arrays.xml
@@ -156,19 +156,15 @@
<item>4.00</item>
</string-array>
- <string-array name="autodl_select_networks_default_entries">
- <item>N/A</item>
- </string-array>
- <string-array name="autodl_select_networks_default_values">
- <item>0</item>
- </string-array>
-
<string-array name="theme_options">
+ <item>@string/pref_theme_title_use_system</item>
<item>@string/pref_theme_title_light</item>
<item>@string/pref_theme_title_dark</item>
<item>@string/pref_theme_title_trueblack</item>
</string-array>
+
<string-array name="theme_values">
+ <item>system</item>
<item>0</item>
<item>1</item>
<item>2</item>
diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml
index 5b0bf5717..530b40d46 100644
--- a/core/src/main/res/values/attrs.xml
+++ b/core/src/main/res/values/attrs.xml
@@ -9,6 +9,7 @@
<attr name="av_fast_forward" format="reference"/>
<attr name="av_pause" format="reference"/>
<attr name="av_play" format="reference"/>
+ <attr name="av_speed" format="reference"/>
<attr name="av_rewind" format="reference"/>
<attr name="content_discard" format="reference"/>
<attr name="content_new" format="reference"/>
@@ -56,9 +57,9 @@
<attr name="ic_cast_disconnect" format="reference"/>
<attr name="ic_swap" format="reference"/>
<attr name="ic_cellphone_text" format="reference"/>
- <attr name="ic_question_answer" format="reference" />
+ <attr name="ic_questionmark" format="reference" />
+ <attr name="ic_chat" format="reference"/>
<attr name="ic_bug" format="reference" />
- <attr name="ic_known_issues" format="reference" />
<attr name="master_switch_background" format="color"/>
<attr name="currently_playing_background" format="color"/>
<attr name="ic_bookmark" format="reference"/>
diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml
index 0e4533977..fea7da4a4 100644
--- a/core/src/main/res/values/colors.xml
+++ b/core/src/main/res/values/colors.xml
@@ -2,22 +2,16 @@
<resources>
<color name="white">#FFFFFF</color>
- <color name="gray">#808080</color>
<color name="grey600">#757575</color>
<color name="light_gray">#bfbfbf</color>
<color name="black">#000000</color>
<color name="holo_blue_light">#33B5E5</color>
<color name="holo_blue_dark">#0099CC</color>
- <color name="ics_gray">#858585</color>
- <color name="actionbar_gray">#DDDDDD</color>
<color name="download_success_green">#669900</color>
<color name="download_failed_red">#CC0000</color>
<color name="status_progress">#E033B5E5</color>
- <color name="status_playing">#E0EE5F52</color>
<color name="overlay_dark">#2C2C2C</color>
<color name="overlay_light">#FFFFFF</color>
- <color name="swipe_refresh_secondary_color_light">#EDEDED</color>
- <color name="swipe_refresh_secondary_color_dark">#060708</color>
<color name="new_indicator_green">#669900</color>
<color name="image_readability_tint">#80000000</color>
<color name="feed_image_bg">#50000000</color>
diff --git a/core/src/main/res/values/dimens.xml b/core/src/main/res/values/dimens.xml
index cdde0027d..02c398b62 100644
--- a/core/src/main/res/values/dimens.xml
+++ b/core/src/main/res/values/dimens.xml
@@ -10,7 +10,6 @@
<dimen name="text_size_navdrawer">16sp</dimen>
<dimen name="text_size_medium">18sp</dimen>
<dimen name="text_size_large">22sp</dimen>
- <dimen name="status_indicator_width">32dp</dimen>
<dimen name="thumbnail_length_itemlist">64dp</dimen>
<dimen name="thumbnail_length_queue_item">64dp</dimen>
<dimen name="thumbnail_length_downloaded_item">64dp</dimen>
@@ -21,7 +20,6 @@
<dimen name="drawer_width">280dp</dimen>
<dimen name="listitem_iconwithtext_height">48dp</dimen>
<dimen name="listitem_iconwithtext_textleftpadding">16dp</dimen>
- <dimen name="listitem_iconwithtext_textverticalpadding">16dp</dimen>
<dimen name="listitem_threeline_textleftpadding">16dp</dimen>
<dimen name="listitem_threeline_textrightpadding">8dp</dimen>
@@ -29,7 +27,6 @@
<dimen name="listitem_threeline_horizontalpadding">16dp</dimen>
<dimen name="list_vertical_padding">8dp</dimen>
- <dimen name="minimum_text_margin">8dp</dimen>
<dimen name="listitem_icon_leftpadding">16dp</dimen>
<dimen name="listitem_icon_rightpadding">16dp</dimen>
diff --git a/core/src/main/res/values/integers.xml b/core/src/main/res/values/integers.xml
index 33501d9fb..73d90cf98 100644
--- a/core/src/main/res/values/integers.xml
+++ b/core/src/main/res/values/integers.xml
@@ -1,4 +1,3 @@
<resources>
- <integer name="undobar_hide_delay">5000</integer>
<integer name="episode_cache_size_unlimited">-1</integer>
</resources>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index c9c6506a9..c7bd2d2a2 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -27,10 +27,8 @@
<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>
<string name="episode_cache_full_message">The episode cache limit has been reached. You can increase the cache size in the Settings.</string>
- <string name="synchronizing">Synchronizing…</string>
<!-- Statistics fragment -->
<string name="total_time_listened_to_podcasts">Total time of podcasts played:</string>
@@ -73,7 +71,6 @@
<string name="author_label">Author(s)</string>
<string name="language_label">Language</string>
<string name="url_label">URL</string>
- <string name="podcast_settings_label">Settings</string>
<string name="cover_label">Picture</string>
<string name="error_label">Error</string>
<string name="error_msg_prefix">An error occurred:</string>
@@ -82,14 +79,9 @@
<string name="external_storage_error_msg">No external storage is available. Please make sure that external storage is mounted so that the app can work properly.</string>
<string name="chapters_label">Chapters</string>
<string name="chapter_duration">Duration: %1$s</string>
- <string name="shownotes_label">Shownotes</string>
<string name="description_label">Description</string>
- <string name="most_recent_prefix">Most recent episode:\u0020</string>
<string name="episodes_suffix">\u0020episodes</string>
- <string name="length_prefix">Length:\u0020</string>
- <string name="size_prefix">Size:\u0020</string>
<string name="processing_label">Processing</string>
- <string name="loading_label">Loading&#8230;</string>
<string name="save_username_password_label">Save username and password</string>
<string name="close_label">Close</string>
<string name="retry_label">Retry</string>
@@ -119,8 +111,6 @@
<string name="feedurl_label">Feed URL</string>
<string name="etxtFeedurlHint">www.example.com/feed</string>
<string name="txtvfeedurl_label">Add Podcast by URL</string>
- <string name="podcastdirectories_label">Find Podcast in Directory</string>
- <string name="podcastdirectories_descr">For new podcasts, you can search iTunes or fyyd, or browse gpodder.net by name, category or popularity.</string>
<string name="browse_gpoddernet_label">Browse gpodder.net</string>
<string name="discover">Discover</string>
<string name="discover_more">more »</string>
@@ -143,13 +133,13 @@
<string name="share_link_label">Share Episode URL</string>
<string name="share_link_with_position_label">Share Episode URL with Position</string>
<string name="share_file_label">Share File</string>
+ <string name="share_website_url_label">Share Website URL</string>
<string name="share_feed_url_label">Share Feed URL</string>
<string name="share_item_url_label">Share Media File URL</string>
<string name="share_item_url_with_position_label">Share Media File URL with Position</string>
<string name="feed_delete_confirmation_msg">Please confirm that you want to delete the podcast \"%1$s\" and ALL its episodes (including downloaded episodes).</string>
<string name="feed_remover_msg">Removing podcast</string>
<string name="load_complete_feed">Refresh complete podcast</string>
- <string name="hide_episodes_title">Hide Episodes</string>
<string name="batch_edit">Batch edit</string>
<string name="select_all_above">Select all above</string>
<string name="select_all_below">Select all below</string>
@@ -174,9 +164,7 @@
</plurals>
<string name="play_label">Play</string>
<string name="pause_label">Pause</string>
- <string name="stop_label">Stop</string>
<string name="stream_label">Stream</string>
- <string name="remove_label">Remove</string>
<string name="delete_label">Delete</string>
<string name="delete_failed">Unable to delete file. Rebooting the device could help.</string>
<string name="delete_episode_label">Delete Episode</string>
@@ -221,14 +209,12 @@
<!-- Download messages and labels -->
<string name="download_successful">successful</string>
- <string name="download_failed">failed</string>
<string name="download_pending">Download pending</string>
<string name="download_running">Download running</string>
<string name="download_error_details">Details</string>
<string name="download_error_details_message">%1$s \n\nFile URL:\n%2$s</string>
<string name="download_error_device_not_found">Storage Device not found</string>
<string name="download_error_insufficient_space">Insufficient Space</string>
- <string name="download_error_file_error">File Error</string>
<string name="download_error_http_data_error">HTTP Data Error</string>
<string name="download_error_error_unknown">Unknown Error</string>
<string name="download_error_parser_exception">Parser Exception</string>
@@ -238,7 +224,6 @@
<string name="download_error_unauthorized">Authentication Error</string>
<string name="download_error_file_type_type">File Type Error</string>
<string name="download_error_forbidden">Forbidden</string>
- <string name="cancel_all_downloads_label">Cancel all downloads</string>
<string name="download_canceled_msg">Download canceled</string>
<string name="download_canceled_autodownload_enabled_msg">Download canceled\nDisabled <i>Auto Download</i> for this item</string>
<string name="download_report_title">Downloads completed with error(s)</string>
@@ -257,7 +242,6 @@
<string name="download_log_title_unknown">Unknown Title</string>
<string name="download_type_feed">Feed</string>
<string name="download_type_media">Media file</string>
- <string name="download_type_image">Image</string>
<string name="download_request_error_dialog_message_prefix">An error occurred when trying to download the file:\u0020</string>
<string name="null_value_podcast_error">No podcast was provided that could be shown.</string>
<string name="authentication_notification_title">Authentication required</string>
@@ -285,7 +269,6 @@
<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>
<!-- Queue operations -->
@@ -293,9 +276,10 @@
<string name="unlock_queue">Unlock Queue</string>
<string name="queue_locked">Queue locked</string>
<string name="queue_unlocked">Queue unlocked</string>
+ <string name="queue_lock_warning">If you lock the queue, you can no longer swipe or reorder episodes.</string>
+ <string name="checkbox_do_not_show_again">Do not show again</string>
<string name="clear_queue_label">Clear Queue</string>
<string name="undo">Undo</string>
- <string name="removed_from_queue">Item removed</string>
<string name="move_to_top_label">Move to top</string>
<string name="move_to_bottom_label">Move to bottom</string>
<string name="sort">Sort</string>
@@ -322,7 +306,6 @@
<!-- Empty list labels -->
<string name="no_items_header_label">No queued episodes</string>
<string name="no_items_label">Add an episode by downloading it, or long press an episode and select \"Add to queue\".</string>
- <string name="no_feeds_label">You haven\'t subscribed to any podcasts yet.</string>
<string name="no_shownotes_label">This episode has no shownotes.</string>
<string name="no_run_downloads_head_label">No downloads running</string>
<string name="no_run_downloads_label">You can download episodes on the podcast details screen.</string>
@@ -344,7 +327,6 @@
<!-- Preferences -->
<string name="storage_pref">Storage</string>
<string name="project_pref">Project</string>
- <string name="other_pref">Other</string>
<string name="about_pref">About</string>
<string name="queue_label">Queue</string>
<string name="integrations_label">Integrations</string>
@@ -388,9 +370,7 @@
<string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Set Time of Day</string>
<string name="pref_autoUpdateIntervallOrTime_every">every %1$s</string>
<string name="pref_autoUpdateIntervallOrTime_at">at %1$s</string>
- <string name="pref_downloadMediaOnWifiOnly_sum">Download media files only over WiFi</string>
<string name="pref_followQueue_title">Continuous Playback</string>
- <string name="pref_downloadMediaOnWifiOnly_title">WiFi media download</string>
<string name="pref_pauseOnHeadsetDisconnect_title">Headphones Disconnect</string>
<string name="pref_unpauseOnHeadsetReconnect_title">Headphones Reconnect</string>
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth Reconnect</string>
@@ -401,11 +381,8 @@
<string name="pref_mobileUpdate_auto_download">Auto download</string>
<string name="pref_mobileUpdate_episode_download">Episode download</string>
<string name="pref_mobileUpdate_streaming">Streaming</string>
- <string name="refreshing_label">Refreshing</string>
<string name="user_interface_label">User Interface</string>
<string name="pref_set_theme_title">Select Theme</string>
- <string name="pref_nav_drawer_title">Customize Navigation Drawer</string>
- <string name="pref_nav_drawer_sum">Customize the appearance of the navigation drawer.</string>
<string name="pref_nav_drawer_items_title">Set Navigation Drawer items</string>
<string name="pref_nav_drawer_items_sum">Change which items appear in the navigation drawer.</string>
<string name="pref_nav_drawer_feed_order_title">Set Subscription Order</string>
@@ -417,13 +394,12 @@
<string name="pref_automatic_download_sum">Configure the automatic download of episodes.</string>
<string name="pref_autodl_wifi_filter_title">Enable Wi-Fi filter</string>
<string name="pref_autodl_wifi_filter_sum">Allow automatic download only for selected Wi-Fi networks.</string>
- <string name="pref_autodl_allow_on_mobile_title">Download on mobile connection</string>
- <string name="pref_autodl_allow_on_mobile_sum">Allow automatic download over the mobile data connection.</string>
<string name="pref_automatic_download_on_battery_title">Download when not charging</string>
<string name="pref_automatic_download_on_battery_sum">Allow automatic download when the battery is not charging</string>
<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_theme_title_use_system">Use system theme</string>
<string name="pref_theme_title_light">Light</string>
<string name="pref_theme_title_dark">Dark</string>
<string name="pref_theme_title_trueblack">Black (AMOLED ready)</string>
@@ -443,7 +419,6 @@
<string name="pref_gpodnet_full_sync_sum">Sync all subscriptions and episode states with gpodder.net.</string>
<string name="pref_gpodnet_sync_sum_last_sync_line">Last sync attempt: %1$s (%2$s)</string>
<string name="pref_gpodnet_sync_started">Sync started</string>
- <string name="pref_gpodnet_full_sync_started">Full sync started</string>
<string name="pref_gpodnet_login_status"><![CDATA[Logged in as <i>%1$s</i> with device <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">Show sync error notifications</string>
<string name="pref_gpodnet_notifications_sum">This setting does not apply to authentication errors.</string>
@@ -475,16 +450,17 @@
<string name="pref_smart_mark_as_played_disabled">Disabled</string>
<string name="pref_image_cache_size_title">Image Cache Size</string>
<string name="pref_image_cache_size_sum">Size of the disk cache for images.</string>
- <string name="crash_report_title">Crash Report</string>
- <string name="crash_report_sum">Send the latest crash report via e-mail</string>
- <string name="send_email">Send e-mail</string>
+ <string name="view_mailing_list">View mailing list</string>
+ <string name="bug_report_title">Report bug</string>
+ <string name="open_bug_tracker">Open bug tracker</string>
+ <string name="copy_to_clipboard">Copy to clipboard</string>
+ <string name="copied_to_clipboard">Copied to clipboard</string>
<string name="experimental_pref">Experimental</string>
<string name="pref_media_player_message">Select which media player to use to play files</string>
<string name="pref_current_value">Current value: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Set a network proxy</string>
- <string name="pref_faq">FAQ</string>
- <string name="pref_known_issues">Known issues</string>
+ <string name="pref_faq">Frequently Asked Questions</string>
<string name="pref_no_browser_found">No web browser found.</string>
<string name="pref_cast_title">Chromecast support</string>
<string name="pref_cast_message_play_flavor">Enable support for remote media playback on Cast devices (such as Chromecast, Audio Speakers or Android TV)</string>
@@ -525,21 +501,16 @@
<string name="no_results_for_query">No results were found for \"%1$s\"</string>
<!-- OPML import and export -->
- <string name="opml_import_txtv_button_lable">OPML files allow you to move your podcasts from one podcatcher to another.</string>
<string name="opml_import_option">Option %1$d</string>
<string name="opml_import_explanation_1">Choose a specific file path from the local filesystem.</string>
- <string name="opml_import_explanation_2">Use an external applications like Dropbox, Google Drive or your favourite file manager to open an OPML file.</string>
- <string name="opml_import_explanation_3">Many applications like Google Mail, Dropbox, Google Drive and most file managers can <i>open</i> OPML files <i>with</i> AntennaPod.</string> <string name="start_import_label">Start import</string>
+ <string name="opml_import_explanation_3">Many applications like Google Mail, Dropbox, Google Drive and most file managers can <i>open</i> OPML files <i>with</i> AntennaPod.</string>
<string name="opml_import_label">OPML Import</string>
- <string name="opml_directory_error">ERROR!</string>
<string name="reading_opml_label">Reading OPML file</string>
<string name="opml_reader_error">An error has occurred while reading the OPML document:</string>
<string name="opml_import_error_no_file">No file selected!</string>
<string name="select_all_label">Select all</string>
<string name="deselect_all_label">Deselect all</string>
- <string name="select_options_label">Select&#8230;</string>
<string name="choose_file_from_filesystem">From local filesystem</string>
- <string name="choose_file_from_external_application">Use external application</string>
<string name="opml_export_label">OPML export</string>
<string name="html_export_label">HTML export</string>
<string name="exporting_label">Exporting&#8230;</string>
@@ -638,7 +609,6 @@
<!-- Online feed view -->
<string name="subscribe_label">Subscribe</string>
- <string name="subscribed_label">Subscribed</string>
<string name="downloading_label">Downloading&#8230;</string>
<!-- Content descriptions for image buttons -->
@@ -761,7 +731,6 @@
<string name="cast_failed_setting_volume">Failed to set the volume</string>
<string name="cast_failed_no_connection">No connection to the cast device is present</string>
<string name="cast_failed_no_connection_trans">Connection to the cast device has been lost. Application is trying to re-establish the connection, if possible. Please wait for a few seconds and try again.</string>
- <string name="cast_failed_perform_action">Failed to perform the action</string>
<string name="cast_failed_status_request">Failed to sync up with the cast device</string>
<string name="cast_failed_seek">Failed to seek to the new position on the cast device</string>
<string name="cast_failed_receiver_player_error">Receiver player has encountered a severe error</string>
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index fb69e54e7..d2ba4bb50 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -23,6 +23,7 @@
<item name="av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item>
<item name="av_pause">@drawable/ic_pause_grey600_24dp</item>
<item name="av_play">@drawable/ic_play_arrow_grey600_24dp</item>
+ <item name="av_speed">@drawable/ic_playback_speed_dark</item>
<item name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item>
<item name="content_discard">@drawable/ic_delete_grey600_24dp</item>
<item name="content_new">@drawable/ic_add_grey600_24dp</item>
@@ -68,9 +69,9 @@
<item name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item>
<item name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item>
<item name="ic_cellphone_text">@drawable/ic_cellphone_text_grey600_24dp</item>
- <item name="ic_question_answer">@drawable/ic_forum_grey600_24dp</item>
+ <item name="ic_questionmark">@drawable/ic_questionmark_grey600</item>
+ <item name="ic_chat">@drawable/ic_chat_grey600</item>
<item name="ic_bug">@drawable/ic_bug_grey600_24dp</item>
- <item name="ic_known_issues">@drawable/ic_format_list_bulleted_grey600_24dp</item>
<item name="ic_bookmark">@drawable/ic_bookmark_grey600_24dp</item>
<item name="batch_edit_fab_icon">@drawable/ic_fab_edit_white</item>
<item name="master_switch_background">@color/master_switch_background_light</item>
@@ -108,6 +109,7 @@
<item name="av_fast_forward">@drawable/ic_fast_forward_white_24dp</item>
<item name="av_pause">@drawable/ic_pause_white_24dp</item>
<item name="av_play">@drawable/ic_play_arrow_white_24dp</item>
+ <item name="av_speed">@drawable/ic_playback_speed_white</item>
<item name="av_rewind">@drawable/ic_fast_rewind_white_24dp</item>
<item name="content_discard">@drawable/ic_delete_white_24dp</item>
<item name="content_new">@drawable/ic_add_white_24dp</item>
@@ -153,9 +155,9 @@
<item name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item>
<item name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item>
<item name="ic_cellphone_text">@drawable/ic_cellphone_text_white_24dp</item>
- <item name="ic_question_answer">@drawable/ic_baseline_question_answer_white_24dp</item>
+ <item name="ic_questionmark">@drawable/ic_questionmark_white</item>
+ <item name="ic_chat">@drawable/ic_chat_white</item>
<item name="ic_bug">@drawable/ic_bug_white_24dp</item>
- <item name="ic_known_issues">@drawable/ic_format_list_bulleted_white_24dp</item>
<item name="ic_bookmark">@drawable/ic_bookmark_white_24dp</item>
<item name="batch_edit_fab_icon">@drawable/ic_fab_edit_white</item>
<item name="master_switch_background">@color/master_switch_background_dark</item>
@@ -258,13 +260,6 @@
<item name="android:ellipsize">end</item>
</style>
- <style name="AntennaPod.Dialog.Title" parent="@android:style/TextAppearance.Medium">
- <item name="android:textSize">@dimen/text_size_medium</item>
- <item name="android:textColor">?android:attr/textColorPrimary</item>
- <item name="android:maxLines">2</item>
- <item name="android:ellipsize">end</item>
- </style>
-
<style name="AntennaPod.TextView.UnreadIndicator" parent="@android:style/TextAppearance.Small">
<item name="android:textSize">@dimen/text_size_micro</item>
<item name="android:textColor">@color/new_indicator_green</item>
@@ -276,16 +271,6 @@
<item name="textAllCaps">false</item>
</style>
- <style name="Divider">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">1dp</item>
- <item name="android:layout_marginTop">8dp</item>
- <item name="android:layout_marginLeft">16dp</item>
- <item name="android:layout_marginRight">16dp</item>
- <item name="android:layout_marginBottom">8dp</item>
- <item name="android:background">?android:attr/listDivider</item>
- </style>
-
<style name="AntennaPod.Dialog.Light" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/holo_blue_light</item>
</style>