licensed under the Simplified BSD license
(View)
diff --git a/build.gradle b/build.gradle
index 797e7c520..02f3be587 100644
--- a/build.gradle
+++ b/build.gradle
@@ -40,9 +40,9 @@ subprojects {
}
project.ext {
- compileSdkVersion = 26
+ compileSdkVersion = 28
minSdkVersion = 14
- targetSdkVersion = 26
+ targetSdkVersion = 28
supportVersion = "27.1.1"
lifecycle_version = "1.1.1"
@@ -52,7 +52,6 @@ project.ext {
commonslangVersion = "3.6"
commonstextVersion = "1.3"
eventbusVersion = "3.1.1"
- flattr4jVersion = "2.14"
glideVersion = "4.8.0"
glideOkhttpIntegrationVersion = "4.8.0"
iconifyVersion = "2.2.2"
diff --git a/core/build.gradle b/core/build.gradle
index c0ddd9f2d..08617c093 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -54,9 +54,6 @@ dependencies {
implementation "org.apache.commons:commons-lang3:$commonslangVersion"
implementation "org.apache.commons:commons-text:$commonstextVersion"
- implementation ("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") {
- exclude group: "org.json", module: "json"
- }
implementation "commons-io:commons-io:$commonsioVersion"
implementation "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion"
implementation "org.jsoup:jsoup:$jsoupVersion"
diff --git a/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java
index 88ae6d6bc..c17376639 100644
--- a/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java
+++ b/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java
@@ -27,8 +27,6 @@ public class ClientConfig {
public static GpodnetCallbacks gpodnetCallbacks;
- public static FlattrCallbacks flattrCallbacks;
-
public static DBTasksCallbacks dbTasksCallbacks;
public static CastCallbacks castCallbacks;
@@ -41,7 +39,6 @@ public class ClientConfig {
}
PodDBAdapter.init(context);
UserPreferences.init(context);
- UpdateManager.init(context);
PlaybackPreferences.init(context);
NetworkUtils.init(context);
SleepTimerPreferences.init(context);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/FlattrCallbacks.java b/core/src/main/java/de/danoeh/antennapod/core/FlattrCallbacks.java
deleted file mode 100644
index 5fa6faa13..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/FlattrCallbacks.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package de.danoeh.antennapod.core;
-
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-
-import org.shredzone.flattr4j.oauth.AccessToken;
-
-/**
- * Callbacks for the flattr integration of the app.
- */
-public interface FlattrCallbacks {
-
- /**
- * Returns if true if the flattr integration should be activated,
- * false otherwise.
- */
- boolean flattrEnabled();
-
- /**
- * Returns an intent that starts the activity that is responsible for
- * letting users log into their flattr account.
- *
- * @return The intent that starts the authentication activity or null
- * if flattr integration is disabled (i.e. flattrEnabled() == false).
- */
- Intent getFlattrAuthenticationActivityIntent(Context context);
-
- PendingIntent getFlattrFailedNotificationContentIntent(Context context);
-
- String getFlattrAppKey();
-
- String getFlattrAppSecret();
-
- void handleFlattrAuthenticationSuccess(AccessToken token);
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
deleted file mode 100644
index 1b4cbc0ea..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package de.danoeh.antennapod.core;
-
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.util.Log;
-
-import org.antennapod.audio.MediaPlayer;
-
-import de.danoeh.antennapod.core.preferences.UserPreferences;
-
-/*
- * This class's job is do perform maintenance tasks whenever the app has been updated
- */
-class UpdateManager {
-
- private UpdateManager(){}
-
- private static final String TAG = UpdateManager.class.getSimpleName();
-
- private static final String PREF_NAME = "app_version";
- private static final String KEY_VERSION_CODE = "version_code";
-
- private static int currentVersionCode;
-
- private static Context context;
- private static SharedPreferences prefs;
-
- public static void init(Context context) {
- UpdateManager.context = context;
- prefs = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
- PackageManager pm = context.getPackageManager();
- try {
- PackageInfo info = pm.getPackageInfo(context.getPackageName(), 0);
- currentVersionCode = info.versionCode;
- } catch (PackageManager.NameNotFoundException e) {
- Log.e(TAG, "Failed to obtain package info for package name: " + context.getPackageName(), e);
- currentVersionCode = 0;
- return;
- }
- final int oldVersionCode = getStoredVersionCode();
- Log.d(TAG, "old: " + oldVersionCode + ", current: " + currentVersionCode);
- if(oldVersionCode < currentVersionCode) {
- onUpgrade(oldVersionCode, currentVersionCode);
- setCurrentVersionCode();
- }
- }
-
- private static int getStoredVersionCode() {
- return prefs.getInt(KEY_VERSION_CODE, -1);
- }
-
- private static void setCurrentVersionCode() {
- prefs.edit().putInt(KEY_VERSION_CODE, currentVersionCode).apply();
- }
-
- private static void onUpgrade(final int oldVersionCode, final int newVersionCode) {
- if (oldVersionCode < 1050004) {
- if(MediaPlayer.isPrestoLibraryInstalled(context) && Build.VERSION.SDK_INT >= 16) {
- UserPreferences.enableSonic();
- }
- }
-
- if (oldVersionCode < 1070196) {
- // migrate episode cleanup value (unit changed from days to hours)
- int oldValueInDays = UserPreferences.getEpisodeCleanupValue();
- if (oldValueInDays > 0) {
- UserPreferences.setEpisodeCleanupValue(oldValueInDays * 24);
- } // else 0 or special negative values, no change needed
- }
- if (oldVersionCode < 1070197) {
- if (prefs.getBoolean("prefMobileUpdate", false)) {
- prefs.edit().putString(UserPreferences.PREF_MOBILE_UPDATE, "everything").apply();
- }
- }
- }
-
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
deleted file mode 100644
index 318e404c8..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
+++ /dev/null
@@ -1,231 +0,0 @@
-package de.danoeh.antennapod.core.asynctask;
-
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.os.AsyncTask;
-import android.support.annotation.NonNull;
-import android.support.v4.app.NotificationCompat;
-import android.util.Log;
-import android.widget.Toast;
-
-import org.shredzone.flattr4j.exception.FlattrException;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import de.danoeh.antennapod.core.BuildConfig;
-import de.danoeh.antennapod.core.ClientConfig;
-import de.danoeh.antennapod.core.R;
-import de.danoeh.antennapod.core.storage.DBReader;
-import de.danoeh.antennapod.core.storage.DBWriter;
-import de.danoeh.antennapod.core.util.NetworkUtils;
-import de.danoeh.antennapod.core.util.flattr.FlattrThing;
-import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
-import de.danoeh.antennapod.core.util.gui.NotificationUtils;
-
-/**
- * Performs a click action in a background thread.
- *
- * When started, the flattr click worker will try to flattr every item that is in the flattr queue. If no network
- * connection is available it will shut down immediately. The FlattrClickWorker can also be given one additional
- * FlattrThing which will be flattrd immediately.
- *
- * The FlattrClickWorker will display a toast notification for every item that has been flattrd. If the FlattrClickWorker failed
- * to flattr something, a notification will be displayed.
- */
-public class FlattrClickWorker extends AsyncTask
{
- private static final String TAG = "FlattrClickWorker";
-
- private static final int NOTIFICATION_ID = 4;
-
- private final Context context;
-
- public enum ExitCode {EXIT_NORMAL, NO_TOKEN, NO_NETWORK, NO_THINGS}
-
- private final AtomicInteger countFailed = new AtomicInteger();
- private final AtomicInteger countSuccess = new AtomicInteger();
-
- private volatile FlattrThing extraFlattrThing;
-
- /**
- * Only relevant if just one thing is flattrd
- */
- private volatile FlattrException exception;
-
- /**
- * Creates a new FlattrClickWorker which will only flattr all things in the queue.
- *
- * The FlattrClickWorker has to be started by calling executeAsync().
- *
- * @param context A context for accessing the database and posting notifications. Must not be null.
- */
- public FlattrClickWorker(@NonNull Context context) {
- this.context = context.getApplicationContext();
- }
-
- /**
- * Creates a new FlattrClickWorker which will flattr all things in the queue and one additional
- * FlattrThing.
- *
- * The FlattrClickWorker has to be started by calling executeAsync().
- *
- * @param context A context for accessing the database and posting notifications. Must not be null.
- * @param extraFlattrThing The additional thing to flattr
- */
- public FlattrClickWorker(Context context, FlattrThing extraFlattrThing) {
- this(context);
- this.extraFlattrThing = extraFlattrThing;
- }
-
-
- @Override
- protected ExitCode doInBackground(Void... params) {
-
- if (!FlattrUtils.hasToken()) {
- return ExitCode.NO_TOKEN;
- }
-
- if (!NetworkUtils.networkAvailable()) {
- return ExitCode.NO_NETWORK;
- }
-
- final List flattrQueue = DBReader.getFlattrQueue();
- if (extraFlattrThing != null) {
- flattrQueue.add(extraFlattrThing);
- } else if (flattrQueue.size() == 1) {
- // if only one item is flattrd, the report can specifically mentioned that this item has failed
- extraFlattrThing = flattrQueue.get(0);
- }
-
- if (flattrQueue.isEmpty()) {
- return ExitCode.NO_THINGS;
- }
-
- List> dbFutures = new LinkedList<>();
- for (FlattrThing thing : flattrQueue) {
- if (BuildConfig.DEBUG) Log.d(TAG, "Processing " + thing.getTitle());
-
- try {
- thing.getFlattrStatus().setUnflattred(); // pop from queue to prevent unflattrable things from getting stuck in flattr queue infinitely
- FlattrUtils.clickUrl(context, thing.getPaymentLink());
- thing.getFlattrStatus().setFlattred();
- publishProgress(R.string.flattr_click_success);
- countSuccess.incrementAndGet();
-
- } catch (FlattrException e) {
- e.printStackTrace();
- int failed = countFailed.incrementAndGet();
- if (failed == 1) {
- exception = e;
- }
- }
-
- Future> f = DBWriter.setFlattredStatus(context, thing, false);
- if (f != null) {
- dbFutures.add(f);
- }
- }
-
- for (Future> f : dbFutures) {
- try {
- f.get();
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
-
- return ExitCode.EXIT_NORMAL;
- }
-
- @Override
- protected void onPostExecute(ExitCode exitCode) {
- super.onPostExecute(exitCode);
- switch (exitCode) {
- case EXIT_NORMAL:
- if (countFailed.get() > 0) {
- postFlattrFailedNotification();
- }
- break;
- case NO_NETWORK:
- postToastNotification(R.string.flattr_click_enqueued);
- break;
- case NO_TOKEN:
- postNoTokenNotification();
- break;
- case NO_THINGS: // nothing to notify here
- break;
- }
- }
-
- @Override
- protected void onProgressUpdate(Integer... values) {
- super.onProgressUpdate(values);
- postToastNotification(values[0]);
- }
-
- private void postToastNotification(int msg) {
- Toast.makeText(context, context.getString(msg), Toast.LENGTH_LONG).show();
- }
-
- private void postNoTokenNotification() {
- PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
- ClientConfig.flattrCallbacks.getFlattrAuthenticationActivityIntent(context), 0);
-
- Notification notification = new NotificationCompat.Builder(context, NotificationUtils.CHANNEL_ID_ERROR)
- .setStyle(new NotificationCompat.BigTextStyle().bigText(context.getString(R.string.no_flattr_token_notification_msg)))
- .setContentIntent(contentIntent)
- .setContentTitle(context.getString(R.string.no_flattr_token_title))
- .setTicker(context.getString(R.string.no_flattr_token_title))
- .setSmallIcon(R.drawable.stat_notify_sync_error)
- .setOngoing(false)
- .setAutoCancel(true)
- .build();
- ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)).notify(NOTIFICATION_ID, notification);
- }
-
- private void postFlattrFailedNotification() {
- int failed = countFailed.get();
- if (failed == 0) {
- return;
- }
-
- PendingIntent contentIntent = ClientConfig.flattrCallbacks.getFlattrFailedNotificationContentIntent(context);
- String title;
- String subtext;
-
- if (failed == 1) {
- title = context.getString(R.string.flattrd_failed_label);
- String exceptionMsg = (exception.getMessage() != null) ? exception.getMessage() : "";
- subtext = context.getString(R.string.flattr_click_failure, extraFlattrThing.getTitle())
- + "\n" + exceptionMsg;
- } else {
- title = context.getString(R.string.flattrd_label);
- subtext = context.getString(R.string.flattr_click_success_count, countSuccess.get()) + "\n"
- + context.getString(R.string.flattr_click_failure_count, failed);
- }
-
- Notification notification = new NotificationCompat.Builder(context, NotificationUtils.CHANNEL_ID_ERROR)
- .setStyle(new NotificationCompat.BigTextStyle().bigText(subtext))
- .setContentIntent(contentIntent)
- .setContentTitle(title)
- .setTicker(title)
- .setSmallIcon(R.drawable.stat_notify_sync_error)
- .setOngoing(false)
- .setAutoCancel(true)
- .build();
- ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)).notify(NOTIFICATION_ID, notification);
- }
-
-
- /**
- * Starts the FlattrClickWorker as an AsyncTask.
- */
- public void executeAsync() {
- executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java
deleted file mode 100644
index 6d9ab2bd3..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package de.danoeh.antennapod.core.asynctask;
-
-import android.content.Context;
-import android.util.Log;
-
-import org.shredzone.flattr4j.exception.FlattrException;
-import org.shredzone.flattr4j.model.Flattr;
-
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-import de.danoeh.antennapod.core.BuildConfig;
-import de.danoeh.antennapod.core.storage.DBWriter;
-import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
-
-/**
- * Fetch list of flattred things and flattr status in database in a background thread.
- */
-
-public class FlattrStatusFetcher extends Thread {
- private static final String TAG = "FlattrStatusFetcher";
-
- public FlattrStatusFetcher(Context context) {
- super();
- }
-
- @Override
- public void run() {
- if (BuildConfig.DEBUG) Log.d(TAG, "Starting background work: Retrieving Flattr status");
-
- Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
-
- try {
- List flattredThings = FlattrUtils.retrieveFlattredThings();
- DBWriter.setFlattredStatus(flattredThings).get();
- } catch (FlattrException e) {
- e.printStackTrace();
- Log.d(TAG, "flattrQueue exception retrieving list with flattred items " + e.getMessage());
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
-
- if (BuildConfig.DEBUG) Log.d(TAG, "Finished background work: Retrieved Flattr status");
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java
deleted file mode 100644
index 985cabbf8..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package de.danoeh.antennapod.core.asynctask;
-
-
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.util.Log;
-
-import org.shredzone.flattr4j.exception.FlattrException;
-import org.shredzone.flattr4j.oauth.AccessToken;
-import org.shredzone.flattr4j.oauth.AndroidAuthenticator;
-
-import de.danoeh.antennapod.core.BuildConfig;
-import de.danoeh.antennapod.core.ClientConfig;
-import de.danoeh.antennapod.core.R;
-import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
-
-/**
- * Fetches the access token in the background in order to avoid networkOnMainThread exception.
- */
-
-public class FlattrTokenFetcher extends AsyncTask {
- private static final String TAG = "FlattrTokenFetcher";
- private final Context context;
- private final AndroidAuthenticator auth;
- private AccessToken token;
- private final Uri uri;
- private ProgressDialog dialog;
- private FlattrException exception;
-
- public FlattrTokenFetcher(Context context, AndroidAuthenticator auth, Uri uri) {
- super();
- this.context = context;
- this.auth = auth;
- this.uri = uri;
- }
-
- @Override
- protected void onPostExecute(AccessToken result) {
- if (result != null) {
- FlattrUtils.storeToken(result);
- }
- dialog.dismiss();
- if (exception == null) {
- ClientConfig.flattrCallbacks.handleFlattrAuthenticationSuccess(result);
- } else {
- FlattrUtils.showErrorDialog(context, exception.getMessage());
- }
- }
-
-
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- dialog = new ProgressDialog(context);
- dialog.setMessage(context.getString(R.string.processing_label));
- dialog.setIndeterminate(true);
- dialog.setCancelable(false);
- dialog.show();
- }
-
-
- @Override
- protected AccessToken doInBackground(Void... params) {
- try {
- token = auth.fetchAccessToken(uri);
- } catch (FlattrException e) {
- e.printStackTrace();
- exception = e;
- return null;
- }
- if (token != null) {
- if (BuildConfig.DEBUG) Log.d(TAG, "Successfully got token");
- return token;
- } else {
- Log.w(TAG, "Flattr token was null");
- return null;
- }
- }
-
- public void executeAsync() {
- executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- }
-
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/DownloaderUpdate.java b/core/src/main/java/de/danoeh/antennapod/core/event/DownloaderUpdate.java
index dcb033267..7ca6f78de 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/event/DownloaderUpdate.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/event/DownloaderUpdate.java
@@ -1,5 +1,7 @@
package de.danoeh.antennapod.core.event;
+import android.support.annotation.NonNull;
+
import java.util.Arrays;
import java.util.List;
@@ -11,6 +13,7 @@ import de.danoeh.antennapod.core.util.LongList;
public class DownloaderUpdate {
/* Downloaders that are currently running */
+ @NonNull
public final List downloaders;
/**
@@ -25,7 +28,7 @@ public class DownloaderUpdate {
*/
public final long[] mediaIds;
- public DownloaderUpdate(List downloaders) {
+ DownloaderUpdate(@NonNull List downloaders) {
this.downloaders = downloaders;
LongList feedIds1 = new LongList(), mediaIds1 = new LongList();
for(Downloader d1 : downloaders) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
index 3395653f3..5718c06c2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
@@ -11,15 +11,12 @@ import java.util.List;
import de.danoeh.antennapod.core.asynctask.ImageResource;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
-import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
-import de.danoeh.antennapod.core.util.flattr.FlattrThing;
-
/**
* Data Object for a whole feed
*
* @author daniel
*/
-public class Feed extends FeedFile implements FlattrThing, ImageResource {
+public class Feed extends FeedFile implements ImageResource {
public static final int FEEDFILETYPE_FEED = 0;
public static final String TYPE_RSS2 = "rss";
@@ -52,7 +49,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
*/
private String lastUpdate;
- private FlattrStatus flattrStatus;
private String paymentLink;
/**
* Feed type, for example RSS 2 or Atom
@@ -97,7 +93,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
*/
public Feed(long id, String lastUpdate, String title, String customTitle, String link, String description, String paymentLink,
String author, String language, String type, String feedIdentifier, String imageUrl, String fileUrl,
- String downloadUrl, boolean downloaded, FlattrStatus status, boolean paged, String nextPageLink,
+ String downloadUrl, boolean downloaded, boolean paged, String nextPageLink,
String filter, boolean lastUpdateFailed) {
super(fileUrl, downloadUrl, downloaded);
this.id = id;
@@ -112,7 +108,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
this.type = type;
this.feedIdentifier = feedIdentifier;
this.imageUrl = imageUrl;
- this.flattrStatus = status;
this.paged = paged;
this.nextPageLink = nextPageLink;
this.items = new ArrayList<>();
@@ -125,13 +120,13 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
}
/**
- * This constructor is used for test purposes and uses a default flattr status object.
+ * This constructor is used for test purposes
*/
public Feed(long id, String lastUpdate, String title, String link, String description, String paymentLink,
String author, String language, String type, String feedIdentifier, String imageUrl, String fileUrl,
String downloadUrl, boolean downloaded) {
this(id, lastUpdate, title, null, link, description, paymentLink, author, language, type, feedIdentifier, imageUrl,
- fileUrl, downloadUrl, downloaded, new FlattrStatus(), false, null, null, false);
+ fileUrl, downloadUrl, downloaded, false, null, null, false);
}
/**
@@ -139,7 +134,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
*/
public Feed() {
super();
- this.flattrStatus = new FlattrStatus();
}
/**
@@ -149,7 +143,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
public Feed(String url, String lastUpdate) {
super(null, url, false);
this.lastUpdate = lastUpdate;
- this.flattrStatus = new FlattrStatus();
}
/**
@@ -159,7 +152,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
public Feed(String url, String lastUpdate, String title) {
this(url, lastUpdate);
this.feedTitle = title;
- this.flattrStatus = new FlattrStatus();
}
/**
@@ -186,7 +178,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
int indexFileUrl = cursor.getColumnIndex(PodDBAdapter.KEY_FILE_URL);
int indexDownloadUrl = cursor.getColumnIndex(PodDBAdapter.KEY_DOWNLOAD_URL);
int indexDownloaded = cursor.getColumnIndex(PodDBAdapter.KEY_DOWNLOADED);
- int indexFlattrStatus = cursor.getColumnIndex(PodDBAdapter.KEY_FLATTR_STATUS);
int indexIsPaged = cursor.getColumnIndex(PodDBAdapter.KEY_IS_PAGED);
int indexNextPageLink = cursor.getColumnIndex(PodDBAdapter.KEY_NEXT_PAGE_LINK);
int indexHide = cursor.getColumnIndex(PodDBAdapter.KEY_HIDE);
@@ -209,7 +200,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
cursor.getString(indexFileUrl),
cursor.getString(indexDownloadUrl),
cursor.getInt(indexDownloaded) > 0,
- new FlattrStatus(cursor.getLong(indexFlattrStatus)),
cursor.getInt(indexIsPaged) > 0,
cursor.getString(indexNextPageLink),
cursor.getString(indexHide),
@@ -291,9 +281,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
if (other.paymentLink != null) {
paymentLink = other.paymentLink;
}
- if (other.flattrStatus != null) {
- flattrStatus = other.flattrStatus;
- }
// this feed's nextPage might already point to a higher page, so we only update the nextPage value
// if this feed is not paged and the other feed is.
if (!this.paged && other.paged) {
@@ -444,14 +431,6 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
this.feedIdentifier = feedIdentifier;
}
- public void setFlattrStatus(FlattrStatus status) {
- this.flattrStatus = status;
- }
-
- public FlattrStatus getFlattrStatus() {
- return flattrStatus;
- }
-
public String getPaymentLink() {
return paymentLink;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
index 0f0343f25..3495164a6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
@@ -18,15 +18,13 @@ import de.danoeh.antennapod.core.asynctask.ImageResource;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
import de.danoeh.antennapod.core.util.ShownotesProvider;
-import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
-import de.danoeh.antennapod.core.util.flattr.FlattrThing;
/**
* Data Object for a XML message
*
* @author daniel
*/
-public class FeedItem extends FeedComponent implements ShownotesProvider, FlattrThing, ImageResource {
+public class FeedItem extends FeedComponent implements ShownotesProvider, ImageResource {
/** tag that indicates this item is in the queue */
public static final String TAG_QUEUE = "Queue";
@@ -60,7 +58,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
public static final int PLAYED = 1;
private String paymentLink;
- private final FlattrStatus flattrStatus;
/**
* Is true if the database contains any chapters that belong to this item. This attribute is only
@@ -92,7 +89,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
public FeedItem() {
this.state = UNPLAYED;
- this.flattrStatus = new FlattrStatus();
this.hasChapters = false;
}
@@ -100,7 +96,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
* This constructor is used by DBReader.
* */
public FeedItem(long id, String title, String link, Date pubDate, String paymentLink, long feedId,
- FlattrStatus flattrStatus, boolean hasChapters, String imageUrl, int state,
+ boolean hasChapters, String imageUrl, int state,
String itemIdentifier, long autoDownload) {
this.id = id;
this.title = title;
@@ -108,7 +104,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
this.pubDate = pubDate;
this.paymentLink = paymentLink;
this.feedId = feedId;
- this.flattrStatus = flattrStatus;
this.hasChapters = hasChapters;
this.imageUrl = imageUrl;
this.state = state;
@@ -127,7 +122,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
this.pubDate = (pubDate != null) ? (Date) pubDate.clone() : null;
this.state = state;
this.feed = feed;
- this.flattrStatus = new FlattrStatus();
this.hasChapters = false;
}
@@ -142,7 +136,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
this.pubDate = (pubDate != null) ? (Date) pubDate.clone() : null;
this.state = state;
this.feed = feed;
- this.flattrStatus = new FlattrStatus();
this.hasChapters = hasChapters;
}
@@ -153,7 +146,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
int indexPubDate = cursor.getColumnIndex(PodDBAdapter.KEY_PUBDATE);
int indexPaymentLink = cursor.getColumnIndex(PodDBAdapter.KEY_PAYMENT_LINK);
int indexFeedId = cursor.getColumnIndex(PodDBAdapter.KEY_FEED);
- int indexFlattrStatus = cursor.getColumnIndex(PodDBAdapter.KEY_FLATTR_STATUS);
int indexHasChapters = cursor.getColumnIndex(PodDBAdapter.KEY_HAS_CHAPTERS);
int indexRead = cursor.getColumnIndex(PodDBAdapter.KEY_READ);
int indexItemIdentifier = cursor.getColumnIndex(PodDBAdapter.KEY_ITEM_IDENTIFIER);
@@ -167,13 +159,12 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
String paymentLink = cursor.getString(indexPaymentLink);
long feedId = cursor.getLong(indexFeedId);
boolean hasChapters = cursor.getInt(indexHasChapters) > 0;
- FlattrStatus flattrStatus = new FlattrStatus(cursor.getLong(indexFlattrStatus));
int state = cursor.getInt(indexRead);
String itemIdentifier = cursor.getString(indexItemIdentifier);
long autoDownload = cursor.getLong(indexAutoDownload);
String imageUrl = cursor.getString(indexImageUrl);
- return new FeedItem(id, title, link, pubDate, paymentLink, feedId, flattrStatus,
+ return new FeedItem(id, title, link, pubDate, paymentLink, feedId,
hasChapters, imageUrl, state, itemIdentifier, autoDownload);
}
@@ -329,10 +320,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
public void setContentEncoded(String contentEncoded) {
this.contentEncoded = contentEncoded;
}
-
- public FlattrStatus getFlattrStatus() {
- return flattrStatus;
- }
public String getPaymentLink() {
return paymentLink;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
index f3a43e2d0..218570632 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
@@ -25,7 +25,6 @@ import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
import de.danoeh.antennapod.core.util.ChapterUtils;
-import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
import de.danoeh.antennapod.core.util.playback.Playable;
public class FeedMedia extends FeedFile implements Playable {
@@ -49,7 +48,7 @@ public class FeedMedia extends FeedFile implements Playable {
private int duration;
private int position; // Current position in file
private long lastPlayedTime; // Last time this media was played (in ms)
- private int played_duration; // How many ms of this file have been played (for autoflattring)
+ private int played_duration; // How many ms of this file have been played
private long size; // File size in Byte
private String mime_type;
@Nullable private volatile FeedItem item;
@@ -526,16 +525,6 @@ public class FeedMedia extends FeedFile implements Playable {
.build();
GpodnetPreferences.enqueueEpisodeAction(action);
}
- // Auto flattr
- float autoFlattrThreshold = UserPreferences.getAutoFlattrPlayedDurationThreshold();
- if (FlattrUtils.hasToken() &&
- UserPreferences.isAutoFlattr() &&
- item.getPaymentLink() != null &&
- item.getFlattrStatus().getUnflattred() &&
- ((completed && autoFlattrThreshold <= 1.0f) ||
- (played_duration >= autoFlattrThreshold * duration))) {
- DBTasks.flattrItemIfLoggedIn(context, item);
- }
}
}
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 cfa217a12..9348ca807 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
@@ -95,8 +95,6 @@ public class UserPreferences {
private static final String PREF_PROXY_PASSWORD = "prefProxyPassword";
// Services
- private static final String PREF_AUTO_FLATTR = "pref_auto_flattr";
- private static final String PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD = "prefAutoFlattrPlayedDurationThreshold";
private static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications";
// Other
@@ -318,10 +316,6 @@ public class UserPreferences {
return prefs.getBoolean(PREF_DELETE_REMOVES_FROM_QUEUE, false);
}
- public static boolean isAutoFlattr() {
- return prefs.getBoolean(PREF_AUTO_FLATTR, false);
- }
-
public static String getPlaybackSpeed() {
return prefs.getString(PREF_PLAYBACK_SPEED, "1.00");
}
@@ -450,16 +444,7 @@ public class UserPreferences {
}
public static int getRewindSecs() {
- return prefs.getInt(PREF_REWIND_SECS, 30);
- }
-
-
- /**
- * Returns the time after which an episode should be auto-flattr'd in percent of the episode's
- * duration.
- */
- public static float getAutoFlattrPlayedDurationThreshold() {
- return prefs.getFloat(PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD, 0.8f);
+ return prefs.getInt(PREF_REWIND_SECS, 10);
}
public static String[] getAutodownloadSelectedNetworks() {
@@ -588,23 +573,6 @@ public class UserPreferences {
AutoUpdateManager.disableAutoUpdate();
}
- /**
- * Change the auto-flattr settings
- *
- * @param enabled Whether automatic flattring should be enabled at all
- * @param autoFlattrThreshold The percentage of playback time after which an episode should be
- * flattrd. Must be a value between 0 and 1 (inclusive)
- * */
- public static void setAutoFlattrSettings( boolean enabled, float autoFlattrThreshold) {
- if(autoFlattrThreshold < 0.0 || autoFlattrThreshold > 1.0) {
- throw new IllegalArgumentException("Flattr threshold must be in range [0.0, 1.0]");
- }
- prefs.edit()
- .putBoolean(PREF_AUTO_FLATTR, enabled)
- .putFloat(PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD, autoFlattrThreshold)
- .apply();
- }
-
public static boolean gpodnetNotificationsEnabled() {
return prefs.getBoolean(PREF_GPODNET_NOTIFICATIONS, true);
}
@@ -681,12 +649,16 @@ public class UserPreferences {
return selectedSpeeds;
}
+ public static String getMediaPlayer() {
+ return prefs.getString(PREF_MEDIA_PLAYER, PREF_MEDIA_PLAYER_EXOPLAYER);
+ }
+
public static boolean useSonic() {
- return prefs.getString(PREF_MEDIA_PLAYER, "sonic").equals("sonic");
+ return getMediaPlayer().equals("sonic");
}
public static boolean useExoplayer() {
- return prefs.getString(PREF_MEDIA_PLAYER, "sonic").equals(PREF_MEDIA_PLAYER_EXOPLAYER);
+ return getMediaPlayer().equals(PREF_MEDIA_PLAYER_EXOPLAYER);
}
public static void enableSonic() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
index 1165d689a..b26d3011d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
@@ -41,6 +41,7 @@ public class PlayerWidgetJobService extends SafeJobIntentService {
private PlaybackService playbackService;
private final Object waitForService = new Object();
+ private final Object waitUsingService = new Object();
private static final int JOB_ID = -17001;
@@ -67,7 +68,11 @@ public class PlayerWidgetJobService extends SafeJobIntentService {
}
}
- updateViews();
+ synchronized (waitUsingService) {
+ if (playbackService != null) {
+ updateViews();
+ }
+ }
if (playbackService != null) {
try {
@@ -230,7 +235,9 @@ public class PlayerWidgetJobService extends SafeJobIntentService {
@Override
public void onServiceDisconnected(ComponentName name) {
- playbackService = null;
+ synchronized (waitUsingService) {
+ playbackService = null;
+ }
Log.d(TAG, "Disconnected from service");
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
index 7988526d9..9a8353806 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
@@ -243,7 +243,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
callback.onMediaChanged(false);
if (stream) {
mediaPlayer.setDataSource(media.getStreamUrl());
- } else if (new File(media.getLocalMediaUrl()).canRead()) {
+ } else if (media.getLocalMediaUrl() != null && new File(media.getLocalMediaUrl()).canRead()) {
mediaPlayer.setDataSource(media.getLocalMediaUrl());
} else {
throw new IOException("Unable to read local file " + media.getLocalMediaUrl());
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
index 1b579f99a..19faa5aed 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
@@ -26,7 +26,6 @@ import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.comparator.DownloadStatusComparator;
import de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator;
import de.danoeh.antennapod.core.util.comparator.PlaybackCompletionDateComparator;
-import de.danoeh.antennapod.core.util.flattr.FlattrThing;
/**
* Provides methods for reading data from the AntennaPod database.
@@ -1003,36 +1002,6 @@ public final class DBReader {
}
}
- /**
- * Returns the flattr queue as a List of FlattrThings. The list consists of Feeds and FeedItems.
- *
- * @return The flattr queue as a List.
- */
- public static List getFlattrQueue() {
- Log.d(TAG, "getFlattrQueue() called with: " + "");
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- List result = new ArrayList<>();
-
- // load feeds
- Cursor feedCursor = adapter.getFeedsInFlattrQueueCursor();
- if (feedCursor.moveToFirst()) {
- do {
- result.add(extractFeedFromCursorRow(feedCursor));
- } while (feedCursor.moveToNext());
- }
- feedCursor.close();
-
- //load feed items
- Cursor feedItemCursor = adapter.getFeedItemsInFlattrQueueCursor();
- result.addAll(extractItemlistFromCursor(adapter, feedItemCursor));
- feedItemCursor.close();
-
- adapter.close();
- Log.d(TAG, "Returning flattrQueueIterator for queue with " + result.size() + " items.");
- return result;
- }
-
/**
* Returns data necessary for displaying the navigation drawer. This includes
* the list of subscriptions, the number of items in the queue and the number of unread
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index dab8e19b5..e68bff16e 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -20,8 +20,6 @@ import java.util.concurrent.FutureTask;
import java.util.concurrent.atomic.AtomicBoolean;
import de.danoeh.antennapod.core.ClientConfig;
-import de.danoeh.antennapod.core.asynctask.FlattrClickWorker;
-import de.danoeh.antennapod.core.asynctask.FlattrStatusFetcher;
import de.danoeh.antennapod.core.feed.EventDistributor;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedItem;
@@ -35,7 +33,6 @@ import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator;
import de.danoeh.antennapod.core.util.exception.MediaFileNotFoundException;
-import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
import static android.content.Context.MODE_PRIVATE;
@@ -182,14 +179,6 @@ public final class DBTasks {
SharedPreferences prefs = context.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
prefs.edit().putLong(PREF_LAST_REFRESH, System.currentTimeMillis()).apply();
- if (FlattrUtils.hasToken()) {
- Log.d(TAG, "Flattring all pending things.");
- new FlattrClickWorker(context).executeAsync(); // flattr pending things
-
- Log.d(TAG, "Fetching flattr status.");
- new FlattrStatusFetcher(context).start();
-
- }
if (ClientConfig.gpodnetCallbacks.gpodnetEnabled()) {
GpodnetSyncService.sendSyncIntent(context);
}
@@ -771,37 +760,4 @@ public final class DBTasks {
this.result = result;
}
}
-
- /**
- * Adds the given FeedItem to the flattr queue if the user is logged in. Otherwise, a dialog
- * will be opened that lets the user go either to the login screen or the website of the flattr thing.
- *
- * @param context
- * @param item
- */
- public static void flattrItemIfLoggedIn(Context context, FeedItem item) {
- if (FlattrUtils.hasToken()) {
- item.getFlattrStatus().setFlattrQueue();
- DBWriter.setFlattredStatus(context, item, true);
- } else {
- FlattrUtils.showNoTokenDialogOrRedirect(context, item.getPaymentLink());
- }
- }
-
- /**
- * Adds the given Feed to the flattr queue if the user is logged in. Otherwise, a dialog
- * will be opened that lets the user go either to the login screen or the website of the flattr thing.
- *
- * @param context
- * @param feed
- */
- public static void flattrFeedIfLoggedIn(Context context, Feed feed) {
- if (FlattrUtils.hasToken()) {
- feed.getFlattrStatus().setFlattrQueue();
- DBWriter.setFlattredStatus(context, feed, true);
- } else {
- FlattrUtils.showNoTokenDialogOrRedirect(context, feed.getPaymentLink());
- }
- }
-
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java
index 0beb765e7..306f8d104 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java
@@ -76,10 +76,10 @@ class DBUpgrader {
}
if (oldVersion <= 10) {
db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + PodDBAdapter.KEY_FLATTR_STATUS
+ + " ADD COLUMN flattr_status"
+ " INTEGER");
db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
- + " ADD COLUMN " + PodDBAdapter.KEY_FLATTR_STATUS
+ + " ADD COLUMN flattr_status"
+ " INTEGER");
db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ " ADD COLUMN " + PodDBAdapter.KEY_PLAYED_DURATION
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
index 515b463db..2de811788 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
@@ -9,7 +9,6 @@ import android.support.annotation.NonNull;
import android.util.Log;
import org.greenrobot.eventbus.EventBus;
-import org.shredzone.flattr4j.model.Flattr;
import java.io.File;
import java.io.UnsupportedEncodingException;
@@ -26,7 +25,6 @@ import java.util.concurrent.Future;
import de.danoeh.antennapod.core.ClientConfig;
import de.danoeh.antennapod.core.R;
-import de.danoeh.antennapod.core.asynctask.FlattrClickWorker;
import de.danoeh.antennapod.core.event.FavoritesEvent;
import de.danoeh.antennapod.core.event.FeedItemEvent;
import de.danoeh.antennapod.core.event.MessageEvent;
@@ -47,9 +45,6 @@ import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.Permutor;
import de.danoeh.antennapod.core.util.QueueSorter;
-import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
-import de.danoeh.antennapod.core.util.flattr.FlattrThing;
-import de.danoeh.antennapod.core.util.flattr.SimpleFlattrThing;
/**
* Provides methods for writing data to AntennaPod's database.
@@ -685,7 +680,7 @@ public class DBWriter {
*
* @param feedId ID of the Feed.
*/
- public static Future> markFeedSeen(final long feedId) {
+ public static Future> removeFeedNewFlag(final long feedId) {
return dbExec.submit(() -> {
final PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
@@ -729,7 +724,7 @@ public class DBWriter {
/**
* Sets the 'read'-attribute of all NEW FeedItems to UNPLAYED.
*/
- public static Future> markNewItemsSeen() {
+ public static Future> removeAllNewFlags() {
return dbExec.submit(() -> {
final PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
@@ -854,44 +849,6 @@ public class DBWriter {
return -1;
}
- /**
- * Saves the FlattrStatus of a FeedItem object in the database.
- *
- * @param startFlattrClickWorker true if FlattrClickWorker should be started after the FlattrStatus has been saved
- */
- private static Future> setFeedItemFlattrStatus(final Context context,
- final FeedItem item,
- final boolean startFlattrClickWorker) {
- return dbExec.submit(() -> {
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- adapter.setFeedItemFlattrStatus(item);
- adapter.close();
- if (startFlattrClickWorker) {
- new FlattrClickWorker(context).executeAsync();
- }
- });
- }
-
- /**
- * Saves the FlattrStatus of a Feed object in the database.
- *
- * @param startFlattrClickWorker true if FlattrClickWorker should be started after the FlattrStatus has been saved
- */
- private static Future> setFeedFlattrStatus(final Context context,
- final Feed feed,
- final boolean startFlattrClickWorker) {
- return dbExec.submit(() -> {
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- adapter.setFeedFlattrStatus(feed);
- adapter.close();
- if (startFlattrClickWorker) {
- new FlattrClickWorker(context).executeAsync();
- }
- });
- }
-
/**
* Saves if a feed's last update failed
*
@@ -917,77 +874,6 @@ public class DBWriter {
});
}
-
- /**
- * format an url for querying the database
- * (postfix a / and apply percent-encoding)
- */
- private static String formatURIForQuery(String uri) {
- try {
- return URLEncoder.encode(uri.endsWith("/") ? uri.substring(0, uri.length() - 1) : uri, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- Log.e(TAG, e.getMessage());
- return "";
- }
- }
-
-
- /**
- * Set flattr status of the passed thing (either a FeedItem or a Feed)
- *
- * @param context
- * @param thing
- * @param startFlattrClickWorker true if FlattrClickWorker should be started after the FlattrStatus has been saved
- * @return
- */
- public static Future> setFlattredStatus(Context context, FlattrThing thing, boolean startFlattrClickWorker) {
- // must propagate this to back db
- if (thing instanceof FeedItem) {
- return setFeedItemFlattrStatus(context, (FeedItem) thing, startFlattrClickWorker);
- } else if (thing instanceof Feed) {
- return setFeedFlattrStatus(context, (Feed) thing, startFlattrClickWorker);
- } else if (thing instanceof SimpleFlattrThing) {
- // SimpleFlattrThings are generated on the fly and do not have DB backing
- } else {
- Log.e(TAG, "flattrQueue processing - thing is neither FeedItem nor Feed nor SimpleFlattrThing");
- }
-
- return null;
- }
-
- /**
- * Reset flattr status to unflattrd for all items
- */
- public static Future> clearAllFlattrStatus() {
- Log.d(TAG, "clearAllFlattrStatus()");
- return dbExec.submit(() -> {
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- adapter.clearAllFlattrStatus();
- adapter.close();
- });
- }
-
- /**
- * Set flattr status of the feeds/feeditems in flattrList to flattred at the given timestamp,
- * where the information has been retrieved from the flattr API
- */
- public static Future> setFlattredStatus(final List flattrList) {
- Log.d(TAG, "setFlattredStatus to status retrieved from flattr api running with " + flattrList.size() + " items");
- // clear flattr status in db
- clearAllFlattrStatus();
-
- // submit list with flattred things having normalized URLs to db
- return dbExec.submit(() -> {
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- for (Flattr flattr : flattrList) {
- adapter.setItemFlattrStatus(formatURIForQuery(flattr.getThing().getUrl()), new FlattrStatus(flattr.getCreated().getTime()));
- }
- adapter.close();
- });
- }
-
/**
* Sort the FeedItems in the queue with the given Permutor.
*
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index 405c246c9..f7956372b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -38,7 +38,6 @@ import de.danoeh.antennapod.core.feed.FeedPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.util.LongIntMap;
-import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
import org.greenrobot.eventbus.EventBus;
// TODO Remove media column from feeditem table
@@ -96,7 +95,6 @@ public class PodDBAdapter {
public static final String KEY_HAS_CHAPTERS = "has_simple_chapters";
public static final String KEY_TYPE = "type";
public static final String KEY_ITEM_IDENTIFIER = "item_identifier";
- public static final String KEY_FLATTR_STATUS = "flattr_status";
public static final String KEY_FEED_IDENTIFIER = "feed_identifier";
public static final String KEY_REASON_DETAILED = "reason_detailed";
public static final String KEY_DOWNLOADSTATUS_TITLE = "title";
@@ -139,7 +137,6 @@ public class PodDBAdapter {
+ KEY_LASTUPDATE + " TEXT," + KEY_LANGUAGE + " TEXT," + KEY_AUTHOR
+ " TEXT," + KEY_IMAGE_URL + " TEXT," + KEY_TYPE + " TEXT,"
+ KEY_FEED_IDENTIFIER + " TEXT," + KEY_AUTO_DOWNLOAD + " INTEGER DEFAULT 1,"
- + KEY_FLATTR_STATUS + " INTEGER,"
+ KEY_USERNAME + " TEXT,"
+ KEY_PASSWORD + " TEXT,"
+ KEY_INCLUDE_FILTER + " TEXT DEFAULT '',"
@@ -158,7 +155,6 @@ public class PodDBAdapter {
+ KEY_DESCRIPTION + " TEXT," + KEY_PAYMENT_LINK + " TEXT,"
+ KEY_MEDIA + " INTEGER," + KEY_FEED + " INTEGER,"
+ KEY_HAS_CHAPTERS + " INTEGER," + KEY_ITEM_IDENTIFIER + " TEXT,"
- + KEY_FLATTR_STATUS + " INTEGER,"
+ KEY_IMAGE_URL + " TEXT,"
+ KEY_AUTO_DOWNLOAD + " INTEGER)";
@@ -239,7 +235,6 @@ public class PodDBAdapter {
TABLE_NAME_FEEDS + "." + KEY_FEED_IDENTIFIER,
TABLE_NAME_FEEDS + "." + KEY_AUTO_DOWNLOAD,
TABLE_NAME_FEEDS + "." + KEY_KEEP_UPDATED,
- TABLE_NAME_FEEDS + "." + KEY_FLATTR_STATUS,
TABLE_NAME_FEEDS + "." + KEY_IS_PAGED,
TABLE_NAME_FEEDS + "." + KEY_NEXT_PAGE_LINK,
TABLE_NAME_FEEDS + "." + KEY_USERNAME,
@@ -266,7 +261,6 @@ public class PodDBAdapter {
TABLE_NAME_FEED_ITEMS + "." + KEY_FEED,
TABLE_NAME_FEED_ITEMS + "." + KEY_HAS_CHAPTERS,
TABLE_NAME_FEED_ITEMS + "." + KEY_ITEM_IDENTIFIER,
- TABLE_NAME_FEED_ITEMS + "." + KEY_FLATTR_STATUS,
TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE_URL,
TABLE_NAME_FEED_ITEMS + "." + KEY_AUTO_DOWNLOAD
};
@@ -382,9 +376,6 @@ public class PodDBAdapter {
values.put(KEY_TYPE, feed.getType());
values.put(KEY_FEED_IDENTIFIER, feed.getFeedIdentifier());
- Log.d(TAG, "Setting feed with flattr status " + feed.getTitle() + ": " + feed.getFlattrStatus().toLong());
-
- values.put(KEY_FLATTR_STATUS, feed.getFlattrStatus().toLong());
values.put(KEY_IS_PAGED, feed.isPaged());
values.put(KEY_NEXT_PAGE_LINK, feed.getNextPageLink());
if (feed.getItemFilter() != null && feed.getItemFilter().getValues().length > 0) {
@@ -515,31 +506,6 @@ public class PodDBAdapter {
}
}
- /**
- * Update the flattr status of a feed
- */
- public void setFeedFlattrStatus(Feed feed) {
- ContentValues values = new ContentValues();
- values.put(KEY_FLATTR_STATUS, feed.getFlattrStatus().toLong());
- db.update(TABLE_NAME_FEEDS, values, KEY_ID + "=?", new String[]{String.valueOf(feed.getId())});
- }
-
- /**
- * Get all feeds in the flattr queue.
- */
- public Cursor getFeedsInFlattrQueueCursor() {
- return db.query(TABLE_NAME_FEEDS, FEED_SEL_STD, KEY_FLATTR_STATUS + "=?",
- new String[]{String.valueOf(FlattrStatus.STATUS_QUEUE)}, null, null, null);
- }
-
- /**
- * Get all feed items in the flattr queue.
- */
- public Cursor getFeedItemsInFlattrQueueCursor() {
- return db.query(TABLE_NAME_FEED_ITEMS, FEEDITEM_SEL_FI_SMALL, KEY_FLATTR_STATUS + "=?",
- new String[]{String.valueOf(FlattrStatus.STATUS_QUEUE)}, null, null, null);
- }
-
/**
* Updates the download URL of a Feed.
*/
@@ -577,61 +543,6 @@ public class PodDBAdapter {
return result;
}
- /**
- * Update the flattr status of a FeedItem
- */
- public void setFeedItemFlattrStatus(FeedItem feedItem) {
- ContentValues values = new ContentValues();
- values.put(KEY_FLATTR_STATUS, feedItem.getFlattrStatus().toLong());
- db.update(TABLE_NAME_FEED_ITEMS, values, KEY_ID + "=?", new String[]{String.valueOf(feedItem.getId())});
- }
-
- /**
- * Update the flattr status of a feed or feed item specified by its payment link
- * and the new flattr status to use
- */
- public void setItemFlattrStatus(String url, FlattrStatus status) {
- //Log.d(TAG, "setItemFlattrStatus(" + url + ") = " + status.toString());
- ContentValues values = new ContentValues();
- values.put(KEY_FLATTR_STATUS, status.toLong());
-
- // regexps in sqlite would be neat!
- String[] query_urls = new String[]{
- "*" + url + "&*",
- "*" + url + "%2F&*",
- "*" + url + "",
- "*" + url + "%2F"
- };
-
- if (db.update(TABLE_NAME_FEEDS, values,
- KEY_PAYMENT_LINK + " GLOB ?"
- + " OR " + KEY_PAYMENT_LINK + " GLOB ?"
- + " OR " + KEY_PAYMENT_LINK + " GLOB ?"
- + " OR " + KEY_PAYMENT_LINK + " GLOB ?", query_urls
- ) > 0) {
- Log.i(TAG, "setItemFlattrStatus found match for " + url + " = " + status.toLong() + " in Feeds table");
- return;
- }
- if (db.update(TABLE_NAME_FEED_ITEMS, values,
- KEY_PAYMENT_LINK + " GLOB ?"
- + " OR " + KEY_PAYMENT_LINK + " GLOB ?"
- + " OR " + KEY_PAYMENT_LINK + " GLOB ?"
- + " OR " + KEY_PAYMENT_LINK + " GLOB ?", query_urls
- ) > 0) {
- Log.i(TAG, "setItemFlattrStatus found match for " + url + " = " + status.toLong() + " in FeedsItems table");
- }
- }
-
- /**
- * Reset flattr status to unflattrd for all items
- */
- public void clearAllFlattrStatus() {
- ContentValues values = new ContentValues();
- values.put(KEY_FLATTR_STATUS, 0);
- db.update(TABLE_NAME_FEEDS, values, null, null);
- db.update(TABLE_NAME_FEED_ITEMS, values, null, null);
- }
-
/**
* Inserts or updates a feeditem entry
*
@@ -665,7 +576,6 @@ public class PodDBAdapter {
}
values.put(KEY_HAS_CHAPTERS, item.getChapters() != null || item.hasChapters());
values.put(KEY_ITEM_IDENTIFIER, item.getItemIdentifier());
- values.put(KEY_FLATTR_STATUS, item.getFlattrStatus().toLong());
values.put(KEY_AUTO_DOWNLOAD, item.getAutoDownload());
values.put(KEY_IMAGE_URL, item.getImageUrl());
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
deleted file mode 100644
index d4d5843d2..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package de.danoeh.antennapod.core.util.flattr;
-
-import android.util.Log;
-
-import org.shredzone.flattr4j.FlattrFactory;
-import org.shredzone.flattr4j.FlattrService;
-import org.shredzone.flattr4j.oauth.AccessToken;
-
-import de.danoeh.antennapod.core.BuildConfig;
-
-/** Ensures that only one instance of the FlattrService class exists at a time */
-
-class FlattrServiceCreator {
- private FlattrServiceCreator(){}
-
- public static final String TAG = "FlattrServiceCreator";
-
- private static volatile FlattrService flattrService;
-
- public static synchronized FlattrService getService(AccessToken token) {
- if (flattrService == null) {
- flattrService = FlattrFactory.getInstance().createFlattrService(token);
- }
- return flattrService;
- }
-
- public static synchronized void deleteFlattrService() {
- if (BuildConfig.DEBUG) Log.d(TAG, "Deleting service instance");
- flattrService = null;
- }
-}
-
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java
deleted file mode 100644
index 40a9fc7d5..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package de.danoeh.antennapod.core.util.flattr;
-
-import java.util.Calendar;
-
-public class FlattrStatus {
- private static final int STATUS_UNFLATTERED = 0;
- public static final int STATUS_QUEUE = 1;
- private static final int STATUS_FLATTRED = 2;
-
- private int status = STATUS_UNFLATTERED;
- private Calendar lastFlattred;
-
- public FlattrStatus() {
- status = STATUS_UNFLATTERED;
- lastFlattred = Calendar.getInstance();
- }
-
- public FlattrStatus(long status) {
- lastFlattred = Calendar.getInstance();
- fromLong(status);
- }
-
- public void setFlattred() {
- status = STATUS_FLATTRED;
- lastFlattred = Calendar.getInstance();
- }
-
- public void setUnflattred() {
- status = STATUS_UNFLATTERED;
- }
-
- public boolean getUnflattred() {
- return status == STATUS_UNFLATTERED;
- }
-
- public void setFlattrQueue() {
- if (flattrable())
- status = STATUS_QUEUE;
- }
-
- private void fromLong(long status) {
- if (status == STATUS_UNFLATTERED || status == STATUS_QUEUE)
- this.status = (int) status;
- else {
- this.status = STATUS_FLATTRED;
- lastFlattred.setTimeInMillis(status);
- }
- }
-
- public long toLong() {
- if (status == STATUS_UNFLATTERED || status == STATUS_QUEUE)
- return status;
- else {
- return lastFlattred.getTimeInMillis();
- }
- }
-
- public boolean flattrable() {
- Calendar firstOfMonth = Calendar.getInstance();
- firstOfMonth.set(Calendar.DAY_OF_MONTH, Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH));
-
- return (status == STATUS_UNFLATTERED) || (status == STATUS_FLATTRED && firstOfMonth.after(lastFlattred) );
- }
-
- public boolean getFlattrQueue() {
- return status == STATUS_QUEUE;
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java
deleted file mode 100644
index d5bb88771..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.danoeh.antennapod.core.util.flattr;
-
-public interface FlattrThing {
- String getTitle();
- String getPaymentLink();
- FlattrStatus getFlattrStatus();
-}
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
deleted file mode 100644
index 919fc82f2..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java
+++ /dev/null
@@ -1,220 +0,0 @@
-package de.danoeh.antennapod.core.util.flattr;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.preference.PreferenceManager;
-import android.support.v7.app.AlertDialog;
-import android.text.TextUtils;
-import android.util.Log;
-
-import org.shredzone.flattr4j.FlattrService;
-import org.shredzone.flattr4j.exception.FlattrException;
-import org.shredzone.flattr4j.model.Flattr;
-import org.shredzone.flattr4j.model.Thing;
-import org.shredzone.flattr4j.oauth.AccessToken;
-import org.shredzone.flattr4j.oauth.AndroidAuthenticator;
-import org.shredzone.flattr4j.oauth.Scope;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.TimeZone;
-
-import de.danoeh.antennapod.core.ClientConfig;
-import de.danoeh.antennapod.core.R;
-import de.danoeh.antennapod.core.asynctask.FlattrTokenFetcher;
-import de.danoeh.antennapod.core.storage.DBWriter;
-
-/**
- * Utility methods for doing something with flattr.
- */
-
-public class FlattrUtils {
- private FlattrUtils(){}
-
- private static final String TAG = "FlattrUtils";
-
- private static final String HOST_NAME = "de.danoeh.antennapod";
-
- private static final String PREF_ACCESS_TOKEN = "de.danoeh.antennapod.preference.flattrAccessToken";
-
- private static volatile AccessToken cachedToken;
-
- private static AndroidAuthenticator createAuthenticator() {
- return new AndroidAuthenticator(HOST_NAME, ClientConfig.flattrCallbacks.getFlattrAppKey(),
- ClientConfig.flattrCallbacks.getFlattrAppSecret());
- }
-
- public static void startAuthProcess(Context context) throws FlattrException {
- AndroidAuthenticator auth = createAuthenticator();
- auth.setScope(EnumSet.of(Scope.FLATTR));
- Intent intent = auth.createAuthenticateIntent();
- context.startActivity(intent);
- }
-
- private static AccessToken retrieveToken() {
- if (cachedToken == null) {
- Log.d(TAG, "Retrieving access token");
- String token = PreferenceManager.getDefaultSharedPreferences(
- ClientConfig.applicationCallbacks.getApplicationInstance())
- .getString(PREF_ACCESS_TOKEN, null);
- if (token != null) {
- Log.d(TAG, "Found access token. Caching.");
- cachedToken = new AccessToken(token);
- } else {
- Log.d(TAG, "No access token found");
- return null;
- }
- }
- return cachedToken;
-
- }
-
- /**
- * Returns true if FLATTR_APP_KEY and FLATTR_APP_SECRET in BuildConfig are not null and not empty
- */
- public static boolean hasAPICredentials() {
- return !TextUtils.isEmpty(ClientConfig.flattrCallbacks.getFlattrAppKey())
- && !TextUtils.isEmpty(ClientConfig.flattrCallbacks.getFlattrAppSecret());
- }
-
- public static boolean hasToken() {
- return retrieveToken() != null;
- }
-
- public static void storeToken(AccessToken token) {
- Log.d(TAG, "Storing token");
- SharedPreferences.Editor editor = PreferenceManager
- .getDefaultSharedPreferences(ClientConfig.applicationCallbacks.getApplicationInstance()).edit();
- if (token != null) {
- editor.putString(PREF_ACCESS_TOKEN, token.getToken());
- } else {
- editor.putString(PREF_ACCESS_TOKEN, null);
- }
- editor.commit();
- cachedToken = token;
- }
-
- private static void deleteToken() {
- Log.d(TAG, "Deleting flattr token");
- storeToken(null);
- }
-
- public static void clickUrl(Context context, String url)
- throws FlattrException {
- if (hasToken()) {
- FlattrService fs = FlattrServiceCreator.getService(retrieveToken());
- fs.flattr(url);
- } else {
- Log.e(TAG, "clickUrl was called with null access token");
- }
- }
-
- public static List retrieveFlattredThings()
- throws FlattrException {
- ArrayList myFlattrs = new ArrayList<>();
-
- if (hasToken()) {
- FlattrService fs = FlattrServiceCreator.getService(retrieveToken());
-
- Calendar firstOfMonth = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
- firstOfMonth.set(Calendar.MILLISECOND, 0);
- firstOfMonth.set(Calendar.SECOND, 0);
- firstOfMonth.set(Calendar.MINUTE, 0);
- firstOfMonth.set(Calendar.HOUR_OF_DAY, 0);
- firstOfMonth.set(Calendar.DAY_OF_MONTH, Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH));
-
- Date firstOfMonthDate = firstOfMonth.getTime();
-
- // subscriptions some times get flattrd slightly before midnight - give it an hour leeway
- firstOfMonthDate = new Date(firstOfMonthDate.getTime() - 60 * 60 * 1000);
-
- final int FLATTR_COUNT = 30;
- final int FLATTR_MAXPAGE = 5;
-
- for (int page = 0; page < FLATTR_MAXPAGE; page++) {
- for (Flattr fl : fs.getMyFlattrs(FLATTR_COUNT, page)) {
- if (fl.getCreated().after(firstOfMonthDate))
- myFlattrs.add(fl);
- else
- break;
- }
- }
-
- Log.d(TAG, "Got my flattrs list of length " + Integer.toString(myFlattrs.size()) + " comparison date" + firstOfMonthDate);
- for (Flattr fl : myFlattrs) {
- Thing thing = fl.getThing();
- Log.d(TAG, "Flattr thing: " + fl.getThingId() + " name: " + thing.getTitle() + " url: " + thing.getUrl() + " on: " + fl.getCreated());
- }
- } else {
- Log.e(TAG, "retrieveFlattrdThings was called with null access token");
- }
-
- return myFlattrs;
- }
-
- public static void handleCallback(Context context, Uri uri) {
- AndroidAuthenticator auth = createAuthenticator();
- new FlattrTokenFetcher(context, auth, uri).executeAsync();
- }
-
- public static void revokeAccessToken(Context context) {
- Log.d(TAG, "Revoking access token");
- deleteToken();
- FlattrServiceCreator.deleteFlattrService();
- showRevokeDialog(context);
- DBWriter.clearAllFlattrStatus();
- }
-
- // ------------------------------------------------ DIALOGS
-
- private static void showRevokeDialog(final Context context) {
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(R.string.access_revoked_title);
- builder.setMessage(R.string.access_revoked_info);
- builder.setNeutralButton(android.R.string.ok, (dialog, which) -> dialog.cancel());
- builder.create().show();
- }
-
- /**
- * Opens a dialog that ask the user to either connect the app with flattr or to be redirected to
- * the thing's website.
- * If no API credentials are available, the user will immediately be redirected to the thing's website.
- */
- public static void showNoTokenDialogOrRedirect(final Context context, final String url) {
- if (hasAPICredentials()) {
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(R.string.no_flattr_token_title);
- builder.setMessage(R.string.no_flattr_token_msg);
- builder.setPositiveButton(R.string.authenticate_now_label,
- (dialog, which) -> context.startActivity(
- ClientConfig.flattrCallbacks.getFlattrAuthenticationActivityIntent(context))
- );
-
- builder.setNegativeButton(R.string.visit_website_label,
- (dialog, which) -> {
- Uri uri = Uri.parse(url);
- context.startActivity(new Intent(Intent.ACTION_VIEW,
- uri));
- }
- );
- builder.create().show();
- } else {
- Uri uri = Uri.parse(url);
- context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
- }
- }
-
- public static void showErrorDialog(final Context context, final String msg) {
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(R.string.error_label);
- builder.setMessage(msg);
- builder.setNeutralButton(android.R.string.ok, (dialog, which) -> dialog.cancel());
- builder.create().show();
- }
-
-}
\ No newline at end of file
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java
deleted file mode 100644
index 43cd5f170..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package de.danoeh.antennapod.core.util.flattr;
-
-/* SimpleFlattrThing is a trivial implementation of the FlattrThing interface */
-public class SimpleFlattrThing implements FlattrThing {
- public SimpleFlattrThing(String title, String url, FlattrStatus status)
- {
- this.title = title;
- this.url = url;
- this.status = status;
- }
-
- public String getTitle()
- {
- return this.title;
- }
-
- public String getPaymentLink()
- {
- return this.url;
- }
-
- public FlattrStatus getFlattrStatus()
- {
- return this.status;
- }
-
- private final String title;
- private final String url;
- private final FlattrStatus status;
-}
diff --git a/core/src/main/res/drawable/ic_bookmark_grey600_24dp.xml b/core/src/main/res/drawable/ic_bookmark_grey600_24dp.xml
new file mode 100644
index 000000000..d665d42a5
--- /dev/null
+++ b/core/src/main/res/drawable/ic_bookmark_grey600_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/core/src/main/res/drawable/ic_bookmark_white_24dp.xml b/core/src/main/res/drawable/ic_bookmark_white_24dp.xml
new file mode 100644
index 000000000..02728b731
--- /dev/null
+++ b/core/src/main/res/drawable/ic_bookmark_white_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/core/src/main/res/layout/player_widget.xml b/core/src/main/res/layout/player_widget.xml
index daf661002..f8d909a97 100644
--- a/core/src/main/res/layout/player_widget.xml
+++ b/core/src/main/res/layout/player_widget.xml
@@ -15,6 +15,7 @@
android:layout_width="@android:dimen/app_icon_size"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
android:layout_margin="12dp"
android:background="@drawable/borderless_button_dark"
android:src="@drawable/ic_play_arrow_white_24dp" />
@@ -24,7 +25,9 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
android:layout_toLeftOf="@id/butPlay"
+ android:layout_toStartOf="@id/butPlay"
android:background="@drawable/borderless_button_dark"
android:gravity="fill_horizontal"
android:orientation="horizontal" >
@@ -33,15 +36,12 @@
android:id="@+id/imgvCover"
android:layout_width="@android:dimen/app_icon_size"
android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:layout_margin="12dp"
- android:layout_toLeftOf="@id/layout_center" />
+ android:layout_margin="12dp" />
@@ -49,7 +49,6 @@
android:id="@+id/txtNoPlaying"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginVertical="12dp"
android:maxLines="3"
android:text="@string/no_media_playing_label"
android:textColor="@color/white"
@@ -60,7 +59,6 @@
android:id="@+id/txtvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginVertical="8dp"
android:maxLines="1"
android:textColor="@color/white"
android:textSize="@dimen/text_size_medium"
@@ -71,7 +69,7 @@
android:id="@+id/txtvProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginVertical="8dp"
+ android:layout_marginTop="4dp"
android:textColor="@color/white"
android:visibility="gone" />
diff --git a/core/src/main/res/values-ar/strings.xml b/core/src/main/res/values-ar/strings.xml
index 5c29b5119..0e29db095 100644
--- a/core/src/main/res/values-ar/strings.xml
+++ b/core/src/main/res/values-ar/strings.xml
@@ -76,7 +76,7 @@
تعليمه ك تم تشغيله
- تعليمه ك تم مشاهدته
+ تعليمه ك تم مشاهدته
اظهار المعلومات
مشاركة
مشاركة الرابط
diff --git a/core/src/main/res/values-b+ast/strings.xml b/core/src/main/res/values-b+ast/strings.xml
index 421896086..29c7e4d87 100644
--- a/core/src/main/res/values-b+ast/strings.xml
+++ b/core/src/main/res/values-b+ast/strings.xml
@@ -96,9 +96,9 @@
Conseñáronse tolos episodios como reproducíos
Confirma que quies conseñar tolos episodios como reproducíos, por favor.
Confirma que quies conseñar tolos episodios nesti feed como reproducíos, por favor.
- Conseñar too como visto
- Conseñáronse tolos episodios como vistos
- Confirma que quies conseñar tolos episodios como vistos.
+ Conseñar too como visto
+ Conseñáronse tolos episodios como vistos
+ Confirma que quies conseñar tolos episodios como vistos.
Amosar información
Renomar podcast
Desaniciar podcast
@@ -126,7 +126,7 @@
Desaniciar
Desaniciar
Desaniciar episodiu
- Conseñóse como vistu
+ Conseñóse como vistu
Conseñar como reproducíu
Conseñóse como reproducíu
Conseñar como non reproducíu
diff --git a/core/src/main/res/values-bg/strings.xml b/core/src/main/res/values-bg/strings.xml
index 19dc2a971..818db781f 100644
--- a/core/src/main/res/values-bg/strings.xml
+++ b/core/src/main/res/values-bg/strings.xml
@@ -70,9 +70,9 @@
Всички епизоди са маркирани като слушани
Моля, потвърдете, че искате да маркирате всички епизоди като слушани.
Моля, потвърдете, че искате да маркирате всички епизоди в тази емисия като слушани.
- Маркирай всички като прегледани
- Всички епизоди са маркирани като прегледани
- Моля, потвърдете, че искате да маркирате всички епизоди като прегледани.
+ Маркирай всички като прегледани
+ Всички епизоди са маркирани като прегледани
+ Моля, потвърдете, че искате да маркирате всички епизоди като прегледани.
Покажи информация
Преименуване на подкаст
Премахване на подкаст
@@ -88,7 +88,7 @@
Неизтеглени
Стрийм
- Маркиран като прегледан
+ Маркиран като прегледан
Маркирай като слушан
Маркиран като слушан
Маркирай като неслушан
diff --git a/core/src/main/res/values-ca/strings.xml b/core/src/main/res/values-ca/strings.xml
index 6983d140e..6cc1fa9c9 100644
--- a/core/src/main/res/values-ca/strings.xml
+++ b/core/src/main/res/values-ca/strings.xml
@@ -111,9 +111,9 @@
S\'han marcat tots els episodis com a llegits
Si us plau confirma que vols marcar tots els episodis com reproduits.
Si us plau, confirmeu que voleu marcar tots els episodis d\'aquest podcast com a reproduïts.
- Marca tot com a llegit
- Marcar tots episodis com a visualitzats
- Si us plau confirma que vols marcar tots els episodis com vistos.
+ Marca tot com a llegit
+ Marcar tots episodis com a visualitzats
+ Si us plau confirma que vols marcar tots els episodis com vistos.
Mostra informació
Mostrar configuració del podcast
Informació del podcast
@@ -153,8 +153,8 @@
Suprimeix
Esborrar
No s\'ha pogut esborrar el fitxer. Reiniciar el dispositiu pot ajudar.
- Marcar com a visualitzat
- Marcat com a vist
+ Marcar com a visualitzat
+ Marcat com a vist
Marca com a llegit
Marcats com llegits
Marca com a pendent
diff --git a/core/src/main/res/values-cs-rCZ/strings.xml b/core/src/main/res/values-cs-rCZ/strings.xml
index 390730abb..cb784ec6a 100644
--- a/core/src/main/res/values-cs-rCZ/strings.xml
+++ b/core/src/main/res/values-cs-rCZ/strings.xml
@@ -106,8 +106,8 @@
Označit vše jako poslechnuté
Všechny epizody označeny jako poslechnuté
Potvrďte prosím, že chcete označit všechny vybrané epizody jako poslechnuté.
- Označit vše jako zobrazené
- Potvrďte prosím, že chcete označit všechny epizody jako shlédnuté.
+ Označit vše jako zobrazené
+ Potvrďte prosím, že chcete označit všechny epizody jako shlédnuté.
Informace o zdroji
Sdílet
Sdílet URL kanálu
@@ -131,7 +131,7 @@
Vysílat
Odstranit
Smazat
- Označit jako shlédnuté
+ Označit jako shlédnuté
Označit jako poslechnuté
Označeno jako poslechnuté
Označit jako neposlechnuté
diff --git a/core/src/main/res/values-da/strings.xml b/core/src/main/res/values-da/strings.xml
index 565f53a6d..5420eb5c9 100644
--- a/core/src/main/res/values-da/strings.xml
+++ b/core/src/main/res/values-da/strings.xml
@@ -109,9 +109,9 @@
Marker alle som afspillet
Marker alle udsendelser som afspillet
Bekræft venligst at du ønsker at markere alle udsendelser som værende afspillet.
- Marker alle som set
- Markeret alle udsendelser som set
- Bekræft venligst at du ønsker at markere alle udsendelser som set.
+ Marker alle som set
+ Markeret alle udsendelser som set
+ Bekræft venligst at du ønsker at markere alle udsendelser som set.
Vis information
Podcast-info
Omdøb podcast
@@ -148,8 +148,8 @@
Fjern
Slet
Kan ikke slette fil. En genstart af enheden vil sandsynligvis hjælpe.
- Markér som set
- Markeret som set
+ Markér som set
+ Markeret som set
Marker som læst
Markeret som afspillet
Marker som uafspillet
diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml
index 7bc9368b5..a5ceaab57 100644
--- a/core/src/main/res/values-de/strings.xml
+++ b/core/src/main/res/values-de/strings.xml
@@ -116,9 +116,9 @@
Alle Episoden als gespielt markiert
Bitte bestätige, dass alle Episoden als gespielt markiert werden sollen.
Bitte bestätige, dass alle Episoden in diesem Feed als gespielt markiert werden sollen.
- Alle als gesehen markieren
- Alle Episoden als gesehen markiert
- Bitte bestätige, dass alle Episoden als gesehen markiert werden sollen.
+ Alle als gesehen markieren
+ Alle Episoden als gesehen markiert
+ Bitte bestätige, dass alle Episoden als gesehen markiert werden sollen.
Informationen anzeigen
Zeige Feed-Einstellungen
Feed-Informationen
@@ -169,8 +169,8 @@
- %d Episode gelöscht.
- %d Episoden gelöscht.
- Als gelesen markieren
- Als gesehen markiert
+ Als gelesen markieren
+ Als gesehen markiert
Als gespielt markieren
Als gespielt markiert
diff --git a/core/src/main/res/values-es-rES/strings.xml b/core/src/main/res/values-es-rES/strings.xml
index 024989498..199eefca7 100644
--- a/core/src/main/res/values-es-rES/strings.xml
+++ b/core/src/main/res/values-es-rES/strings.xml
@@ -75,7 +75,7 @@
Navegar gpodder.net
Marcar todo como leído
- Marcar todos como visto
+ Marcar todos como visto
Información del programa
Eliminar podcast
Compartir el enlace de la web
diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml
index 69feafba7..1a60a20b0 100644
--- a/core/src/main/res/values-es/strings.xml
+++ b/core/src/main/res/values-es/strings.xml
@@ -116,9 +116,9 @@
Marcados todos los episodios como reproducidos
Confirme que quiere marcar todos los episodios como reproducidos.
Confirme que quiere marcar todos los episodios de este pódcast como reproducidos.
- Marcar todos como vistos
- Marcados todos los episodios como vistos
- Confirme que quiere marcar todos los episodios como vistos.
+ Marcar todos como vistos
+ Marcados todos los episodios como vistos
+ Confirme que quiere marcar todos los episodios como vistos.
Información del programa
Mostrar ajustes del pódcast
Información del pódcast
@@ -169,8 +169,8 @@
- %depisodio borrado.
- %depisodios borrados.
- Marcar como visto
- Marcado como visto
+ Marcar como visto
+ Marcado como visto
Marcar como reproducido
Marcado como reproducido
diff --git a/core/src/main/res/values-et/strings.xml b/core/src/main/res/values-et/strings.xml
index 99e61a5fa..44c9f749b 100644
--- a/core/src/main/res/values-et/strings.xml
+++ b/core/src/main/res/values-et/strings.xml
@@ -91,7 +91,7 @@
Märgi kuulatuks
Märgi kõik saated esitatuks
- Märgi kõik nähtuks
+ Märgi kõik nähtuks
Näita infot
Jaga...
Jaga faili
@@ -116,7 +116,7 @@
Voogedastusena
Eemalda
Kustuta
- Märgitud nähtuks
+ Märgitud nähtuks
Märgi esitatuks
Märgitud kuulatuks
Märgitud kui kuulamata
diff --git a/core/src/main/res/values-fa/strings.xml b/core/src/main/res/values-fa/strings.xml
index dc6e7cb2e..bc530d4de 100644
--- a/core/src/main/res/values-fa/strings.xml
+++ b/core/src/main/res/values-fa/strings.xml
@@ -108,8 +108,8 @@
علامت گذاری همه به عنوان پخش شده
همه قسمتها به عنوان پخش شده علامتگذاری شد
لطفا تأیید کنید که میخواهید تمام قسمتها را به عنوان پخش شده علامت بزنید.
- علامت گذاری همه به عنوان دیده شده
- لطفا تأیید کنید که میخواهید تمام قسمتها را به عنوان دیده شده علامت بزنید.
+ علامت گذاری همه به عنوان دیده شده
+ لطفا تأیید کنید که میخواهید تمام قسمتها را به عنوان دیده شده علامت بزنید.
نمایش اطلاعات
نمایش تنظیمات پادکست
اطلاعات پادکست
@@ -145,7 +145,7 @@
حذف
فایل حذف نشد.! راه اندازی مجدد دستگاه می تواند کمک کند.
پاک کردن قسمت
- علامت گذاری به عنوان دیده شده
+ علامت گذاری به عنوان دیده شده
علامت گذاری به عنوان پخش شده
بعنوان پخش شده علامت گذاری شد
علامت گذاری به عنوان پخش نشده
diff --git a/core/src/main/res/values-fr/strings.xml b/core/src/main/res/values-fr/strings.xml
index 42fe07f68..00ecc8ad3 100644
--- a/core/src/main/res/values-fr/strings.xml
+++ b/core/src/main/res/values-fr/strings.xml
@@ -116,9 +116,9 @@
Tous les épisodes ont été marqués comme lus
Confirmer le marquage de tous les épisode comme lus
Confirmer le marquage de tous les épisodes de ce podcast comme lus
- Marquer tous les épisodes comme vus
- Tous les épisodes ont été marqués vus
- Merci de confirmer que vous voulez marquer tous les épisodes comme vus.
+ Marquer tous les épisodes comme vus
+ 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 du podcast...
Infos du podcast
@@ -169,8 +169,8 @@
- %d épisode supprimé.
- %d épisodes supprimés.
- Marquer comme vu
- Marqué comme vu
+ Marquer comme vu
+ Marqué comme vu
Marquer comme lu
Les épisodes ont été marqués comme lus
diff --git a/core/src/main/res/values-gl-rES/strings.xml b/core/src/main/res/values-gl-rES/strings.xml
index 369d39d4c..9897ec272 100644
--- a/core/src/main/res/values-gl-rES/strings.xml
+++ b/core/src/main/res/values-gl-rES/strings.xml
@@ -116,9 +116,9 @@
Marcáronse todos como reproducidos
Por favor confirme que quere marcar todos os episodios como reproducidos.
Por favor, confirme que quere marcar todos os episodios deste podcast como reproducidos.
- Marcar como visto
- Marcáronse todos os episodios como vistos
- Por favor confirme que quere marcar todos os episodios como vistos.
+ Marcar como visto
+ Marcáronse todos os episodios como vistos
+ Por favor confirme que quere marcar todos os episodios como vistos.
Mostrar información
Mostrar axustes do podcast
Información do podcast
@@ -169,8 +169,8 @@
- %d episodio eliminado.
- %d episodios eliminados.
- Marcar como visto
- Marcar como visto
+ Marcar como visto
+ Marcar como visto
Marcar como reproducido
Marcado como reproducido
diff --git a/core/src/main/res/values-h768dp/dimens.xml b/core/src/main/res/values-h768dp/dimens.xml
new file mode 100644
index 000000000..fd744e422
--- /dev/null
+++ b/core/src/main/res/values-h768dp/dimens.xml
@@ -0,0 +1,4 @@
+
+
+ 12dp
+
\ No newline at end of file
diff --git a/core/src/main/res/values-hi-rIN/strings.xml b/core/src/main/res/values-hi-rIN/strings.xml
index 17a26e125..3b59e0481 100644
--- a/core/src/main/res/values-hi-rIN/strings.xml
+++ b/core/src/main/res/values-hi-rIN/strings.xml
@@ -144,8 +144,8 @@
हटाएँ
डिलीट
फ़ाइल डिलीट करने में असमर्थ। डिवाइस को रिबूट करने से मदद मिल सकती है।
- देखा गया के रूप में चिह्नित करें
- देखा गया के रूप में चिह्नित किया गया
+ देखा गया के रूप में चिह्नित करें
+ देखा गया के रूप में चिह्नित किया गया
चलाया गया के रूप में चिह्नित करें
चलाया गया के रूप में चिह्नित किया गया
नही चलाया गया के रूप में चिह्नित करें
diff --git a/core/src/main/res/values-hu/strings.xml b/core/src/main/res/values-hu/strings.xml
index 7c252a0db..2d848b1cb 100644
--- a/core/src/main/res/values-hu/strings.xml
+++ b/core/src/main/res/values-hu/strings.xml
@@ -105,8 +105,8 @@
Az összes megjelölése lejátszottként
Az összes epizód lejátszottként megjelölve
Biztosan megjelölöd az összes epizódot lejátszottként?
- Az összes megjelölése megnézettként
- Biztosan megjelölöd az összes epizódott megnézettként?
+ Az összes megjelölése megnézettként
+ Biztosan megjelölöd az összes epizódott megnézettként?
Információ mutatása
Podcast beállítások
Megosztás…
@@ -132,7 +132,7 @@
Stream-elés
Eltávolítás
Törlés
- Megtekintettként megjelölve
+ Megtekintettként megjelölve
Jelölés játszottnak
Lejátszottként megjelölve
Jelölés nem játszottnak
diff --git a/core/src/main/res/values-id/strings.xml b/core/src/main/res/values-id/strings.xml
index 62254518d..2f1ffecea 100644
--- a/core/src/main/res/values-id/strings.xml
+++ b/core/src/main/res/values-id/strings.xml
@@ -43,7 +43,7 @@
Tandai semua diputar
Tandai semua Kisah diputar
- Tandai semua dilihat
+ Tandai semua dilihat
Hapus Podcast
Bagikan...
Bagikan Tautan
diff --git a/core/src/main/res/values-it/strings.xml b/core/src/main/res/values-it/strings.xml
index 31f252d3e..d1e1b596f 100644
--- a/core/src/main/res/values-it/strings.xml
+++ b/core/src/main/res/values-it/strings.xml
@@ -116,9 +116,9 @@
Segnati tutti gli episodi come riprodotti
Conferma che desideri segnare tutti gli episodi come riprodotti.
Conferma che desideri segnare come riprodotti tutti gli episodi del podcast.
- Segna tutti come visti
- Segna tutti gli episodi come visti
- Conferma che desideri segnare tutti gli episodi come visti.
+ Segna tutti come visti
+ Segna tutti gli episodi come visti
+ Conferma che desideri segnare tutti gli episodi come visti.
Informazioni
Mostra impostazioni podcast
Info podcast
@@ -169,8 +169,8 @@
- %d episodio eliminato.
- %d episodi eliminati.
- Segna come visto
- Segna come visto
+ Segna come visto
+ Segna come visto
Segna come riprodotto
Segnato come riprodotto
diff --git a/core/src/main/res/values-iw-rIL/strings.xml b/core/src/main/res/values-iw-rIL/strings.xml
index e9d14b899..d73fdd015 100644
--- a/core/src/main/res/values-iw-rIL/strings.xml
+++ b/core/src/main/res/values-iw-rIL/strings.xml
@@ -120,9 +120,9 @@
לסמן את כל הפרקים כנוגנו
נא לאשר שברצונך לסמן את כל הפרקים כנוגנו.
נא לאשר שברצונך לסמן את הפרקים של הפודקאסט הזה כאילו כבר נוגנו.
- לסמן הכול כנצפו
- כל הפרקים סומנו כאילו כבר נוגנו
- נא לאשר שברצונך לסמן את כל הפרקים כנצפו.
+ לסמן הכול כנצפו
+ כל הפרקים סומנו כאילו כבר נוגנו
+ נא לאשר שברצונך לסמן את כל הפרקים כנצפו.
הצגת מידע
הצגת הגדרות פודקאסט
פרטי פודקאסט
@@ -177,8 +177,8 @@
- %d פרקים נמחקו.
- %d פרקים נמחקו.
- עם סימון כנצפה
- סימון כנצפה
+ עם סימון כנצפה
+ סימון כנצפה
סימון כנצפה
סימון כנוגן
diff --git a/core/src/main/res/values-ja/strings.xml b/core/src/main/res/values-ja/strings.xml
index f749de958..0818b7044 100644
--- a/core/src/main/res/values-ja/strings.xml
+++ b/core/src/main/res/values-ja/strings.xml
@@ -114,9 +114,9 @@
すべてのエピソードを再生済にしました
再生済としてマークするすべてのエピソードを確認してください。
再生済としてマークするこのポッドキャストのすべてのエピソードを確認してください。
- すべて参照済としてマーク
- すべてのエピソードを参照済にしました
- 参照済としてマークするすべてのエピソードを確認してください。
+ すべて参照済としてマーク
+ すべてのエピソードを参照済にしました
+ 参照済としてマークするすべてのエピソードを確認してください。
情報を表示
ポッドキャスト設定を表示
ポッドキャスト情報
@@ -165,8 +165,8 @@
- %d エピソードを削除しました。
- 参照済
- 参照済としてマーク
+ 参照済
+ 参照済としてマーク
再生済としてマーク
再生済としてマークしました
diff --git a/core/src/main/res/values-ko/strings.xml b/core/src/main/res/values-ko/strings.xml
index c776885ea..7727e40b7 100644
--- a/core/src/main/res/values-ko/strings.xml
+++ b/core/src/main/res/values-ko/strings.xml
@@ -105,9 +105,9 @@
모든 에피소드를 재생했다고 표시했습니다
모든 에피소드를 재생했다고 표시할지 확인하십시오.
이 피드에 들어 있는 모든 에피소드를 재생했다고 표시할지 확인하십시오.
- 모두 봤다고 표시
- 모든 에피소드를 봤다고 표시했습니다
- 모든 에피소드를 본 것으로 표시하는지 확인하십시오.
+ 모두 봤다고 표시
+ 모든 에피소드를 봤다고 표시했습니다
+ 모든 에피소드를 본 것으로 표시하는지 확인하십시오.
정보 표시
팟캐스트 이름 바꾸기
팟캐스트 제거
@@ -143,7 +143,7 @@
삭제
파일을 삭제할 수 없습니다. 장치를 재부팅하면 동작할 수도 있습니다.
에피소드 제거
- 봤다고 표시했습니다
+ 봤다고 표시했습니다
재생했다고 표시
재생했다고 표시했습니다
재생하지 않음으로 표시
diff --git a/core/src/main/res/values-lt/strings.xml b/core/src/main/res/values-lt/strings.xml
index f0820eba4..4c70f6f33 100644
--- a/core/src/main/res/values-lt/strings.xml
+++ b/core/src/main/res/values-lt/strings.xml
@@ -113,9 +113,9 @@
Visi epizodai pažymėti kaip perklausyti
Patvirtinkite, jog norite pažymėti visus epizodus kaip perklausytus.
Patvirtinkite, jog norite pažymėti visus šios tinklalaidės epizodus kaip perklausytus.
- Pažymėti visus kaip matytus
- Pažymėti visus epizodus kaip matytus
- Patvirtinkite, jog norite pažymėti visus epizodus kaip matytus.
+ Pažymėti visus kaip matytus
+ Pažymėti visus epizodus kaip matytus
+ Patvirtinkite, jog norite pažymėti visus epizodus kaip matytus.
Rodyti informaciją
Rodyti tinklalaidės nustatymus
Tinklalaidės informacija
@@ -157,8 +157,8 @@
Pašalinti
Ištrinti
Nepavyksta ištrinti failo. Įrenginio paleidimas iš naujo gali padėti.
- Pažymėti kaip matytą
- Pažymėtas kaip matytas
+ Pažymėti kaip matytą
+ Pažymėtas kaip matytas
Pažymėti kaip perklausytą
Pažymėtas kaip perklausytas
Pažymėti kaip neperklausytą
diff --git a/core/src/main/res/values-nb/strings.xml b/core/src/main/res/values-nb/strings.xml
index 53489e180..c7684322c 100644
--- a/core/src/main/res/values-nb/strings.xml
+++ b/core/src/main/res/values-nb/strings.xml
@@ -103,8 +103,8 @@
Marker alle som avspilt
Marker alle episoder som avspilt
Vennligst bekreft at du ønsker å markere alle episoder som avspilt.
- Marker alle som sett
- Bekreft at du ønsker å markere alle episoder som sett.
+ Marker alle som sett
+ Bekreft at du ønsker å markere alle episoder som sett.
Vis informasjon
Del ...
Del fil
@@ -130,7 +130,7 @@
Fjern
Slett
Kan ikke slette filen. Omstart av enheten kan hjelpe.
- Marker som sett
+ Marker som sett
Marker som avspilt
Marker som avspilt
Marker som ikke avspilt
diff --git a/core/src/main/res/values-nl/strings.xml b/core/src/main/res/values-nl/strings.xml
index 90d081bb7..22f9f6045 100644
--- a/core/src/main/res/values-nl/strings.xml
+++ b/core/src/main/res/values-nl/strings.xml
@@ -116,9 +116,9 @@
Alle afleveringen zijn gemarkeerd als afgespeeld
Bevestig dat je alle afleveringen wilt markeren als afgespeeld.
Bevestig dat je alle afleveringen van deze podcast wilt markeren als afgespeeld.
- Alles markeren als bekeken
- Alle afleveringen zijn gemarkeerd als bekeken
- Bevestig dat je alle afleveringen wilt markeren als bekeken.
+ Alles markeren als bekeken
+ Alle afleveringen zijn gemarkeerd als bekeken
+ Bevestig dat je alle afleveringen wilt markeren als bekeken.
Informatie tonen
Podcast-instellingen tonen
Podcast-informatie
@@ -169,8 +169,8 @@
- %d aflevering verwijderd.
- %d afleveringen verwijderd.
- Markeren als bekeken
- Gemarkeerd als bekeken
+ Markeren als bekeken
+ Gemarkeerd als bekeken
Markeren als afgespeeld
Gemarkeerd als afgespeeld
diff --git a/core/src/main/res/values-pl-rPL/strings.xml b/core/src/main/res/values-pl-rPL/strings.xml
index 53bce3911..7cbe3015a 100644
--- a/core/src/main/res/values-pl-rPL/strings.xml
+++ b/core/src/main/res/values-pl-rPL/strings.xml
@@ -109,9 +109,9 @@
Wszystkie odcinki zaznaczono jako odtworzone
Proszę potwierdzić, że chcesz oznaczyć wszystkie odcinki jako odtworzone.
Proszę potwierdzić, że chcesz oznaczyć wszystkie odcinki tego podcastu jako odtworzone.
- Oznacz wszystkie jako wyświetlone
- Oznacz wszystkie odcinki jako wyświetlone
- Proszę potwierdzić chęć zaznaczenia wszystkich odcinków jako obejrzanych.
+ Oznacz wszystkie jako wyświetlone
+ Oznacz wszystkie odcinki jako wyświetlone
+ Proszę potwierdzić chęć zaznaczenia wszystkich odcinków jako obejrzanych.
Pokaż informacje
Pokaż ustawienia podcastu
Ustawienia podcastu
@@ -147,8 +147,8 @@
Usuń
Usuń
Nie można usunąć pliku. Restart urządzenia może w tym pomóc.
- Oznacz jako wyświetlone
- Oznaczono jako wyświetlone
+ Oznacz jako wyświetlone
+ Oznaczono jako wyświetlone
Oznacz jako odtworzone
Oznaczone jako odtworzone
Oznacz jako nieodtworzone
diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml
index 0f85d9eaf..76f838bde 100644
--- a/core/src/main/res/values-pt-rBR/strings.xml
+++ b/core/src/main/res/values-pt-rBR/strings.xml
@@ -111,9 +111,9 @@
Marcar todos Episódios como reproduzidos
Por favor, confirme que você deseja marcar todos os episódios como já reproduzidos.
Favor confirmar que deseja marcar todos os episódios nesse podcast como já ouvidos.
- Marcar todos como vistos
- Todos os episódios marcados como já ouvidos
- Confirme se deseja marcar todos os episódios como vistos.
+ Marcar todos como vistos
+ Todos os episódios marcados como já ouvidos
+ Confirme se deseja marcar todos os episódios como vistos.
Mostrar informação
Exibir configurações do podcast
Informações do podcast
@@ -155,8 +155,8 @@
Remover
Deletar
Não foi possível deletar o arquivo. Experimente reiniciar o dispositivo.
- Marcar como ouvido
- Marcar como visto
+ Marcar como ouvido
+ Marcar como visto
Marcar como reproduzido
Marcado como reproduzido
Marcar como não reproduzido
diff --git a/core/src/main/res/values-pt/strings.xml b/core/src/main/res/values-pt/strings.xml
index 39a3d33c6..3ec88af31 100644
--- a/core/src/main/res/values-pt/strings.xml
+++ b/core/src/main/res/values-pt/strings.xml
@@ -116,9 +116,9 @@
Marcar todos os episódios como reproduzidos
Tem a certeza de que deseja marcar todos os episódios como reproduzidos?
Tem a certeza de que deseja marcar como reproduzidos todos os episódios deste podcast?
- Marcar tudo como reproduzido
- Marcar todos como reproduzidos
- Tem a certeza de que deseja marcar todos os episódios como vistos?
+ Marcar tudo como reproduzido
+ Marcar todos como reproduzidos
+ Tem a certeza de que deseja marcar todos os episódios como vistos?
Mostrar informações
Mostrar definições do podcast
Informações do podcast
@@ -169,8 +169,8 @@
- %d episódio eliminado.
- %d episódios eliminados.
- Marcar como reproduzido
- Marcar como reproduzido
+ Marcar como reproduzido
+ Marcar como reproduzido
Marcar como reproduzido
Marcado como reproduzido
diff --git a/core/src/main/res/values-ru/strings.xml b/core/src/main/res/values-ru/strings.xml
index 942be0267..a904d3ad9 100644
--- a/core/src/main/res/values-ru/strings.xml
+++ b/core/src/main/res/values-ru/strings.xml
@@ -113,9 +113,9 @@
Отметить все выпуски как прослушанные
Подтвердите, что хотите пометить все эпизоды как прослушанные.
Пожалуйста, подтвердите желание отметить все выпуски этого подкаста как прослушанные.
- Отметить все как просмотренное
- Все выпуски отмечены как просмотренные
- Пожалуйста, подтвердите намерение отметить все выпуски как просмотренные.
+ Отметить все как просмотренное
+ Все выпуски отмечены как просмотренные
+ Пожалуйста, подтвердите намерение отметить все выпуски как просмотренные.
Показать информацию
Показать настройки подкаста
Сведения о подкасте
@@ -157,8 +157,8 @@
Удалить
Удалить
Невозможно удалить файл. Попробуйте перезагрузить устройство.
- Просмотрено
- Отмечено как просмотренное
+ Просмотрено
+ Отмечено как просмотренное
Отметить как прослушанное
Помечено как прослушанное
Отметить как непрослушанное
diff --git a/core/src/main/res/values-sv-rSE/strings.xml b/core/src/main/res/values-sv-rSE/strings.xml
index b0fa69b3b..a44834efb 100644
--- a/core/src/main/res/values-sv-rSE/strings.xml
+++ b/core/src/main/res/values-sv-rSE/strings.xml
@@ -116,9 +116,9 @@
Markera alla episoder som spelade
Bekräfta att du verkligen vill markera alla episoder som spelade.
Bekräfta att du vill markera alla episider i denna podcast som spelade.
- Markera alla som sedda
- Markerade alla episoder som sedda
- Bekräfta att du vill markera alla episoder som sedda.
+ Markera alla som sedda
+ Markerade alla episoder som sedda
+ Bekräfta att du vill markera alla episoder som sedda.
Visa information
Visa podcastinställningar
Podcastinfo
@@ -169,8 +169,8 @@
- 1%d episod raderad.
- 1%d episder raderade.
- Markera som sedd
- Markera som sedd
+ Markera som sedd
+ Markera som sedd
Markera som spelad
Markera som spelad
diff --git a/core/src/main/res/values-tr/strings.xml b/core/src/main/res/values-tr/strings.xml
index f27b905bd..79ef2fe2c 100644
--- a/core/src/main/res/values-tr/strings.xml
+++ b/core/src/main/res/values-tr/strings.xml
@@ -107,9 +107,9 @@
Tüm bölümleri oynatıldı olarak işaretle
Lütfen tüm bölümleri oynatıldı olarak işaretlemek istediğinizi onaylayın.
Lütfen bu yayındaki bütün bölümleri oynatıldı olarak işaretlemek istediğinizi onaylayın.
- Hepsini görüldü olarak işaretle
- Bütün bölümler görüldü olarak işaretlendi
- Lütfen tüm bölümleri görüldü olarak işaretlemek istediğinizi onaylayın.
+ Hepsini görüldü olarak işaretle
+ Bütün bölümler görüldü olarak işaretlendi
+ Lütfen tüm bölümleri görüldü olarak işaretlemek istediğinizi onaylayın.
Bilgiyi göster
Cepyayın ayarlarını göster
Cepyayın bilgisi
@@ -151,8 +151,8 @@
Kaldır
Sil
Dosya silinemiyor. Cihazı yeniden başlatmak yardımcı olabilir.
- Hepsini görüldü olarak işaretle
- Görüldü olarak işaretlendi
+ Hepsini görüldü olarak işaretle
+ Görüldü olarak işaretlendi
Oynatıldı olarak işaretle
Oynatıldı olarak işaretlendi
Oynatılmadı olarak işaretle
diff --git a/core/src/main/res/values-uk-rUA/strings.xml b/core/src/main/res/values-uk-rUA/strings.xml
index d40baba2d..18ba0c6e3 100644
--- a/core/src/main/res/values-uk-rUA/strings.xml
+++ b/core/src/main/res/values-uk-rUA/strings.xml
@@ -120,9 +120,9 @@
Позначено всі епізоди як відтворені
Будь ласка, підтвердіть що ви бажаєте позначити всі епізоди як відтворені.
Будь ласка, підтвердіть, що ви бажаєте позначити всі епізоди цього подкасту як відтворені.
- Позначити всі як переглянуті
- Всі епізоди позначено як переглянуті
- Будь ласка, підтвердіть що ви бажаєте позначити всі епізоди як переглянуті.
+ Позначити всі як переглянуті
+ Всі епізоди позначено як переглянуті
+ Будь ласка, підтвердіть що ви бажаєте позначити всі епізоди як переглянуті.
Інформація
Показати налаштування подкасту
Інформація про подкаст
@@ -177,8 +177,8 @@
- %dепізодів видалено.
- %d епізодів видалено.
- Позначити як переглянутий
- Позначено як переглянутий
+ Позначити як переглянутий
+ Позначено як переглянутий
Позначити як відтворений
Позначено як відтворений
diff --git a/core/src/main/res/values-vi/strings.xml b/core/src/main/res/values-vi/strings.xml
index 0982d2b14..86fd4364f 100644
--- a/core/src/main/res/values-vi/strings.xml
+++ b/core/src/main/res/values-vi/strings.xml
@@ -91,8 +91,8 @@
Đánh dấu đã nghe tất cả
Đánh dấu đã nghe tất cả các tập
Hãy xác nhận bạn muốn đánh dấu đã nghe tất cả các tập.
- Đánh dấu đã xem tất cả
- Hãy xác nhận bạn muốn đánh dấu đã xem tất cả các tập.
+ Đánh dấu đã xem tất cả
+ Hãy xác nhận bạn muốn đánh dấu đã xem tất cả các tập.
Hiện thông tin
Chia sẻ…
Chia sẻ liên kết feed
@@ -116,7 +116,7 @@
Loại bỏ
Xoá
Xoá tập này
- Đánh dấu đã xem
+ Đánh dấu đã xem
Đánh dấu đã nghe
Đã đánh dấu đã nghe
Đánh dấu chưa nghe
diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml
index f78c6b0ae..0d9188b0e 100644
--- a/core/src/main/res/values-zh-rCN/strings.xml
+++ b/core/src/main/res/values-zh-rCN/strings.xml
@@ -113,8 +113,8 @@
全部标识已读
将所有曲目标记为已播放
请确认您要将所有曲目标为已播放
- 所有可见
- 请确认您要将所有曲目标记为已读。
+ 所有可见
+ 请确认您要将所有曲目标记为已读。
查看信息
播客信息
播客设置
@@ -145,8 +145,8 @@
删除
删除
无法删除文件。重启可能解决该问题。
- 标记为已读
- 标记为已读
+ 标记为已读
+ 标记为已读
标记已播放
已标记为已播放
标记未播放
diff --git a/core/src/main/res/values-zh-rTW/strings.xml b/core/src/main/res/values-zh-rTW/strings.xml
index f00904eda..97ecc4872 100644
--- a/core/src/main/res/values-zh-rTW/strings.xml
+++ b/core/src/main/res/values-zh-rTW/strings.xml
@@ -103,8 +103,8 @@
全部標記為已播放
全部劇集標記為已播放
請確認你要將所有劇集標記為已播放。
- 標記為已讀
- 請確認你要將所有劇集標記為已讀。
+ 標記為已讀
+ 請確認你要將所有劇集標記為已讀。
顯示資料
分享
分享文件
@@ -131,7 +131,7 @@
刪除
刪除文件失敗。重啟設備試試看。
移除劇集
- 標記為已讀
+ 標記為已讀
標記為已播放
已標記為已播放
標記為未播放
diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml
index 5311d6cd2..eb7f065ce 100644
--- a/core/src/main/res/values/attrs.xml
+++ b/core/src/main/res/values/attrs.xml
@@ -61,6 +61,7 @@
+
diff --git a/core/src/main/res/values/dimens.xml b/core/src/main/res/values/dimens.xml
index 46da1d68e..cdde0027d 100644
--- a/core/src/main/res/values/dimens.xml
+++ b/core/src/main/res/values/dimens.xml
@@ -40,4 +40,6 @@
24dp
8dp
+ 0dp
+
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 3d7cbfe10..9d64cf549 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -122,15 +122,17 @@
Find Podcast in Directory
For new podcasts, you can search iTunes or fyyd, or browse gpodder.net by name, category or popularity.
Browse gpodder.net
+ Discover
+ more »
Mark all as played
Marked all Episodes as played
Please confirm that you want to mark all episodes as being played.
Please confirm that you want to mark all episodes in this podcast as being played.
- Mark all as seen
- Marked all episodes as seen
- Please confirm that you want to mark all episodes as seen.
+ Remove all \"new\" flags
+ Removed all \"new\" flags
+ Please confirm that you want to remove the \"new\" flag from all episodes.
Show information
Show podcast settings
Podcast info
@@ -182,8 +184,8 @@
- %d episode deleted.
- %d episodes deleted.
- Mark as seen
- Marked as seen
+ Remove \"new\" flag
+ Removed \"new\" flag
Mark as played
Marked as played
@@ -211,7 +213,6 @@
Remove from Favorites
Removed from Favorites
Visit Website
- Flattr this
Skip episode
Activate Auto Download
Deactivate Auto Download
@@ -305,34 +306,6 @@
Old to new
New to old
-
- Flattr sign-in
- Press the button below to start the authentication process. You will be forwarded to the flattr login screen in your browser and be asked to give AntennaPod the permission to flattr things. After you have given permission, you will return to this screen automatically.
- Authenticate
- Return to home
- Authentication was successful! You can now flattr things within the app.
- No Flattr token found
- Your flattr account does not seem to be connected to AntennaPod. Tap here to authenticate.
- Your flattr account does not seem to be connected to AntennaPod. You can either connect your account to AntennaPod to flattr things within the app or you can visit the website of the thing to flattr it there.
- Authenticate
- Action forbidden
- AntennaPod has no permission for this action. The reason for this could be that the access token of AntennaPod to your account has been revoked. You can either re-reauthenticate or visit the website of the thing instead.
- Access revoked
- You have successfully revoked AntennaPod\'s access token to your account. In order to complete the process, you have to remove this app from the list of approved applications in your account settings on the flattr website.
-
-
- Flattr\'ed one thing!
- Flattr\'ed %d things!
- Flattr\'ed: %s.
- Failed to flattr %d things!
- Not flattr\'ed: %s.
- Thing will be flattr\'ed later
- Flattring %s
- AntennaPod is flattring
- AntennaPod has flattr\'ed
- AntennaPod flattr failed
- Retrieving flattr\'ed things
-
Download Plugin
Plugin Not Installed
@@ -344,7 +317,6 @@
No queued episodes
Add an episode by downloading it, or long press an episode and select \"Add to queue\".
You haven\'t subscribed to any podcasts yet.
- This episode has no chapters.
This episode has no shownotes.
No downloads running
You can download episodes on the podcast details screen.
@@ -360,6 +332,8 @@
When new episodes arrive, they will be shown here.
No favorite episodes
You can add episodes to the favorites by long-pressing them.
+ No chapters
+ This episode has no chapters.
Storage
@@ -368,8 +342,6 @@
About
Queue
Integrations
- Flattr
- Micropayment service
Automation
Details
Import/Export
@@ -419,15 +391,6 @@
Images only
Everything
Refreshing
- Flattr settings
- Flattr sign-in
- Sign in to your flattr account to flattr things directly from the app.
- Flattr this App
- Support the development of AntennaPod by flattring it. Thanks!
- Revoke access
- Revoke the access permission to your flattr account for this app.
- Automatic Flattr
- Configure automatic flattring
User Interface
Select Theme
Customize Navigation Drawer
@@ -541,12 +504,6 @@
Delete removes from Queue
Automatically remove an episode from the queue when it is deleted.
-
- Enable automatic flattring
- Flattr episode as soon as %d percent have been played
- Flattr episode when playback starts
- Flattr episode when playback ends
-
Search for episodes
Found in show notes
@@ -652,7 +609,7 @@
Choose Data Folder
Please choose the base of your data folder. AntennaPod will create the appropriate sub-directories.
Access to external storage is required to change the data folder
- %1$s free
+ %1$s of %2$s free
Create new folder with name "%1$s"?
Created new folder
Cannot write to this folder
@@ -705,10 +662,13 @@
Importing subscriptions from single-purpose apps…
+
+ Search podcast…
Search iTunes
- Filter
-
Search fyyd
+ Advanced search
+
+ Filter
All
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index d80137ea3..4c69306a9 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -71,7 +71,7 @@
- @drawable/ic_forum_grey600_24dp
- @drawable/ic_bug_grey600_24dp
- @drawable/ic_format_list_bulleted_grey600_24dp
-
+ - @drawable/ic_bookmark_grey600_24dp
- @color/master_switch_background_light
- @color/highlight_light
@@ -155,6 +155,7 @@
- @drawable/ic_baseline_question_answer_white_24dp
- @drawable/ic_bug_white_24dp
- @drawable/ic_format_list_bulleted_white_24dp
+ - @drawable/ic_bookmark_white_24dp
- @color/master_switch_background_dark
- @color/highlight_dark
- @style/PreferenceThemeOverlay.v14.Material
diff --git a/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java
index 9af76cf86..862fe23f5 100644
--- a/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java
+++ b/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java
@@ -29,8 +29,6 @@ public class ClientConfig {
public static GpodnetCallbacks gpodnetCallbacks;
- public static FlattrCallbacks flattrCallbacks;
-
public static DBTasksCallbacks dbTasksCallbacks;
public static CastCallbacks castCallbacks;
@@ -43,7 +41,6 @@ public class ClientConfig {
}
PodDBAdapter.init(context);
UserPreferences.init(context);
- UpdateManager.init(context);
PlaybackPreferences.init(context);
NetworkUtils.init(context);
CastManager.init(context);