diff options
author | ByteHamster <info@bytehamster.com> | 2020-11-19 11:24:31 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2020-11-19 11:24:31 +0100 |
commit | 4b252250c0df856a63c801c03191e64f4909c239 (patch) | |
tree | af18e2cbdf9d497bc657d3f998ae93b920a8bb10 /core/src/main/java/de/danoeh | |
parent | ba09afd2159cd0ba2221472aa7492ee77e3f0811 (diff) | |
parent | 4e12615a2de96357f4df7b9a971bc65792dd48ad (diff) | |
download | AntennaPod-4b252250c0df856a63c801c03191e64f4909c239.zip |
Merge branch 'master' into develop
Diffstat (limited to 'core/src/main/java/de/danoeh')
6 files changed, 35 insertions, 33 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java index 971808eb4..e1bad4d93 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java @@ -97,15 +97,11 @@ public class LocalFeedUpdater { // set default feed image feed.setImageUrl(getDefaultIconUrl(context)); } - if (feed.getPreferences().getAutoDownload()) { - feed.getPreferences().setAutoDownload(false); - feed.getPreferences().setAutoDeleteAction(FeedPreferences.AutoDeleteAction.NO); - try { - DBWriter.setFeedPreferences(feed.getPreferences()).get(); - } catch (ExecutionException | InterruptedException e) { - e.printStackTrace(); - } - } + + feed.getPreferences().setAutoDownload(false); + feed.getPreferences().setAutoDeleteAction(FeedPreferences.AutoDeleteAction.NO); + feed.setDescription(context.getString(R.string.local_feed_description)); + feed.setAuthor(context.getString(R.string.local_folder)); // update items, delete items without existing file; // only delete items if the folder contains at least one element to avoid accidentally diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java index 2fe0aa8a5..b8bad7c0a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java @@ -168,6 +168,7 @@ public class DownloadService extends Service { startForeground(R.id.notification_downloading, notification); syncExecutor.execute(() -> onDownloadQueued(intent)); } else if (numberOfDownloads.get() == 0) { + stopForeground(true); stopSelf(); } else { Log.d(TAG, "onStartCommand: Unknown intent"); @@ -552,6 +553,7 @@ public class DownloadService extends Service { if (numberOfDownloads.get() <= 0 && DownloadRequester.getInstance().hasNoDownloads()) { Log.d(TAG, "Number of downloads is " + numberOfDownloads.get() + ", attempting shutdown"); + stopForeground(true); stopSelf(); if (notificationUpdater != null) { notificationUpdater.run(); 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 b218a73f9..4c1f23474 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 @@ -7,6 +7,7 @@ import androidx.collection.ArrayMap; import android.text.TextUtils; import android.util.Log; +import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -774,7 +775,7 @@ public final class DBReader { feedTotalTime += media.getDuration() / 1000; if (media.isDownloaded()) { - totalDownloadSize = totalDownloadSize + media.getSize(); + totalDownloadSize += new File(media.getFile_url()).length(); episodesDownloadCount++; } 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 e857cf610..4a0583ff4 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 @@ -445,7 +445,8 @@ public final class DBTasks { // as the most recent item // (if the most recent date is null then we can assume there are no items // and this is the first, hence 'new') - if (priorMostRecentDate == null + // New items that do not have a pubDate set are always marked as new + if (item.getPubDate() == null || priorMostRecentDate == null || priorMostRecentDate.before(item.getPubDate()) || priorMostRecentDate.equals(item.getPubDate())) { Log.d(TAG, "Marking item published on " + item.getPubDate() 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 539bedd9f..fc431d25d 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 @@ -316,46 +316,44 @@ public class PodDBAdapter { + JOIN_FEED_ITEM_AND_MEDIA; private static Context context; + private static PodDBAdapter instance; - private static volatile SQLiteDatabase db; + private final SQLiteDatabase db; + private final PodDBHelper dbHelper; public static void init(Context context) { PodDBAdapter.context = context.getApplicationContext(); } - // Bill Pugh Singleton Implementation - private static class SingletonHolder { - private static final PodDBHelper dbHelper = new PodDBHelper(PodDBAdapter.context, DATABASE_NAME, null); - private static final PodDBAdapter dbAdapter = new PodDBAdapter(); - } - public static PodDBAdapter getInstance() { - return SingletonHolder.dbAdapter; + if (instance == null) { + instance = new PodDBAdapter(); + } + return instance; } private PodDBAdapter() { + dbHelper = new PodDBHelper(PodDBAdapter.context, DATABASE_NAME, null); + db = openDb(); } - public synchronized PodDBAdapter open() { - if (db == null || !db.isOpen() || db.isReadOnly()) { - db = openDb(); - } - return this; - } - - @SuppressLint("NewApi") private SQLiteDatabase openDb() { SQLiteDatabase newDb; try { - newDb = SingletonHolder.dbHelper.getWritableDatabase(); + newDb = dbHelper.getWritableDatabase(); newDb.disableWriteAheadLogging(); } catch (SQLException ex) { Log.e(TAG, Log.getStackTraceString(ex)); - newDb = SingletonHolder.dbHelper.getReadableDatabase(); + newDb = dbHelper.getReadableDatabase(); } return newDb; } + public synchronized PodDBAdapter open() { + // do nothing + return this; + } + public synchronized void close() { // do nothing } @@ -371,8 +369,8 @@ public class PodDBAdapter { * <a href="https://github.com/robolectric/robolectric/issues/1890">robolectric/robolectric#1890</a>.</p> */ public static void tearDownTests() { - db = null; - SingletonHolder.dbHelper.close(); + getInstance().dbHelper.close(); + instance = null; } public static boolean deleteDatabase() { @@ -380,7 +378,7 @@ public class PodDBAdapter { adapter.open(); try { for (String tableName : ALL_TABLES) { - db.delete(tableName, "1", null); + adapter.db.delete(tableName, "1", null); } return true; } finally { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java index ad81a1d17..766986bed 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java @@ -14,8 +14,12 @@ public class FeedItemPubdateComparator implements Comparator<FeedItem> { */ @Override public int compare(FeedItem lhs, FeedItem rhs) { - if (rhs.getPubDate() == null || lhs.getPubDate() == null) { + if (rhs.getPubDate() == null && lhs.getPubDate() == null) { return 0; + } else if (rhs.getPubDate() == null) { + return 1; + } else if (lhs.getPubDate() == null) { + return -1; } return rhs.getPubDate().compareTo(lhs.getPubDate()); } |