From 85bee5902fb50b8c9774053c344653e17dabd73c Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Sat, 4 Jun 2016 13:45:45 +0200 Subject: [PATCH 01/59] Fix app name (due to flavors) --- app/src/main/res/values/strings.xml | 4 ++++ core/src/main/res/values/strings.xml | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/values/strings.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..a244c494f --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + AntennaPod + diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index e31d60ce8..238a24c81 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -4,7 +4,6 @@ tools:ignore="MissingTranslation"> - AntennaPod Feeds Statistics Add Podcast From b73f5ce815d283707674799b3e473c95e163e561 Mon Sep 17 00:00:00 2001 From: Tom Tom Date: Wed, 22 Jun 2016 13:30:32 +0400 Subject: [PATCH 02/59] Fixed rule 'public static fields should be marked as final'. --- .../core/preferences/UserPreferences.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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 b5bbb0350..3ef065496 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 @@ -121,13 +121,13 @@ public class UserPreferences { private static final int NOTIFICATION_BUTTON_FAST_FORWARD = 1; private static final int NOTIFICATION_BUTTON_SKIP = 2; private static int EPISODE_CACHE_SIZE_UNLIMITED = -1; - public static int FEED_ORDER_COUNTER = 0; - public static int FEED_ORDER_ALPHABETICAL = 1; - public static int FEED_ORDER_LAST_UPDATE = 2; - public static int FEED_COUNTER_SHOW_NEW_UNPLAYED_SUM = 0; - public static int FEED_COUNTER_SHOW_NEW = 1; - public static int FEED_COUNTER_SHOW_UNPLAYED = 2; - public static int FEED_COUNTER_SHOW_NONE = 3; + public static final int FEED_ORDER_COUNTER = 0; + public static final int FEED_ORDER_ALPHABETICAL = 1; + public static final int FEED_ORDER_LAST_UPDATE = 2; + public static final int FEED_COUNTER_SHOW_NEW_UNPLAYED_SUM = 0; + public static final int FEED_COUNTER_SHOW_NEW = 1; + public static final int FEED_COUNTER_SHOW_UNPLAYED = 2; + public static final int FEED_COUNTER_SHOW_NONE = 3; private static Context context; private static SharedPreferences prefs; From b5ee07e3895e05d01faebf2582895185453b38ce Mon Sep 17 00:00:00 2001 From: Tom Tom Date: Wed, 22 Jun 2016 14:06:16 +0400 Subject: [PATCH 03/59] Fixed rule 'Utility classes should not have public constructors' --- .../java/de/test/antennapod/storage/DBTestUtils.java | 1 + .../util/syndication/feedgenerator/GeneratorUtil.java | 1 + .../java/de/danoeh/antennapod/activity/OpmlImportHolder.java | 2 ++ .../java/de/danoeh/antennapod/config/ClientConfigurator.java | 2 ++ .../de/danoeh/antennapod/dialog/GpodnetSetHostnameDialog.java | 3 +++ .../main/java/de/danoeh/antennapod/dialog/RatingDialog.java | 2 ++ .../java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java | 3 +++ core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java | 1 + .../src/main/java/de/danoeh/antennapod/core/UpdateManager.java | 2 ++ .../main/java/de/danoeh/antennapod/core/cast/CastUtils.java | 2 ++ .../java/de/danoeh/antennapod/core/glide/ApGlideSettings.java | 1 + .../danoeh/antennapod/core/preferences/GpodnetPreferences.java | 2 ++ .../de/danoeh/antennapod/core/preferences/UserPreferences.java | 1 + .../antennapod/core/service/download/AntennapodHttpClient.java | 3 +++ .../java/de/danoeh/antennapod/core/storage/FeedSearcher.java | 2 ++ .../main/java/de/danoeh/antennapod/core/util/DateUtils.java | 1 + .../main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java | 1 + .../main/java/de/danoeh/antennapod/core/util/IntentUtils.java | 1 + .../main/java/de/danoeh/antennapod/core/util/LangUtils.java | 3 +++ .../main/java/de/danoeh/antennapod/core/util/NetworkUtils.java | 1 + .../de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java | 1 + .../main/java/de/danoeh/antennapod/core/util/StorageUtils.java | 2 ++ .../main/java/de/danoeh/antennapod/core/util/ThemeUtils.java | 2 ++ .../antennapod/core/util/flattr/FlattrServiceCreator.java | 2 ++ .../de/danoeh/antennapod/core/util/flattr/FlattrUtils.java | 2 ++ .../danoeh/antennapod/core/util/playback/MediaPlayerError.java | 1 + .../java/de/danoeh/antennapod/core/util/playback/Playable.java | 2 ++ 27 files changed, 47 insertions(+) diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java index 78b807710..da164b78e 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java @@ -21,6 +21,7 @@ import de.danoeh.antennapod.core.util.flattr.FlattrStatus; */ public class DBTestUtils { + private DBTestUtils(){} /** * Use this method when tests don't involve chapters. */ diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java index e7cbb1b42..ba924d637 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java +++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java @@ -8,6 +8,7 @@ import java.io.IOException; * Utility methods for FeedGenerator */ public class GeneratorUtil { + private GeneratorUtil(){} public static void addPaymentLink(XmlSerializer xml, String paymentLink, boolean withNamespace) throws IOException { String ns = (withNamespace) ? "http://www.w3.org/2005/Atom" : null; diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportHolder.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportHolder.java index 7afa270cc..3a1a7be05 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportHolder.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportHolder.java @@ -14,6 +14,8 @@ import java.util.ArrayList; */ public class OpmlImportHolder { + private OpmlImportHolder(){} + private static ArrayList readElements; public static ArrayList getReadElements() { diff --git a/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java b/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java index 932b9d22f..691eccdd9 100644 --- a/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java +++ b/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java @@ -8,6 +8,8 @@ import de.danoeh.antennapod.core.ClientConfig; */ public class ClientConfigurator { + private ClientConfigurator(){} + static { ClientConfig.USER_AGENT = "AntennaPod/" + BuildConfig.VERSION_NAME; ClientConfig.applicationCallbacks = new ApplicationCallbacksImpl(); diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/GpodnetSetHostnameDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/GpodnetSetHostnameDialog.java index b50e21d15..b875eaf62 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/GpodnetSetHostnameDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/GpodnetSetHostnameDialog.java @@ -16,6 +16,9 @@ import de.danoeh.antennapod.core.preferences.GpodnetPreferences; * Creates a dialog that lets the user change the hostname for the gpodder.net service. */ public class GpodnetSetHostnameDialog { + + private GpodnetSetHostnameDialog(){} + private static final String TAG = "GpodnetSetHostnameDialog"; public static AlertDialog createDialog(final Context context) { diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java index 64fc1fda4..6b38ecb2e 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java @@ -17,6 +17,8 @@ import de.danoeh.antennapod.R; public class RatingDialog { + private RatingDialog(){} + private static final String TAG = RatingDialog.class.getSimpleName(); private static final int AFTER_DAYS = 7; diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java index ab7d0e7c6..bd4fe9bcf 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java @@ -30,6 +30,9 @@ import de.danoeh.antennapod.core.util.ShareUtils; * Handles interactions with the FeedItemMenu. */ public class FeedMenuHandler { + + private FeedMenuHandler(){ } + private static final String TAG = "FeedMenuHandler"; public static boolean onCreateOptionsMenu(MenuInflater inflater, Menu menu) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java index 9bbccbb82..8dc91b3f2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java +++ b/core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java @@ -13,6 +13,7 @@ import de.danoeh.antennapod.core.util.NetworkUtils; * Apps using the core module of AntennaPod should register implementations of all interfaces here. */ public class ClientConfig { + private ClientConfig(){} /** * Should be used when setting User-Agent header for HTTP-requests. diff --git a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java index 8362c4a4e..53c134598 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java @@ -25,6 +25,8 @@ import de.danoeh.antennapod.core.storage.DBWriter; */ public class UpdateManager { + private UpdateManager(){} + public static final String TAG = UpdateManager.class.getSimpleName(); private static final String PREF_NAME = "app_version"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/cast/CastUtils.java b/core/src/main/java/de/danoeh/antennapod/core/cast/CastUtils.java index f0a7214c9..305f93e43 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/cast/CastUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/cast/CastUtils.java @@ -24,6 +24,8 @@ import de.danoeh.antennapod.core.util.playback.Playable; * Helper functions for Cast support. */ public class CastUtils { + private CastUtils(){} + private static final String TAG = "CastUtils"; public static final String KEY_MEDIA_ID = "de.danoeh.antennapod.core.cast.MediaId"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java index fc1acd0e1..d0061af99 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java @@ -6,6 +6,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; * The settings that AntennaPod will use for various Glide options */ public class ApGlideSettings { + private ApGlideSettings(){} public static final DiskCacheStrategy AP_DISK_CACHE_STRATEGY = DiskCacheStrategy.ALL; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java index 6d4d3baa6..fa002ae5f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java @@ -23,6 +23,8 @@ import de.danoeh.antennapod.core.service.GpodnetSyncService; */ public class GpodnetPreferences { + private GpodnetPreferences(){} + private static final String TAG = "GpodnetPreferences"; private static final String PREF_NAME = "gpodder.net"; 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 b5bbb0350..4563842f6 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 @@ -40,6 +40,7 @@ import de.danoeh.antennapod.core.util.Converter; * when called. */ public class UserPreferences { + private UserPreferences(){} public static final String IMPORT_DIR = "import/"; 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 5dd1e2dfa..e255a07ef 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 @@ -35,6 +35,9 @@ import de.danoeh.antennapod.core.storage.DBWriter; * Provides access to a HttpClient singleton. */ public class AntennapodHttpClient { + + private AntennapodHttpClient(){} + private static final String TAG = "AntennapodHttpClient"; public static final int CONNECTION_TIMEOUT = 30000; diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java index d7c9e9108..9aa3012b3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java @@ -17,6 +17,8 @@ import de.danoeh.antennapod.core.util.comparator.SearchResultValueComparator; * Performs search on Feeds and FeedItems */ public class FeedSearcher { + private FeedSearcher(){} + private static final String TAG = "FeedSearcher"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java index 314062e52..a8c78ed9a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java @@ -16,6 +16,7 @@ import java.util.TimeZone; * Parses several date formats. */ public class DateUtils { + private DateUtils(){} private static final String TAG = "DateUtils"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java index 892e5ff38..d0f782fca 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 @@ -5,6 +5,7 @@ import java.util.List; import de.danoeh.antennapod.core.feed.FeedItem; public class FeedItemUtil { + private FeedItemUtil(){} public static int indexOfItemWithDownloadUrl(List items, String downloadUrl) { if(items == null) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java index 2d5a6e5a1..9e5e41b6c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java @@ -8,6 +8,7 @@ import android.content.pm.ResolveInfo; import java.util.List; public class IntentUtils { + private IntentUtils(){} public static boolean isCallable(final Context context, final Intent intent) { List list = context.getPackageManager().queryIntentActivities(intent, diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java index 287ec4d0c..970210ec3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java @@ -5,6 +5,9 @@ import android.support.v4.util.ArrayMap; import java.nio.charset.Charset; public class LangUtils { + + private LangUtils(){} + public static final Charset UTF_8 = Charset.forName("UTF-8"); private static ArrayMap languages; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java index 55b608dce..57647a576 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java @@ -27,6 +27,7 @@ import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; public class NetworkUtils { + private NetworkUtils(){} private static final String TAG = NetworkUtils.class.getSimpleName(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java index ee306a401..d1818aeef 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java @@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit; * Media file should be "rewinded" x seconds after user resumes the playback. */ public class RewindAfterPauseUtils { + private RewindAfterPauseUtils(){} public static final long ELAPSED_TIME_FOR_SHORT_REWIND = TimeUnit.MINUTES.toMillis(1); public static final long ELAPSED_TIME_FOR_MEDIUM_REWIND = TimeUnit.HOURS.toMillis(1); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java index 1ef81bf64..3a6bf5755 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java @@ -14,6 +14,8 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; * Utility functions for handling storage errors */ public class StorageUtils { + private StorageUtils(){} + private static final String TAG = "StorageUtils"; public static boolean storageAvailable() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java index f67367643..1d5fb2645 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java @@ -6,6 +6,8 @@ import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.preferences.UserPreferences; public class ThemeUtils { + private ThemeUtils(){} + private static final String TAG = "ThemeUtils"; public static int getSelectionBackgroundColor() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java index 97958eea7..d3a1e3e14 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java @@ -11,6 +11,8 @@ import de.danoeh.antennapod.core.BuildConfig; /** Ensures that only one instance of the FlattrService class exists at a time */ public class FlattrServiceCreator { + private FlattrServiceCreator(){} + public static final String TAG = "FlattrServiceCreator"; private static volatile FlattrService flattrService; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java index 6ddfb0366..cd74ae9a9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java @@ -36,6 +36,8 @@ import de.danoeh.antennapod.core.storage.DBWriter; */ public class FlattrUtils { + private FlattrUtils(){} + private static final String TAG = "FlattrUtils"; private static final String HOST_NAME = "de.danoeh.antennapod"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java index 5ba7f11d6..6417ec919 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java @@ -6,6 +6,7 @@ import de.danoeh.antennapod.core.R; /** Utility class for MediaPlayer errors. */ public class MediaPlayerError { + private MediaPlayerError(){} /** Get a human-readable string for a specific error code. */ public static String getErrorString(Context context, int code) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java index 201efbc81..90cd53b64 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java @@ -161,6 +161,8 @@ public interface Playable extends Parcelable, * Provides utility methods for Playable objects. */ class PlayableUtils { + private PlayableUtils(){} + private static final String TAG = "PlayableUtils"; /** From e48cc22252a540b6014788a662f1f885c7a17639 Mon Sep 17 00:00:00 2001 From: Tom Tom Date: Wed, 22 Jun 2016 21:28:10 +0400 Subject: [PATCH 04/59] Fixed rule 'The diamond operator ("<>") should be used'. --- .../gpodnet/GPodnetServiceTest.java | 4 +-- .../antennapod/storage/DBCleanupTests.java | 4 +-- .../test/antennapod/storage/DBTasksTest.java | 2 +- .../test/antennapod/storage/DBWriterTest.java | 14 +++++----- .../de/test/antennapod/ui/UITestUtils.java | 4 +-- .../util/service/download/HTTPBin.java | 2 +- .../util/service/download/NanoHTTPD.java | 28 +++++++++---------- .../activity/OpmlFeedChooserActivity.java | 2 +- .../core/util/flattr/FlattrUtils.java | 2 +- 9 files changed, 31 insertions(+), 31 deletions(-) diff --git a/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java b/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java index 14a3b27b0..88e05942b 100644 --- a/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java +++ b/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java @@ -38,14 +38,14 @@ public class GPodnetServiceTest extends AndroidTestCase { public void testUploadSubscription() throws GpodnetServiceException { authenticate(); - ArrayList l = new ArrayList(); + ArrayList l = new ArrayList<>(); l.add("http://bitsundso.de/feed"); service.uploadSubscriptions(USER, "radio", l); } public void testUploadSubscription2() throws GpodnetServiceException { authenticate(); - ArrayList l = new ArrayList(); + ArrayList l = new ArrayList<>(); l.add("http://bitsundso.de/feed"); l.add("http://gamesundso.de/feed"); service.uploadSubscriptions(USER, "radio", l); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java b/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java index 5e5eb1e8b..09533208f 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java @@ -145,9 +145,9 @@ public class DBCleanupTests extends InstrumentationTestCase { final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2; Feed feed = new Feed("url", null, "title"); - List items = new ArrayList(); + List items = new ArrayList<>(); feed.setItems(items); - List files = new ArrayList(); + List files = new ArrayList<>(); populateItems(NUM_ITEMS, feed, items, files, FeedItem.UNPLAYED, false, false); DBTasks.performAutoCleanup(context); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java index 785d32e93..13cf56ff4 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java @@ -100,7 +100,7 @@ public class DBTasksTest extends InstrumentationTestCase { assertTrue(feed.getId() != 0); final long feedID = feed.getId(); feed.setId(0); - List itemIDs = new ArrayList(); + List itemIDs = new ArrayList<>(); for (FeedItem item : feed.getItems()) { assertTrue(item.getId() != 0); itemIDs.add(item.getId()); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java index 40083e507..7095d50b1 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java @@ -138,7 +138,7 @@ public class DBWriterTest extends InstrumentationTestCase { image.setOwner(feed); feed.setImage(image); - List itemFiles = new ArrayList(); + List itemFiles = new ArrayList<>(); // create items with downloaded media files for (int i = 0; i < 10; i++) { FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed, true); @@ -207,7 +207,7 @@ public class DBWriterTest extends InstrumentationTestCase { feed.setImage(null); - List itemFiles = new ArrayList(); + List itemFiles = new ArrayList<>(); // create items with downloaded media files for (int i = 0; i < 10; i++) { FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed); @@ -418,7 +418,7 @@ public class DBWriterTest extends InstrumentationTestCase { image.setOwner(feed); feed.setImage(image); - List itemFiles = new ArrayList(); + List itemFiles = new ArrayList<>(); // create items with downloaded media files for (int i = 0; i < 10; i++) { FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed); @@ -444,7 +444,7 @@ public class DBWriterTest extends InstrumentationTestCase { } - List queue = new ArrayList(); + List queue = new ArrayList<>(); queue.addAll(feed.getItems()); adapter.open(); adapter.setQueue(queue); @@ -482,7 +482,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", null, "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -490,7 +490,7 @@ public class DBWriterTest extends InstrumentationTestCase { image.setOwner(feed); feed.setImage(image); - List itemFiles = new ArrayList(); + List itemFiles = new ArrayList<>(); // create items with downloaded media files for (int i = 0; i < 10; i++) { FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed); @@ -598,7 +598,7 @@ public class DBWriterTest extends InstrumentationTestCase { for (FeedItem item : feed.getItems()) { assertTrue(item.getId() != 0); } - List> futures = new ArrayList>(); + List> futures = new ArrayList<>(); for (FeedItem item : feed.getItems()) { futures.add(DBWriter.addQueueItem(context, item)); } diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java index 432d4a4e6..ccac4e761 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -59,7 +59,7 @@ public class UITestUtils { private File hostedFeedDir; private File hostedMediaDir; - public List hostedFeeds = new ArrayList(); + public List hostedFeeds = new ArrayList<>(); public UITestUtils(Context context) { this.context = context; @@ -149,7 +149,7 @@ public class UITestUtils { image.setOwner(feed); // create items - List items = new ArrayList(); + List items = new ArrayList<>(); for (int j = 0; j < NUM_ITEMS_PER_FEED; j++) { FeedItem item = new FeedItem(j, "Feed " + (i+1) + ": Item " + (j+1), "item" + j, "http://example.com/feed" + i + "/item/" + j, new Date(), FeedItem.UNPLAYED, feed); diff --git a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java index 2f2c3fe5b..23be5ad4a 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java +++ b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java @@ -49,7 +49,7 @@ public class HTTPBin extends NanoHTTPD { public HTTPBin() { super(PORT); - this.servedFiles = new ArrayList(); + this.servedFiles = new ArrayList<>(); } /** diff --git a/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java b/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java index 28ff6694e..a728d9afd 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java +++ b/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java @@ -104,7 +104,7 @@ public abstract class NanoHTTPD { private final String hostname; private final int myPort; private ServerSocket myServerSocket; - private Set openConnections = new HashSet(); + private Set openConnections = new HashSet<>(); private Thread myThread; /** * Pluggable strategy for asynchronously executing requests. @@ -348,7 +348,7 @@ public abstract class NanoHTTPD { * @return a map of String (parameter name) to List<String> (a list of the values supplied). */ protected Map> decodeParameters(String queryString) { - Map> parms = new ArrayMap>(); + Map> parms = new ArrayMap<>(); if (queryString != null) { StringTokenizer st = new StringTokenizer(queryString, "&"); while (st.hasMoreTokens()) { @@ -356,7 +356,7 @@ public abstract class NanoHTTPD { int sep = e.indexOf('='); String propertyName = (sep >= 0) ? decodePercent(e.substring(0, sep)).trim() : decodePercent(e).trim(); if (!parms.containsKey(propertyName)) { - parms.put(propertyName, new ArrayList()); + parms.put(propertyName, new ArrayList<>()); } String propertyValue = (sep >= 0) ? decodePercent(e.substring(sep + 1)) : null; if (propertyValue != null) { @@ -490,7 +490,7 @@ public abstract class NanoHTTPD { public DefaultTempFileManager() { tmpdir = System.getProperty("java.io.tmpdir"); - tempFiles = new ArrayList(); + tempFiles = new ArrayList<>(); } @Override @@ -563,7 +563,7 @@ public abstract class NanoHTTPD { /** * Headers for the HTTP response. Use addHeader() to add lines. */ - private Map header = new ArrayMap(); + private Map header = new ArrayMap<>(); /** * The request method that spawned this response. */ @@ -865,7 +865,7 @@ public abstract class NanoHTTPD { this.inputStream = new PushbackInputStream(inputStream, BUFSIZE); this.outputStream = outputStream; String remoteIp = inetAddress.isLoopbackAddress() || inetAddress.isAnyLocalAddress() ? "127.0.0.1" : inetAddress.getHostAddress().toString(); - headers = new ArrayMap(); + headers = new ArrayMap<>(); headers.put("remote-addr", remoteIp); headers.put("http-client-ip", remoteIp); @@ -909,16 +909,16 @@ public abstract class NanoHTTPD { inputStream.unread(buf, splitbyte, rlen - splitbyte); } - parms = new ArrayMap(); + parms = new ArrayMap<>(); if(null == headers) { - headers = new ArrayMap(); + headers = new ArrayMap<>(); } // Create a BufferedReader for parsing the header. BufferedReader hin = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(buf, 0, rlen))); // Decode the header into parms and header java properties - Map pre = new ArrayMap(); + Map pre = new ArrayMap<>(); decodeHeader(hin, pre, parms, headers); method = Method.lookup(pre.get("method")); @@ -1116,7 +1116,7 @@ public abstract class NanoHTTPD { throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but next chunk does not start with boundary. Usage: GET /example/file.html"); } boundarycount++; - Map item = new ArrayMap(); + Map item = new ArrayMap<>(); mpline = in.readLine(); while (mpline != null && mpline.trim().length() > 0) { int p = mpline.indexOf(':'); @@ -1131,7 +1131,7 @@ public abstract class NanoHTTPD { throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but no content-disposition info found. Usage: GET /example/file.html"); } StringTokenizer st = new StringTokenizer(contentDisposition, ";"); - Map disposition = new ArrayMap(); + Map disposition = new ArrayMap<>(); while (st.hasMoreTokens()) { String token = st.nextToken().trim(); int p = token.indexOf('='); @@ -1196,7 +1196,7 @@ public abstract class NanoHTTPD { private int[] getBoundaryPositions(ByteBuffer b, byte[] boundary) { int matchcount = 0; int matchbyte = -1; - List matchbytes = new ArrayList(); + List matchbytes = new ArrayList<>(); for (int i = 0; i < b.limit(); i++) { if (b.get(i) == boundary[matchcount]) { if (matchcount == 0) @@ -1366,8 +1366,8 @@ public abstract class NanoHTTPD { * @author LordFokas */ public class CookieHandler implements Iterable { - private ArrayMap cookies = new ArrayMap(); - private ArrayList queue = new ArrayList(); + private ArrayMap cookies = new ArrayMap<>(); + private ArrayList queue = new ArrayList<>(); public CookieHandler(Map httpHeaders) { String raw = httpHeaders.get("cookie"); diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java index bc1a40b11..fce50bd1c 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java @@ -99,7 +99,7 @@ public class OpmlFeedChooserActivity extends AppCompatActivity { } private List getTitleList() { - List result = new ArrayList(); + List result = new ArrayList<>(); if (OpmlImportHolder.getReadElements() != null) { for (OpmlElement element : OpmlImportHolder.getReadElements()) { result.add(element.getText()); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java index 6ddfb0366..3c94b9279 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java @@ -116,7 +116,7 @@ public class FlattrUtils { public static List retrieveFlattredThings() throws FlattrException { - ArrayList myFlattrs = new ArrayList(); + ArrayList myFlattrs = new ArrayList<>(); if (hasToken()) { FlattrService fs = FlattrServiceCreator.getService(retrieveToken()); From 6e876db9b61ef57312a254af1a6e59877e8a8ea6 Mon Sep 17 00:00:00 2001 From: Koen Glotzbach <11229646+keunes@users.noreply.github.com> Date: Mon, 14 May 2018 23:34:37 +0200 Subject: [PATCH 05/59] Update strings.xml Improve preference description following https://github.com/AntennaPod/AntennaPod/issues/1560#issuecomment-172252386. Not sure if same change should be applied also to string "pref_hardwarePreviousButtonRestarts_sum" --- core/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 65697be28..9fb1d5d15 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -309,7 +309,7 @@ Resume playback when the headphones are reconnected Resume playback when bluetooth reconnects Forward Button Skips - When pressing a hardware forward button skip to the next episode instead of fast-forwarding + When pressing a forward button on a bluetooth-connected device skip to the next episode instead of fast-forwarding Previous button restarts When pressing a hardware previous button restart playing the current episode instead of rewinding Jump to next queue item when playback completes From 96145eed11328e2491a5966b205020afffb5d113 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Thu, 27 Sep 2018 13:49:30 +0200 Subject: [PATCH 06/59] Add feed filter criteria 'is favorite' --- .../de/danoeh/antennapod/core/feed/FeedItemFilter.java | 8 ++++++++ core/src/main/res/values/arrays.xml | 2 ++ core/src/main/res/values/strings.xml | 1 + 3 files changed, 11 insertions(+) diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java index 200153876..719383d23 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java @@ -8,6 +8,8 @@ import java.util.List; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.util.LongList; +import static de.danoeh.antennapod.core.feed.FeedItem.TAG_FAVORITE; + public class FeedItemFilter { private final String[] mProperties; @@ -19,6 +21,7 @@ public class FeedItemFilter { private boolean showDownloaded = false; private boolean showNotDownloaded = false; private boolean showHasMedia = false; + private boolean showIsFavorite = false; public FeedItemFilter(String properties) { this(TextUtils.split(properties, ",")); @@ -53,6 +56,9 @@ public class FeedItemFilter { case "has_media": showHasMedia = true; break; + case "is_favorite": + showIsFavorite = true; + break; } } } @@ -88,6 +94,8 @@ public class FeedItemFilter { if (showHasMedia && !item.hasMedia()) continue; + if (showIsFavorite && !item.isTagged(TAG_FAVORITE)) continue; + // If the item reaches here, it meets all criteria result.add(item); } diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index d9009d9d5..c02b700e4 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -214,6 +214,7 @@ @string/hide_downloaded_episodes_label @string/hide_not_downloaded_episodes_label @string/hide_has_media_label + @string/hide_is_favorite_label @@ -225,6 +226,7 @@ downloaded not_downloaded has_media + is_favorite diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 244a69861..ca7c7e3c4 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -152,6 +152,7 @@ Downloaded Not downloaded Has media + Is favorite Filtered {fa-exclamation-circle} Last Refresh failed Open Podcast From 3e6fc34550059044531fc07947d2b6a37bc7671b Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Thu, 27 Sep 2018 17:21:27 +0200 Subject: [PATCH 07/59] When auto refreshing feeds, give network some time to get available --- core/build.gradle | 1 + .../antennapod/core/util/FeedUpdateUtils.java | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index 4998b3853..f5a781c1c 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -66,6 +66,7 @@ dependencies { implementation "com.squareup.okio:okio:$okioVersion" implementation "de.greenrobot:eventbus:$eventbusVersion" implementation "io.reactivex:rxandroid:$rxAndroidVersion" + implementation 'org.awaitility:awaitility:3.1.2' implementation "com.google.android.exoplayer:exoplayer:$exoPlayerVersion" implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java index 24e0da9ed..43f805f9f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java @@ -2,20 +2,31 @@ package de.danoeh.antennapod.core.util; import android.content.Context; import android.util.Log; + +import org.awaitility.core.ConditionTimeoutException; + +import java.util.concurrent.TimeUnit; + import de.danoeh.antennapod.core.storage.DBTasks; +import static org.awaitility.Awaitility.await; +import static org.awaitility.Awaitility.with; + public class FeedUpdateUtils { private static final String TAG = "FeedUpdateUtils"; - private FeedUpdateUtils() { - - } + private FeedUpdateUtils() {} public static void startAutoUpdate(Context context, Runnable callback) { - if (NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed()) { + try { + with().pollInterval(1, TimeUnit.SECONDS) + .await() + .atMost(10, TimeUnit.SECONDS) + .until(() -> NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed()); DBTasks.refreshAllFeeds(context, null, callback); - } else { + } catch (ConditionTimeoutException ignore) { Log.d(TAG, "Blocking automatic update: no wifi available / no mobile updates allowed"); } } + } From 7269e3cb68239957b982d5ea4c3eec9c0d97b561 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Sun, 30 Sep 2018 17:08:17 +0200 Subject: [PATCH 08/59] 2815 Extract version --- build.gradle | 1 + core/build.gradle | 2 +- .../java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index e30d106f7..f015c9951 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,7 @@ project.ext { targetSdkVersion = 26 supportVersion = "26.1.0" + awaitilityVersion = "3.1.2" commonsioVersion = "2.5" commonslangVersion = "3.6" commonstextVersion = "1.3" diff --git a/core/build.gradle b/core/build.gradle index f5a781c1c..0a6d4c36b 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -66,7 +66,7 @@ dependencies { implementation "com.squareup.okio:okio:$okioVersion" implementation "de.greenrobot:eventbus:$eventbusVersion" implementation "io.reactivex:rxandroid:$rxAndroidVersion" - implementation 'org.awaitility:awaitility:3.1.2' + implementation "org.awaitility:awaitility:$awaitilityVersion" implementation "com.google.android.exoplayer:exoplayer:$exoPlayerVersion" implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java index 43f805f9f..afaf13390 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java @@ -9,7 +9,6 @@ import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.storage.DBTasks; -import static org.awaitility.Awaitility.await; import static org.awaitility.Awaitility.with; public class FeedUpdateUtils { From df8024bb3eaed2984e5d826b3e7a66816b932125 Mon Sep 17 00:00:00 2001 From: sevenmaster Date: Thu, 4 Oct 2018 09:23:17 +0200 Subject: [PATCH 09/59] added icons in settings --- app/src/main/res/xml/preferences.xml | 13 +++++++++---- .../ic_baseline_question_answer_white_24dp.png | Bin 0 -> 187 bytes .../res/drawable-hdpi/ic_bug_grey600_24dp.png | Bin 0 -> 813 bytes .../main/res/drawable-hdpi/ic_bug_white_24dp.png | Bin 0 -> 653 bytes .../ic_format_list_bulleted_grey600_24dp.png | Bin 0 -> 492 bytes .../ic_format_list_bulleted_white_24dp.png | Bin 0 -> 459 bytes .../res/drawable-hdpi/ic_forum_grey600_24dp.png | Bin 0 -> 601 bytes .../ic_baseline_question_answer_white_24dp.png | Bin 0 -> 139 bytes .../res/drawable-mdpi/ic_bug_grey600_24dp.png | Bin 0 -> 663 bytes .../main/res/drawable-mdpi/ic_bug_white_24dp.png | Bin 0 -> 529 bytes .../ic_format_list_bulleted_grey600_24dp.png | Bin 0 -> 423 bytes .../ic_format_list_bulleted_white_24dp.png | Bin 0 -> 406 bytes .../res/drawable-mdpi/ic_forum_grey600_24dp.png | Bin 0 -> 488 bytes .../ic_baseline_question_answer_white_24dp.png | Bin 0 -> 212 bytes .../res/drawable-xhdpi/ic_bug_grey600_24dp.png | Bin 0 -> 960 bytes .../res/drawable-xhdpi/ic_bug_white_24dp.png | Bin 0 -> 710 bytes .../ic_format_list_bulleted_grey600_24dp.png | Bin 0 -> 504 bytes .../ic_format_list_bulleted_white_24dp.png | Bin 0 -> 462 bytes .../res/drawable-xhdpi/ic_forum_grey600_24dp.png | Bin 0 -> 602 bytes .../ic_baseline_question_answer_white_24dp.png | Bin 0 -> 276 bytes .../res/drawable-xxhdpi/ic_bug_grey600_24dp.png | Bin 0 -> 1270 bytes .../res/drawable-xxhdpi/ic_bug_white_24dp.png | Bin 0 -> 926 bytes .../ic_format_list_bulleted_grey600_24dp.png | Bin 0 -> 631 bytes .../ic_format_list_bulleted_white_24dp.png | Bin 0 -> 594 bytes .../drawable-xxhdpi/ic_forum_grey600_24dp.png | Bin 0 -> 766 bytes .../ic_baseline_question_answer_white_24db.png | Bin 0 -> 310 bytes .../res/drawable-xxxhdpi/ic_bug_grey600_24dp.png | Bin 0 -> 1577 bytes .../res/drawable-xxxhdpi/ic_bug_white_24dp.png | Bin 0 -> 1180 bytes .../ic_format_list_bulleted_grey600_24dp.png | Bin 0 -> 738 bytes .../ic_format_list_bulleted_white_24dp.png | Bin 0 -> 666 bytes .../drawable-xxxhdpi/ic_forum_grey600_24dp.png | Bin 0 -> 900 bytes core/src/main/res/values/attrs.xml | 3 +++ core/src/main/res/values/styles.xml | 8 ++++++++ 33 files changed, 20 insertions(+), 4 deletions(-) create mode 100755 core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png create mode 100644 core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png create mode 100644 core/src/main/res/drawable-hdpi/ic_bug_white_24dp.png create mode 100644 core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png create mode 100644 core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png create mode 100644 core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png create mode 100755 core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png create mode 100644 core/src/main/res/drawable-mdpi/ic_bug_grey600_24dp.png create mode 100644 core/src/main/res/drawable-mdpi/ic_bug_white_24dp.png create mode 100644 core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png create mode 100644 core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png create mode 100644 core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png create mode 100755 core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_bug_white_24dp.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png create mode 100755 core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png create mode 100755 core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png create mode 100644 core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png create mode 100644 core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png create mode 100644 core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index d3b72e17c..dfc2f4b1a 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -38,16 +38,21 @@ + android:title="@string/pref_faq" + android:icon="?attr/ic_question_answer" /> + + android:title="@string/pref_known_issues" + android:icon="?attr/ic_known_issues" /> + android:summary="@string/crash_report_sum" + android:icon="?attr/ic_bug" /> + android:title="@string/about_pref" + android:icon="?attr/action_about" /> 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 new file mode 100755 index 0000000000000000000000000000000000000000..67924a5a236e9706d7f5db4ca4922fb26ec49a26 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8lc$SgNCo5DGmLBv0Rk-#cY3@E zxw}xAMMtA#WuFk!U4_J^sUGK_=&tz3$SfZxZ@o%aC+LFPUNctPlO`|PGyeV3$mnkR z;e5X-i+5JWNz(?VvpR}X+vc2XowLwW`n^Ir!>d@ubfyJd?lHy-ir;Kfw2cyADY&3G jk*P^Tp#wgTe~DWM4fijP7F literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..daadfb35fd79882a82fe924e2096a739253eea97 GIT binary patch literal 813 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+K;z$ex;TbJ9DY0fpqF%@NZbEn>(wb`qJ_zs zyYyqdn*w%~&1BEW+8V*tI@3Dk>5Sf%Gb!ob-3gk%7-|^Haxwdi}Yd=Pkb*7(4i#Q+`}|uSlXz$ydB>;Rl=in`U)c4+57=F;zS= zF(}LYsEFp$vKE2kjsiJ1o+!*d$D!Eg)^$T$gzLR@Z`;26l1s0YGpye39+mxf*WJAN z1)nTpoY%dc$II3%e{4qic6ZaIQy%~Rr>|7S#&B%L{=aqgtsVFJY<4~0^)B+6?5@k+ zn){i49Jtc|_K|bM-Gy0OwHRVH-xZFH6w66p5uzo_@Z-o;>0~?YrQdRkY#wqgog&Z3 zvQ3n^B64Mjp7q>w`F$22`8+kxvYfo>5@=$!{ptz1=9$JvqN+8YvNrtu{oFIxU*fx~ zh%0ww>5ELZqvs1WS=rTrqud>VBbJci+t~+WCj+fVQ`>{bP%JPhPEc zyY~8P7Q;5i0{uVJlQ!-+b%kle|JT5z;`qTWd#|g@RF;#Pf~HYxuPw}d)5&u;aQ*f9 z{OyNT8M<9kwp{x!bKElDZ1&#FN6()49OiZMT`b)>VfGhb5>PF1jVMV;EJ?LWE=mPb z3`Pcq7P^K8x(3D}Mg~?!##ROv+6D$z1_tl^>pUvB{QuOw}$yb$Ib&aXn<@e zE=#vcN-R#*EiKAqNXyJgwbIwuFUc*?&rM9vOwQKL_Nwp*_H!|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+K;!*9T^vIq4!@o5>vhCIpfz4K&iSKMUYc<> z|H7uOd55Jtn(P-GdT`D7#j)g$JdxO)SI;~@B*~MkzH;7@)RvmvEz@6355M|zVpY{Y zi3ElezF0P%pxHNBxE|~|Cz5bL(17h*kXrBu=L=UM(RKb736e(|2W zCT=mZtedh$FLUt{%gI}k(;kaxN*46YzjdvxL&*P&yx_0z=YnT?zOYi7tGPHN?b~w$ zNkdZW>1=? zs`%3L(%zZ2D*j8CFK^Oc^Xc;!*AFJ|fI+NU;u=wsl30>zm0Xkxq!^403@vmG4Rj5R zLyQcpjEt=eEVK;_tPBj^`PYHs1)(7~KP5A*61Rr=LdVVnHE4irC@xF4N=htF)h#W` wWJt@*Nww0~*DuK}(9caw&rHtN4f3i=PV})zpAs7O8>olD)78&qol`;+0I-Mm2mk;8 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..3668c9a0034c2a4be511581a9ea8c34661682d47 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+K*m~67srr@!*8!Ravd@dVY$#*F?F8P^tfZY z-Y)kpl&llWd(-(!vub+ZY_7E&qC6}m_l#7|JQrpYn8+E@c(QKI{)T7*uvo zxx~qEYunw)cT#!zAIc@ad7ggz`dORynQ~Xs%1XaCK52Yn`PoU2L5w-qh`lCvqhh)I ztYt5qIKGyY6n|%AI9B+E@yMKqD!=>nrv16{Njjv*SnHUnmfKH$tz(j+kEKKxcTD-l z(8E5jxx>yO9O!V>64!{5l*E!$tK_0oAjM#0U}&LhXrOCg5@KLxWom9^YN~BuU}azs zeal@NMMG|WN@iLmZVg)P|EB{rXn<@eE=#vcN-R#*EiKAqNXyJgwbIwuFUc*?&rM9v fOwQKLH7Uz=^v#Mo%Tdw+)WhKE>gTe~DWM4fPB5Si literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..a1a2c5b685f705c636a3da041fc000ed33c8ae2f GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+Kt_+Ji(^Q{;kQ@La<&)w=y-=HZZUHb>+6@~7U<_Dre`K+>n1y8=apv|q-pCj2?F&nc)I$ztaD0e0sxt6lqUcH literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..da5398d15739e08b1030c417ab82fd8491d102cd GIT binary patch literal 601 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+K;xx6T^vIq4!@o1=y%wG$Mye}6*4W!8&(KN z>mBfv+UcQlOH}I7J?28$ZMlJ0l1l_PX9h@3EXi<7p78ALoQ=o)%Y>L`*0*J|y9VyD zc>auGnPB#tju!{3_w#zrn{(snbjF6+yVl7&Pgb96vCZf3*QHL+QWh4+EY&-4MmscC z?l5!1)(#u<=htLsG0oU6AHmHySO0@P$J`06n*zjkP4LY~Ix&A&(ADpPM)FFZ#Jn^7 zUB2J@eSV@WS6W6&wbCwcP3AAC@YZC8bkRf4-ViEp^Is-|2InGj*;jYHrSz zH?k9+QJMO7g5*(g+c!b-MF*@3fx)F(;u=wsl30>zm0Xkxq!^403@vmG4Rj5RLkumg z49u-e&9n^+tPBid9@`#5(U6;;l9^VCTZ8Vt);gdD4Ui4RW$9K)iN&e9rA3(xX_+~x rR{Hw-CAkIqxrynS$=SN4g~tBDUL_TI{USGkdKf%i{an^LB{Ts5_3G3$ literal 0 HcmV?d00001 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 new file mode 100755 index 0000000000000000000000000000000000000000..e87df752e1c115579a9543d7210cf9ab5c1f42f6 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjL7py-Ar*{o&oZ(x81Oh>l-rv= z=dF#TLO=*dh`qpxZcD};7ph_%@*2$;zTIIEo53o>dP3k8lZ`pU$+h83Hs2XUD|i~@ l8n!UGaNH1Ja#K0>h0#@lJ*GLfc|Xu}22WQ%mvv4FO#sn?C;!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3?EK+UUjXDA4wQ<{iZ+Ee($I z4<2&LVHH&5Pf&iv93#%561{}yhRpRCWhXCfZEkPH2v(ou#SfSxBDy&by;Vz2PMmam zuX2*`-`!8=|4sWhm-XLN<)WEq(~2k0)ZcP#x#y%kb>DBj{kF^SS=UVIKoQ$p5^u5& zoO#aht@i%@+^td4#vkMwnop)o+95ITw8%tZrB{qMloq8g4dGs zOY60Hs249I%eIqgllmT6#GQS#Lx@E~FZ*rL`vfh|b9~SKC~>;EE*F`Y_>krF=4Jz) zzg|m=*b~g#4K=2puAb|se%5F$=dQc!)D|f-Fth)O%dX96W_CDf8nyp^{ram}(=%u7 zV^|>+$nb#qKy$|&R>un+i(b6Fe(!t!3t`*5+KpN9>M6j$RxNRjC`m~yNwrEYN(E93 zMh1o!x`qb22F4*q23AJKRt6T@1_o9J2JigqKrw{Skei>9nO2Eg!+fD*=YbkDKsFSY zrCTK>7N_c#7G*M|W#*(>>Fev4!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3YW(G4oJF;;oi|?O|?8uITSGt%*4jf%qe6-?|uX5Ih4wbuazuySl@7cBco*i46NioAEE7`{a z%Zisx>M_)xwOC-ILc^w6&8shSEiHE`4cxo^UdVb=i90-1{V$@~uZxL)mH+f0?L%UM z&Lknvo$bfsf}$*+^Bd$>^lw{N?;1UsC4zBh?I!Mo*k zach__bnHA(g9gZk;<9wBq{QM>-O{2=hP2F_R4aXb{gT`Q{oKU#%;aocA8$)DzkJi+ TlALaks~9|8{an^LB{Ts5UU;-e literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..726eae499df7f1c07d55177e55b43f15876261a3 GIT binary patch literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3Jg)U!%hz1b*qoMM z#r;yy`1;C64}t_)PtN`~?L$SwXH%254i@8XhJfr`hF`+$(+tn(2wh}jICIBaQ}=nz z>yA}&{q5nUhM#8zb)}c~g_|rtt-b4z_N>cKMgLBg^-OpFcR^r{7SK-B64!{5l*E!$ ztK_0oAjM#0U}&LhXrOCg5@KLxWom9^YN~BuU}azseal@NMMG|WN@iLmZVg)P|EB{r zXn<@eE=#vcN-R#*EiKAqNXyJgwbIwuFUc*?&rM9vOwQJ|3@c1`&CT)=VV=gTe~DWM4f82W*G literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..0cc401dffb0dacc7c78d75ea444ba0156075f9b3 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3_@@c_;t? literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..d3bcfe7b63955b4b39c0bbb60b1bfbc8b53baa55 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3S9NRRY(0(7$UiR& z{`x9-@lGwi8x^yzmgc(r-6`UEVeaW)=^xky1Y?(V<x_8g`nUJ=8kH6-^=?N=cp71=dsB%?Re3$erLgth4U4~gc z*0XorS(*-Xv}%cKL`h0wNvc(HQ7VvPFfuT-&^0vBH82h_w6roXw=y-;HZZUHb>+6@~7U<_Dre`K+ d>qg`SrF-R6c^3Y+*Z|bS;OXk;vd$@?2>=o4r2PN@ literal 0 HcmV?d00001 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 new file mode 100755 index 0000000000000000000000000000000000000000..731f89c8353d15168f657432c346ea19b51b974f GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUt*`6+rAr*{ouWl4jeR3+2H>dJM+%r`85uG~Mn?n}^pCKdq)21cEKt&9op z%Gfm;*trxM7??N|8cs_VcuB=JELy3~!1{nogCX33aR<|@wG-bnh%{&~V2EJ^ibgQT zy=zc>X~OtLedRUAHV%etmIhO%15%6$y$l=N7$THscxnD+WMO8JG`!ey2k1-&Pgg&e IbxsLQ0LyVi=l}o! literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..49e5deaa93dbcd4c87471bdbfb8910990850beea GIT binary patch literal 960 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@1_q`^PZ!6KjC*fq7-owEinQ*xj*K~|($f$p$AbSMk**T?!iO z7Aeg-x%FmiisH>Pvt!v)_Z78$em1A_`?+L25g>TdnId@o_1DIS49$1P9d~lfmOp#;tZsLe#EGPRK`V7SPMAKpbmPX2Dw*T@-?QRE-!m&eE&5rqHL7;c zwr$&9J~~{?8?Z7&tfBK;x4^`o3LM9Fzid+2amgs2Nnqlw2M->|hRdI0ba^7UVdK*v zPZzPn26OIs3b!Ttx=g$EELvsNuOm0xR|_a`G!+U)rc`UH9pEb9vbeMBn_va=oVN!1 z8GRzM<(~;L9FPcRpJv_jw$&wcd0JZ9w9Pj6cedPG@rwV!^yV+>x4kcLK3^};VEAlV zhYmw3`%gQ;l|T30?|J;=W;}mF&rYs8YPa>c3J!k%>n3xY_d08kaN9$}&{|%ZGYNIt z@sm|no;!DL-`h%tFQ8_h^qM(-YrUYG%jQFsqmCy1zDU_m?ZXwth>I zve&aNIO4cDyl)k=>oFNEGdX}_OYk8$7k z(><%|eoHgjebH{{SQ59}g8kDnjtS(i^AXU-DxGH#mms;cv!_w3qwt#Zi?wa+D0+Lte1KJLBr(vDU0nB5u{ zUR&$0^vNkS+~tX*i0k{RpLd#o;Li_c$0=t5F1P0G1g1*W64!{5l*E!$tK_0oAjM#0 zU}&LhXrOCg9Aac(Wn^q+V4-bbU}a$N&c6NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@pz-aVE{-7?_ukHk^*Zbz;`VQ#tv5bJ5AgdmhbzauyjF?&+W&~%LSZrCcRW~PUL&C^r_kN-Dl?> zn5s0$+GX(s{M`PyTEWE7A%lx~hK$NvFR6+z5?;6dKacx*Am_a0#|;x_Ft~5+ z6l>X$w)5@6xb}07fbN67qU>WVJ6ONf+`0XFg2C-|rK+-CRui^l z?*BFAi`GlmON$Mc-47{Np6Ib8?jJ)pfBk|@3-xGdc& zDX}NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@AY-Sei(^Q}y|>pKxegf!uwMA-c;}4d>g6kT zWv$Sw?wMD(NkB!<%ki{`Nam^^_diWO>f`aCTR>3ouR%p(PvPvKT?{KeEeOB5Ecf>7 zTg?8sdoG+g$G~U#Jkk3>Mw*h+@{c~T*LOZy03@c%-Z5yoYr?!i-}1xiJFK57zMjv^ z=Kp<;X|M42PpxF`AxZbSz*g&=aa9t`Q|Ei6yC4$wjF^iowXh&_dVHK-a(|#K6qT z)ZEI{RNKJ7%D^D{mb*5JhTQy=%(P0}8noK~PX}ty0NGGnmTr}lSe&X`T9nCNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@Afw;Y#W5t~-rH-2e9aC#E`ipp9uO*R_KE!7R_J~K$;_#gGkJo^qJb`JR17q9f;@V9PiR*Lry<9cbRGQmI z&@k`V`ZF@uxxdt0IkP5h@76k})Nk)3f2_F1)Ze`M{T7+RNWLH6`ywWtOBLV59olrO z^^Mb{63H^f-2tjAVo&I)cup!y>*_I`aP}kb2cXkbOI#yLQW8s2t&)pUffR$0fuV)2 zp@FV}Nr-`&m8rRvsj0Ssft7(l^euO76b-rgDVb@NxHV|C|DO)jpaHU>xGdc&DX}N<+DvIJP!EHrtDnm{r-UW|2{@GB literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..ac68761406991512f32aa18b1b5110225f9cd137 GIT binary patch literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@pz+e4E{-7?_ufu-6lyZyah=?^J;48otp#Jq z^bMDpsx3R&FBNZDH%Cw-V1nYy8QXbUe)jWBW>Vnz&s)ZwIcuK4M#hG}Zjy1=ZY^2& z`uL=@tHw@y@+IUL9xRxWHO)-h|LumvANBtqMut%FaFH z$y8r|WLL)8^XGQHzVLOEPV`L6IjvC=$$1?WoO|cbJrKh=jj34W23L#M1~HC_3Hky` zg1k|$=U6o>6g=j&xtpA2_~4!@FuYVtTq8@1PLn;{G-Ztc7G8A#WxTEl* z*TLStt2>(WxqiFrw53>x$I1ImcbKK(`F!;%z1r{l);`PoJ@<2w$%Vz&UR9c0Sbi#s@j}j6XokE&>xgD-MzZt69K%A%1;R!@b(?*Jew;xR#d7 zv>^O7BbP-36W@XcW{n37Tozj^a<@R45Ydb+e_pa)U=DEG^=&VsZb0Z=hSVk3IRuvQ puxK(no^qIAgvMOyIjLmVzR3=sqV6*4P6B$9!PC{xWt~$(695TeVIcqj literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..7bbf31c6b4fd39c43ad2750b8b9544a18c362341 GIT binary patch literal 1270 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St38W6ybQHmNsnPMBu%Q>RJ7DQjuaK`l3@ zMf|L9cPm_C=U&$F?#(rycOMVta+H?mZ{L}|ed6cJyAQ3u*E~C8Tb;<@8YlunnT($I z6?hJFGQ9t}@Bg(we`*f9rpX*{javJyP;dJ06+tUw?6x$`D!Rr{!LaVvzW=`*RgV_N zcw8=FJs`QM}}+`{d2R zGx5{BmTtaV7Q}7&Tky5YO1`S?Q)L(w7G2JqwXXECr=tMRvdmq#-1rzodJNxth$tzY z`2N?NvF6^xNu4IX_OoZr(z>g9#fWVp5-Z9>4ggh~c1N{q%(k6^)MF5$gDtT3tPR>2>{Ej>W~r z?wfReGacx5+Wy0C{&{~r9i2aVq0KWEynOjGQR$b|fy+VPGm4sL#;*-qEflNuxeFLh zC!Q8*PngckaGoiGyD1?+DaIvW)-v%KKU-Ezs};D|@w~EI>E=4-!v;2-52QPDxX+wf zzUu0$a6RYUdP+RbA5SWJPEv`zs$=(z-&*TL6W68%O*$(SxX-y2O0>;ph}(Dn_3pW9 zv3}>zs(8A^TzR^wd0xScuNT%FUAo|*T}Q@oXU!E?*aaVDU-Z2N(wlC`ealfSWCE*b ziX&@efTLKzOFD_bjb zz)^ZlMD8Ckw9_?wfPYkKVXar={- z-Uu=rf3Pl@S1>lmL@HljPw$^*r1N>ZEj^1edS>b~RJ>ELJo86cu=YV!)Yiq<;}->q zxIUlpvzFm_;s5nJ7&rL2oSy2H%Ik2R@62AYE$$+&{*uXRoi8K=_Z~QNn4xW!eZKHT zU54v3f41wKUZijS%P!XY8;u=wsl30>zm0Xkxq!^40 z3@vmG4Rj5RLyQcpjEt=eEVK;_tPBj^`PYF80EC9z{FKbJO57Ue3mrQT)Sv;fp|~vF zDk-rzRkyS#lOZiLC)G+{U%w=`KtDGzJu^95H^0<5J;2jDzopr E07py}SO5S3 literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2c2bee341f5e2c561524474973b24e0d6272c7 GIT binary patch literal 926 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St35-_#9~-j#9#f_V*TjfAs^b!)fBd&t0|*IcgKrGdMu6;^=3U*%3lyNdA4WT zy_W}UPpiZ{vz%#doIk^(@39341v4#Rzr!vjbnOj8c|-Qn&u68Vu>VOsF@5I6=&*Ud(R5N?#SgA68pWzd-n=$sm#K6yaFYg#OSsidzzF_>| z#gwhrdZRqAZT~N5!{qfUwNp#tE=hVGpLM<7>(;a@(@Xp=oobPio|M-j zP*$9J((Uux=(UFYH`DxPPug|hanw_p%!7dwzSuh7&7YK!_~$2sALD!DZ8xGHq`aK7 z`BWs+zLY7(i}-b>o|D#I&YZJNA^k{p+wL@3hV9W)j30%)ymR?fBpVwm3vYw=%FizH zB8{uc`vjaqo|$d?xvJ2SP4C13R>>U;wlUm0^5&%RmHtHS&~;OcUz8k*YERSAWR+d^ zd|^t{q`!+KZkugn-*)Hg@rT`88o7-=q#H8Nhv`;e7EgJ=?g|l5Si0c;(!*~ahp%$d zWPK|lFtJt#Xvh4cJT()|3g9}LGaL^(TvGLHW{PB+q~~wA?-N5d>pS+f)6U5%uVA*x z4?L%48hbEXMVD!Q^n}aoV&2c^hF&Uskm_a`eWi-GV*V1=w(Ou&)!o$xw6<=Ys+h(4 zV~WE$_k^7#^I|436>QGjz4wIVXQmx|TXuztTZ=QKtHw?(3B1J0o8LYs!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St34&bg zmd4)S`FrooNREf5OTSF}{p^2}&4Nuj`Q3{u3csICDCseLH*49?GkZHN@2+4C=R1Dp z&BeRl)4rL=goHlbX>R6vd)p_*&g8?Nv$yUvEB~GwdwumC>AAropSSLExc{Ahr@5he zsY4J)qTu?=`74>NR&uupJej2`ZM)#}@;?@vo=ga;IuA7ZXI zk%6H=5Lp046%)w68%*Mbg`ZsLwqO4i$WtwGjVMV;EJ?LWE=mPb3`Pcq7P^K8x&|g8 z24+^K=2oVr+6D$z1_sf$+_h0O!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3hcA|4>I>@yQ2M$!^xqEsWN1OJmm)lQ|`=j77 z%X8J&Rg+9~_wL)*s_qe#n|7Q3?9|=w@AU+}>`l$RXM3l9lk?}uxlNX0@9HY0z8ka7 zVtM3xTh=VzgnI>webvZAR*fLq8F0n6g&a`bFBFrjXu@g1Ylmb~m9!pTj3o4V` z|J&?%9+0P6;u=wsl30>zm0Xkxq!^403@vmG4Rj4mLJZ8TOwFxKO|=aStPBjIZ@Fuu zXvob^$xN%ntwF2(|8$@R4Ui4RW$9K)iN&e9rA3(xX_+~xR{Hw-CAkIqxrynS$=SLk Z@ll>pW>sFVSI2`L>FMg{vd$@?2>@%P%JKjJ literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..7a3204693f3594e1dfacb91bd24e14e7ebb92a39 GIT binary patch literal 766 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St37pyY3y@d{z3vqS-GO6<&0acwp;tzvjPg8qpmVzY z^2;xpO8TpQnSAdoD+#&kJn#AIRjcZf_~W<8X3To#?7|f~SNg!KNS83*%M1sq-#mSS$Ea$RCJ3Ty_u_m}-L+7YQFfWctV7dYSH|z0 zlT;z15PJ8`_usE}>0Q_SA?Pj1&cWg(%g({@se!qN-L55uPxW}cev(uXB~_Eca0 zy03Z9UCZZHjFm?js~9SeG4d$9w{T#e&=GR4uz_#Eu65?j>9WuF&Cu-Hc6Z^b$vNg{ zVoes!C8<`)MX5lF!N|bSLf6nh*T6W$(9+7l+{)BU+rYre zz#!(a?I9Emx%nxXX_dG&=5^qyo-BL!2sr(Dy85}Sb4q9e0CVmmH2?qr literal 0 HcmV?d00001 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 new file mode 100755 index 0000000000000000000000000000000000000000..0d697e0f9ca262226d49e6cd42630dbb17533c73 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcg{(8DNhEy=Vy}mJ*iBW{*V&=g{ z-51}cH)%3vJrY{bR@xyman5^_YkutdQMzx-*KWO5bi%Yh=c@8`nTYi@DJQS#{*2)- zI3+jtI`f^)?%%&MScf_=uIJKN(7*&D%=aH;tN6=iu3&kavD{jLRV2WH5t;aKp26Ju z!EN4%PY+pbicbn|W8#tiYTm$ToN$0g!ho6W44j#Ed|@=BK>{1k3`XX(0}YZ;X4Zk- zMVp!Z$_|8!nKBfeQT1m}Xg4Z4V9j)bQ$f994nq+R#)YWtwR<12hj!gknSXXaD=;7! NJYD@<);T3K0RRpoYa;*v literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b612b2aa992c1d32530024e09927efa69f130de2 GIT binary patch literal 1577 zcmZ{kc~H|w6vsC}I0c2uQ3!>>5GW856BLLX0mJdL4W}q5HHloohynpZ&_Kj1h^C{} z0*YK7MUfOy2nc8pg^H0&kywm49C9heM!_JG{_u}Fb*67VZ@=?)=R0p_cJ}3k1O@2p zn(G1p^r1jX7_9W=)YgR8;X;lZEE)+uR38AY|E#yjK*BYG9TwmVL|v#!xUh~145I>& zg#mzn2!I86i$4KCIv#*2Isl|X08EpMZ-sim2bw#72%x|UhjL?64lFv!fl+K&13#z# z1C|%uZVICKY|i}i&3P&l6=&9=>h7YXtjU}7Gdxr#u=~C>`y%vYqlMn4?W@Bntp|sz zOh8Z^}LizR%E>MyIW`iO#(57lM=9f1f z-R)l9vWJ9+DxONkeNn`DA?G04@GJgh#Q(rei=M&3!NSXv`=pCgJv}`GMrY-6IaWAw z?^4+01RTbXmd0J~7d%p-$aaR*%o4FH>rtE{SY1Zjx|MS)#Qt^9J94#Jr*tTMZVpAX zl3q3Hl&U(?Y;M&wG-Q&ij5a&a^%aP+lLAbxHM8Z#*{Y(IK>EBQN@v)(MyMQ%wyiiA zx|)~n=`ui2(fsWrax;+^6BoRmx>^DALhfBfGp~ON=~MGCr5JZzsFZ}+Hi$loZdwf^ z(2xOHtcom%NA(i34~Mx+0H?){5wg-ik2kipwUutt%h!7Oaj6A#mDfV2&_vPQZwsi z(Qd>#ZY{K}u&b~qU3ixBo=aZsM{^V2_=aC-D2+}-C5Y>lWPJ?)7-m7^3Z=UA`N7=< zi1EV45E@NY_U>sctK3WDQ-N=J%>|KY#*KLAQ0Mx&7pvlLYto;m%Lne_i+g8c+}D{( zba^};75?s!O_sT2qilcOWza=X%*D90Au4R;Nxe%{z-!cDbgP`(E5l3Byd>Q2Q z2`A|kO%o#*ymM)S2@4P|nhr8BFxWGW(=a>2_=1YKqz zFLz*PB#?G8*m2nO)I<=UxI2!7!{O4Bl5t6lgv1yYHXH H(sTa-Ds!Ko literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..32a3f5511827a4ea1017bc3ccf9319a98fc1e5af GIT binary patch literal 1180 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3=2suVZNzxes3(o$F_)!17iRjgt&DTAP~Az1TP$0= zFWsMXjqk(j^Qvk^Vl=*@C^Cp+9m{O#y-EDH9 zEFtZHdnWJW&znAX3Vpj!eYo^Tq>$GOpC7_E%NKkMx%BuzCBN$5*?V93G4z@BpU61h zpnUW7dA|Sb4}6_|)aEw|-?U6={cpTsf<)bYrVqhoau*-Ud(}PB|0-rNXQJzmPKgbn zmrQxfCW&N*T{;(ZYVL`J3*8+Lv@Ef|viE~(X3!!^E>ezEQHrOk3YGSzGkz>=iJ)SX5+S!nzr!W)5v@1UlpKG@yvhio`pGfQZ9q9*_ zHArsFS!1iPs9`-*TF;x>evJpGfkJCmf`s&$(ynaU^^HNERkfJ$WQ>DRJb%W?>&$L* z(2SiF`adh__UD#u$8X;JJpFOHgOT`zGps7z8V^dpDMeR=Ry(*bg3S69|CUjZ)rND1 z;im7liyEpKjk9*fS2wI@-}2-&qw+ac6^Jch%|K?9ctG2Nd-hr7cULN2zoNJQ#8lI0 z(U=Ka?2FzB=y_U2cyU_qJac1B^5iA6U)`${G@i6=deA#}KHhqMjiq-cmxM6Nf8~3) zb;;w450^95vD{0|71(lu=|gRqT%@WDbDUb+|E!$D@gavCi@x#BW#vm*zhAha_rTEu zAM}}{H(kH0d4T0Z_S5vkG9S429!~r%kicbe`qVqsUot;rXPk+A3^Jl90IQQPO_D^RA<~Y?7*NBpo#FA921GbWnl2mzYdg55gKyyQ!>*kach__bnHA(g9gZk;<9wBq{QM>-O{2=hP2F_ sR4aXb{gT`Q{oKU#%;ap{&@dBY{|LX5soNYIfO;4_UHx3vIVCg!0I3xAw*UYD literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..c56590fe097895c2a46dbfc79911bc14c652605a GIT binary patch literal 738 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3xR|}W@+t%X;Y4F>`X0T6Plm=Z#|EG z`6E8+`JIca)EBPO%HR7%&3F0b6|<|< zOA3D8`uXxvcLz`RB8$!Y1Xgm`F@)Ok&i#6i{e0f;2h1Pt$-A84b4uSH`+@ODz*YX& zM}q`Eb5-^HxI5$KTCvY8G3|V-ULC617{VgoP@JcylzSi}TIA>*pn%JN!Pj4_%$1B{ z3=hd~^oTrDaM@)2;)^d0k3^g!r^xFm{6B zE`{V0$80z8DH34Tu@_A}7g;42a~rvdr}XHZkcbt4DE{CLlZi6kwcyAF6g5y|fSRF! z2&8f@s9R~gv)pO#W)9@3mbgZgq$HN4S|t~y0x1R~149d4Ljzp{lMn+lD^qhTQ&VjN z11kfA=v(gEC>nC}Q!>*kacj_O|34k5K?7t%aap=mQettcZfQ{_Lt17|s+GRJeo1bD jer{rVW^%S}Zn|Tzql=@bs*7O;P!EHrtDnm{r-UW|<3bd| literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..5deea32869a3d98c0fd366f6b390de590915faa6 GIT binary patch literal 666 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3FA)rwZ(7?QH`nLHw z<=e{tUb|VhW$zigeUY2@Zrb~C!`8Q<-wL;>9OL_T|6RG~bayxNNqI_-iWBV5*}c?s zJ@UeI>XOY(H>+jiYdm*NDw)1lV6DbZhV8;<=WUr3eIe}9&l4YGU1E6Nv`1fPoD}cS zS^Ldt%c3VtH9jWQm%Q{26d!!!{jGEBqA!M9E}suRmv1&{o${mX1p7bie?tE&ZF}ab zGx2TfTlU-e+qVDxcB_8d2|J*#K_J2GMU&7))~oK~A(F8H$uF8FU1SY)6Tc#{Ye7nh zYbD^pW#0|P4q zgXmlC+9(=w^HVa@DsgMjYX3hSs6hi{LvdNURZ?Pcs%~jfCPP|gPO6o@zJ5t=fqrgc gdS-IAu2-08p+#Cz)Viv9EFgz^y85}Sb4q9e0Jm-Og#Z8m literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..0ae33696ba82ddc8361f53d40b1c32a5cfb0b623 GIT binary patch literal 900 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3=UH`>OQWbHDd!TV|h5 z0~*TE*ZW-N%J;vS*GuQ0c{6q9+!g-2Hdq_)F8cmi;85x7qmvoG9sZw|rq6OX^JSXM z@y&PhzVCgy$UlhvP5jUP+8=3Y=XbCBeWU7P3d8T>+m>SMqxEM9KiGKp^ZU$ImYIgddkhcn^G7t}WK^ z@O-ce!{Pb)g$!-`&n)`RXnFYj55KE{vujyDoYGGYV`z&%_k@9G{~Aw5iMq<0KteVW zNZ6iacvpAu!)s4A4#hR%>k60Od!m^A(dCWT-jmK@whg=I&%W7PwYYs%RfE8xuNHmj zY2R+1$-63TXA-$zzTiw-Vug5ejs5rc=CjZ4HGUQ>$f?-E|NC}^D9eceVgTe~DWM4fAskv3 literal 0 HcmV?d00001 diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml index 9d168a1b9..82d0a39bf 100644 --- a/core/src/main/res/values/attrs.xml +++ b/core/src/main/res/values/attrs.xml @@ -55,6 +55,9 @@ + + + diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index cbd1dc88e..b40cc12d9 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -66,8 +66,13 @@ @drawable/ic_sd_storage_grey600_36dp @drawable/ic_create_new_folder_grey600_24dp @drawable/ic_cast_disconnect_grey600_36dp + @drawable/ic_forum_grey600_24dp + @drawable/ic_bug_grey600_24dp + @drawable/ic_format_list_bulleted_grey600_24dp + @color/master_switch_background_light @color/highlight_light + @style/PreferenceThemeOverlay.v14.Material #e5e5e5 @@ -141,6 +146,9 @@ @drawable/ic_sd_storage_white_36dp @drawable/ic_create_new_folder_white_24dp @drawable/ic_cast_disconnect_white_36dp + @drawable/ic_baseline_question_answer_white_24dp + @drawable/ic_bug_white_24dp + @drawable/ic_format_list_bulleted_white_24dp @color/master_switch_background_dark @color/highlight_dark @style/PreferenceThemeOverlay.v14.Material From 1094ec9a56d0bd14db074681c9c23110d7ed3917 Mon Sep 17 00:00:00 2001 From: sevenmaster Date: Thu, 4 Oct 2018 11:50:32 +0200 Subject: [PATCH 10/59] made icons available throughout the whole project --- core/src/main/res/values/styles.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index b40cc12d9..7bc27aa6a 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -246,6 +246,9 @@ @drawable/ic_sd_storage_grey600_36dp @drawable/ic_create_new_folder_grey600_24dp @drawable/ic_cast_disconnect_grey600_36dp + @drawable/ic_forum_grey600_24dp + @drawable/ic_bug_grey600_24dp + @drawable/ic_format_list_bulleted_grey600_24dp @color/master_switch_background_light @color/highlight_light @style/PreferenceThemeOverlay.v14.Material @@ -322,6 +325,9 @@ @drawable/ic_sd_storage_white_36dp @drawable/ic_create_new_folder_white_24dp @drawable/ic_cast_disconnect_white_36dp + @drawable/ic_baseline_question_answer_white_24dp + @drawable/ic_bug_white_24dp + @drawable/ic_format_list_bulleted_white_24dp @color/master_switch_background_dark @color/highlight_dark @style/PreferenceThemeOverlay.v14.Material From 0ef011b464e638fa8b959a38d7822f7c667c281a Mon Sep 17 00:00:00 2001 From: sevenmaster Date: Thu, 4 Oct 2018 13:57:54 +0200 Subject: [PATCH 11/59] resized icon in settings to correct size --- .../res/drawable-hdpi/ic_eye_grey600_24dp.png | Bin 0 -> 1282 bytes .../main/res/drawable-hdpi/ic_eye_white_24dp.png | Bin 0 -> 903 bytes .../ic_remove_red_eye_grey600_18dp.png | Bin 380 -> 0 bytes .../ic_remove_red_eye_white_18dp.png | Bin 358 -> 0 bytes .../res/drawable-mdpi/ic_eye_grey600_24dp.png | Bin 0 -> 928 bytes .../main/res/drawable-mdpi/ic_eye_white_24dp.png | Bin 0 -> 664 bytes .../res/drawable-xhdpi/ic_eye_grey600_24dp.png | Bin 0 -> 1568 bytes .../res/drawable-xhdpi/ic_eye_white_24dp.png | Bin 0 -> 1046 bytes .../ic_remove_red_eye_grey600_18dp.png | Bin 492 -> 0 bytes .../ic_remove_red_eye_white_18dp.png | Bin 472 -> 0 bytes .../res/drawable-xxhdpi/ic_eye_grey600_24dp.png | Bin 0 -> 2246 bytes .../res/drawable-xxhdpi/ic_eye_white_24dp.png | Bin 0 -> 1526 bytes .../ic_remove_red_eye_grey600_18dp.png | Bin 697 -> 0 bytes .../ic_remove_red_eye_white_18dp.png | Bin 669 -> 0 bytes .../res/drawable-xxxhdpi/ic_eye_grey600_24dp.png | Bin 0 -> 3032 bytes .../res/drawable-xxxhdpi/ic_eye_white_24dp.png | Bin 0 -> 2100 bytes core/src/main/res/values/styles.xml | 8 ++++---- 17 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 core/src/main/res/drawable-hdpi/ic_eye_grey600_24dp.png create mode 100644 core/src/main/res/drawable-hdpi/ic_eye_white_24dp.png delete mode 100644 core/src/main/res/drawable-hdpi/ic_remove_red_eye_grey600_18dp.png delete mode 100644 core/src/main/res/drawable-hdpi/ic_remove_red_eye_white_18dp.png create mode 100644 core/src/main/res/drawable-mdpi/ic_eye_grey600_24dp.png create mode 100644 core/src/main/res/drawable-mdpi/ic_eye_white_24dp.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_eye_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_eye_white_24dp.png delete mode 100644 core/src/main/res/drawable-xhdpi/ic_remove_red_eye_grey600_18dp.png delete mode 100644 core/src/main/res/drawable-xhdpi/ic_remove_red_eye_white_18dp.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_eye_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_eye_white_24dp.png delete mode 100644 core/src/main/res/drawable-xxhdpi/ic_remove_red_eye_grey600_18dp.png delete mode 100644 core/src/main/res/drawable-xxhdpi/ic_remove_red_eye_white_18dp.png create mode 100644 core/src/main/res/drawable-xxxhdpi/ic_eye_grey600_24dp.png create mode 100644 core/src/main/res/drawable-xxxhdpi/ic_eye_white_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_eye_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_eye_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4f0c31764d2dee80b4edad255a4aeeffa20a2969 GIT binary patch literal 1282 zcmZ{jZB){C6vuz2kg2J4Hg(pVDJj|rP%|Z^Fi14fbQ*P1j|iv~Dk2!r1D;t)J_a^( z%%?KZrbmsXBXebGv%hU-55~Zp6=o(r&68#(Yyb9cFLuwl_jB&O=X>vcbI83Ld3-R-_cg=^xUjWiqL8P5EU?L%~4NmeU7iwMFYk(CKAF zeTtkKUZEp6&XOk&$alm`IXtIu`cSZ+gEXpSrjzSH>;4*U3@RKRS|_Oy<81y&fO`dnF1%i->rJNLt@*4J3N*a)InP*{2F(og6N6P0-%x ze>HD(yJRlA=Ed?1M-}q|R;n3JLmdbjjkXZiH1rd2Suj?QU5YteeEHmzqrC5sW{F0p zYayLZSDauS?onokt{*UWnnQO+@>Q|knBN{e_-L?2tv_onr;eSMRU!vp%cW3OC9|A; zVl-xOX-On?wMT=Acj%mGFJVwsWb1oPF3Tsd_I$s&=#M;g%5YB5h5M$LUR3Qu-gn__ zM0Z}|0J^?Jb2m-7XbF*kz5EhKIXYwCK52Mz6ji6=cEs0MYU&=Qy-fgpU7a3*+=I?3=U)d`l^A+A6rzP!5GUGZ6nBUuvdC9# z1=PAJEhxZf@)Jg_Z`eP1ey*#pbT9w9iZSe>G<&WcqPocg0BEOwu>NW$@Ub5q?9wi{ z=GGD8z3Wpt0>}7ocGvV)Q&IdM<&96W-4vO3b~K!q+$1)}dSlHrzxP$yMLdo_9ALDC z4{nn+1JONqX-`(AdpUcXzedH0R^SsuZ>yV!BwRj!zAb&Y2}pt`M|e1iNe~ZsKZnW- zOAM8~!oz2j6>(0m(Zb`N!-Jg$2ZqRqgIny7Q|!7ZiOMh6LVkBb>NCg zO|jmsW`l>mR&U_SkNa-4y(Rs|(Qmt|p<%Xpf0HxhX!h)(>f9)Wbvvt4;QvEHCMCnD zXf-ZlUh&_5q22tEXg67^IVn1+8yPWOXE;fxbBcpaYaa?GH8sA5W|1HSwJ};U@-)20+Y{%0eo=y01O_7!TH7FaRj^%!N+$C z4oAS@4i1^v{}H5TvN$Q?{}-TT6df!;f7+0plS)WtWV10sJ_n?5xNHIzixs5vu<49c e4)X{`n6f_=AHwicS3%ye282-}$t@vC-~I#G#4-c` literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-hdpi/ic_eye_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_eye_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f461b73b88325d8bf60495fb09634975b4dae38e GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+3=B*jo-U3d5r^MSKkpapC~@?>$PIV zY1eu`F$s0(E&0KtCbgaA?#lOxCCYkN*B+aC;GDhmYwiWyPFpr?X7yT}U8ncXL^A)~ z+?{`$S65F`GkJ2w@SM4#7r6u{mhyr=9BWOzQ}sY ztH?&J?^+T)X_@V;^ON$VlW+YENfXSdO8d3!h%pGj&HE4ry@izp1xj z!olTPJ2Nd9v=k?6KB!(`#BF%i=);M+X~IrFwZ8Js_`+Hxm~p1G-J17}O2M|qO^0{O zf4Jkry_s!JWs7>=`6Vqc6Hh;!+7QhDoo9tQYZgn|C$nuniaM5m${F((AJ>g=jJ@Qw zz@LB4^VgE!j`Kd>DfwXCmsKGr5^OXiTtX(OB%g8jjAy+>Jg=Iy6<$~-X3VN16P z;5R8%zjo!e+`H=b=}T9JPtN9<-T3Tw!H(1fZB3s4dB52i&p&_J%{SSlJya^n!E{-q zl9h-&)AgkNR~xn+KVNSUHJR(;#(8abD^`fik4h-=eGt?ZH>F{P=p6WZ$6enf!a5ym8k$`PE+T;TOLyE_Vx6UF)e;Z8BdZ*1pduR9$RU#_z-1y*E9& z@-1@Xdj-yedQAQej~Sa}qTk-R;3(A8%Us?#{lGl+BlDi#VLbL*GWo{!1)83lyW(0^ zR;sSd?fGf^DeK9JiODWMxL2C&yV-ek%_m^uQY~?fC`m~yNwrEYN(E93Mh1o!x`qb2 z1|}hf23CefRz}9!1_o9J29a0)rlM%b%}>cptHiBAqr>$kP=f}@hT^hxtE9x@RNc~| xOop_~oK!1)ef^T$0{z^?^vvXJ-SE^PkE~J)FUC{7=Ye_{JYD@<);T3K0RTElW_4nb_D3m6k&V#>rg-=nX^7f?T}s;TZl+rStG zJ~r6mlq?VGIpII+`1)JId{>Pd9oIeI2=_8QA|sj>70L^oW~rO$9W|@TF3Y$S=VXB$ zlU4fbcGGK-_csoq*!d~6XVNr7Ra8T(i8+vs!?|jLVV_~%L%yUBf!ydXD&`u*Wti ahS3D)PkQLle`ee~3E)mY2Aadm1U7*kCdK>z>%07*qoM6N<$ Ef^>zTC;$Ke diff --git a/core/src/main/res/drawable-mdpi/ic_eye_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_eye_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..56b5ba94a7809f38db8933eb2cf313fac23ae4ad GIT binary patch literal 928 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3;{QUU}mJ6o5VrCG$ zdE@5IpOa3e*zH~y{eL~n&zgTTg0iMO5oK`WzNOY6&M@!CzW-a-vh0jmw|V*U9Lo>5$)6b?&_q^9FyN~6;nvRr1&t)3I1?$Bd3J)9H zyRq%=>>G`lv#d_0GAu6>^tkluO=|DQ-#yS_csfJ*UHz0@+YMqzCOMrV(FC6 z*ZuQY1t+o;Gc&BZ`pW+OB(BwkljltJN;U8a@GF?kxM270YJ-((3`f(L&VRl)sb-#n zvm8T7?0k`lLJg%1ua$x>nVjWZdP4n(?Pr^O){dT)k1e7ESWYvvCH?um@4dfzX-4EV zW`N%ELubgtK`@~U+{H0;5W9QAD zeLJU2c)iy2)1^{vfh-A&{)T>Re&S;_SMS*L_|u#la(`#+jgwcc6m{6f`quj7rj9ee z_x;!H-0*ytoTQ}Z*YDru{g(zYD;04tc;t1Qcy;U6tyhm8B`rRy$G^e<2W!f_+i!L4 zyLSOooob0|L`h0wNvc(HQ7VvPFfuT-&^0vBH82S=G_W!>vNAH(HZZUHb>+6@~7U<_Dre`K+>!zpY Z1$a~ig#Z6q`2nbh!PC{xWt~$(695!NbeI4D literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-mdpi/ic_eye_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_eye_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..7e74a10fd37e0782928f6c7ac142fb2ee219c1a5 GIT binary patch literal 664 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3?EK+3V%(DA0O-mFGkkgO7rL zG+htcNqv~vlCUu0NmSP@j}0feJ(6_Y{%ETH;K>r*YLf6n=N;EWquF8!bNL?Qq**2h%Bsd+T)lg{ z-&%)>KQ^jd{B$?y!)l=uf7l`<;?7otT#?8RsbOwE(rhT(kosUs#e&ukjB^;g73Z5g zt_r)f>rvs}7u$DFvYKRdZs$LZeoeLR_+Jj6mQ{F!3Iao0wZt`|BqgyV)hf9t6-Y4{ z85mmV8XD*tn1mP_SQ#2w85wIE7+4t?L|*-yilQMmKP5A*61N784%eGN4H_UDip$ci zk`jwkbxVsf8PYOyQmyp$^-FRK^m7x_Gn2D*!;^D7A`HBpd9NGq0P11zboFyt=akR{ E0NMxk(*OVf literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xhdpi/ic_eye_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_eye_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..05a4b2e8ff0f28e8a1b03cb3e9da4495af626071 GIT binary patch literal 1568 zcmZ{keLT~96vw}t45NEJy{2mBcK=vSL8xi$E7i705qP`{2HbT0T7-5 zU>Pb2rvXTUro0OUfO;MPgSboWyB(kgg6-u_hX|R%r6Uu9Mw~~m0HVjg?$#6S2(5eR zNvHYqo_`41$1@7hUwtCKFfn4jSgx9BmDLj3TD7Gvh#g4d&3N5!S-8{IH)^1!As!hi z(}tg&dEy|VtmmXiTUsB_hXQM)((6OP#$P?QeVsT>lj(iK)n>XzUYLzCyTjhMjlr^0U zE33xrBA)A2Dz9p6Ff#IHbsXlK=yYm@ssRf&l14wEY3epLHRYz6eRn)x-Q)VeWoHrW z>X&!bp9)^!%?$g=ID0bLzbhQBbuamf=sE1;M;o1bOP2*T64ywU@;$&`6t1qW+U85r zLD?H0?bxiwAZ%M^a&j_NPHZ`Z>wU-6e|^hbfd-E7IHAanAW$P6(e6h~E;i2TN-^wXViqu z8~(ehn9b^27-msFN_I?4Ok9`AWYv2iCs3U7_pXW-J>qAWye%JSBUT zE1CvEMwh}J$gD~q^*@;FjJ#k87IvLXx-);PPLY1pj>r1A9Kq%0TJ%i%1=t#s7e0Tk zE0n!@Bbvs6vH0e%qsp~dOWnNYjEs!vkg5B25ZX9Tr%3^itah5R>FpWO zm?U!4i>9K}gY?sPjlY0wz(yMgEzR}H_tY}T#oI9GUU^~HZsZl3i)EEbPV5lyNwk6vPq1=jD+XgD_L zt8@2#x-BDZli3^vrT*}B!d3VeH@o9CHDiX}bG;9A`x_A@3*#zrTYqikeMMHm)Wul( zAUY<{swI>dt8cwNQl*QD@`iu6^cjd0pK6C#V9Dd;k@AqbuCAT_Bwy$lkfvQH#!vSr8p%pivNYig zQsG7Wrvz`k{((0B+W2sPA|(Wiy3V{Y7zh?sc$%JFq|#lFQ3dy(@{3K}9*Vo2^k$m) zD=QI7FT{%V^Z19xJfE7HsO7YauBUqrK3n1Fg)ALae2Cw-G=D$cxvx7XEM~K$1Z+I5 zy<0WzjL2swsx_~usAv*a#@gysS@X`$lwR)?#)(>$NHCo@S+luSmny&etfHb)yQ6PK z+xkfL8WvSxT)cg7tzH@cSO|jl>k!w{`1Wk(jfH4m-@cBar~r_xl^}3IWWu-ImE+r` zXbv}ZC9nXx8@;^l{U8@qN*uL-E#RI{sqE}jCdb9^)q$;N&oaz)ePP2i`WP7RlSlhy z-n4h62cA!X?`&k=_!*gf*Qu9yR1??oyR#;4y!DF#XQ0#S@T8R|^z|$fU4s%2h9z>S z;RzfFz=lBFh9eSi1hPMoKqcBxZAjJx0+m1r9#V4tBjCp#jEqS6e*s41IsyqW-!=#i zbE)hw0SA|q5D6k8V>nbi9-qjM!}G(qk>Sy}m`Fbgn@wVyq0dMm4e)gJp-Y`Zv;G17 CF`YyJ literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xhdpi/ic_eye_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_eye_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..51549d6243f8412ff5ff9b70d3f9a1136e3192e2 GIT binary patch literal 1046 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@1_q|BX*)*eOTY ztuxnn9dYT&?^WZ{{+`rZ&$vnOj`YR3ZvWYR9aML*igR%$IQvAdl=g|qXqwVG&6o4* z^Q5*VG40>(yma<`=B+l<+W3C?zT)?De+zXAC_1%p2>wf+QPsgzFX;2oXaxTlv@&?AFog4%VAx|9PGeZKBd9)fs{c0vX5^M)GEjy`jQsG z)Yj;-_-s7mzAG1Z^yVMnU7#1c`%ZVRtk%M0d94y)^z z{!L%}&s<7}A$IGm_pD)47~>g!i_DTeFe7L)LkwT`zbTjgNEK+e{8QL+HhIeH*Krgk}_pct-qbV&0xmDBQPE{rb-6RsXK` z9@JkgbIaZG<2>c^^`ZYB9N4=5?qiASAN?#nhL4quo-16+ojTv5V1CroWWGCV44;)g zkbc1QE3xFtqhlZ2PGp^6H0=HzBe|Jn&gvO*A3QX}SgdsNs;8r`QdLftVz|sx6d*n87|D9GOnx8n0k?+CT4V?e& zn$2%z)ZbuzP~iLQ^dyf(;K}Gcy?eEJ%uZf6(2?(ze-b(MCzF7Y*!d#88u*x|d9$!E?l zyIKKEW=bv{AM_uYpO_<|`D6dFyTG)rTH+c}l9E`GYL#4+3Zxi}3=A!F4GnY+OhOC| ztPG8;jEuDn46F>`X#vq`nieenaSC@`KgAk6)7e`mG*zVfqED`UHx3vIVCg!0H<}bAOHXW literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xhdpi/ic_remove_red_eye_grey600_18dp.png b/core/src/main/res/drawable-xhdpi/ic_remove_red_eye_grey600_18dp.png deleted file mode 100644 index 2039d9ce8148fe2c6c62782480c97b52fbacfcd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 492 zcmVi5QiUD&adF^Ue5{+z2erx-G^q}t>F$YV+}93L&Dv?o$cw){7xG(lioM8|KGkH zasEF0Z-g03BIjcXw2d!Cz%@lgYEQcEYg|f{1!*G|6(bf z>)++FIPw{n^{nJ5??vPyJ!;8};)Rv^j)in7N4qeWw^sZa!yRo55ovent8#jB$I5xl zKwYIr;xm*$EXj1>rU<#kpOR&d8Gc;QYbBv+>cD!#lZvMdU#0leT0$!gUsOYAwc=Aszji|e zjvAg&2cm|%f?lmW_9PK{UwrH{7Cl*f><=P)e0AOSiQwE~`A=752pYCfWbU&2$j<{S z{Fa{OhD_x=TAD^t{Cjw1Zx7)Vvnsb-%a?}{vVg)^v diff --git a/core/src/main/res/drawable-xhdpi/ic_remove_red_eye_white_18dp.png b/core/src/main/res/drawable-xhdpi/ic_remove_red_eye_white_18dp.png deleted file mode 100644 index 6dd240bcaf35465a613b46dba12ebb2a33731cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nklb4IS&inF&j*A(Y4|GhNZ&fnGPeY@wJm)$sg^6~R~ zI`ZG&ha%&tQDZzsX#_du;_wpP3(hi^tRzKW_VI%--`Ptai9=V`@{2e>SxwjIx7@_^ z35Tt$=QQsyU8h&rF=Kd+?k$VyCN8=$pEu~9GE)2)W-V)>zgXx^GrCs{_IK$ay0_jj zR9MOiYNF7Gx9Hl*h>qi!7OT+$7w}x7pvD$rI;>!$G}$|*6ZbJW zZc(<18b6Eaj(5-uY+Kd%Qf$lA_y%m#!wy=n##e+Kv=Q4hue5uZPOI@6wz3*`Fx?gp zQ!u@A!@h*>yc_m=OcSM!Bbes9?Y~$*hP)bEjOl>r$kLAP4ZTI7!ZMao_I{(){8rLp zVhFF$HPgrcscA*`f`Q`4NS>m5%R=MRF1B9tnBfwP-dy*^ewGbv#PLOZg&q=)uB_w- zalW&hE)s{{?BW|?zOj>@k`x(camvc<38$DvMjAn$u~exthMfHO*ZB=P9J3xlfLxy`?Bp9ti*twYGws z`E2!P2=C<2uG}U|J_&}J+L;2-kSnr9*ul49an6=zptfIej&G<0SvlJQkfaVk`gs60 z_^$L>0OBzK%m)B~F9AR^k#TWy67iCQ>flni zU%-qA^b?QkZmh3&R8mklzWQ5Jyyo79lZDd?CQd9}3ADpE68AFwfeSDsmCiJQHD7ez z9g@D(pf5;*`ACtzK)>M_#OJUEk1bxu$;$2RZBZ_ln*ei!rOeW8QV;_YgC3oJX^(xh z{C$ey%gf8n@nmv}3^So*-H4&ecJ>RJ$#$-Jci@5M)MCa#WIdNL$<~ zjeo4GhviK{c}2ysz|j?hbnUuklrjeQ8*(bln4Fx{x1bA)6ut^JR<|C)g3%9NIWi?X z>xXsw-lFJg`S$I#tEURc@{`XRa%L0Q<@;|b6Bo;AG;21StyLY-x)_N`{F`6A#F5bh)QdufeQPJr-IR4A!Bc zrIGg2@a2`2*W=^kxv-IgrAiV?(Yo^UBO@aW)Gt?8Zh>kI1o=z%Wzf>fZK@VYuD6Q> zV<*ZHREHP4(}nEbD#|L2d?}CjO#{qT6$1+l4?29k{gF(*7t*nAxDWFM!~2{13MDI1G_~3Z6*Mq8*>Fdh;>x6@@eSszvR^vJ8e1qSAIoB9g*jLMeF_eZgo^Idm zRpZjHn_5f5mi3)0r&R-0!D|M7nzH|R?0*qTTR#grfX_EQ2dTlrDT7`#Ya_l%yuH=| z-fE|M0`QAKfKtk}zV@s9CX$ z*)oNXp8&~Z__1N zVMdIN_!DrxMGn?_-zAx5!cNh+B+TRS+&6aFhskvdI_xXci=3yT5{SyHGP7Ijyo11{ zXD3NlUVp9R4r)(Ub*?%#D@O0S&95Q%%ARa7eXxh{msP>Tw+uQh_rfxllSMtdbNTCJ zk4KVxV}z2+1GilGn)gf7vHAClQHB-B$&JDg&u)Yy&ZK`JYOM8p=&8|Sgzm9pB!O13 zN%aMK=^bBg(5RTnbm3&VCM(tNVv6wuqVgcrwOb;!hmk(hCWo_&LoyHShrf;z{m5Fq z45D_3PwPBA1}YSkmCwCmjfCmy3cJbqUR|Rnt>O8}!2-ffYxC}|?|GS-n*u3tX0-QG zoK4Z!vTxnU$ILS%1=uo|N*uXTs(m34k~esYD@ z0n({=V76Euw)+^zdAq%~0xVHXQ)iTVKOV#5H?HKFfXZ)4`_eILZ-vI?W2eJPS0YhK zRu50$Cc-`4-qr*^FC|wwQ`G79{xFlDxD6T^|I3W;Fb+J^1wkRy;*g7ImX3SU-Krck z&32}QVuq1GFsIsUIp({FSbnW~M4b&|tS2wklS2=Q*mczyB(Dlljy8sUohJpVG5$-n>zGKz_;L z(HE&M5ImKJ?j(Z1uzwDNgx4jaeQx9I1b=bY!)v}+yO$haR3^0qjhQc(!v{rwAR*8>~Y9%{1m zVTrrGHC=tiHr&tpVF^8lq1rP!S}U)CaqEYBty^^3rn^UQ3lv;zAll=2y7|*M6byuY zy=10kz=hMz_{petbE);C0X-PW<)lhckNSNQ+48ri~w984gG;DcgA_ylw?SOYW`gU0B(U@>^C4qgX$1cSk2 zFrM#!h5U~oGCG(|n%1RWns0z^_o2wq!Tn;aRV9Z3i! e1%;z2Zh^r%Sj+G^$)!Jy2C%lUhic6NGXDdD((X?H literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xxhdpi/ic_eye_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_eye_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f64206c358a301df0291258d4cef8ecc2c3b79cb GIT binary patch literal 1526 zcmZ{kYc!Mz7{}jXh;gY&OvaEXnQb*QZZX9+8O*p$YldQ5!x%%uxa3}D8KhK8>lVu( zx0a+hQd`J4Lz9(pKQ6hv6-F#6Db3RETj%VD{jkqD&+|La^PKXal%O3JO?N&H+>v5lLyIAsLU#v%^Ckcw zxBvih=psTX+JQE8nRB!G`#G%(~peIY$I!R7Jh~yPLg*uqqX^O6?Wz= zGI(vx_C8DdUovWS`0M2lC`fo{Sp5~J0N!wc&fdLNgl@?ti;><(7A;Nf<0YmtMYZwV zsW+db@qN#PpGtJGJ5=BbDaQ=I!s}vB9UG)m_4dWOEdDZVQj3*;tfW2`Fi0)CjQP{P|03@CJX&$0``5Qn0!BKVGkxSr+?S;wkl0B=UX&4`oRc;g?ejYv*<$kn(a=_r=pRKA--)EV5dqf5h>DBTk--vb+%HLn`g6LP^30_@O6==!^#XF(}Z-$QC5HSKp~AQck77F zS)r<{oVor!wb8h{z|l3ki*HJMmGDjeU@OJLtTq8Yh4rI6Fh>qem$_71o;8j%%6H-3 z$%%1hiLX@Ht^Qi&t{XGFC_HT%4iDPr8!%iND{ap256^$^tUUc)ymZS~cF2JAce+>V z9C`_-^BAjn=7dwp?M!Z&^w<#^+t+D29t9m2jH$W0F@yR;_N6ItLZ^7h-i<=^9&0c% zluef9#0BDC)CkK_?EHql!NM{GPGSXwc5() z#-6{bpU8JF8-zsHvT8NVvhO!s!;!qleCD^=6qpOEu8tIBGH2YhX~VD4eC&-M<^@vt zmH`;4M7)%tYnx3&-H(!dJXU-Q*8YKmEz}pyjAsu^3>#23iqFV*Ej*rwaUL%T(v*|e zM44Xc4F8wNG?)OHn-Un&r`KkemyhhRe+=i)fpR(r6pW7md4;>3|2gk22l$UM;MpmFMyUPBoj2Zlb?$I6#8wFvB4Ami}yvz4e#@3uF&QRUsX9}}5O#eWk63J!0tO{L0758ndEbP1Ga`(qrv zV**(*93nf40|79{6Ku=~cr(1ECjn0+m=nz{4&w1dJlLqVgM_eV-_351%kLd4iSgL#e_xT!dSsvcBolMl$8UA?vD4aG>?Kb0M(I3 JzH{6^^&cmynAQLQ literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xxhdpi/ic_remove_red_eye_grey600_18dp.png b/core/src/main/res/drawable-xxhdpi/ic_remove_red_eye_grey600_18dp.png deleted file mode 100644 index 16cdc31c194ec1c6a227fc9c8593b17bce66138e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmV;q0!ICbP)NusvHf1<19Equ}H~K#_O1TupIAv`2hu-qx z{U}VJ&8Qf_ULpu*H~s8Jciq_b1C30mlAIT|gKj~6O@rLM9UO9X46&7OVZlzolf zXM_k9<|{{0f)wGp>Y_c3iMJn>4XV3@ZJu#HJD!m)dT!BNc`nMal{6neshcUMycHdZ z@){LEd*!R>ZTf}^)9Wv8bk9X2R&pMBh0-|BavG|_6V({P8cq_+4IX934PrUTYKBlv fS+ZowQjseQ$8@O(fjqm>00000NkvXXu0mjf&{9aJ diff --git a/core/src/main/res/drawable-xxhdpi/ic_remove_red_eye_white_18dp.png b/core/src/main/res/drawable-xxhdpi/ic_remove_red_eye_white_18dp.png deleted file mode 100644 index 695eb950ebf3a02d9df4800efef14a34c86fdf23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 669 zcmV;O0%HA%P)S<52$I(f4OBG@8_8CFRtEgSP9!#i{6FZgMerMy)2BYTlJ=(D0CxwvIh-gR~kk{o_ezL<UpJ|s z$77L=^Q|h&Q)E4KCKpMj9`B9pF{PCo87z~*@NUI&6F8~ zv61ZH7iGY&hANBxf$wSy$x#|A0Zj}W_?kf~Fgo!Vi9;;C`CI4yp$~D$9@0()hiaU{ z#O5-4*~?{YOioZm1&`lYj72ys7V?`474=9VR7uoP;i84`8!EGj)DL?2D9?2EVq;>l zm#LIf1&9CW$Sk&#&N0q&o@1o5otbpxKUL^F9*^e@`E&Ce01@Mg00000NkvXXu0mjf Di~2R= diff --git a/core/src/main/res/drawable-xxxhdpi/ic_eye_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_eye_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..ca399f1a2a077342625ccf61ac38a8945e0d9288 GIT binary patch literal 3032 zcmZ`*c{mhY7r$dL_KXtML?$6wh8ZnnZDf!oAySNO#?oXNWH+KvZz&ODDHJ7J$i7Vx z4TChcY>66_k($>ozIng@zVG?I`#k6Vo^$T~J?GwY&vWicvbHo471}QZ01!3BVQsjG z|3?J)x$|_!^^;uSB^p{70#K1GyyeQr)gfdX6C+U8iC7661R06>WcV1sL- z%mEOL0^mCy0PPF_r2MlR&Y$Kk@Vl9tV7bU0>t`BcxFG0{b0l*S_is5%_tgVHh-!*8 zv<)3)XUF_yJ1E)NI@|0RLL@-qs*U-SM-nv(EO_s}!Vc^wRjaz?w#sLGtWys1Nr>Xy z((0IfRy5UgqEX3BxKt>O^ejH#z9RFifGcF!r&Qm@OGM?+s8_*!2r-6{9I??U=6!`Q znI*g0^N|(39l6@XnR$G|Z?buHTv%z3&`qN}>;HzGz7GyM)Z#HR>P=%0BR^cjkqRu%nc; zr7u#Z*odl63;Dghy%)6Ri@vc2i!b(x8#TRWq~q@WbO)>4XYWbEA}`!Qc2{;)Ump6qG&mObW)P+JhJ%8M@7$!IBhYoL;c{~Q&pTgR8Rj-+5uQkBSQ*ZjDZu zrn%+QRFU4w5&$QaR6uV(=;P+u1n)U!HZnfcEQNHJTANuI7F&E_JyPoIw!TL`WTei6 zE-_(|t27_95weDU{&_~LqJxp7?4na3?c#t?HvQ5)pIjMtBwyX?iC&ar(MrDHE0tn; zf_@=$A;kBu&KV{cUyPghnN>Ki<+prW7J}wLAK;$Nb>aJYpE2hpLE*+15qR_BkXpQh z0A1La@9(#BwLYJH@R!`(XC~h5@5LGT`ualQ#!-R1*r1U!Ulm%fM$D_V)n1x*_H-QD zmljQw$4|E>-T5+;;->I${X=OEwRI|;1f&|ZSb_Dsy6tTFE->f+p6-{r(|p6DFFEqI z;BJM`G>GL&_i?n#+|XmX$M!ek!p;2GR_9e93(t4E3&IBrMtg29%n1|aDOA}NW?V~) z-f*9}1ygUSzo~dJV5Z~lDmsMVeEn?GQ}w@>m)Vpp*Yy}!SWCh~lgI_=#feyhsjWas zyEni5Pi~F%OZDMsg%(+rjO^dt!i2~3LzY9n!0bp|-|Eura_5Sm$c<>iYbDfF*o2Ev$RDh{F-PWJvBk4HYh9Y&X@9+ZcZ za0NEy_4H6eq?gy6Gq6jaOv86gO-%)=%XJ3G$mJWqSPUM3;qypiKbm>t-b@_?YJb~1 z>M^!tD4R`RI|9#dr;57~PW^cMPnG({S>MbE<7=ud6Cx~jeG3dIAGS1Ht*^hlC@!zw zwYz_i?(sV}9q-6&fr%m3atjJP1!$rYIU+up$4eU!O9AXdYV+hKBo4v*Cu&H3r$U$Tj!ssyy*Z71G)ajW9&{Ghs%}z~Qthm1!SN<+ zKk^{{3`7v!*_q0Ud+(I;F1_%m9=kfWt=5%&q4=xI6YfRW(nZ2){BV+z3T;@j4RwwG zm1X7Vuu1w{gy#8}OB)5ZJw+(KFo9pO)USI^jTK69q6 zNy~RA@-jV2GG+kA z1h!Q00*4bqaZWX9(YCR!(k}A(YQW_sv2P%@He>zxClg8BP7*gpmP&gvEwIHJzuULU z(O7JfwNlW{gsURejGhkDbDQoiBcX%fOsB`*_`PM1HL*6GkJ?*DOG4l6;NH+3`) zy_+~q_XxbsemPz=OAYYIWSz(elcewkzjhLg0MD+DMMHv>tq&BR*<_)}@l?OGrd_#i z8TGO>F=Tjq4g17*Qp~yJQjEx95j-58qgPW|WLcPy=yigkCfAO354$zzNcJ!Gbj;h{ z-sWp4`)n<3*LS0dgU|$%{I8^F-Fente#i&X(myg{tCS#5D^z^P=bql7t|P%iEel~O z`!-8IDEn}}oE$bYQLp{|Id%XrxhWo_jJTr0ap3u1tsl1^Jim8`|3E9u^!T2AsoZY$ zNRY8ZkcVrKr?z{bCl`PwO5>!e21*r$vDH9nYiMd~qK~0a+9;Ic;2+QbAdvh#ya{3d zpP-az{E16Y`o{w~gsAQ2O7>I@4)g{D@2j5L>gwu2B!6|1E79BCSJlkM!}y{ZIr!+~ RV_jShFg3QsmKou1{0m&2jFJEV literal 0 HcmV?d00001 diff --git a/core/src/main/res/drawable-xxxhdpi/ic_eye_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_eye_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f69bed8ab20cea9987f74b74eafe7a2d9a8dc03b GIT binary patch literal 2100 zcmZ{ldpOg5AIE>TCb31STTaQHLp^uQCdbT54mr-Tshk$G#u#Br*=X)U;=Z|cJEcb@ zVz(20;RI9E zPy_$~=6uTDTgH&TLqT4)3knh~W!OeI;eG-DYIBsNIEXBli}QA}1FE@NGqU7B=qYb^ z07x=K~0KmEc0MueiSY9@=3;FY|PWCd&*4oKtnhZN)PMwL9 z@zlS=@n4a)vMRB&{R!VoBl9Ka9tAq6zo88d+`Mh~=(g|7j004k<6@_DO}WV2{$TD| z)w`s}2t-tQz|Xte4VQYSO764)rM@7T~G+rCwQOH>6~ zCwv#iV*Tmrd($gXv(ns+r&A?st&8YccMwBr@_qB$kcrH zz8WomPynp@w7YB3TPf;77fQ5 zbo6>HBB*nl{6f#R2i&)1e#_Aemc~2hxtGDGY+zT9q>0?RT=J+So)Me;T*Rr!oH;D! z{*iBR8I*N@m<%d5g`gpG;8kEfbvi|r^E;gL`_gENA6p{?6@$tk*AQ)>BqiOJqRLGP zgKQqmUuGV$Jn8 z_f9=;rc6Dn%fblnt4mSH6-Q6(>FYkoGHQfEE15|u|6Id5?=OIRDeLbH3E24P2}(zd zkt8-eB_aN~HjOSR=44}_K2l=sSeOJl=OfgNv(n-%8dCgkh(>0153WL&u43HLz4xfb z^tzmtnU_d0CDeH9j5uC=rIAG`wjL(j$-$@3F7O1w1j!q*zSziYKDgSJ;W5le?7E~@ z%{cS@=fOlTL!PEj2CZ@i&8j*VIWoa0EjqDbI0Q3`8Y|LmRpYsOA7%5AmWezK`Vq0m zq&CXuA@5kkyFx-Kq6aI#ck8tro^Q#N z02OSK%&icLUTfnt&6nihomappo$ zE36}MC{b)Pf|ApLB%!M4qNe>{7CSGjXUZjOrXlV%PWM;K<#I1Keu~do)>n`EUUcSI zzSU}PW6%XY5Kg)0%rzrzk!F9Tz(mKx4U-b!7+w`Ve5L9NZt7jzSW;OaSPEE{_GdJ$ z9zqxNQ=YJ{teGn~rRp>WT@3`Msc=Ex3GrcmIm>~vr>mO(B-3MP3b?1@^A)jdeumL) zdIPG9X77f55Wf4zQi`mTgKYY|;)wb2hC3CreaXOZ!Y_}!LCW}=^~Wl9Pq4ERH^c;= zxC`49HbxS3ii$Ygl7j}5)|t3~^n{dnomY9Buz)vIYCg!yUJ^E@liHAMI9Ww|=P0Qj zJ(6?;_b4}^SoOW_cG7|Y^_9WEO*DiwuSYfFJqhp3)2aKA)~yZZ?r^JY;@6mBP^G%u z_U09#zOWt2je0_)(PNWpgM%8UjMXN?s1c>u!4|t7)5BZvSxguFw2o)5Z0cM#vd=Ox zl?9GRmF-A{vg?qx5R;`8it%d$3ymi~Ck1ENPby~e#`1loUH$*0 zTF~o8bB~=vKh#ziT<+FVs{6-{X=a||y`EA|2-R5;yZ z+Tk~Tzm@2@;T`33XZuyUvC?nypS5E9d8*RHV&Tn_Hur?XG5Uz|meOZ|W_6mJoEpVK_?Rd#>iE%9v#{6`Hb2rufV6v~=@h=}WJ_d#8^%7_E z_y!f#u0~V}&rgUcrjns-V{zBR1h;;b#n^gGR|NhpD_Yd)q!5ZE(FQ# zDn|#xx}AMDwk>g(FW9{)FLcvr7TTs+p5XfPCG}(!>k=eZyaEcb6^)qp<#84Sma!RY zy96CiPqKB=oz!xM84dr#Uu359qwOPlQS(OPh&png%n9}59sJ|NaPfHS(2IB(0Hg`R z(g@drawable/ic_share_grey600_24dp @drawable/ic_list_grey600_24dp @drawable/ic_hearing_grey600_18dp - @drawable/ic_remove_red_eye_grey600_18dp + @drawable/ic_eye_grey600_24dp @color/white @color/overlay_light @drawable/overlay_drawable @@ -111,7 +111,7 @@ @drawable/ic_share_white_24dp @drawable/ic_list_white_24dp @drawable/ic_hearing_white_18dp - @drawable/ic_remove_red_eye_white_18dp + @drawable/ic_eye_white_24dp @color/black @color/overlay_dark @drawable/overlay_drawable_dark @@ -208,7 +208,7 @@ @drawable/ic_share_grey600_24dp @drawable/ic_list_grey600_24dp @drawable/ic_hearing_grey600_18dp - @drawable/ic_remove_red_eye_grey600_18dp + @drawable/ic_eye_grey600_24dp @color/white @color/overlay_light @drawable/overlay_drawable @@ -284,7 +284,7 @@ @drawable/ic_share_white_24dp @drawable/ic_list_white_24dp @drawable/ic_hearing_white_18dp - @drawable/ic_remove_red_eye_white_18dp + @drawable/ic_eye_white_24dp @color/black @color/overlay_dark @drawable/overlay_drawable_dark From 98a19f0235f40377be7d402330e8f45269e112da Mon Sep 17 00:00:00 2001 From: egsavage Date: Sun, 7 Oct 2018 19:23:34 -0400 Subject: [PATCH 12/59] Resolves #2829 - Make queue remaining time sensitive to playback speed --- .../java/de/danoeh/antennapod/fragment/QueueFragment.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index bae77d58b..f5fdd4f9c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -21,7 +21,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.TextView; -import android.widget.Toast; import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration; @@ -46,7 +45,6 @@ import de.danoeh.antennapod.core.service.download.Downloader; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.FeedItemUtil; @@ -535,9 +533,12 @@ public class QueueFragment extends Fragment { String info = queue.size() + getString(R.string.episodes_suffix); if(queue.size() > 0) { long timeLeft = 0; + float playbackSpeed = Float.valueOf(UserPreferences.getPlaybackSpeed()); for(FeedItem item : queue) { if(item.getMedia() != null) { - timeLeft += item.getMedia().getDuration() - item.getMedia().getPosition(); + timeLeft += + (item.getMedia().getDuration() - item.getMedia().getPosition()) + / playbackSpeed; } } info += " \u2022 "; From de16a406913438fa648e9045fb17e751b744835c Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Mon, 8 Oct 2018 18:34:24 +0200 Subject: [PATCH 13/59] Update translations --- .tx/config | 1 + app/src/main/play/el/listing/fulldescription | 26 +++---- app/src/main/play/es/listing/fulldescription | 2 +- core/src/main/res/values-ar/strings.xml | 73 ++++++++++++++++++- core/src/main/res/values-az/strings.xml | 2 +- core/src/main/res/values-b+ast/strings.xml | 3 +- core/src/main/res/values-bg/strings.xml | 2 +- core/src/main/res/values-ca-rES/strings.xml | 1 + core/src/main/res/values-ca/strings.xml | 8 +- core/src/main/res/values-cs-rCZ/strings.xml | 11 +-- core/src/main/res/values-da/strings.xml | 7 +- core/src/main/res/values-de/strings.xml | 41 ++++++++++- core/src/main/res/values-el/strings.xml | 48 ++++++++---- core/src/main/res/values-es-rES/strings.xml | 2 +- core/src/main/res/values-es/strings.xml | 41 ++++++++++- core/src/main/res/values-et/strings.xml | 3 +- core/src/main/res/values-fa/strings.xml | 3 +- core/src/main/res/values-fi/strings.xml | 1 + core/src/main/res/values-fr/strings.xml | 53 +++++++++++--- core/src/main/res/values-gl-rES/strings.xml | 41 ++++++++++- core/src/main/res/values-hi-rIN/strings.xml | 3 +- core/src/main/res/values-hu/strings.xml | 3 +- core/src/main/res/values-id/strings.xml | 1 + core/src/main/res/values-is-rIS/strings.xml | 1 + core/src/main/res/values-it-rIT/strings.xml | 77 ++++++++++++++------ core/src/main/res/values-it/strings.xml | 3 +- core/src/main/res/values-iw-rIL/strings.xml | 5 +- core/src/main/res/values-ja/strings.xml | 41 ++++++++++- core/src/main/res/values-kn-rIN/strings.xml | 1 + core/src/main/res/values-ko-rKR/strings.xml | 1 + core/src/main/res/values-ko/strings.xml | 5 +- core/src/main/res/values-lt/strings.xml | 13 ++-- core/src/main/res/values-mk/strings.xml | 54 ++++++++++++++ core/src/main/res/values-nb/strings.xml | 5 +- core/src/main/res/values-nl/strings.xml | 63 ++++++++++++---- core/src/main/res/values-no-rNB/strings.xml | 7 +- core/src/main/res/values-no/strings.xml | 1 + core/src/main/res/values-pl-rPL/strings.xml | 6 +- core/src/main/res/values-pl/strings.xml | 2 +- core/src/main/res/values-pt-rBR/strings.xml | 7 +- core/src/main/res/values-pt/strings.xml | 41 ++++++++++- core/src/main/res/values-ro-rRO/strings.xml | 2 +- core/src/main/res/values-ru/strings.xml | 41 ++++++++++- core/src/main/res/values-sv-rSE/strings.xml | 41 ++++++++++- core/src/main/res/values-sw-rKE/strings.xml | 1 + core/src/main/res/values-te/strings.xml | 2 +- core/src/main/res/values-tr/strings.xml | 5 +- core/src/main/res/values-uk-rUA/strings.xml | 5 +- core/src/main/res/values-vi-rVN/strings.xml | 1 + core/src/main/res/values-vi/strings.xml | 2 +- core/src/main/res/values-zh-rCN/strings.xml | 7 +- core/src/main/res/values-zh-rHK/strings.xml | 1 + core/src/main/res/values-zh-rTW/strings.xml | 3 +- 53 files changed, 628 insertions(+), 192 deletions(-) create mode 100644 core/src/main/res/values-mk/strings.xml diff --git a/.tx/config b/.tx/config index 0659eaff4..5b9066e64 100644 --- a/.tx/config +++ b/.tx/config @@ -33,6 +33,7 @@ trans.kn_IN = core/src/main/res/values-kn-rIN/strings.xml trans.ko = core/src/main/res/values-ko/strings.xml trans.ko_KR = core/src/main/res/values-ko-rKR/strings.xml trans.lt = core/src/main/res/values-lt/strings.xml +trans.mk = core/src/main/res/values-mk/strings.xml trans.nb = core/src/main/res/values-nb/strings.xml trans.no = core/src/main/res/values-no/strings.xml trans.nl = core/src/main/res/values-nl/strings.xml diff --git a/app/src/main/play/el/listing/fulldescription b/app/src/main/play/el/listing/fulldescription index 87b477fdc..f0ec3ae38 100644 --- a/app/src/main/play/el/listing/fulldescription +++ b/app/src/main/play/el/listing/fulldescription @@ -1,11 +1,11 @@ -AntennaPod is a podcast manager and player that gives you instant access to millions of free and paid podcasts, from independent podcasters to large publishing houses such as the BBC, NPR and CNN. Add, import and export their feeds hassle-free using the iTunes podcast database, OPML files or simple RSS URLs. Save effort, battery power and mobile data usage with powerful automation controls for downloading episodes (specify times, intervals and WiFi networks) and deleting episodes (based your favourites and delay settings).
-But most importantly: Download, stream or queue episodes and enjoy them the way you like with adjustable playback speeds, chapter support and a sleep timer. You can even show your love to the content creators with our Flattr integration. +Το Antennapod είναι μία εφαρμογή διαχείρισης και εκτέλεσης podcasts που σας δίνει άμεση πρόσβαση σε εκατομμύρια δωρεάν και επί πληρωμή podcasts, από ανεξάρτητους podcasters έως μεγάλους εκδοτικούς οίκους όπως το BBC, NPR και CNN. Μπορείτε εύκολα να προσθέσετε, να εισάγετε και να εξάγετε τις ροές τους χρησιμοποιώντας τη βάση δεδομένων podcast του iTunes, αρχεία OPML ή απλά RSS URLs. Γλυτώστε προσπάθεια, μπαταρία και χρήση δεδομένων κινητής τηλεφωνίας με ισχυρές ρυθμίσεις αυτοματισμών για λήψη επεισοδίων (ορίστε τους χρόνους, τα διαστήματα και τα δίκτυα WiFi) και σβήστε επεισόδια (με βάση τα αγαπημένα σας και τις ρυθμίσεις καθυστέρησης).
+Αλλά το πλέον σημαντικό: Κατεβάστε, κάντε stream ή βάλτε στη σειρά επεισόδια και απολαύστε τα όπως επιθυμήτε με ρυθμιζόμενη ταχύτητα αναπαραγωγής, υποστήριξη κεφάλαιων και χρονόμετρο απενεργοποίησης. Μπορείτε ακόμη και να δείξετε την αγάπη σας στους δημιουργούς περιεχομένου μέσω της ενσωμάτωσης του Flattr. -Made by podcast-enthousiast, AntennaPod is free in all senses of the word: open source, no costs, no ads. +Φτιαγμένο από λάτρη των podcast, το AntennaPod είναι ελεύθερο με όλες τις έννοιες της λέξης: ανοικτού λογισμικού, χωρίς κόστη, χωρίς διαφημίσεις. -All features:
-IMPORT, ORGANIZE AND PLAY
-• Add and import feeds via the iTunes and gPodder.net directories, OPML files and RSS or Atom links
+Όλα τα χαρακτηριστικά:
+ΕΙΣΑΓΩΓΉ, ΟΡΓΆΝΩΣΗ ΚΑΙ ΕΚΤΈΛΕΣΗ
+• Προσθέστε και εισάγετε ροές μέσω των φακέλων του iTunes και του gPodder.net, αρχείων OPML και RSS ή συνδέσμους Atom
• Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls
• Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)
• Access password-protected feeds and episodes
@@ -24,20 +24,20 @@ CONTROL THE SYSTEM
• Adapt to your environment using the light and dark theme
• Back-up your subscriptions with the gPodder.net integration and OPML export -Join the AntennaPod community!
-AntennaPod is under active development by volunteers. You can contribute too, with code or with comment! +Ενταχθείτε στη κοινότητα του AntennaPod!
+Το AntennaPod βρίσκεται υπό ενεργή ανάπτυξη από εθελοντές. Μπορείτε και εσείς να συνεισφέρετε, με κώδικα ή με κάποιο σχόλιο. -GitHub is the place to go for feature requests, bug reports and code contributions:
+Το Github είναι το μέρος να επισκεφθείτε για να ζητήσετε καινούρια χαρακτηριστικά, να αναφέρετε σφάλματα και για συνεισφορά κώδικα:
https://www.github.com/AntennaPod/AntennaPod -Our Google Group is the place to share your ideas, favourite podcasting moments and gratitude to all the volunteers:
+Το Google Group μας είναι το μέρος να μοιραστείτε τις ιδέες σας, τις αγαπημένες σας στιγμές ενασχόλησης με τα podcasts και ευγνωμοσύνη σε όλους τους εθελοντές:
https://groups.google.com/forum/#!forum/antennapod -Have a question or want to give us feedback? +Έχετε κάποια ερώτηση ή θέλετε να μας δώσετε κάποια ανατροφοδότηση; https://twitter.com/@AntennaPod -Transifex is the place to help with translations:
+Το Transifex είναι το μέρος για να βοηθήσετε με τις μεταφράσεις:
https://www.transifex.com/antennapod/antennapod -Check out our Beta Testing programme to get the latest features first:
+Ελέγξτε το πρόγραμμά μας Beta Testing για να λαμβάνετε τα τελευταία χαρακτηριστικά πρώτοι:
https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file diff --git a/app/src/main/play/es/listing/fulldescription b/app/src/main/play/es/listing/fulldescription index 2f1c8861a..96f914f26 100644 --- a/app/src/main/play/es/listing/fulldescription +++ b/app/src/main/play/es/listing/fulldescription @@ -1,4 +1,4 @@ -AntennaPod is un gestor y reproductor de podcast que te da acceso instantáneo a millones de podcast gratuitos y de pago, desde podcasters independientes a grandes estaciones como la BBC, NPR y CNN. Agrega, importa y exporta las fuentes de manera sencilla usando el listado de iTunes, archivos OPML o las URL de tipo RSS. Ahorra esfuerzo, batería y datos con los controles de descarga (a horas o intervalos específicos, o redes WiFi) y de borrado de episodios (basado en favoritos y ajustes de tiempo).
+AntennaPod es un gestor y reproductor de podcast que te da acceso instantáneo a millones de podcast gratuitos y pagos, desde podcasters independientes a grandes estaciones como la BBC, NPR y CNN. Agrega, importa y exporta las fuentes de manera sencilla usando el listado de iTunes, archivos OPML o las URL de tipo RSS. Ahorre esfuerzo, energía de la batería y uso de datos móviles con potentes controles de automatización para descargar episodios (especifique horarios, intervalos y redes WiFi) y elimine episodios (según sus preferencias y configuraciones de demora).
Y lo más importante: descarga, escucha en stream y disfrutalos como quieras con velocidad de reproducción variable, soporte para capítulos y temporizador de sueño. Incluso puedes mostrar tu gratitud a los creadores de contenido mediante Flattr. Hecho por entusiastas del podcasting, AntennaPod es libre, gratuito y sin publicidad. diff --git a/core/src/main/res/values-ar/strings.xml b/core/src/main/res/values-ar/strings.xml index 848a31add..5c29b5119 100644 --- a/core/src/main/res/values-ar/strings.xml +++ b/core/src/main/res/values-ar/strings.xml @@ -1,17 +1,34 @@ - Feeds + تحديث التسجيل + مغذيات + إحصائيات + إضافة بودكاست + حلقات الكل + جديد المفضلات جديد - اعدادات + إعدادات تنزيل جارى التشغيل اكتمل سجل + تسجيلات + لائحة التسجيلات الغاء التنزيل + أرشيف التشغيل + gpodder.net + تزامن مع أجهزة أخرى + تسجيل الدخول لموقع gpodder + %1$s مجانا + ذاكرة تخزين الحلقات ممتلئة + لقد تم تجاوز الحد الأقصى لتخزين الحلقات. المرجو الرفع من قيمة التخزين في قائمة الإعدادات. + المزامنة... + مجموع وقت تشغيل البودكاستات: + نمط الإحصائيات قائمة الفتح قائمة الاغلاف @@ -27,11 +44,13 @@ تم نسخ الرابط للحافظة اذهب لهذا الموقع + مسح الأرشيف تأكيد الغاء نعم لا + إعادة التعيين المؤلف لغة عنوان الموقع @@ -61,7 +80,6 @@ اظهار المعلومات مشاركة مشاركة الرابط - تطبيق الاجراء لم يتم تشغيله ايقاف مؤقت تم التنزيل @@ -106,24 +124,73 @@ + لم يتم اختيار أي ملف + اختر الكل + ألغ اختيار الكل + اختر... + عبر ملف نظام داخلي + إستخدام تطبيق خارجي + تصدير بصيغة OPML + تصدير بصيغة HTML + جار التصدير ... + حدث خطأ أثناء التصدير + تم التصدير بنجاح + أدخل التوقيت + تشغيل الهزاز + ثواني + دقائق + ساعات + الفئات + أقوى البودكاستات + إقتراحات + تسجيل الدخول + تسجيل الدخول + إسم المستخدم + كلمة المرور + اختيار الأجهزة: + أدخل جهازا جديدا + اختر جهازا من القائمة: + إختر + لقد تم تسجيل الدخول بنجاح! + إذهب إلى الصفحة الرئيسية + خطأ في إسم المستخدم أو كلمة المرور + تم بنجاح + إختيار المستند: + أنشأ مستندا جديدا + إختيار مستند البيانات + تحميل ... + صوت + فيديو + تحميل الصفحة التالية + تسجيل الدخول الكل + إختيار كل الحلقات لم يتم تشغيله تم التنزيل لم يتم التنزيل + مستوى الصوت + النوع + استيراد + تصدير + تم التصدير بنجاح + + تحميل + يشغل حاليا + الأخطاء diff --git a/core/src/main/res/values-az/strings.xml b/core/src/main/res/values-az/strings.xml index c27aa54d2..92bfb7f44 100644 --- a/core/src/main/res/values-az/strings.xml +++ b/core/src/main/res/values-az/strings.xml @@ -165,7 +165,6 @@ Seçimi ləğv et OPML ixraçı İxracın xətası - OPML fayl:\u0020 yazılıb Yuxu taymerini qoy Yuxu taymerini keçir @@ -200,4 +199,5 @@ + diff --git a/core/src/main/res/values-b+ast/strings.xml b/core/src/main/res/values-b+ast/strings.xml index 5113a895e..421896086 100644 --- a/core/src/main/res/values-b+ast/strings.xml +++ b/core/src/main/res/values-b+ast/strings.xml @@ -109,7 +109,6 @@ Desaniciando fees Completóse\'l refrescu\'l feed Anubrir episodios - Aplicar aiciones Ensin reproducir Posóse Reprodúxose @@ -243,7 +242,6 @@ Almacenamientu Proyeutu - Servicios Flattr Llimpieza d\'episodios Posa la reproducción al desconeutase los auriculares o Bluetooth @@ -378,4 +376,5 @@ + diff --git a/core/src/main/res/values-bg/strings.xml b/core/src/main/res/values-bg/strings.xml index e06a2cca0..19dc2a971 100644 --- a/core/src/main/res/values-bg/strings.xml +++ b/core/src/main/res/values-bg/strings.xml @@ -118,7 +118,6 @@ Други Относно Опашка - Услуги Flattr Почистване на епизодите Епизодите, които не са в опашката и не са в любими, отговарят на условията за премахване, ако автоматичното изтегляне се нуждае от място за нови епизоди @@ -253,4 +252,5 @@ + diff --git a/core/src/main/res/values-ca-rES/strings.xml b/core/src/main/res/values-ca-rES/strings.xml index fe20ff5da..d9f216268 100644 --- a/core/src/main/res/values-ca-rES/strings.xml +++ b/core/src/main/res/values-ca-rES/strings.xml @@ -58,4 +58,5 @@ + diff --git a/core/src/main/res/values-ca/strings.xml b/core/src/main/res/values-ca/strings.xml index 86fac02a5..dfd89ca0b 100644 --- a/core/src/main/res/values-ca/strings.xml +++ b/core/src/main/res/values-ca/strings.xml @@ -123,7 +123,6 @@ S\'està esborrant el canal S\'ha actualitzat el canal Amaga Episodis - Aplica accions Per reproduir Pausat Reproduit @@ -281,7 +280,6 @@ Altres Quant a Cua - Serveis Flattr Neteja l\'episodi Els episodis que no es troben a la cua i no són favorits haurien de ser candidats a ser esborrats si l\'Auto Descàrrega necessita espai per a nous episodis @@ -402,8 +400,6 @@ Envia l\'últim informe de tancament abrupte per e-mail Envia e-mail Experimental - Reproductor Sonic Media Player - Fes servir el reproductor Sonic Media Player integrat en comptes del reproductor natiu d\'Android i Prestissimo Valor actual: %1$s Servidor intermediari Estableix un servidor intermediari @@ -451,8 +447,6 @@ Exporta HTML Exportant... Error d\'exportació - S\'ha exportat l\'OPML correctament. - El fitxer OPML s\'ha escrit a:\u0020 Per llegir arxius OPML és necessari accés a la memòria externa Defineix un temporitzador @@ -625,7 +619,6 @@ Importa Exporta Tria un fitxer per a importar - S\'ha exportat amb èxit. S\'ha escrit la base de dades a la targeta SD. S\'ha importat amb èxit.\n\nPremeu D\'acord per a reiniciar l\'AntennaPod. Reproduir a... @@ -643,4 +636,5 @@ No s\'ha pogut cercar la nova posició al dispositiu de difusió El reproductor receptor ha trobat un error greu Error en la reproducció. Saltant... + diff --git a/core/src/main/res/values-cs-rCZ/strings.xml b/core/src/main/res/values-cs-rCZ/strings.xml index f7b1156de..1896381a1 100644 --- a/core/src/main/res/values-cs-rCZ/strings.xml +++ b/core/src/main/res/values-cs-rCZ/strings.xml @@ -88,6 +88,7 @@ 1 den po dokončení %d dny po dokončení + %d dnů po dokončení %d dnů po dokončení @@ -117,7 +118,6 @@ Odstranit kanál Obnovit kompletní kanál Skrýt epizody - Provést akce Neposlechnuté Pozastavené Poslechnuté @@ -185,6 +185,7 @@ %d čekající na stažení %d čekající na stažení + %d čekajících na stažení %d čekajících na stažení Probíhá stahování @@ -275,7 +276,6 @@ Ostatní O aplikaci Fronta - Služby Flattr Vyčistit epizody Epizody, které nejsou ve frontě a nejsou označeny za oblíbené by mělo být možné smazat, pokud bude funkce automatického stahování potřebovat místo pro nové epizody @@ -386,7 +386,6 @@ Odesílat hlášení o posledním pádu aplikace emailem Poslat email Experimentální - Použít připojený sonic media player jako náhradu za výchozí přehrávač médií pro Android a Prestissimo Aktuální hodnota: %1$s Proxy Nastavit síťovou proxy @@ -430,8 +429,6 @@ HTML export Export Chyba exportu - OPML export byl úspěšný. - OPML soubor byl zapsán do:\u0020 Pro přečtení OPML souboru je vyžadován přístup k externímu úložišti Nastavit časovač vypnutí @@ -449,16 +446,19 @@ 1 sekunda %d sekundy + %d sekund %d sekund 1 minuta %d minuty + %d minut %d minut 1 hodina %d hodiny + %d hodin %d hodin Automaticky zapnout @@ -618,4 +618,5 @@ Selhal posun na novou pozici na vysílači Přijímač zaznamenal závažnou chybu Chyba přehrávání médií. Přeskakuji... + diff --git a/core/src/main/res/values-da/strings.xml b/core/src/main/res/values-da/strings.xml index 6364ef099..9035054f1 100644 --- a/core/src/main/res/values-da/strings.xml +++ b/core/src/main/res/values-da/strings.xml @@ -123,7 +123,6 @@ Fjerner feed Opdater hele feedet Skjul udsendelser - Anvend handlinger Uafspillede Sat på pause Afspillede @@ -281,7 +280,6 @@ Andre Om - Tjenester Flattr Oprydning i udsendelser Tillad at udsendelser, som ikke er i køen og som ikke er markeret som foretrukne, kan fjernes, hvis Automatisk overførsel har brug for plads til nye udsendelser @@ -402,8 +400,6 @@ Send den seneste nedbrudsrapport via e-mail Send e-mail Eksperimentelt - Sonic-medieafspiller - Brug indbygget Sonic-medieafspiller i stedet for Androids indbyggede medieafspiller og Prestissimo Nuværende værdi: %1$s Proxy Indstil en netværksproxy @@ -451,8 +447,6 @@ HTML-eksport Eksporterer… Eksportfejl - OPML-eksport lykkedes. - .opml-filen blev skrevet til:\u0020 Adgang til eksternt lager er påkrævet for at læse OPML-filen Indstil søvntimer @@ -637,4 +631,5 @@ Det lykkedes ikke at søge til den nye position på cast-enheden Modtagerafspilleren er stødt på en alvorlig fejl Fejl ved afspilning af medie. Springer over… + diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml index be32e70eb..b31056a7a 100644 --- a/core/src/main/res/values-de/strings.xml +++ b/core/src/main/res/values-de/strings.xml @@ -1,11 +1,13 @@ + Abonnements aktualisieren Feeds Statistiken Podcast hinzufügen Episoden Alle + Neu Favoriten Neu Einstellungen @@ -18,10 +20,12 @@ Download abbrechen Zuletzt gespielt gpodder.net + Mit anderen Geräten synchronisieren gpodder.net Anmeldung %1$s frei Episodenspeicher voll Der Episodenspeicher ist voll. Du kannst die Größe des Episodenspeichers in den Einstellungen erhöhen. + Synchronisiere... Gesamtzeit gespielter Podcasts: %1$d von %2$d Episoden gestartet.\n\n%3$s von %4$s Episoden gespielt. @@ -110,6 +114,9 @@ Alle Episoden als gesehen markiert Bitte bestätige, dass alle Episoden als gesehen markiert werden sollen. Informationen anzeigen + Zeige Feed-Einstellungen + Feed-Informationen + Feed-Einstellungen Podcast umbenennen Podcast entfernen Teilen… @@ -123,7 +130,7 @@ Entferne Feed Kompletten Feed aktualisieren Episoden verbergen - Aktionen anwenden + Stapelbearbeitung Ungespielt Pausiert Gespielt @@ -220,6 +227,7 @@ Unbekannter Fehler Keine Medienwiedergabe Puffert + Bild-in-Bild-Modus Spiele Podcast ab AntennaPod - Unbekannte Medientaste: %1$d @@ -237,6 +245,8 @@ Dauer Episodentitel Podcastname + Zufällig + Schlaues Mischen Aufsteigend Absteigend Bitte bestätige, dass ALLE Episoden aus der Abspielliste entfernt werden sollen @@ -283,8 +293,17 @@ Anderes Über Abspielliste - Dienste + Einbindungen Flattr + Micropayment-Dienst + Automatisierung + Details + Import/Export + Erscheinungsbild + Externe Elemente + Unterbrechungen + Knöpfe + Medienabspieler Automatisches Löschen Episoden, die weder in der Abspielliste noch Favoriten sind, können gelöscht werden, wenn beim automatischen Herunterladen Speicherplatz für neue Episoden gebraucht wird Wiedergabe pausieren, wenn Kopfhörer ausgesteckt oder Bluetooth getrennt wird @@ -354,6 +373,7 @@ Episodenspeicher Hell Dunkel + Echtes Schwarz Unbegrenzt Stunden Stunde @@ -404,8 +424,7 @@ Sende den aktuellen Absturzbericht per E-Mail E-Mail senden Experimentell - Sonic Media Player - Benutze den integrierten Sonic Mediaplayer als Ersatz für Androids eigenen Mediaplayer und Prestissimo + Wähle, welcher Medienabspieler benutzt werden soll, um Dateien abzuspielen Aktueller Wert: %1$s Proxy Richte einen Netzwerk-Proxy ein @@ -417,6 +436,11 @@ Chromecast benötigt proprietäre Bibliotheken von Drittanbietern, die in dieser Version von AntennaPod deaktiviert sind Downloads einreihen Füge heruntergeladene Episoden zur Abspielliste hinzu + Androids eingebauter Abspieler + Video-Verhalten + Verhalten beim Verlassen der Video-Wiedergabe + Wiedergabe anhalten + Wiedergabe fortsetzen Automatisches Flattrn aktivieren Flattr eine Episode, sobald %d Prozent gespielt worden sind @@ -645,4 +669,13 @@ Spulen zur neuen Position fehlgeschlagen Es wurde ein schwerer Fehler beim Empfangsgerät festgestellt Fehler bei Wiedergabe. Überspringe... + + Handlung notwendig + Wird gezeigt, wenn deine Handlung notwendig ist, zum Beispiel wenn du ein Passwort eingeben musst. + Lädt herunter + Wird gezeigt beim Herunterladen. + Jetzt spielt + Erlaubt es, die Wiedergabe zu steuern. Dies ist die Hauptbenachrichtigung, die du siehst, während ein Podcast abgespielt wird. + Fehler + Wird gezeigt, wenn etwas schief gegangen ist, etwa wenn das Herunterladen oder die gpodder-Synchronisierung fehlschlägt. diff --git a/core/src/main/res/values-el/strings.xml b/core/src/main/res/values-el/strings.xml index 152e73426..3438c9acc 100644 --- a/core/src/main/res/values-el/strings.xml +++ b/core/src/main/res/values-el/strings.xml @@ -1,16 +1,18 @@ + Ανανέωση Συνδρομών Ροές Στατιστικά Προσθήκη Podcast Επεισόδια Όλα + Νέα Αγαπημένα Νέα Ρυθμίσεις Λήψεις - Εκτέλεση + Εκτέλείται Ολοκληρώθηκε Είσοδος Συνδρομές @@ -18,43 +20,59 @@ Ακύρωση\nΛήψης Ιστορικό Αναπαραγωγής gpodder.net + Συγχρονισμός με άλλες συσκευές gpodder.net Σύνδεση + Εκτελείται συγχρονισμός + Συνολικός χρόνος εκτελεσμένων podcasts: Άνοιγμα μενού Κλείσιμο μενού Ταξινόμηση αλφαβητικά Ταξινόμηση κατά ημερομηνία δημοσίευσης + Ταξινόμηση κατά αριθμό εκτελεσμένων επεισοδίων + Αριθμός νέων επεισοδίων και αριθμός μη εκτελεσμένων επεισοδίων Αριθμός νέων επεισοδίων + Αριθμός μη εκτελεσμένων επεισοδίων + Αριθμός ληφθέντων επεισοδίων + Κενό Άνοιγμα στον Περιηγητή Αντιγραφή διεύθυνσης URL - Μοιρασμα URL + Μοίρασμα URL Αντιγραφή URL στο Πρόχειρο + Μετάβαση σε αυτή τη θέση Εκκαθάριση Ιστορικού Επιβεβαίωση Ακύρωση - Δημιουργος - Γλωσσα - Ρυθμισεις - Εικονα - Σφαλμα + Ναι + Όχι + Δημιουργός + Γλώσσα + URL + Ρυθμίσεις + Εικόνα + Σφάλμα Παρουσιάστηκε ένα σφάλμα: Ανανέωση Καμία εξωτερική αποθήκευση είναι διαθέσιμη. Παρακαλώ βεβαιωθείτε ότι η εξωτερική αποθήκευση έχει τοποθετηθεί έτσι ώστε η εφαρμογή να μπορεί να λειτουργήσει σωστά. Κεφάλαια + Διάρκεια: %1$s Εμφάνιση Σημειώσεων Περιγραφή - \u0020επεισοδια + Πιο πρόσφατο επεισόδιο:\u0020 + \u0020επεισόδια Μήκος:\u0020 Μέγεθος:\u0020 Επεξεργασία - Αποθήκευση του όνοματος χρήστη και του κωδικόυ πρόσβασης + Αποθήκευση του ονόματος χρήστη και του κωδικού πρόσβασης Κλείσιμο - Επανάληψη + Επαναπροσπάθεια Συμπερίληψη στην αυτόματη λήψη + Εφαρμογή σε προηγούμενα επεισόδια + Αυτόματη διαγραφή επεισοδίου \u0020παράλληλες λήψεις Πάντα Ποτέ @@ -63,9 +81,13 @@ URL της Ροής www.example.com/feed Προσθήκη Podcast με τη διεύθυνση URL + Εύρεση Podcast στο Φάκελο Περιήγηση στο gpodder.net Εμφάνιση πληροφοριών + Πληροφορίες Ροής + Ρυθμίσεις Ροής + Μετονομασία podcast Κατάργηση Podcast Απόκρυψη Επεισοδίων Ειλημμένα @@ -180,7 +202,6 @@ Άλλα Σχετικά με Σειρά αναμονής - Υπηρεσίες Flattr Συνέχιση της αναπαραγωγής, όταν τα ακουστικά επανασυνδέονται Μετάβαση στο επόμενο στοιχείο σειράς αναμονής όταν η αναπαραγωγή ολοκληρωθεί @@ -255,8 +276,6 @@ Χρησιμοποιήστε εξωτερική εφαρμογή OPML εξαγωγή Σφάλμα κατά την εξαγωγή - Η Εξαγωγή OPML είναι επιτυχής - Το αρχείο .opml συντάχθηκε για:\u0020 Ρύθμιση του χρονοδιακόπτη ύπνου Απενεργοποίηση χρονοδιακόπτη ύπνου @@ -341,4 +360,7 @@ + + Λήψη + Σφάλματα diff --git a/core/src/main/res/values-es-rES/strings.xml b/core/src/main/res/values-es-rES/strings.xml index 8aa30231b..024989498 100644 --- a/core/src/main/res/values-es-rES/strings.xml +++ b/core/src/main/res/values-es-rES/strings.xml @@ -193,7 +193,6 @@ Deseleccionar todo Exportar a OPML Error en la exportación - El archivo OPML se ha escrito en:\u0020 Establecer un temporizador Desactivar el temporizador @@ -229,4 +228,5 @@ + diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml index ff16ff05d..7a421de59 100644 --- a/core/src/main/res/values-es/strings.xml +++ b/core/src/main/res/values-es/strings.xml @@ -1,11 +1,13 @@ + Actualizar suscripciones Canales Estadísticas Añadir podcast Episodios Todos + Nuevo Favoritos Nuevos Ajustes @@ -18,10 +20,12 @@ Cancelar\ndescarga Historial de reproducciones gpodder.net + Sincronizar con otros dispositivos Iniciar sesión en gpodder.net %1$s libre Caché de episodios completa Se ha alcanzado el límite de caché de episodios. Puedes aumentar el tamaño de la caché en las Opciones. + Sincronizando... Tiempo total reproducido: Empezados %1$d episodios de %2$d.\n\nReproducidos %3$s de %4$s. @@ -110,6 +114,9 @@ Marcar todos los episodios como vistos Por favor confirma que quieres marcar todos los episodios como vistos. Información del programa + Mostrar configuraciones del feed + Informaciones del feed + Configuraciones del feed Renombrar Podcast Eliminar podcast Compartir… @@ -123,7 +130,7 @@ Quitando el canal Actualizar el canal completo Ocultar episodios - Aplicar acciones + Edición por lotes No escuchados Pausados Escuchados @@ -220,6 +227,7 @@ Error desconocido No hay medios en reproducción Almacenando + Modo picture-in-picture Reproduciendo el podcast AntennaPod - Tecla multimedia desconocida: %1$d @@ -237,6 +245,8 @@ Duración Título del episodio Título del feed + Aleatorio + Aleatorio inteligente Ascendente Descendente Confirme que quiere borrar TODOS los episodios de la cola @@ -283,8 +293,17 @@ Otros Acerca de Cola - Servicios + Integraciones Flattr + Servicio de micropagos + Automatización + Detalles + Importar/Exportar + Apariencia + Elementos externos + Interrupciones + Botones + Reproductor multimedia Limpieza de episodios Los episodios que no estén en la cola ni en Favoritos pueden eliminarse si Descarga automática necesita espacio para episodios nuevos Pausar la reproducción al desconectar los auriculares o el bluetooth @@ -354,6 +373,7 @@ Caché de episodios Claro Oscuro + Negro total Ilimitado horas hora @@ -404,8 +424,7 @@ Enviar el último informe de fallo por e-mail Enviar e-mail Experimental - Sonic media player - Usar el reproductor Sonic Media incorporado en lugar del reproductor multimedia de Android y Prestissimo + Seleccione qué reproductor multimedia usar para reproducir archivos Valor actual: %1$s Proxy Configurar proxy de red @@ -417,6 +436,11 @@ Chromecast requiere librerías propietarias de terceros que están deshabilitadas en esta versión de AntennaPod Poner descargados en cola Agregar episodios descargados a la cola + Reproductor Android integrado + Funcionamiento del video + Funcionamiento al dejar la reproducción de video + Parar reproducción + Continuar reproducción Habilitar Flattr automático Hacer Flattr del episodio en cuanto se haya reproducido el %d por ciento @@ -645,4 +669,13 @@ Fallo al cambiar de posición en el dispositivo Cast El reproductor ha encontrado un error grave Error reproduciendo medio. Saltando... + + Acción necesaria + Se muestra si su acción es necesaria, por ejemplo, si necesita ingresar una contraseña. + Descargando + Se muestra mientras se está descargando. + Reproducción actual + Permite controlar la reproducción. Esta es la notificación principal que ves al reproducir un podcast. + Errores + Se muestra si algo salió mal, por ejemplo, si falla la descarga o la sincronización del gpodder. diff --git a/core/src/main/res/values-et/strings.xml b/core/src/main/res/values-et/strings.xml index cff276e09..912e4376a 100644 --- a/core/src/main/res/values-et/strings.xml +++ b/core/src/main/res/values-et/strings.xml @@ -105,7 +105,6 @@ Uudisvoo eemaldamine Värskenda kogu uudisvoogu Peida saated - Rakenda tegevused Esitamata Peatatud Esitatud @@ -235,7 +234,6 @@ Muud Info Järjekord - Teenused Flattr Saadete kustutamien Kui saade lõpeb, siis esita kohe järgmine järjekorras olev saade. @@ -507,4 +505,5 @@ Esita... Tõrge meedia esitamisel. Jätame vahele... + diff --git a/core/src/main/res/values-fa/strings.xml b/core/src/main/res/values-fa/strings.xml index fb8bb5e7c..2e4f6d7aa 100644 --- a/core/src/main/res/values-fa/strings.xml +++ b/core/src/main/res/values-fa/strings.xml @@ -90,6 +90,7 @@ وقتی که در صف نیست بعد از تمام شدن + %dروز بعد از اتمام %dروز بعد از اتمام @@ -121,7 +122,6 @@ حذف خوراک تازه کردن کامل خوراک پنهان کردن قسمت ها - درخواست اعمال پخش نشده متوقف شد پخش شد @@ -201,4 +201,5 @@ + diff --git a/core/src/main/res/values-fi/strings.xml b/core/src/main/res/values-fi/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-fi/strings.xml +++ b/core/src/main/res/values-fi/strings.xml @@ -36,4 +36,5 @@ + diff --git a/core/src/main/res/values-fr/strings.xml b/core/src/main/res/values-fr/strings.xml index f90bbd5fe..1a3fc9c1b 100644 --- a/core/src/main/res/values-fr/strings.xml +++ b/core/src/main/res/values-fr/strings.xml @@ -1,11 +1,13 @@ + Mettre à jour les abonnements Flux Statistiques Ajouter un podcast Épisodes Tout + Nouveaux Favoris Nouveau Préférences @@ -18,10 +20,12 @@ Annuler les téléchargements Journal de lecture gpodder.net + Synchroniser avec d\'autres appareils Identifiants gpodder.net %1$s d\'espace libre L\'emplacement pour stocker les épisodes est plein Le nombre maximal d\'épisodes téléchargés a été atteint. Vous pouvez changer ce nombre dans les paramètres. + Synchronisation... Temps d\'écoute total %1$d épisodes sur %2$d commencés.\n\nLu %3$s sur %4$s. @@ -83,7 +87,7 @@ Le nouveau paramètre Téléchargement Automatique sera automatiquement appliqué sur chaque nouvel épisode.\nVoulez-vous faire de même avec les épisodes précédents ? Suppression automatique de l\'épisode \u0020téléchargements parallèles - Param.par défaut + Option par défaut Toujours Jamais Envoyer... @@ -110,6 +114,9 @@ Tous les épisodes ont été marqués vus Merci de confirmer que vous voulez marquer tous les épisodes comme vus. Voir les détails + Paramètres de flux... + Infos du flux + Paramètres du flux Renommer le podcast Supprimer le podcast Partager... @@ -123,7 +130,7 @@ Flux en cours de suppression Mettre à jour tout le flux Cacher épisodes - Appliquer les actions + Edition groupée Non lus En pause Lus @@ -220,6 +227,7 @@ Erreur inconnue Aucune lecture Mise en mémoire + Mode Picture-in-Picture Lecture de podcast en cours AntennaPod - Touche média inconnue : %1$d @@ -237,6 +245,8 @@ Durée Titre de l\'épisode Nom du flux + Aléatoire + Tri intelligent Ordre croissant Ordre décroissant Veuillez confirmer que vous voulez bien supprimer TOUS les épisodes de la liste de lecture @@ -283,13 +293,22 @@ Autres À propos Liste - Services + Intégrations Flattr + Service de micropaiement + Automatisation + Détails + Importation / Exportation + Apparence + Eléments externes + Interruptions + Boutons + Lecteur multimédia Nettoyage des épisodes Les épisodes qui ne sont pas dans la liste de lecture et qui ne sont pas marqués comme favoris peuvent être supprimés si l\'espace est insuffisant pour le téléchargement automatique de nouveaux épisodes Interrompre la lecture lorsque le casque ou le bluetooth sont déconnectés - Reprendre la lecture quand les écouteurs sont reconnectés - Reprendre la lecture quand le Bluetooth se reconnecte + Reprendre la lecture quand les écouteurs sont connectés + Reprendre la lecture quand le Bluetooth se connecte Le bouton \"saut avant\" saute l\'épisode Passer à l\'épisode suivant au lieu de faire un saut avant quand un bouton physique \"saut avant\" est pressé Le bouton \"saut arrière\" redémarre l\'épisode @@ -316,9 +335,9 @@ Ne télécharger les épisodes que par Wi-Fi Lecture continue Téléchargement en Wi-Fi - Déconnexion du casque - Reconnexion du casque - Reconnexion Bluetooth + Déconnexion des écouteurs ou du Bluetooth + Connexion des écouteurs + Connexion du Bluetooth Mises à jour mobile Autoriser les mises à jour avec la connexion mobile Mise à jour en cours @@ -354,6 +373,7 @@ Épisodes stockés localement Clair Sombre + Noir / True Black Illimité heures heure @@ -404,8 +424,7 @@ Envoyer le dernier rapport de crash par e-mail Envoyer e-mail Expérimental - Lecteur multimédia Sonic - Utiliser le lecteur multimédia interne Sonic au lieu du lecteur natif d\'Android ou Prestissimo + Choisir le lecteur à utiliser pour lire les fichiers Valeur actuelle : %1$s Proxy Paramétrer un réseau proxy @@ -417,6 +436,11 @@ Chromecast nécessite des bibliothèques tierces qui sont désactivées dans cette version d\'AntennaPod Ajouter à la liste après téléchargement Mettre les épisodes dans la la liste de lecture après téléchargement + Lecteur natif d\'Android + Sorti du lecteur pendant une vidéo + Définir ce qu\'il se passe si une vidéo est quittée pendant sa lecture + Arrêter la lecture + Continuer la lecture Activer le paiement flattr automatique Lancer un paiement flattr quand %d pourcent de l\'épisode a été lu @@ -645,4 +669,13 @@ Échec de la recherche de la nouvelle position sur l\'appareil cast Le lecteur de réception a rencontré une grave erreur Erreur de lecture du média. Passage au suivant... + + Action requise + S\'affiche si une action est requise. Par exemple, un mot de passe à saisir. + Téléchargement en cours + S\'affiche lorsqu\'un téléchargement est en cours. + Lecture en cours + Permet de contrôler la lecture. C\'est la notification principale pendant la lecture d\'un podcast. + Erreurs + S\'affiche en cas de problème. Par exemple, un téléchargement ou une synchronisation qui échoue. diff --git a/core/src/main/res/values-gl-rES/strings.xml b/core/src/main/res/values-gl-rES/strings.xml index 54a270312..555356f0f 100644 --- a/core/src/main/res/values-gl-rES/strings.xml +++ b/core/src/main/res/values-gl-rES/strings.xml @@ -1,11 +1,13 @@ + Actualizar suscricións Fontes Estatísticas Engadir Podcast Episodios Todo + Novo Favoritos Novo Axustes @@ -18,10 +20,12 @@ Cancelar\nDescarga Historial de reprodución gpodder.net + Sincronizar con outros dispositivos gpodder.net Conexión %1$s libre Caché de episodios chea Acadouse o límite de espazo na caché de episodios. Pode incrementalo nos Axustes do tamaño da caché. + Sincronizando... Tempo total dos podcast reproducidos: %1$d de %2$d episodios iniciados.\n\nReproducidos %3$s de %4$s. @@ -110,6 +114,9 @@ Marcáronse todos os episodios como vistos Por favor confirme que quere marcar todos os episodios como vistos. Mostrar información + Mostrar axustes da fonte + Info da fonte + Axustes da fonte Mudar nome do podcast Quitar podcast Compartir... @@ -123,7 +130,7 @@ Eliminando a fonte Actualizar completamente a fonte Ocultar episodios - Aplicar accións + Edición por lote Non reproducido En pausa Reproducido @@ -220,6 +227,7 @@ Fallo descoñecido Non reproducindo Almacenando + Modo imaxe-en-imaxe Reproducindo podcast AntennaPod - chave de medios descoñecida: %1$d @@ -237,6 +245,8 @@ Duración Título do episodio Título da fonte + Aleatorio + Barallado intelixente Ascendente Descendente Por favor confirme que quere limpar a cola e TODOS os episodios nela @@ -283,8 +293,17 @@ Outro Sobre Cola - Servizos + Integracións Flattr + Servizo de micropagamentos + Automatizado + Detalles + Importar/Exportar + Aspecto + Elementos externos + Interrupcións + Botóns + Reprodutor de medios Limpeza de episodios Os episodios que non están na cola e tampouco son favoritos deberían poder ser candidatos a ser eliminados si a función Descarga Automática precisa espazo para novos episodios. Deter a reprodución cando se desconectan os auriculares ou bluetooth @@ -354,6 +373,7 @@ Caché de episodios Claro Oscuro + Negro lexítimo Ilimitado horas hora @@ -404,8 +424,7 @@ Enviar por email o informe de fallo xeral no aplicativo Enviar email En probas - Sonic Media Player - Utilizar o sonic media player incluído no lugar do reprodutor nativo de Android e Prestissimo + Escolla o reprodutor de medios para reproducir ficheiros Valor actual: %1$s Proxy Establecer un proxy para a rede @@ -417,6 +436,11 @@ Chromecast precisa software propietario de terceiras partes que están deshabilitadas en esta versión de AntennaPod Foron descargados os elementos da cola Engadir os episodios descargados a cola + Reprodutor android nativo + Comportamento de video + Comportamento cando saia do vídeo + Para a reprodución + Reprodución contínua Hablitar o flattring automático Flattr o episodio tan pronto como o %d por cento foi reproducido @@ -645,4 +669,13 @@ Non se puido cambiar a posición no dispositivo de emisión O reprodutor receptor atopou un fallo grave Fallo na reprodución de medios. Saltando... + + Acción requerida + Mostrado si a súa acción é requerida, por exemplo si precisa introducir o contrasinal. + Descargando + Mostrado durante a descarga actual. + Soando agora + Permite controlar a reprodución. Esta é a notificación principal que verá mentras reproduce un podcast. + Fallos + Mostrado si algo falla, por exemplo si a descarga ou a sincronización con gpodder fallan. diff --git a/core/src/main/res/values-hi-rIN/strings.xml b/core/src/main/res/values-hi-rIN/strings.xml index 7e3333a37..dc99bc9e1 100644 --- a/core/src/main/res/values-hi-rIN/strings.xml +++ b/core/src/main/res/values-hi-rIN/strings.xml @@ -140,7 +140,6 @@ अन्य के बारे में पंक्ति - सेवाएं Flattr प्लेबैक के पूरा होने पर अगली पंक्ति आइटम के लिए जाएँ प्लेबैक @@ -199,7 +198,6 @@ सभी का चयन रद्द करें OPML निर्यात निर्यात त्रुटि - .ompl फ़ाइल लिखा गया था:\u0020 स्लीप टाइमर सेट स्लीप टाइमर अक्षम @@ -263,4 +261,5 @@ + diff --git a/core/src/main/res/values-hu/strings.xml b/core/src/main/res/values-hu/strings.xml index 5d515b926..6d4018c25 100644 --- a/core/src/main/res/values-hu/strings.xml +++ b/core/src/main/res/values-hu/strings.xml @@ -119,7 +119,6 @@ Idővonal eltávolítása Teljes idővonal frissítése Epizódok elrejtése - Műveletek alkalmazása Nem lejátszott Szüneteltetett Lejátszott @@ -295,7 +294,6 @@ Kép gyorsítótár méretének a lemezen Hibajelentés Kísérleti - Sonic Media Player Proxy Hálózati proxy beállítása GYIK @@ -387,4 +385,5 @@ Hiba a hangerő beállítása közben Hiba a lejátszás közben. Átugrás... + diff --git a/core/src/main/res/values-id/strings.xml b/core/src/main/res/values-id/strings.xml index e6ff6d1e7..62254518d 100644 --- a/core/src/main/res/values-id/strings.xml +++ b/core/src/main/res/values-id/strings.xml @@ -151,4 +151,5 @@ + diff --git a/core/src/main/res/values-is-rIS/strings.xml b/core/src/main/res/values-is-rIS/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-is-rIS/strings.xml +++ b/core/src/main/res/values-is-rIS/strings.xml @@ -36,4 +36,5 @@ + diff --git a/core/src/main/res/values-it-rIT/strings.xml b/core/src/main/res/values-it-rIT/strings.xml index 75c02130e..6aee5c314 100644 --- a/core/src/main/res/values-it-rIT/strings.xml +++ b/core/src/main/res/values-it-rIT/strings.xml @@ -1,11 +1,13 @@ + Aggiorna Sottoscrizioni Feed Statistiche Aggiungi un podcast Episodi Tutti + Novità Preferiti Nuovo Impostazioni @@ -18,16 +20,18 @@ Annulla\nil Download Cronologia delle riproduzioni gpodder.net + Sincronizza con altri dispositivi Accesso a gpodder.net %1$s disponibili Cache degli episodi piena Lo spazio di memoria della cache degli episodi è esaurito. Puoi aumentarlo nelle Impostazioni + Sincronizzazione... Tempo totale di riproduzione: %1$d di %2$d episodi iniziati.\n\nRiprodotti %3$s di %4$s. - Modalità di statistica - Calcola l\'attuale tempo di riproduzione. Riprodurre un podcast due volte verrà contato due volte, mentre segnarlo come riprodotto no. - Somma tutti i podcast segnati come riprodotti + Modalità di calcolo + Calcola il tempo di riproduzione reale. Riprodurre un podcast due volte verrà contato due volte, segnarlo come riprodotto no. + Somma il tempo di riproduzione di tutti i podcast segnati come riprodotti Avviso: La velocità di riproduzione non viene considerata. Apri il menù @@ -83,7 +87,7 @@ L\'opzione Download Automatico verrà applicata ai nuovi episodi.\nVuoi anche applicarla agli episodi precedenti? Elimina Episodi Automaticamente \u0020download paralleli - Impostazione Globale + Predefinita globale Sempre Mai Invia... @@ -110,20 +114,23 @@ Segnati tutti gli episodi come visti Conferma che desideri segnare tutti gli episodi come visti. Informazioni - Rinomina Podcast + Mostra le impostazioni del feed + Informazioni feed + Impostazioni feed + Rinomina podcast Rimuovi podcast Condividi... Condividi il link Condividi il file Condividi il Link con la Posizione - Condividi URL del Feed + Condividi URL del feed Condividi l\'URL dell\'episodio - Condividi l\'URL del File dell\'epsiodio con la Posizione + Condividi l\'URL del file dell\'epsiodio con la posizione Conferma che desideri cancellare il feed \"%1$s\" e TUTTI i suoi episodi scaricati. Rimozione del Feed in corso Ricarica il feed completo Nascondi gli episodi - Applica le azioni + Modifica in gruppo Non riprodotti In pausa Riprodotti @@ -220,6 +227,7 @@ Errore sconosciuto Nessun elemento multimediale in riproduzione Buffer in corso + Modalità picture-in-picture Riproduzione del podcast in corso AntennaPod - Chiave dell\'elemento multimediale sconosciuta: %1$d @@ -237,6 +245,8 @@ Per durata Titolo dell\'episodio Titolo del feed + Casuale + Casuale intelligente In ordine crescente In ordine decrescente Per favore conferma che vuoi rimuovere dalla coda TUTTI gli episodi in essa presenti. @@ -283,13 +293,22 @@ Altro Informazioni Coda - Servizi + Integrazioni Flattr + Servizio micropagamenti + Automazione + Dettagli + Importa/Esporta + Aspetto + Elementi esterni + Interruzioni + Pulsanti + Media player Pulizia episodi Gli episodi che non sono in coda e non sono tra i preferiti potrebbero essere rimossi se i Download Automatici richiedono maggiore spazio. - Sospendi la riproduzione quando le cuffie o il bluetooth sono disconnessi + Sospendi la riproduzione quando le cuffie o il bluetooth vengono disconnessi Riprendi la riproduzione quando vengono riconnesse le cuffie - Riprendere la riproduzione quando il Bluetooth si riconnette + Riprendi la riproduzione quando il Bluetooth si riconnette Il tasto Avanti salta la traccia Quando viene premuto un tasto Avanti fisico, viene saltata la traccia invece di andare avanti veloce Il tasto Indietro riavvia la traccia @@ -298,15 +317,15 @@ Elimina l\'episodio quando viene completata la riproduzione Elimina automaticamente Contrassegna gli episodi come riprodotti anche se rimangono alcuni secondi da riprodurre - Imposta come Riprodotto intelligente - Mantieni gli episodi quando vengono saltati - Manteni gli Episodi Saltati + Segna come Riprodotto dopo + Mantieni in coda gli episodi quando vengono saltati + Manteni gli episodi saltati Mantieni gli episodi quando sono segnati come Preferiti Mantieni episodi preferiti Riproduzione Rete Intervallo o orario di aggiornamento - Imposta un intervallo di tempo o un orario specifico in cui le sottoscrizioni si aggiornano automaticamente + Imposta un intervallo di tempo o un orario specifico in cui le sottoscrizioni vengono aggiornate automaticamente Puoi impostare un intervallo come \"ogni 2 ore\", impostare un\'ora del giorno specifica, come \"7:00\" oppure disabilitare gli aggiornamenti automatici del tutto.\n\nNota: I tempi di aggiornamento non sono perfetti. Potrai riscontrare dei brevi ritardi. Disabilita Imposta Intervallo @@ -317,7 +336,7 @@ Riproduzione Continua Download dei media su WiFi Disconnessione cuffie - Riconnetti le Cuffie + Riconnessione cuffie Riconnessione Bluetooth Aggiornamenti su Reti a Consumo Permetti gli aggiornamenti tramite connessione dati mobile @@ -354,6 +373,7 @@ Cache degli Episodi Chiaro Scuro + Nero Illimitato ore ora @@ -398,15 +418,14 @@ Aggiungi un nuovo episodio in testa alla coda. Aggiungi in cima alla coda Disabilitato - Dimensione Cache delle Immagini + Dimensione cache delle immagini Dimensione cache per le immagini Report dei crash Invia il report dell\'ultimo crash via e-mail Invia e-mail Sperimentale - Sonic Media Player - Usa il sonic media player integrato in sostituzione di Prestissimo e del mediaplayer nativo di Android - Valore corrente: %1$s + Seleziona il media player da usare per riprodurre i file + Impostazione attuale: %1$s Proxy Imposta proxy di rete FAQ @@ -417,6 +436,11 @@ Chromecast richiede librerie proprietarie di terze parti che sono disabilitate in questa versione di AntennaPod Aggiungi i download alla coda Aggiungi gli episodi scaricati alla coda di riproduzione + Player Android integrato + Comportamento del video + Comportamento quando si esce dalla riproduzione video + Interrompi riproduzione + Continua la riproduzione Abilita l\'esecuzione automatica di Flattr Carica l\'episodio su Flattr appena è stato riprodotto al %d percento @@ -439,7 +463,7 @@ Usa un\'applicazione esterna come Dropbox, Google Drive o il tuo gestore file preferito per aprire un file OPML. Molte applicazioni come Google Mail, Dropbox, Google Drive e i gestori di file possono aprire i file OPML con AntennaPod. Avvio importazione - Importazione OPML + Importa da OPML ERRORE! Lettura OPML file in corso E\' stato riscontrato un errore nell\'apertura del documento OPML @@ -450,7 +474,7 @@ Dal filesystem locale Utilizza un\'applicazione esterna Esportazione su OPML - Esportazione in HTML + Esporta in HTML Esportazione in corso... Errore di esportazione Esportazione eseguita @@ -645,4 +669,13 @@ Ricerca della nuova posizione sul dispositivo ricevente fallita Il dispositivo ricevente ha restituito un errore grave Errore nella riproduzione. Salto... + + Azione richesta + Mostra se è richesto un tuo intervento, per sempio se è necessario inserire la password. + Scaricando + Mostra mentre è in corso il download + In riproduzione + Permette di controllare la riproduzione. Questa è la principale notifica visibile quando un prodcast è in riproduzione. + Errori + Mostrato se qualcosa è andato storto, per esempio se fallisce il download o la sincronizzazione di gpodder. diff --git a/core/src/main/res/values-it/strings.xml b/core/src/main/res/values-it/strings.xml index f7988a463..d6effd4ef 100644 --- a/core/src/main/res/values-it/strings.xml +++ b/core/src/main/res/values-it/strings.xml @@ -123,7 +123,6 @@ Rimozione del Feed in corso Aggiorna il feed completo Nascondi gli episodi - Applica le azioni Non riprodotti In pausa Riprodotti @@ -278,7 +277,6 @@ Altro Riguardo a Coda - Servizi Flattr Pulizia dell\'episodio Gli episodi che non sono in coda e non sono preferiti dovrebbero essere idonei alla rimozione se Auto Download richiede spazio per nuovi episodi @@ -532,4 +530,5 @@ Riproduci su... + diff --git a/core/src/main/res/values-iw-rIL/strings.xml b/core/src/main/res/values-iw-rIL/strings.xml index ffbd4f6e1..3860518d4 100644 --- a/core/src/main/res/values-iw-rIL/strings.xml +++ b/core/src/main/res/values-iw-rIL/strings.xml @@ -125,7 +125,6 @@ ההזנה נמחקת רענון אלו שהסתיימו בהזנה הסתרת פרקים - החלת פעולות לא נוגן מושהה נוגן @@ -287,7 +286,6 @@ אחר על אודות תור - שירותים Flattr ניקוי פרקים פרקים שאינם בתור ואינם במועדפים אמורים לענות לתנאים של הסרה במקרה שההורדה האוטומטית זקוקה למקום לפרקים חדשים @@ -408,8 +406,6 @@ שליחת דיווח הקריסה העדכני ביותר דרך דוא״ל שליחת דוא״ל ניסיוני - נגן המדיה Sonic - שימוש בנגן Sonic המובנה כחלופה לנגן המדיה המובנה של Android ו־Prestissimo ערך נוכחי: %1$s מתווך הגדרת מתווך רשת @@ -655,4 +651,5 @@ ההקפצה למיקום נגינה אחר בהתקן השידור נכשלה הנגן המקבל נתקל בשגיאה חמורה שגיאה בנגינת המדיה. מתבצע דילוג… + diff --git a/core/src/main/res/values-ja/strings.xml b/core/src/main/res/values-ja/strings.xml index 123beb079..c6068aa4b 100644 --- a/core/src/main/res/values-ja/strings.xml +++ b/core/src/main/res/values-ja/strings.xml @@ -1,11 +1,13 @@ + 購読を更新 フィード 統計情報 フィードを追加 エピソード すべて + 新規 お気に入り 設定 @@ -18,10 +20,12 @@ ダウンロードをキャンセル 再生履歴 gpodder.net + 他のデバイスと同期 gpodder.net ログイン %1$s 空き エピソードキャッシュが一杯です エピソードキャッシュが制限に達しました。設定でキャッシュサイズを増やすことができます。 + 同期しています… ポッドキャストを再生した合計時間: %2$d から %1$d のエピソードが開始しました。\n\n%4$s から%3$s を再生しました。 @@ -109,6 +113,9 @@ すべてのエピソードを参照済にしました 参照済としてマークするすべてのエピソードを確認してください。 情報を表示 + フィード設定を表示 + フィード情報 + フィード設定 ポッドキャストの名前を変更 ポッドキャストを削除 共有… @@ -122,7 +129,7 @@ フィードの削除中 フィードをすべて更新 エピソードを非表示にする - 操作を適用 + 一括編集 未再生 一時停止しました 再生しました @@ -218,6 +225,7 @@ 不明なエラー 再生するメディアがありません バッファー中 + ピクチャ-イン-ピクチャ モード ポッドキャストを再生中 AntennaPod - 不明なメディアキー: %1$d @@ -235,6 +243,8 @@ 継続時間 エピソード タイトル フィード タイトル + ランダム + スマートシャッフル 昇順 降順 クリアする、キューに含まれるすべてのエピソードを確認してください。 @@ -281,8 +291,17 @@ その他 について キュー - サービス + 統合 Flattr + マイクロペイメント サービス + 自動 + 詳細 + インポート/エクスポート + 外観 + 外部要素 + 割り込み + ボタン + メディアプレーヤー エピソード クリーンアップ キューに含まれておらず、お気に入りではないエピソードは、自動ダウンロードで新しいエピソードのためにスペースが必要な場合、除去の対象になります ヘッドフォンまたはBluetoothの接続が切断された時、再生を一時停止します @@ -352,6 +371,7 @@ エピソードキャッシュ ライト ダーク + トゥルーブラック 無制限 時間 時間 @@ -402,8 +422,7 @@ メールで最新のクラッシュレポートを送信します メールを送信 実験的 - Sonic メディアプレーヤー - Android 標準のメディアプレーヤーと Prestissimo の代わりに、内蔵のソニックメディアプレーヤーを使用します + ファイルを再生するメディアプレーヤーを選択 現在の値: %1$s プロキシ ネットワーク プロキシの設定 @@ -415,6 +434,11 @@ Chromecast は AntennaPod のこのバージョンで無効になっているサードパーティ独自のライブラリーが必要です ダウンロードのキューに入れる ダウンロードしたエピソードをキューに追加します + ビルトイン Android プレーヤー + ビデオ動作 + ビデオ再生から遷移時の動作 + 再生停止 + 再生継続 自動Flattrを有効にする %d %再生したらエピソードをFlattr @@ -640,4 +664,13 @@ キャストデバイスの新しい位置への移動に失敗しました レシーバープレーヤーで深刻なエラーが発生しました メディアの再生時にエラーが発生しました。スキップしています… + + 操作が必要 + たとえばパスワードを入力する必要がある場合など、操作が必要な場合に表示されます。 + ダウンロード中 + 現在のダウンロードが表示されます。 + 現在再生中 + 再生をコントロールできます。これはポッドキャスト再生中のメイン通知です。 + エラー + ダウンロードや gpodder の同期に失敗した場合など、何か問題が発生した場合に表示されます。 diff --git a/core/src/main/res/values-kn-rIN/strings.xml b/core/src/main/res/values-kn-rIN/strings.xml index f62c6b2de..14ccf4e42 100644 --- a/core/src/main/res/values-kn-rIN/strings.xml +++ b/core/src/main/res/values-kn-rIN/strings.xml @@ -101,4 +101,5 @@ + diff --git a/core/src/main/res/values-ko-rKR/strings.xml b/core/src/main/res/values-ko-rKR/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-ko-rKR/strings.xml +++ b/core/src/main/res/values-ko-rKR/strings.xml @@ -36,4 +36,5 @@ + diff --git a/core/src/main/res/values-ko/strings.xml b/core/src/main/res/values-ko/strings.xml index 078c43fbb..c776885ea 100644 --- a/core/src/main/res/values-ko/strings.xml +++ b/core/src/main/res/values-ko/strings.xml @@ -122,7 +122,6 @@ 피드 삭제하는 중 전체 피드 새로고침 에피소드 감추기 - 동작 적용 재생 안 함 일시 중지 재생함 @@ -281,7 +280,6 @@ 기타 정보 대기열 - 서비스 Flattr 에피소드 정리 대기열에 없고 즐겨찾기에 넣지 않은 에피소드는 자동 다운로드에서 새 에피소드에 공간이 필요할 경우 제거될 수 있습니다. @@ -402,8 +400,6 @@ 최근의 이상 종료 보고서를 이메일로 보냅니다. 이메일 보내기 실험적 기능 - 소닉 미디어 플레이어 - 내장 소닉 미디어 플레이어를 안드로이드 고유 미디어 플레이어와 Prestissimo 대신 사용합니다. 현재 값: %1$s 프록시 네트워크 프록시 설정 @@ -640,4 +636,5 @@ 캐스트 장치에 새 재생 위치로 이동하는데 실패했습니다 리시버 플레이어에서 심각한 오류가 발생했습니다 미디어 재생에 오류. 건너뜁니다... + diff --git a/core/src/main/res/values-lt/strings.xml b/core/src/main/res/values-lt/strings.xml index 7736c148b..ed8862d11 100644 --- a/core/src/main/res/values-lt/strings.xml +++ b/core/src/main/res/values-lt/strings.xml @@ -93,6 +93,7 @@ Praėjus 1 dienai nuo perklausymo Praėjus %d dienoms nuo perklausymo + Praėjus %d dienų nuo perklausymo Praėjus %d dienų nuo perklausymo @@ -124,7 +125,6 @@ Šalinamas sklaidos kanalas Atnaujinti visą sklaidos kanalą Slėpti epizodus - Pritaikyti veiksmus Neperklausyti Pristabdyti Perklausyti @@ -193,6 +193,7 @@ Liko %d atsiuntimas Liko %d atsiuntimai + Liko %d atsiuntimų Liko %d atsiuntimų Apdorojami atsiuntimai @@ -283,7 +284,6 @@ Kita Apie Eilė - Paslaugos Flattr Epizodų valymas Epizodai, nesantys eilėje ar tarp mėgiamųjų, gali būti ištrinti automatinio atsiuntimo metu pritrūkus laisvos vietos naujiems epizodams @@ -404,8 +404,6 @@ Siųsti paskiausios strigties pranešimą el. paštu Siųsti el. laišką Eksperimentinis - „Sonic“ medijos leistuvė - Naudoti įtaisytąją „Sonic“ medijos leistuvę vietoje savosios „Android“ medijos leistuvės ir „Prestissimo“ Dabartinė reikšmė: %1$s Įgaliotasis serveris Nustatyti įgaliotąjį tinklo serverį @@ -453,8 +451,6 @@ HTML eksportas Eksportuojama... Eksporto klaida - OPML eksportas sėkmingas. - .opml failas išsaugotas į:\u0020 Norint nuskaityti OPML failą reikalinga prieiga prie nešiojamos atmintinės Nustatyti miego laikmatį @@ -472,16 +468,19 @@ 1 sekundė %d sekundės + %d sekundžių %d sekundžių 1 minutė %d minutės + %d minučių %d minučių 1 valanda %d valandos + %d valandų %d valandų Įjungti automatiškai @@ -634,7 +633,6 @@ Po importavimo, epizodai gali būti per klaidą pažymėti kaip atsisiųsti. Tie Importuoti Eksportuoti Pasirinkite failą, kurį norite importuoti - Eksportas sėkmingas. Duomenų bazė išsaugota SD kortelėje. Importuota sėkmingai. Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo. @@ -654,4 +652,5 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.
Peršokti į naują poziciją „Chromecast“ įrenginyje nepavyko Imtuvo leistuvę ištiko rimta klaida Įvyko medijos atkūrimo klaida. Praleidžiama... + diff --git a/core/src/main/res/values-mk/strings.xml b/core/src/main/res/values-mk/strings.xml new file mode 100644 index 000000000..1bb5aa651 --- /dev/null +++ b/core/src/main/res/values-mk/strings.xml @@ -0,0 +1,54 @@ + + + + Статистики + Стави Подкаст + Епизоди + Сите + Нови + Омилени + + + + + + Не + Ресет + Автор + Јазик + УРЛ + Поглавја + + + + Избриши + + + + Датум + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/src/main/res/values-nb/strings.xml b/core/src/main/res/values-nb/strings.xml index 65dc5565b..545eddc13 100644 --- a/core/src/main/res/values-nb/strings.xml +++ b/core/src/main/res/values-nb/strings.xml @@ -95,7 +95,6 @@ Fjerner strøm Oppdater hele strømmen Skjul episoder - Lagre handlinger Ikke avspilt Pauset Avspilt @@ -231,7 +230,6 @@ Annet Om Queue - Tjenester Flattr Episodeopprydding Sett playback på pause når hodetelefoner eller bluetooth er frakoblet @@ -350,8 +348,6 @@ Bruk ekstern applikasjon OPML-eksportering Eksporteringserror - OPML-import vellykket. - .opml-filen ble skrevet til:\u0020 Sett opp sovetimer Deaktiver sovetimer @@ -480,4 +476,5 @@ + diff --git a/core/src/main/res/values-nl/strings.xml b/core/src/main/res/values-nl/strings.xml index ae9f8ade9..daa64d90c 100644 --- a/core/src/main/res/values-nl/strings.xml +++ b/core/src/main/res/values-nl/strings.xml @@ -1,11 +1,13 @@ + Feeds updaten Feeds Statistieken Podcast toevoegen Afleveringen Alle + Nieuw Favorieten Nieuw Instellingen @@ -18,10 +20,12 @@ Annuleer download Afspeelgeschiedenis gpodder.net + Met andere apparaten synchroniseren gpodder.net login %1$s beschikbaar Afleveringen cache is vol Het maximum aantal gecachte afleveringen is bereikt. U kunt het maximum verhogen in de instellingen. + Synchroniseren… Totale duur van afgespeelde podcasts: %1$d van de %2$d afleveringen gestart.\n\n%3$s van de %4$s afgespeeld. @@ -56,7 +60,7 @@ Ja Nee Reset - Auteur + Auteur(s) Taal URL Instellingen @@ -110,6 +114,9 @@ \'Nieuw\' label van alle afleveringen verwijderend Bevestig aub dat u het \'nieuw\' label van alle afleveringen wilt verwijderen. Toon informatie + Feed-instellingen tonen + Feed-informatie + Feed-instellingen Podcast hernoemen Podcast verwijderen Delen… @@ -117,13 +124,13 @@ Deel bestand Link van de aflevering met tijdstip delen URL van de feed delen - URL van het mediabestand delen - URL van mediabestand met tijdstip delen + URL v/h mediabestand delen + URL v/h mediabestand met tijdstip delen Bevestig dat u de feed %1$s en ALLE (ook gedownloade) afleveringen van deze podcast wilt verwijderen. Feed verwijderen Hele feed vernieuwen Afleveringen verbergen - Afleveringen beheren + Bulkbewerking Niet afgespeeld Gepauzeerd Afgespeeld @@ -176,7 +183,7 @@ HTTP data fout Onbekende fout Parser Exception - Niet ondersteunde feed soort + Niet ondersteunde type feed Verbindingsfout Onbekende host Authenticatie fout @@ -220,6 +227,7 @@ Onbekende fout Geen media aan het afspelen Buffering + Picture-in-picture modus Podcast aan het afspelen AntennaPod - Mediaknop onbekend: %1$d @@ -237,6 +245,8 @@ Lengte Afleveringtitel Feed-titel + Willekeurig + Slim Shuffelen Oplopend Aflopend Bevestig aub dat u alle afleveringen uit de wachtrij wilt verwijderen @@ -283,16 +293,25 @@ Overig Over AntennaPod Wachtrij - Services + Integraties Flattr + Service voor microbetalingen + Automatische acties + Details + Importeren/exporteren + Uiterlijk + Externe elementen + Onderbrekingen + Knoppen + Mediaspeler Automatisch opschonen Afleveringen die niet in de wachtrij staan én niet als favoriet gemarkeerd zijn, mogen verwijderd worden als Automatisch Downloaden ruimte nodig heeft voor nieuwe afleveringen Afspelen pauzeren wanneer de koptelefoon wordt losgekoppeld of de bluetooth verbinding wordt verbroken Afspelen hervatten wanneer de koptelefoon opnieuw wordt aangesloten Afspelen hervatten wanneer de bluetooth verbinding hervat wordt - \'Volgende\' knop voor overslaan + \'Volgende\' voor overslaan Aflevering overslaan ipv vooruitspoelen wanneer op een fysieke \'volgende\' knop wordt gedrukt - Vorige voor opnieuw afspelen + \'Vorige\' voor opnieuw afspelen Aflevering afspelen vanaf het begin ipv terugspoelen wanneer op een fysieke \'vorige\' knop wordt gedrukt Volgende item in de wachtrij afspelen als de aflevering voltooid is Afleveringen verwijderen als ze zijn afgespeeld @@ -335,7 +354,7 @@ Kies kleurschema Menu aanpassen Het uiterlijk en andere instellingen van het menu aanpassen. - Menu-items instellen + Selecteer menu-items Aanpassen welke items in het menu worden getoond Feed volgorde instellen De volgorde van uw feeds instellen @@ -354,6 +373,7 @@ Afleveringen cache Licht Donker + Echt zwart Onbeperkt uur uur @@ -378,7 +398,7 @@ Pas de beschikbare snelheden aan voor de variabele audio afspeelsnelheid Snelheid van vooruitspoelen Pas het aantal seconden aan waarmee wordt vooruitgespoeld per klik op de knop - Snelheid terugspoelen + Snelheid van terugspoelen Pas het aantal seconden aan waarmee wordt teruggespoeld per klik op de knop Definieer hostname Gebruik standaard host @@ -404,8 +424,7 @@ Verstuur laatste crashreport via email Verstuur email Experimentele functie(s) - Sonic mediaspeler - Gebruik AntennaPod\'s ingebouwde Sonic mediaspeler als een alternatief voor Prestissimo en de mediaspeler van Android. + Selecteer welke mediaspeler gebruikt moet worden voor het afspelen van bestanden Huidige instelling: %1$s Proxy Netwerkproxy instellen @@ -417,6 +436,11 @@ Voor Chromecast is software van derden vereist die niet beschikbaar zijn in deze versie van AntennaPod Gedownloade afleveringen in wachtrij Voeg gedownloade afleveringen toe aan de wachtrij + Ingebouwde speler van Android + Bij verlaten video + Wat te doen bij het verlaten van spelende video + Afspelen stoppen + Blijf geluid afspelen Automatisch flattr\'en aanzetten Flattr een aflevering zodra %d procent is afgespeeld @@ -449,8 +473,8 @@ Selecteren… Via bestandsbeheer Via externe app - OPML export - HTML export + OPML exporteren + HTML exporteren Exporteren… Export fout Export succesvol @@ -518,7 +542,7 @@ Geselecteerde map: Map aanmaken - Kies data map + Kies datamap Kies de hoofdmap voor uw data. AntennaPod zal de benodigde submappen creeëren. Toegang tot de externe opslag is nodig om de data-map aan te passen Maak een nieuwe map aan met de naam \"%1$s\"? @@ -645,4 +669,13 @@ Het opzoeken van het nieuwe tijdstip op het Cast apparaat is mislukt Ernstige fout opgetreden bij het afspelende Cast apparaat Er was een fout bij het afspelen; de aflevering wordt overgeslagen… + + Actie vereist + Tonen als actie vereist is, bijvoorbeeld als je een wachtwoord moet invoeren. + Aan het downloaden + Tonen als er iets wordt gedownload. + Wordt momenteel afgespeeld + Hiermee kun je het afspelen controleren. Dit is de voornaamste notificatie tijdens het afspelen van een podcast. + Foutmeldingen + Tonen wanneer er iets fout is gegaan, bijvoorbeeld als downloaden of synchroniseren mislukt. diff --git a/core/src/main/res/values-no-rNB/strings.xml b/core/src/main/res/values-no-rNB/strings.xml index 2e3b9bd53..166d93f47 100644 --- a/core/src/main/res/values-no-rNB/strings.xml +++ b/core/src/main/res/values-no-rNB/strings.xml @@ -120,7 +120,6 @@ Fjerner strøm Oppdater hele strømmen Skjul episoder - Lagre handlinger Ikke avspilt Pauset Avspilt @@ -273,7 +272,6 @@ Annet Om Queue - Tjenester Flattr Episodeopprydding Sett playback på pause når hodetelefoner eller bluetooth er frakoblet @@ -381,8 +379,6 @@ Send den siste kræsj-rapporten via e-post Send e-post Eksperimentell - Sonic mediaspiller - Bruk innebygd Sonic mediaspiller som en erstatning for Androids mediaspiller og Prestissimo FAQ Kjente problemer Ingen nettleser funnet. @@ -421,8 +417,6 @@ HTML eksport Eksporterer... Eksporteringserror - OPML-import vellykket. - .opml-filen ble skrevet til:\u0020 Tilgang til ekstern lagring er nødvendig for å lese OPML filen Sett opp sovetimer @@ -592,4 +586,5 @@ Feilter å stoppe avspillingen av media Feilet å pause avspillingen av media + diff --git a/core/src/main/res/values-no/strings.xml b/core/src/main/res/values-no/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-no/strings.xml +++ b/core/src/main/res/values-no/strings.xml @@ -36,4 +36,5 @@ + diff --git a/core/src/main/res/values-pl-rPL/strings.xml b/core/src/main/res/values-pl-rPL/strings.xml index abbcfe763..f75590077 100644 --- a/core/src/main/res/values-pl-rPL/strings.xml +++ b/core/src/main/res/values-pl-rPL/strings.xml @@ -22,6 +22,7 @@ %1$s wolnego miejsca Pełna pamięć cache Limit pamięci cache został osiągnięty. Możesz zwiększyć pojemność cache w ustawieniach aplikacji. + Synchronizowanie... Całkowity czas trwania podcastów: %1$d z %2$d odcinków rozpoczęto.\n\nZagrano %3$s z %4$s. @@ -125,7 +126,6 @@ Usuwanie kanału Odśwież cały kanał Ukryj odcinki - Zatwierdź czynności Nieodtworzone Zatrzymane Odtworzone @@ -288,7 +288,6 @@ Inne O... Kolejka - Usługi Flattr Usuwanie odcinków 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. @@ -409,8 +408,6 @@ Wyślij ostatni raport o błędach przez e-mail Wyślij e-mail Eksperymentalne - Odtwarzacz mediów Sonic - Użyj wbudowanego odtwarzacza Sonic jako oprogramowanie zastępcze do natywnego odtwarzacza Android i Prestissimo Aktualna wartość: %1$s Proxy Ustaw proxy sieciowe @@ -657,4 +654,5 @@ https://gpodder.net/register/
Wystąpił błąd podczas szukania nowej pozycji na urządzeniu nadającym. Urządzenie odbierające napotkało poważny problem Błąd podczas odtwarzania, pomijanie... + diff --git a/core/src/main/res/values-pl/strings.xml b/core/src/main/res/values-pl/strings.xml index 097417900..6a640a0ee 100644 --- a/core/src/main/res/values-pl/strings.xml +++ b/core/src/main/res/values-pl/strings.xml @@ -67,7 +67,6 @@ Kolejka - Usługi Pobieraj pliki tylko przez WiFi Odświeżanie Interfejs Użytkownika @@ -97,4 +96,5 @@ + diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml index fc8633b1f..30b69432a 100644 --- a/core/src/main/res/values-pt-rBR/strings.xml +++ b/core/src/main/res/values-pt-rBR/strings.xml @@ -122,7 +122,6 @@ Removendo feed Atualizar feed completamente Ocultar Episódios - Aplicar ações Não reproduzido Pausado Reproduzido @@ -279,7 +278,6 @@ Outros Sobre Fila - Serviços Flattr Limpar Episódio Episódios que não estão na fila e não estão nos favoritos podem ser removidos se o Download Automático precisar de espaço para novos episódios @@ -396,8 +394,6 @@ Enviar o relatório da última falha por e-mail Enviar e-mail Experimental - Sonic Media Player - Utilizar o reprodutor de mídia Sonic no lugar do reprodutor de mídia nativo do Android e do Prestissimo Valor atual: %1$s Proxy Configurar um proxy da rede @@ -444,8 +440,6 @@ Exportar HTML Exportando... Erro na exportação - Exportação do OPML realizada com sucesso. - O arquivo .opml foi gravado em:\u0020 Acesso ao armazenamento externo é necessária para ler o arquivo OPML Configura desligamento automático @@ -629,4 +623,5 @@ Falha ao buscar uma nova posição no dispositivo cast O receptor de reprodução encontrou um erro grave Erro ao reproduzir mídia. Pulando... + diff --git a/core/src/main/res/values-pt/strings.xml b/core/src/main/res/values-pt/strings.xml index 1eb03a194..17f04c860 100644 --- a/core/src/main/res/values-pt/strings.xml +++ b/core/src/main/res/values-pt/strings.xml @@ -1,11 +1,13 @@ + Atualizar subscrições Fontes Estatísticas Adicionar podcast Episódios Todos + Novos Favoritos Novos Definições @@ -18,10 +20,12 @@ Cancelar\ndescarga Histórico de reprodução gpodder.net + Sincronizar com outros dispositivos Dados gpodder.net %1$s disponível Cache de episódios cheia Atingido o limite máximo de itens em cache. Pode aumentar o tamanho de cache nas definições. + A sincronizar... Tempo total dos podcasts reproduzidos: %1$d de %2$d episódios iniciados.\n\nReproduzidos %3$s de %4$s. @@ -110,6 +114,9 @@ Marcar todos os episódios como vistos Confirma de que deseja marcar todos os episódios como vistos? Mostrar informações + Mostrar definições da fonte + Informação da fonte + Definições da fonte Renomear podcast Remover podcast Partilhar... @@ -123,7 +130,7 @@ Remover fonte Atualizar todas as páginas da fonte Ocultar episódios - Aplicar ações + Edição em lote Não reproduzidos Em pausa Reproduzidos @@ -220,6 +227,7 @@ Erro desconhecido Nada em reprodução A processar... + Modo \'picture-in-picture\' Reproduzir podcast Tecla multimédia desconhecida: %1$d @@ -237,6 +245,8 @@ Duração Título do episódio Título da fonte + Aleatório + Mistura inteligente Crescente Decrescente Tem a certeza de que deseja remover todos os episódios da fila de reprodução? @@ -283,8 +293,17 @@ Outras Sobre Fila - Serviços + Integrações Flattr + Serviço de micro pagamentos + Automatização + Detalhes + Importar/Exportar + Aparência + Elementos externos + Interrupções + Botões + Reprodutor multimédia Limpeza de episódios Os episódios que não estejam na fila e não sejam favoritos podem ser elegíveis para serem removidos se a Descarga automática necessitar de espaço para novos episódios. Pausa na reprodução ao desligar os auscultadores ou o bluetooth @@ -354,6 +373,7 @@ Cache de episódios Claro Escuro + Muito escuro Sem limite horas hora @@ -404,8 +424,7 @@ Enviar o relatório de erros por e-mail Enviar e-mail Experimental - Reprodutor multimédia Sonic - Utilizar o Sonic Media Player como substituto do reprodutor nativo do Android e do Prestissimo + Selecione o reprodutor multimédia a utilizar Valor atual: %1$s Proxy Definir um proxy de rede @@ -417,6 +436,11 @@ O Chromecast necessita de bibliotecas proprietárias de terceiros que estão desativadas nesta versão do AntennaPod Colocar descargas na fila Adicionar à fila os episódios descarregados + Reprodutor nativo Android + Comportamento do vídeo + Comportamento ao sair da reprodução do vídeo + Parar reprodução + Continuar reprodução Ativar flattr automático Flattr de episódios ao atingir %d porcento de reprodução @@ -645,4 +669,13 @@ Falha ao procurar a nova posição no dispositivo O reprodutor encontrou um erro crítico Erro de reprodução. A ignorar... + + Requer ação + Mostrar se for necessária uma ação como, por exemplo, digitar uma palavra-passe. + A descarregar + Mostrar durante a descarga. + Reprodução atual + Permite o controlo da reprodução. Esta será a notificação que verá ao reproduzir um podcast. + Erros + Mostrar se ocorrerem erros como, por exemplo, não for possível a descarga. diff --git a/core/src/main/res/values-ro-rRO/strings.xml b/core/src/main/res/values-ro-rRO/strings.xml index 3616d5644..92b2da8f9 100644 --- a/core/src/main/res/values-ro-rRO/strings.xml +++ b/core/src/main/res/values-ro-rRO/strings.xml @@ -144,7 +144,6 @@ Altele Despre Coadă - Servicii Flattr Sari la următorul element din coadă cand se termină ascultarea Ascultare @@ -247,4 +246,5 @@ + diff --git a/core/src/main/res/values-ru/strings.xml b/core/src/main/res/values-ru/strings.xml index afe25cdf3..63823cc51 100644 --- a/core/src/main/res/values-ru/strings.xml +++ b/core/src/main/res/values-ru/strings.xml @@ -1,11 +1,13 @@ + Обновить подписки Каналы Статистика Добавить подкаст Выпуски Все + Новые Избранное Новые Настройки @@ -18,10 +20,12 @@ Отменить загрузку Журнал gpodder.net + Синхронизировать с другими устройствами Войти на gpodder.net свободно %1$s Кэш выпусков заполнен Достигнут предел кэша выпусков. Объём кэша можно увеличить в Настройках. + Синхронизация… Общее время прослушивания подкастов: %1$d из %2$d выпусков начато.\n\nПрослушано %3$s из %4$s. @@ -112,6 +116,9 @@ Все выпуски отмечены как просмотренные Пожалуйста, подтвердите намерение отметить все выпуски как просмотренные. Показать информацию + Показать настройки канала + О канале + Настройки канала Переименовать подкаст Удалить подкаст Поделиться… @@ -125,7 +132,7 @@ Удаление канала Обновить весь канал Скрыть выпуски - Применить действия + Групповая обработка Непрослушанное Приостановленное Прослушанное @@ -227,6 +234,7 @@ URL файла: Неизвестная ошибка Ничего не воспроизводится Буферизация + Картинка в картинке Воспроизведение подкаста AntennaPod - неизвестный ключ носителя: %1$d @@ -244,6 +252,8 @@ URL файла: По продолжительности Название выпуска Название канала + Случайно + Умное перемешивание По возрастанию По убыванию Подтвердите, что хотите очистить очередь от ВСЕХ эпизодов. @@ -290,8 +300,17 @@ URL файла: Прочее О программе Очередь - Сервисы + Интеграция Flattr + Услуга микроплатежей + Автоматизация + Подробнее + Импорт/экспорт + Внешний вид + Внешние органы управления + Прерывания + Кнопки + Проигрыватель Удаление выпусков Выпуски, которые не стоят в очереди и не отмечены как избранные могут быть удалены для освобождения места под Автозагрузку. Приостановить воспроизведение, когда наушники или bluetooth отключены @@ -361,6 +380,7 @@ URL файла: Кэш выпусков Светлая Тёмная + Совсем чёрная Неограничен ч. ч. @@ -411,8 +431,7 @@ URL файла: Отослать последний отчёт о сбое по e-mail Отправить Email Экспериментальные настройки - Проигрывать через Sonic - Задействовать встроенный медиа проигрыватель Sonic вместо стандартного из ОС Android и Prestissimo + Выберите каким проигрывателем следует воспроизводить файлы Текущее значение: %1$s Прокси Настройки прокси @@ -424,6 +443,11 @@ URL файла: Для работы Chromecast требуются собственнические библиотеки третьей стороны, которые не включены в данную версию AntennaPod Добавлять загруженные в очередь Добавлять загруженные выпуски в очередь + Встроенный в Android проигрыватель + Поведение видео + При сворачивании проигрывателя видео + остановить воспроизведение + продолжить воспроизведение Включить автоматическую поддержку через Flattr Поддерживать через Flattr эпизоды, прослушанные на %d процентов @@ -660,4 +684,13 @@ URL файла: Не удалось выполнить перемотку на устройстве Google cast Серьёзная ошибка воспроизведения в устройстве Google cast Ошибка воспроизведения. Пропускаю… + + Требуется действие + Показывается, когда требуется действие, например, для ввода пароля. + Идёт загрузка + Показывается во время загрузки. + Идёт воспроизведение + Позволяет управлять воспроизведением. Основное уведомление, показывается при воспроизведении подкаста. + Ошибки + Показывается если что-то пошло не так, к примеру, неудавшаяся загрузка или синхронизация с gpodder. diff --git a/core/src/main/res/values-sv-rSE/strings.xml b/core/src/main/res/values-sv-rSE/strings.xml index f2dc3c6f1..8e147d033 100644 --- a/core/src/main/res/values-sv-rSE/strings.xml +++ b/core/src/main/res/values-sv-rSE/strings.xml @@ -1,11 +1,13 @@ + Uppdatera Prenumerationer Flöden Statistik Lägg till Podcast Episoder Alla + Nytt Favoriter Nya Inställningar @@ -18,10 +20,12 @@ Avbryt\nNedladdning Uppspelningshistorik gpodder.net + Synkronisera med andra enheter Inloggning till gpodder.net %1$s kvar Episodcachen är full Episodcachens gräns har nåtts. Du kan öka cachens storlek i inställningarna. + Synkroniserar... Total uppspelningstid: %1$d av %2$d episoder startade.\n\nSpelat %3$s av %4$s. @@ -110,6 +114,9 @@ Markera alla Episoder som sedda Bekräfta att du vill markera alla episoder som sedda. Visa information + Visa flödesinställningar + Flödesinfo + Flödesinställningar Byt namn på Podcast Ta bort Podcast Dela… @@ -123,7 +130,7 @@ Tar bort Flöde Uppdatera hela Flödet Dölj Episoder - Applicera åtgärder + Batchredigering Ospelade Pausade Spelad @@ -220,6 +227,7 @@ Okänt fel Inget media spelar Buffrar + Bild-i-bild läge Spelar podcast AntannaPod - Okänd mediaknapp: %1$d @@ -237,6 +245,8 @@ Längd Episodtitel Flödestitel + Slumpa + Smart Blandning Stigande Fallande Bekräfta att du vill rensa kön från ALLA episoder. @@ -283,8 +293,17 @@ Annat Om - Tjänster + Integrationer Flattr + Mikrobetalningstjänst + Automatisering + Detaljer + Importera/Exportera + Utseende + Externa element + Avbrott + Knappar + Mediaspelare Episodupprensning Episoder som inte är i kön och inte är favoriter kan tas bort om Automatisk Nedladdning behöver utrymme för nya episoder Pausa uppspelningen när hörlurar eller bluetooth kopplas ifrån. @@ -354,6 +373,7 @@ Episodcache Ljust Mörkt + Riktig Svart Obegränsat timmar timme @@ -404,8 +424,7 @@ Sänd den senaste krashrapporten via e-post Sänd e-post Experimentellt - Sonic Mediaspelare - Använd den inbyggda Sonic mediaspelare som ersättning för Androids egna mediaspelare och Prestissimo + Välj vilken mediaspelare som ska spela filer Nuvarande värde: %1$s Proxy Använd en nätverksproxy @@ -417,6 +436,11 @@ Chromecast kräver propretiära tredjepartsbibliotek som inte är inkluderade i denna version av AntennaPod Köa Nedladdade Lägg nedladdade episoder i uppspelningskön + Andriods inbyggda spelare + Videobeteende + Beteende när videouppspelning avslutas + Stoppa uppspelning + Fortsätt uppspelning Aktivera automatisk Flattring Flattra episoden så snart %d procent har spelats @@ -645,4 +669,13 @@ Misslyckades att söka till den nya positionen på cast-enheten Mottagande uppspelaren har stött på ett allvarligt fel Fel vid uppspelning av media. Hoppar över... + + Åtgärd krävs + Visas om din åtgärd är obligatorisk, till exempel om du behöver ange ett lösenord. + Laddar ner + Visas under tiden som nedladdning pågår. + Uppspelning pågår + Medger kontroll över uppspelning. Detta är huvudnotifieringen som du ser när en podcast spelas. + Fel + Visas om något blev fel, exempelvis om nedladdning eller gpodder synkronisering misslyckas. diff --git a/core/src/main/res/values-sw-rKE/strings.xml b/core/src/main/res/values-sw-rKE/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-sw-rKE/strings.xml +++ b/core/src/main/res/values-sw-rKE/strings.xml @@ -36,4 +36,5 @@ + diff --git a/core/src/main/res/values-te/strings.xml b/core/src/main/res/values-te/strings.xml index 07091c14d..d73db283a 100644 --- a/core/src/main/res/values-te/strings.xml +++ b/core/src/main/res/values-te/strings.xml @@ -84,7 +84,6 @@ ఇతర గురించి - సేవలు నెట్‌వర్క్ అచేతనించు ప్రతీ %1$s @@ -148,4 +147,5 @@ ఎగుమతి విజయవంతం. + diff --git a/core/src/main/res/values-tr/strings.xml b/core/src/main/res/values-tr/strings.xml index 9d9aa95e8..ec002ef97 100644 --- a/core/src/main/res/values-tr/strings.xml +++ b/core/src/main/res/values-tr/strings.xml @@ -110,7 +110,6 @@ Besleme kaldırılıyor Tüm beslemeyi yenile Bölümleri gizle - Eylemleri uygula Oynatılmadı Duraklatıldı Oynatıldı @@ -264,7 +263,6 @@ Diğer Hakkında Kuyruk - Servisler Flattr Bölüm Temizliği Kulaklıklar çıkarıldığında veya bluetooth bağlantısı kesildiğinde çalmayı duraklat @@ -374,8 +372,6 @@ Harici uygulama kullan OPML dışa aktar Dışa aktarma hatası - Opml dışa aktarma başarılı. - .opml dosyasy yazıldı: \u0020 Zamanlayıcıyı ayarla Zamanlayıcıyı devre dışı bırak @@ -508,4 +504,5 @@ + diff --git a/core/src/main/res/values-uk-rUA/strings.xml b/core/src/main/res/values-uk-rUA/strings.xml index 03cbe20d8..1c6b2588f 100644 --- a/core/src/main/res/values-uk-rUA/strings.xml +++ b/core/src/main/res/values-uk-rUA/strings.xml @@ -125,7 +125,6 @@ Удаляю канал Оновити канал цілком Приховати епізоди - Застосувати дії Неграні На паузі Грані @@ -287,7 +286,6 @@ Інше Про програму Черга - Сервіси Flattr Чищення епізодів Епізоди що не знаходяться в черзі та не помічені як улюблені можуть бути видалені якщо Автозавантажувач потребуватиме місце для нових епізодів. @@ -408,8 +406,6 @@ Надіслати е-пошту зі звітом про останній збій Надіслати е-пошту Експериментальні - Sonic Media Player - Застосувати вбудований програвач sonic замість програвача Android та Prestissimo Поточне значення: %1$s Проксі Застосувати проксі сервер @@ -655,4 +651,5 @@ Помилка перехода на нову позицію програвання на пристрої. Серйозна помилка програвання на пристрої Помилка програвання файла. Пропускаю... + diff --git a/core/src/main/res/values-vi-rVN/strings.xml b/core/src/main/res/values-vi-rVN/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-vi-rVN/strings.xml +++ b/core/src/main/res/values-vi-rVN/strings.xml @@ -36,4 +36,5 @@ + diff --git a/core/src/main/res/values-vi/strings.xml b/core/src/main/res/values-vi/strings.xml index 00ed733d1..7bdaf82af 100644 --- a/core/src/main/res/values-vi/strings.xml +++ b/core/src/main/res/values-vi/strings.xml @@ -106,7 +106,6 @@ Chia sẻ liên kết và vị trí phát tập này Đang xoá feed Ẩn các tập - Áp dụng hành động Chưa nghe Đang tạm dừng Đã nghe @@ -309,4 +308,5 @@ + diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml index 3eda888f9..6c9737828 100644 --- a/core/src/main/res/values-zh-rCN/strings.xml +++ b/core/src/main/res/values-zh-rCN/strings.xml @@ -122,7 +122,6 @@ 删除订阅 刷新全部订阅 隐藏曲目 - 启用 未播放 已暂停 已播放 @@ -277,7 +276,6 @@ 其他 关于 播放列表 - 服务 Flattr 清理曲目 暂停播放曲目当耳机或蓝牙重新连接 @@ -384,8 +382,6 @@ 通过 E-mail 发送最后崩溃报告 发送 E-mail 实验性 - 音频媒体播放器 - 使用内置音频媒体播放器代替 Android 原生媒体播放器 当前值:%1$s 代理 选择一个网络代理 @@ -430,8 +426,6 @@ 导出为 HTML 文件 正在导出 导出出错 - OPML 导出成功. - .opml 文件已保存到:\u0020 读取 OPML 文件需要访问外部存储的权限 设置休眠计时器 @@ -598,4 +592,5 @@ 音量设置失败 媒体播放出错.跳转中... + diff --git a/core/src/main/res/values-zh-rHK/strings.xml b/core/src/main/res/values-zh-rHK/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-zh-rHK/strings.xml +++ b/core/src/main/res/values-zh-rHK/strings.xml @@ -36,4 +36,5 @@ + diff --git a/core/src/main/res/values-zh-rTW/strings.xml b/core/src/main/res/values-zh-rTW/strings.xml index 87f749c37..d642acb0d 100644 --- a/core/src/main/res/values-zh-rTW/strings.xml +++ b/core/src/main/res/values-zh-rTW/strings.xml @@ -122,7 +122,6 @@ 移除播客源 刷新完成播客源 隱藏劇集 - 應用 未播放 暫停 已播放 @@ -279,7 +278,6 @@ 其他 關於 隊列 - 服務 Flattr 劇集清理 如果自動下載需要空間用於新的劇集,則不在隊列中並且不是最愛的劇集將被移除。 @@ -319,4 +317,5 @@ + From 8d1a2cdf9403a26119490f15d4d581c0a94b4fac Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Thu, 11 Oct 2018 20:10:14 +0200 Subject: [PATCH 14/59] Add proguard config for awaitility --- app/proguard.cfg | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/proguard.cfg b/app/proguard.cfg index 01b1708f7..90c46345d 100644 --- a/app/proguard.cfg +++ b/app/proguard.cfg @@ -125,3 +125,13 @@ -keep class com.squareup.moshi.** { *; } -keep interface com.squareup.moshi.** { *; } -keep public class retrofit2.adapter.rxjava.RxJavaCallAdapterFactory { *; } + +# awaitility +-dontwarn java.beans.BeanInfo +-dontwarn java.beans.Introspector +-dontwarn java.beans.IntrospectionException +-dontwarn java.beans.PropertyDescriptor +-dontwarn java.lang.management.ManagementFactory +-dontwarn java.lang.management.ThreadInfo +-dontwarn java.lang.management.ThreadMXBean + From 6ab0277bb58cc11c944ee599954da84602bc3871 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Thu, 11 Oct 2018 20:11:26 +0200 Subject: [PATCH 15/59] Fix proguard warning --- app/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/app/build.gradle b/app/build.gradle index 6c8abbdff..281313628 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -150,6 +150,7 @@ dependencies { implementation "com.android.support:gridlayout-v7:$supportVersion" implementation "com.android.support:percent:$supportVersion" implementation "com.android.support:recyclerview-v7:$supportVersion" + provided 'com.google.android.wearable:wearable:2.2.0' implementation "org.apache.commons:commons-lang3:$commonslangVersion" implementation("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") { exclude group: "org.json", module: "json" From 2d4739bd843bf522b06b128308c3284029b4a46c Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Thu, 11 Oct 2018 20:11:41 +0200 Subject: [PATCH 16/59] Prepare RC --- app/src/main/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8cbbc4cbf..95cd12d0f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="1060691" + android:versionName="1.6.6-RC2"> Automatisches Flattrn aktivieren Flattr eine Episode, sobald %d Prozent gespielt worden sind @@ -450,8 +450,6 @@ Suche nach Episoden In Shownotizen gefunden In Kapiteln gefunden - In Autoren gefunden - In Feeds gefunden Keine Ergebnisse gefunden Suchen In Titel gefunden From 4ba36b826893efbe14fce9da3126f89c218db82b Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Sat, 20 Oct 2018 11:34:47 +0200 Subject: [PATCH 25/59] Prepare 1.7.0 --- CHANGELOG.md | 4 ++-- app/src/main/AndroidManifest.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6be6ab82..34e3ac1bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,10 @@ Change Log ========== -Version 1.6.6 +Version 1.7.0 ------------- -* Experimental new media player (ExoPlayer) +* NEW ExoPlayer (experimental) * Fix for Bluetooth Forward (Oreo) * Preference redesign + search * Notification improvements diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95cd12d0f..6e62bc227 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="1070000" + android:versionName="1.7.0"> Enable automatic flattring From 6262f98e39badde997d3e5793411a398cc062e09 Mon Sep 17 00:00:00 2001 From: Petar Kukolj Date: Thu, 15 Nov 2018 20:54:40 +0100 Subject: [PATCH 39/59] Add go to page option --- .../antennapod/activity/MainActivity.java | 28 +++++++++++++++---- .../preferences/PreferenceController.java | 27 ++++++++++++++++++ .../core/preferences/UserPreferences.java | 22 +++++++++++++-- core/src/main/res/values/arrays.xml | 8 ++++++ core/src/main/res/values/strings.xml | 4 ++- 5 files changed, 80 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index fffd751c9..4c25c5c28 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -656,12 +656,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi case SHOW_PROMPT: new AlertDialog.Builder(this) .setMessage(R.string.close_prompt) - .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - MainActivity.super.onBackPressed(); - } - }) + .setPositiveButton(R.string.yes, (dialogInterface, i) -> MainActivity.super.onBackPressed()) .setNegativeButton(R.string.no, null) .setCancelable(false) .show(); @@ -674,6 +669,27 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi super.onBackPressed(); } break; + case GO_TO_QUEUE: + if(getLastNavFragment().equals(QueueFragment.TAG)) { + super.onBackPressed(); + } else { + loadFragment(QueueFragment.TAG, null); + } + break; + case GO_TO_EPISODES: + if(getLastNavFragment().equals(EpisodesFragment.TAG)) { + super.onBackPressed(); + } else { + loadFragment(EpisodesFragment.TAG, null); + } + break; + case GO_TO_SUBSCRIPTIONS: + if(getLastNavFragment().equals(SubscriptionFragment.TAG)) { + super.onBackPressed(); + } else { + loadFragment(SubscriptionFragment.TAG, null); + } + break; default: super.onBackPressed(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index 1d93afad9..56af71dc4 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -227,6 +227,33 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc return true; }); + ui.findPreference(UserPreferences.PREF_BACK_BUTTON_BEHAVIOR) + .setOnPreferenceChangeListener((preference, newValue) -> { + if(newValue.equals("page")) { + final Context context = ui.getActivity(); + final String[] navTitles = context.getResources().getStringArray(R.array.back_button_go_to_pages); + final int choice[] = { UserPreferences.getBackButtonGoToPage() }; + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.back_button_go_to_page_title); + builder.setSingleChoiceItems(navTitles, choice[0], (dialogInterface, i) -> { + if(i >= 0) { + choice[0] = i; + } + }); + builder.setPositiveButton(R.string.confirm_label, (dialogInterface, i) -> { + if (choice[0] != UserPreferences.getBackButtonGoToPage()) { + UserPreferences.setBackButtonGoToPage(choice[0]); + } + }); + builder.setNegativeButton(R.string.cancel_label, null); + builder.create().show(); + return true; + } else { + return true; + } + }); + if (Build.VERSION.SDK_INT >= 26) { ui.findPreference(UserPreferences.PREF_EXPANDED_NOTIFICATION).setVisible(false); } 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 c80cfacba..f964fd23a 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 @@ -52,7 +52,8 @@ public class UserPreferences { public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons"; public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground"; private static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport"; - private static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior"; + public static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior"; + private static final String PREF_BACK_BUTTON_GO_TO_PAGE = "prefBackButtonGoToPage"; // Queue private static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront"; @@ -812,7 +813,7 @@ public class UserPreferences { } public enum BackButtonBehavior { - DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT + DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT, GO_TO_QUEUE, GO_TO_EPISODES, GO_TO_SUBSCRIPTIONS } public static BackButtonBehavior getBackButtonBehavior() { @@ -821,7 +822,24 @@ public class UserPreferences { case "drawer": return BackButtonBehavior.OPEN_DRAWER; case "doubletap": return BackButtonBehavior.DOUBLE_TAP; case "prompt": return BackButtonBehavior.SHOW_PROMPT; + case "page": + switch (UserPreferences.getBackButtonGoToPage()) { + case 0: return BackButtonBehavior.GO_TO_QUEUE; + case 1: return BackButtonBehavior.GO_TO_EPISODES; + case 2: return BackButtonBehavior.GO_TO_SUBSCRIPTIONS; + default: return BackButtonBehavior.GO_TO_QUEUE; + } default: return BackButtonBehavior.DEFAULT; } } + + public static int getBackButtonGoToPage() { + return prefs.getInt(PREF_BACK_BUTTON_GO_TO_PAGE, 0); + } + + public static void setBackButtonGoToPage(int page) { + prefs.edit() + .putInt(PREF_BACK_BUTTON_GO_TO_PAGE, page) + .apply(); + } } diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index 2d84cbd70..3a618b8c2 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -280,6 +280,7 @@ @string/back_button_default + @string/back_button_go_to_page @string/back_button_open_drawer @string/back_button_double_tap @string/back_button_show_prompt @@ -287,8 +288,15 @@ default + page drawer doubletap prompt + + + @string/queue_label + @string/episodes_label + @string/subscriptions_label + diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index fd5535462..1a3c2373c 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -471,7 +471,7 @@ Stop playback Continue audio playback Behavior - Back button behavior + Back Button Behavior Change behavior of the back button. Default Open navigation drawer @@ -479,6 +479,8 @@ Confirm to exit Are you sure you want to close AntennaPod? Tap back button again to exit + Go to page + Select page Enable automatic flattring From c2f543ffe4a8f0ceae9ab0b832f055ee023e9637 Mon Sep 17 00:00:00 2001 From: Petar Kukolj Date: Fri, 16 Nov 2018 18:21:04 +0100 Subject: [PATCH 40/59] Add tests for back button behaviors --- .../test/antennapod/ui/MainActivityTest.java | 66 +++++++++++++++++++ .../test/antennapod/ui/PreferencesTest.java | 13 ++++ 2 files changed, 79 insertions(+) diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java index d6e7bce13..9a60b04b8 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java @@ -243,4 +243,70 @@ public class MainActivityTest { assertEquals(1, hidden.size()); assertTrue(hidden.contains(DownloadsFragment.TAG)); } + + @Test + public void testBackButtonBehaviorGoToPage() { + openNavDrawer(); + solo.clickOnText(solo.getString(R.string.settings_label)); + solo.clickOnText(solo.getString(R.string.user_interface_label)); + solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title)); + solo.clickOnText(solo.getString(R.string.back_button_go_to_page)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.subscriptions_label)); + solo.clickOnText(solo.getString(R.string.confirm_label)); + solo.goBackToActivity(MainActivity.class.getSimpleName()); + solo.goBack(); + assertEquals(solo.getString(R.string.subscriptions_label), getActionbarTitle()); + } + + @Test + public void testBackButtonBehaviorOpenDrawer() { + openNavDrawer(); + solo.clickOnText(solo.getString(R.string.settings_label)); + solo.clickOnText(solo.getString(R.string.user_interface_label)); + solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title)); + solo.clickOnText(solo.getString(R.string.back_button_open_drawer)); + solo.goBackToActivity(MainActivity.class.getSimpleName()); + solo.goBack(); + assertTrue(((MainActivity)solo.getCurrentActivity()).isDrawerOpen()); + } + + @Test + public void testBackButtonBehaviorDoubleTap() { + openNavDrawer(); + solo.clickOnText(solo.getString(R.string.settings_label)); + solo.clickOnText(solo.getString(R.string.user_interface_label)); + solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title)); + solo.clickOnText(solo.getString(R.string.back_button_double_tap)); + solo.goBackToActivity(MainActivity.class.getSimpleName()); + solo.goBack(); + solo.goBack(); + assertTrue(solo.getCurrentActivity().isFinishing()); + } + + @Test + public void testBackButtonBehaviorPrompt() { + openNavDrawer(); + solo.clickOnText(solo.getString(R.string.settings_label)); + solo.clickOnText(solo.getString(R.string.user_interface_label)); + solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title)); + solo.clickOnText(solo.getString(R.string.back_button_show_prompt)); + solo.goBackToActivity(MainActivity.class.getSimpleName()); + solo.goBack(); + solo.clickOnText(solo.getString(R.string.yes)); + solo.waitForDialogToClose(); + assertTrue(solo.getCurrentActivity().isFinishing()); + } + + @Test + public void testBackButtonBehaviorDefault() { + openNavDrawer(); + solo.clickOnText(solo.getString(R.string.settings_label)); + solo.clickOnText(solo.getString(R.string.user_interface_label)); + solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title)); + solo.clickOnText(solo.getString(R.string.back_button_default)); + solo.goBackToActivity(MainActivity.class.getSimpleName()); + solo.goBack(); + assertTrue(solo.getCurrentActivity().isFinishing()); + } } diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java index bf54ca910..061eec74b 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java @@ -466,6 +466,19 @@ public class PreferencesTest { } } + @Test + public void testBackButtonBehaviorGoToPageSelector() { + clickPreference(withText(R.string.user_interface_label)); + clickPreference(withText(R.string.pref_back_button_behavior_title)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.back_button_go_to_page)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.subscriptions_label)); + solo.clickOnText(solo.getString(R.string.confirm_label)); + assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_SUBSCRIPTIONS, + Timeout.getLargeTimeout())); + } + private void clickPreference(Matcher matcher) { onView(withId(R.id.list)) .perform(RecyclerViewActions.actionOnItem(hasDescendant(matcher), click())); From 1d87910cbed3f3d29573d45ad0877275a70b4d11 Mon Sep 17 00:00:00 2001 From: orionlee Date: Fri, 16 Nov 2018 13:42:56 -0800 Subject: [PATCH 41/59] #2878: fix episode screen context menu is applied on wrong feed item during refresh --- .../adapter/AllEpisodesRecycleAdapter.java | 20 ++++++++----------- .../fragment/AllEpisodesFragment.java | 8 ++------ 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java index a431a47db..da1ce7670 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.adapter; import android.os.Build; +import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; @@ -51,7 +52,7 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter { - this.position = holder.getAdapterPosition(); + this.selectedItem = item; return false; }); holder.item = item; @@ -200,6 +201,11 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter Date: Sat, 17 Nov 2018 20:13:35 +0100 Subject: [PATCH 42/59] Use fragment tags instead of position indexes for saving chosen fragment --- .../test/antennapod/ui/PreferencesTest.java | 28 ++++++++++++++++++- .../antennapod/activity/MainActivity.java | 20 ++----------- .../preferences/PreferenceController.java | 10 ++++--- .../core/preferences/UserPreferences.java | 18 ++++-------- 4 files changed, 42 insertions(+), 34 deletions(-) diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java index 061eec74b..f217ecffa 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java @@ -16,6 +16,10 @@ import de.danoeh.antennapod.core.storage.APCleanupAlgorithm; import de.danoeh.antennapod.core.storage.APNullCleanupAlgorithm; import de.danoeh.antennapod.core.storage.APQueueCleanupAlgorithm; import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm; +import de.danoeh.antennapod.fragment.EpisodesFragment; +import de.danoeh.antennapod.fragment.QueueFragment; +import de.danoeh.antennapod.fragment.SubscriptionFragment; + import org.hamcrest.Matcher; import org.junit.After; import org.junit.Before; @@ -473,9 +477,31 @@ public class PreferencesTest { solo.waitForDialogToOpen(); solo.clickOnText(solo.getString(R.string.back_button_go_to_page)); solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.queue_label)); + solo.clickOnText(solo.getString(R.string.confirm_label)); + assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE, + Timeout.getLargeTimeout())); + assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(QueueFragment.TAG), + Timeout.getLargeTimeout())); + clickPreference(withText(R.string.pref_back_button_behavior_title)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.back_button_go_to_page)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.episodes_label)); + solo.clickOnText(solo.getString(R.string.confirm_label)); + assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE, + Timeout.getLargeTimeout())); + assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(EpisodesFragment.TAG), + Timeout.getLargeTimeout())); + clickPreference(withText(R.string.pref_back_button_behavior_title)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.back_button_go_to_page)); + solo.waitForDialogToOpen(); solo.clickOnText(solo.getString(R.string.subscriptions_label)); solo.clickOnText(solo.getString(R.string.confirm_label)); - assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_SUBSCRIPTIONS, + assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE, + Timeout.getLargeTimeout())); + assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(SubscriptionFragment.TAG), Timeout.getLargeTimeout())); } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 4c25c5c28..d2a0c3aab 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -669,25 +669,11 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi super.onBackPressed(); } break; - case GO_TO_QUEUE: - if(getLastNavFragment().equals(QueueFragment.TAG)) { + case GO_TO_PAGE: + if(getLastNavFragment().equals(UserPreferences.getBackButtonGoToPage())) { super.onBackPressed(); } else { - loadFragment(QueueFragment.TAG, null); - } - break; - case GO_TO_EPISODES: - if(getLastNavFragment().equals(EpisodesFragment.TAG)) { - super.onBackPressed(); - } else { - loadFragment(EpisodesFragment.TAG, null); - } - break; - case GO_TO_SUBSCRIPTIONS: - if(getLastNavFragment().equals(SubscriptionFragment.TAG)) { - super.onBackPressed(); - } else { - loadFragment(SubscriptionFragment.TAG, null); + loadFragment(UserPreferences.getBackButtonGoToPage(), null); } break; default: super.onBackPressed(); diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index 56af71dc4..ec1767062 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -232,17 +232,19 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc if(newValue.equals("page")) { final Context context = ui.getActivity(); final String[] navTitles = context.getResources().getStringArray(R.array.back_button_go_to_pages); - final int choice[] = { UserPreferences.getBackButtonGoToPage() }; + final String[] navTags = new String[3]; + System.arraycopy(MainActivity.NAV_DRAWER_TAGS, 0, navTags, 0, 3); + final String choice[] = { UserPreferences.getBackButtonGoToPage() }; AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.back_button_go_to_page_title); - builder.setSingleChoiceItems(navTitles, choice[0], (dialogInterface, i) -> { + builder.setSingleChoiceItems(navTitles, ArrayUtils.indexOf(navTags, UserPreferences.getBackButtonGoToPage()), (dialogInterface, i) -> { if(i >= 0) { - choice[0] = i; + choice[0] = navTags[i]; } }); builder.setPositiveButton(R.string.confirm_label, (dialogInterface, i) -> { - if (choice[0] != UserPreferences.getBackButtonGoToPage()) { + if (!choice[0].equals(UserPreferences.getBackButtonGoToPage())) { UserPreferences.setBackButtonGoToPage(choice[0]); } }); 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 f964fd23a..c44999c88 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 @@ -813,7 +813,7 @@ public class UserPreferences { } public enum BackButtonBehavior { - DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT, GO_TO_QUEUE, GO_TO_EPISODES, GO_TO_SUBSCRIPTIONS + DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT, GO_TO_PAGE } public static BackButtonBehavior getBackButtonBehavior() { @@ -822,24 +822,18 @@ public class UserPreferences { case "drawer": return BackButtonBehavior.OPEN_DRAWER; case "doubletap": return BackButtonBehavior.DOUBLE_TAP; case "prompt": return BackButtonBehavior.SHOW_PROMPT; - case "page": - switch (UserPreferences.getBackButtonGoToPage()) { - case 0: return BackButtonBehavior.GO_TO_QUEUE; - case 1: return BackButtonBehavior.GO_TO_EPISODES; - case 2: return BackButtonBehavior.GO_TO_SUBSCRIPTIONS; - default: return BackButtonBehavior.GO_TO_QUEUE; - } + case "page": return BackButtonBehavior.GO_TO_PAGE; default: return BackButtonBehavior.DEFAULT; } } - public static int getBackButtonGoToPage() { - return prefs.getInt(PREF_BACK_BUTTON_GO_TO_PAGE, 0); + public static String getBackButtonGoToPage() { + return prefs.getString(PREF_BACK_BUTTON_GO_TO_PAGE, "QueueFragment"); } - public static void setBackButtonGoToPage(int page) { + public static void setBackButtonGoToPage(String tag) { prefs.edit() - .putInt(PREF_BACK_BUTTON_GO_TO_PAGE, page) + .putString(PREF_BACK_BUTTON_GO_TO_PAGE, tag) .apply(); } } From 98e75fc313df0a6d1fc79485f6d58bfbf2c9bc96 Mon Sep 17 00:00:00 2001 From: Petar Kukolj Date: Tue, 20 Nov 2018 23:40:31 +0100 Subject: [PATCH 43/59] Fix not going back on child fragments --- .../main/java/de/danoeh/antennapod/activity/MainActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index d2a0c3aab..122b6040e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -648,6 +648,8 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi public void onBackPressed() { if(isDrawerOpen()) { drawerLayout.closeDrawer(navDrawer); + } else if(getSupportFragmentManager().getBackStackEntryCount() != 0) { + super.onBackPressed(); } else { switch (UserPreferences.getBackButtonBehavior()) { case OPEN_DRAWER: From 2393d4512c25cdd9095a3546c2bc9aa139bca798 Mon Sep 17 00:00:00 2001 From: Petar Kukolj Date: Thu, 22 Nov 2018 17:05:04 +0100 Subject: [PATCH 44/59] Fix coding style problems --- .../java/de/danoeh/antennapod/activity/MainActivity.java | 8 ++++---- .../antennapod/preferences/PreferenceController.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 122b6040e..5595aeac4 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -646,9 +646,9 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi @Override public void onBackPressed() { - if(isDrawerOpen()) { + if (isDrawerOpen()) { drawerLayout.closeDrawer(navDrawer); - } else if(getSupportFragmentManager().getBackStackEntryCount() != 0) { + } else if (getSupportFragmentManager().getBackStackEntryCount() != 0) { super.onBackPressed(); } else { switch (UserPreferences.getBackButtonBehavior()) { @@ -664,7 +664,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi .show(); break; case DOUBLE_TAP: - if(lastBackButtonPressTime < System.currentTimeMillis() - 2000) { + if (lastBackButtonPressTime < System.currentTimeMillis() - 2000) { Toast.makeText(this, R.string.double_tap_toast, Toast.LENGTH_SHORT).show(); lastBackButtonPressTime = System.currentTimeMillis(); } else { @@ -672,7 +672,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi } break; case GO_TO_PAGE: - if(getLastNavFragment().equals(UserPreferences.getBackButtonGoToPage())) { + if (getLastNavFragment().equals(UserPreferences.getBackButtonGoToPage())) { super.onBackPressed(); } else { loadFragment(UserPreferences.getBackButtonGoToPage(), null); diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index ec1767062..587b533a2 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -229,7 +229,7 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc ui.findPreference(UserPreferences.PREF_BACK_BUTTON_BEHAVIOR) .setOnPreferenceChangeListener((preference, newValue) -> { - if(newValue.equals("page")) { + if (newValue.equals("page")) { final Context context = ui.getActivity(); final String[] navTitles = context.getResources().getStringArray(R.array.back_button_go_to_pages); final String[] navTags = new String[3]; @@ -239,7 +239,7 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.back_button_go_to_page_title); builder.setSingleChoiceItems(navTitles, ArrayUtils.indexOf(navTags, UserPreferences.getBackButtonGoToPage()), (dialogInterface, i) -> { - if(i >= 0) { + if (i >= 0) { choice[0] = navTags[i]; } }); From ff18c72c670a2cbebba665d78b913f2aba2f8d39 Mon Sep 17 00:00:00 2001 From: Mostafa Ahangarha Date: Fri, 23 Nov 2018 23:34:08 +0330 Subject: [PATCH 45/59] Improve RTL support For all the layout elements having margin, padding,... to right or left, releavnt start/end property is added so all the elements are supposed to be displayed properly in RTL mode. There are still minor issues related to some icons such as play, ff and rev. This issue must be addressed separately in future. --- app/src/main/res/layout/audio_controls.xml | 7 ++++++ .../main/res/layout/authentication_dialog.xml | 4 ++++ app/src/main/res/layout/directory_chooser.xml | 8 +++++++ .../download_authentication_activity.xml | 4 ++++ .../layout/downloaded_episodeslist_item.xml | 4 ++++ app/src/main/res/layout/downloadlist_item.xml | 3 +++ app/src/main/res/layout/downloadlog_item.xml | 12 ++++++++++ .../res/layout/ellipsize_start_listitem.xml | 20 ++++++++--------- app/src/main/res/layout/feedinfo.xml | 4 ++++ app/src/main/res/layout/feeditem_fragment.xml | 10 +++++++++ .../main/res/layout/feeditemlist_header.xml | 10 +++++++++ app/src/main/res/layout/feeditemlist_item.xml | 13 +++++++++++ app/src/main/res/layout/feedsettings.xml | 5 ++++- .../res/layout/gpodnet_podcast_listitem.xml | 7 ++++++ .../main/res/layout/gpodnet_tag_listitem.xml | 3 +++ .../res/layout/gpodnetauth_credentials.xml | 6 ++++- .../main/res/layout/gpodnetauth_device.xml | 17 +++++++++++--- .../res/layout/itemdescription_listitem.xml | 4 ++++ .../res/layout/itunes_podcast_listitem.xml | 3 +++ .../res/layout/mediaplayerinfo_activity.xml | 22 ++++++++++++++++++- app/src/main/res/layout/nav_feedlistitem.xml | 10 +++++++++ app/src/main/res/layout/nav_list.xml | 2 ++ app/src/main/res/layout/nav_listitem.xml | 8 +++++++ .../main/res/layout/new_episodes_listitem.xml | 17 +++++++++++++- .../main/res/layout/onlinefeedview_header.xml | 10 +++++++++ app/src/main/res/layout/opml_selection.xml | 4 ++++ app/src/main/res/layout/queue_listitem.xml | 12 +++++++++- app/src/main/res/layout/searchlist_item.xml | 5 +++++ .../main/res/layout/simplechapter_item.xml | 3 +++ .../main/res/layout/statistics_listitem.xml | 8 +++++++ .../main/res/layout/videoplayer_activity.xml | 8 +++++++ 31 files changed, 235 insertions(+), 18 deletions(-) diff --git a/app/src/main/res/layout/audio_controls.xml b/app/src/main/res/layout/audio_controls.xml index 852b6e922..f03e4c03f 100644 --- a/app/src/main/res/layout/audio_controls.xml +++ b/app/src/main/res/layout/audio_controls.xml @@ -21,6 +21,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" android:text="1.00x"/> @@ -35,6 +36,7 @@ android:layout_width="32dp" android:layout_height="32dp" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:gravity="center" android:text="-" android:textStyle="bold" @@ -48,6 +50,7 @@ android:layout_height="32dp" android:minWidth="0dp" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:gravity="center" android:text="+" android:textStyle="bold" @@ -60,7 +63,9 @@ android:layout_width="match_parent" android:layout_height="32dp" android:layout_toRightOf="@id/butDecSpeed" + android:layout_toEndOf="@id/butDecSpeed" android:layout_toLeftOf="@id/butIncSpeed" + android:layout_toStartOf="@id/butIncSpeed" android:layout_centerVertical="true" android:max="40"/> @@ -79,6 +84,7 @@ android:layout_height="wrap_content" android:layout_marginTop="-12dp" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:orientation="horizontal" android:gravity="center"> @@ -101,6 +107,7 @@ android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:orientation="horizontal" android:gravity="center"> diff --git a/app/src/main/res/layout/authentication_dialog.xml b/app/src/main/res/layout/authentication_dialog.xml index 00e74c9e1..187045c63 100644 --- a/app/src/main/res/layout/authentication_dialog.xml +++ b/app/src/main/res/layout/authentication_dialog.xml @@ -67,8 +67,10 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_toLeftOf="@id/horizontal_divider" + android:layout_toStartOf="@id/horizontal_divider" android:background="?android:attr/selectableItemBackground" android:text="@string/cancel_label" /> @@ -78,8 +80,10 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentTop="true" android:layout_toRightOf="@id/horizontal_divider" + android:layout_toEndOf="@id/horizontal_divider" android:background="?android:attr/selectableItemBackground" android:text="@string/confirm_label" /> diff --git a/app/src/main/res/layout/directory_chooser.xml b/app/src/main/res/layout/directory_chooser.xml index 14e2f6a38..5b9269607 100644 --- a/app/src/main/res/layout/directory_chooser.xml +++ b/app/src/main/res/layout/directory_chooser.xml @@ -33,8 +33,10 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_toLeftOf="@id/horizontal_divider" + android:layout_toStartOf="@id/horizontal_divider" android:background="?android:attr/selectableItemBackground" android:text="@string/cancel_label" /> @@ -44,8 +46,10 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentTop="true" android:layout_toRightOf="@id/horizontal_divider" + android:layout_toEndOf="@id/horizontal_divider" android:background="?android:attr/selectableItemBackground" android:text="@string/confirm_label" /> @@ -62,6 +66,7 @@ android:layout_width="60dp" android:layout_height="60dp" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:background="?attr/selectableItemBackground" android:src="?attr/navigation_up" @@ -77,6 +82,7 @@ android:layout_marginRight="8dp" android:layout_marginTop="8dp" android:layout_toRightOf="@id/butNavUp" + android:layout_toEndOf="@id/butNavUp" android:text="@string/selected_folder_label" android:textStyle="bold" tools:background="@android:color/holo_green_dark"> @@ -87,9 +93,11 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_below="@id/txtvSelectedFolderLabel" android:layout_margin="8dp" android:layout_toRightOf="@id/butNavUp" + android:layout_toEndOf="@id/butNavUp" android:ellipsize="start" android:scrollHorizontally="true" android:singleLine="true" diff --git a/app/src/main/res/layout/download_authentication_activity.xml b/app/src/main/res/layout/download_authentication_activity.xml index f6925dc3a..3414a5e00 100644 --- a/app/src/main/res/layout/download_authentication_activity.xml +++ b/app/src/main/res/layout/download_authentication_activity.xml @@ -77,8 +77,10 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_toLeftOf="@id/horizontal_divider" + android:layout_toStartOf="@id/horizontal_divider" android:background="?android:attr/selectableItemBackground" android:text="@string/cancel_label"/> @@ -88,8 +90,10 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentTop="true" android:layout_toRightOf="@id/horizontal_divider" + android:layout_toEndOf="@id/horizontal_divider" android:background="?android:attr/selectableItemBackground" android:text="@string/confirm_label"/> diff --git a/app/src/main/res/layout/downloaded_episodeslist_item.xml b/app/src/main/res/layout/downloaded_episodeslist_item.xml index 770b88c7e..66ae6c180 100644 --- a/app/src/main/res/layout/downloaded_episodeslist_item.xml +++ b/app/src/main/res/layout/downloaded_episodeslist_item.xml @@ -13,6 +13,7 @@ android:layout_gravity="center_vertical" android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" android:layout_marginLeft="@dimen/listitem_threeline_horizontalpadding" + android:layout_marginStart="@dimen/listitem_threeline_horizontalpadding" android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" android:contentDescription="@string/cover_label" android:scaleType="centerCrop" @@ -24,7 +25,9 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/listitem_threeline_textleftpadding" + android:layout_marginStart="@dimen/listitem_threeline_textleftpadding" android:layout_marginRight="@dimen/listitem_threeline_textrightpadding" + android:layout_marginEnd="@dimen/listitem_threeline_textrightpadding" android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" android:layout_weight="1" @@ -74,6 +77,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" tools:text="Jan 23" tools:background="@android:color/holo_green_dark"/> diff --git a/app/src/main/res/layout/downloadlist_item.xml b/app/src/main/res/layout/downloadlist_item.xml index 97f3ac1a1..668ec817a 100644 --- a/app/src/main/res/layout/downloadlist_item.xml +++ b/app/src/main/res/layout/downloadlist_item.xml @@ -17,6 +17,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/listitem_threeline_horizontalpadding" + android:layout_marginStart="@dimen/listitem_threeline_horizontalpadding" android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" android:ellipsize="end" android:lines="1" @@ -48,6 +49,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:ellipsize="end" android:lines="1" android:textColor="?android:attr/textColorPrimary" @@ -60,6 +62,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:ellipsize="end" android:lines="1" android:textColor="?android:attr/textColorPrimary" diff --git a/app/src/main/res/layout/downloadlog_item.xml b/app/src/main/res/layout/downloadlog_item.xml index 712dda63e..505102ea4 100644 --- a/app/src/main/res/layout/downloadlog_item.xml +++ b/app/src/main/res/layout/downloadlog_item.xml @@ -17,6 +17,7 @@ android:layout_height="48sp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:textSize="48sp" android:gravity="center" /> @@ -26,7 +27,9 @@ android:layout_height="wrap_content" android:layout_below="@id/txtvIcon" android:layout_alignLeft="@id/txtvIcon" + android:layout_alignStart="@id/txtvIcon" android:layout_alignRight="@id/txtvIcon" + android:layout_alignEnd="@id/txtvIcon" android:layout_marginTop="8dp" android:text="{fa-repeat}" tools:text="↻" /> @@ -38,7 +41,9 @@ android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_marginBottom="8dp" tools:text="Media file" tools:background="@android:color/holo_green_dark" /> @@ -50,8 +55,11 @@ android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@id/txtvIcon" + android:layout_toEndOf="@id/txtvIcon" android:layout_toLeftOf="@id/txtvType" + android:layout_toStartOf="@id/txtvType" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_marginBottom="8dp" android:minLines="1" android:maxLines="2" @@ -64,8 +72,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/txtvIcon" + android:layout_toEndOf="@id/txtvIcon" android:layout_below="@id/txtvTitle" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_marginBottom="8dp" tools:text="January 23" tools:background="@android:color/holo_green_dark" /> @@ -76,7 +86,9 @@ android:layout_height="wrap_content" android:layout_below="@id/txtvDate" android:layout_toRightOf="@id/txtvIcon" + android:layout_toEndOf="@id/txtvIcon" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:textColor="?android:attr/textColorTertiary" android:textSize="@dimen/text_size_micro" tools:text="@string/design_time_downloaded_log_failure_reason" diff --git a/app/src/main/res/layout/ellipsize_start_listitem.xml b/app/src/main/res/layout/ellipsize_start_listitem.xml index 4a70ff982..1b6c48152 100644 --- a/app/src/main/res/layout/ellipsize_start_listitem.xml +++ b/app/src/main/res/layout/ellipsize_start_listitem.xml @@ -1,22 +1,22 @@ + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + tools:background="@android:color/darker_gray"> + android:singleLine="true" + android:textColor="?android:attr/textColorPrimary" + android:textSize="@dimen/text_size_small" + tools:background="@android:color/holo_green_dark" + tools:text="List item title" /> \ No newline at end of file diff --git a/app/src/main/res/layout/feedinfo.xml b/app/src/main/res/layout/feedinfo.xml index bb544d289..50061c4d8 100644 --- a/app/src/main/res/layout/feedinfo.xml +++ b/app/src/main/res/layout/feedinfo.xml @@ -36,7 +36,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" app:layout_row="0" app:layout_column="0" @@ -60,6 +62,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" app:layout_row="1" app:layout_column="0" @@ -83,6 +86,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" app:layout_row="2" app:layout_column="0" android:lines="1" diff --git a/app/src/main/res/layout/feeditem_fragment.xml b/app/src/main/res/layout/feeditem_fragment.xml index a6ce221db..78c0b3b16 100644 --- a/app/src/main/res/layout/feeditem_fragment.xml +++ b/app/src/main/res/layout/feeditem_fragment.xml @@ -32,6 +32,7 @@ android:layout_width="50dp" android:layout_height="50dp" android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:layout_marginBottom="16dp" android:contentDescription="@string/cover_label" android:gravity="center_vertical" @@ -45,6 +46,7 @@ android:layout_height="wrap_content" android:layout_alignTop="@id/imgvCover" android:layout_toRightOf="@id/imgvCover" + android:layout_toEndOf="@id/imgvCover" tools:text="Podcast title" tools:background="@android:color/holo_green_dark" /> @@ -54,6 +56,7 @@ android:layout_height="wrap_content" android:layout_below="@id/txtvPodcast" android:layout_toRightOf="@id/imgvCover" + android:layout_toEndOf="@id/imgvCover" android:textSize="16sp" android:textColor="?android:attr/textColorPrimary" android:ellipsize="end" @@ -67,6 +70,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/imgvCover" + android:layout_toEndOf="@id/imgvCover" android:layout_below="@id/txtvTitle" tools:text="00:42:23" tools:background="@android:color/holo_green_dark"/> @@ -77,8 +81,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_below="@id/txtvTitle" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" tools:text="Jan 23" tools:background="@android:color/holo_green_dark" /> @@ -98,7 +104,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:orientation="horizontal" tools:background="@android:color/holo_blue_bright"> @@ -108,6 +116,7 @@ android:layout_height="48dp" android:layout_gravity="center_vertical" android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:layout_weight="1" android:background="?attr/selectableItemBackground" android:ellipsize="end" @@ -123,6 +132,7 @@ android:layout_height="48dp" android:layout_gravity="center_vertical" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_weight="1" android:background="?attr/selectableItemBackground" android:ellipsize="end" diff --git a/app/src/main/res/layout/feeditemlist_header.xml b/app/src/main/res/layout/feeditemlist_header.xml index 1478e35d7..96131c00c 100644 --- a/app/src/main/res/layout/feeditemlist_header.xml +++ b/app/src/main/res/layout/feeditemlist_header.xml @@ -19,10 +19,12 @@ android:layout_width="@dimen/thumbnail_length_onlinefeedview" android:layout_height="@dimen/thumbnail_length_onlinefeedview" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_centerVertical="true" android:layout_marginBottom="16dp" android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:contentDescription="@string/cover_label" tools:src="@drawable/ic_stat_antenna_default" @@ -33,8 +35,10 @@ android:layout_width="40dp" android:layout_height="40dp" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentTop="true" android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" android:layout_marginTop="8dp" android:background="?attr/selectableItemBackground" android:contentDescription="@string/show_info_label" @@ -62,9 +66,12 @@ android:layout_alignParentTop="true" android:layout_marginBottom="16dp" android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:layout_toLeftOf="@id/butShowInfo" + android:layout_toStartOf="@id/butShowInfo" android:layout_toRightOf="@id/imgvCover" + android:layout_toEndOf="@id/imgvCover" android:ellipsize="end" android:maxLines="2" android:shadowColor="@color/black" @@ -80,8 +87,11 @@ android:layout_below="@id/txtvTitle" android:layout_marginBottom="16dp" android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" android:layout_toLeftOf="@id/butShowSettings" + android:layout_toStartOf="@id/butShowSettings" android:layout_toRightOf="@id/imgvCover" + android:layout_toEndOf="@id/imgvCover" android:ellipsize="end" android:lines="1" android:shadowColor="@color/black" diff --git a/app/src/main/res/layout/feeditemlist_item.xml b/app/src/main/res/layout/feeditemlist_item.xml index 5a2f091ec..21ea90113 100644 --- a/app/src/main/res/layout/feeditemlist_item.xml +++ b/app/src/main/res/layout/feeditemlist_item.xml @@ -13,6 +13,7 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginLeft="@dimen/listitem_threeline_horizontalpadding" + android:layout_marginStart="@dimen/listitem_threeline_horizontalpadding" android:layout_weight="1" android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" @@ -24,6 +25,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentTop="true" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" @@ -36,9 +38,11 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginBottom="4dp" android:layout_toLeftOf="@id/statusUnread" + android:layout_toStartOf="@id/statusUnread" tools:text="Episode title" tools:background="@android:color/holo_green_dark" /> @@ -48,6 +52,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_below="@id/txtvItemname" tools:text="00:42:23" tools:background="@android:color/holo_green_dark" /> @@ -57,8 +62,10 @@ android:layout_width="@dimen/enc_icons_size" android:layout_height="@dimen/enc_icons_size" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_below="@id/txtvItemname" android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:contentDescription="@string/in_queue_label" android:src="?attr/stat_playlist" android:visibility="visible" @@ -71,7 +78,9 @@ android:layout_height="@dimen/enc_icons_size" android:layout_below="@id/txtvItemname" android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:layout_toLeftOf="@id/imgvInPlaylist" + android:layout_toStartOf="@id/imgvInPlaylist" tools:ignore="ContentDescription" tools:src="@drawable/ic_hearing_white_18dp" tools:background="@android:color/holo_red_light" /> @@ -83,7 +92,9 @@ android:layout_height="wrap_content" android:layout_below="@id/txtvItemname" android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:layout_toLeftOf="@id/imgvType" + android:layout_toStartOf="@id/imgvType" tools:text="Jan 23" tools:background="@android:color/holo_green_dark" /> @@ -95,7 +106,9 @@ android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_toLeftOf="@id/txtvPublished" + android:layout_toStartOf="@id/txtvPublished" android:layout_toRightOf="@id/txtvLenSize" + android:layout_toEndOf="@id/txtvLenSize" android:layout_alignTop="@id/txtvPublished" android:layout_alignBottom="@id/txtvPublished" tools:background="@android:color/holo_blue_light" diff --git a/app/src/main/res/layout/feedsettings.xml b/app/src/main/res/layout/feedsettings.xml index 23d116d4c..9e5f2245b 100644 --- a/app/src/main/res/layout/feedsettings.xml +++ b/app/src/main/res/layout/feedsettings.xml @@ -39,7 +39,8 @@ app:layout_row="0" app:layout_column="0" app:layout_gravity="center_vertical" - android:layout_marginRight="10dp" /> + android:layout_marginRight="10dp" + android:layout_marginEnd="10dp" /> @@ -68,7 +69,9 @@ android:layout_height="wrap_content" android:layout_below="@id/etxtPassword" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_toLeftOf="@id/butLogin" + android:layout_toStartOf="@id/butLogin" android:textColor="@color/download_failed_red" android:textSize="@dimen/text_size_small" android:maxLines="2" @@ -84,7 +87,8 @@ android:layout_height="wrap_content" android:visibility="gone" android:layout_alignTop="@+id/butLogin" - android:layout_toLeftOf="@+id/butLogin"/> + android:layout_toLeftOf="@+id/butLogin" + android:layout_toStartOf="@+id/butLogin"/> + android:layout_alignLeft="@+id/etxtCaption" + android:layout_alignStart="@+id/etxtCaption"/>