summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/storage/DBWriter.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-08-02 23:54:50 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2013-08-02 23:54:50 +0200
commit2071793e6aa1a106744078fcbcf7c0529ed315c4 (patch)
treefb32bfd20e5e66401578c61e108afda1a0b1f81c /src/de/danoeh/antennapod/storage/DBWriter.java
parent71a47c0a5bf99a734081d217eb3e14d75f017a7a (diff)
downloadAntennaPod-2071793e6aa1a106744078fcbcf7c0529ed315c4.zip
Organizing the queue now works, several bugfixes etc.
Diffstat (limited to 'src/de/danoeh/antennapod/storage/DBWriter.java')
-rw-r--r--src/de/danoeh/antennapod/storage/DBWriter.java65
1 files changed, 51 insertions, 14 deletions
diff --git a/src/de/danoeh/antennapod/storage/DBWriter.java b/src/de/danoeh/antennapod/storage/DBWriter.java
index 3ff2fddc1..76f6306f8 100644
--- a/src/de/danoeh/antennapod/storage/DBWriter.java
+++ b/src/de/danoeh/antennapod/storage/DBWriter.java
@@ -1,6 +1,7 @@
package de.danoeh.antennapod.storage;
import java.io.File;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ExecutorService;
@@ -15,13 +16,11 @@ import android.database.Cursor;
import android.preference.PreferenceManager;
import android.util.Log;
import de.danoeh.antennapod.AppConfig;
-import de.danoeh.antennapod.feed.EventDistributor;
-import de.danoeh.antennapod.feed.Feed;
-import de.danoeh.antennapod.feed.FeedItem;
-import de.danoeh.antennapod.feed.FeedMedia;
+import de.danoeh.antennapod.feed.*;
import de.danoeh.antennapod.preferences.PlaybackPreferences;
import de.danoeh.antennapod.service.PlaybackService;
import de.danoeh.antennapod.service.download.DownloadStatus;
+import de.danoeh.antennapod.util.QueueAccess;
public class DBWriter {
private static final String TAG = "DBWriter";
@@ -349,20 +348,23 @@ public class DBWriter {
if (queue != null) {
boolean queueModified = false;
-
- if (itemListContains(queue, itemId)) {
+ QueueAccess queueAccess = QueueAccess.ItemListAccess(queue);
+ if (queueAccess.contains(itemId)) {
item = DBReader.getFeedItem(context, itemId);
if (item != null) {
- queue.remove(item);
- queueModified = true;
+ queueModified = queueAccess.remove(itemId);
}
}
if (queueModified) {
adapter.setQueue(queue);
EventDistributor.getInstance()
.sendQueueUpdateBroadcast();
- }
- }
+ } else {
+ Log.w(TAG, "Queue was not modified by call to removeQueueItem");
+ }
+ } else {
+ Log.e(TAG, "removeQueueItem: Could not load queue");
+ }
adapter.close();
if (performAutoDownload) {
@@ -393,21 +395,30 @@ public class DBWriter {
if (queue != null) {
if (from >= 0 && from < queue.size() && to >= 0
&& to < queue.size()) {
+
final FeedItem item = queue.remove(from);
queue.add(to, item);
- adapter.setQueue(queue);
+
+ adapter.setQueue(queue);
if (broadcastUpdate) {
EventDistributor.getInstance()
.sendQueueUpdateBroadcast();
}
}
- }
+ } else {
+ Log.e(TAG, "moveQueueItem: Could not load queue");
+ }
adapter.close();
}
});
}
+ public static void markItemRead(Context context, FeedItem item, boolean read, boolean resetMediaPosition) {
+ long mediaId = (item.hasMedia()) ? item.getMedia().getId() : 0;
+ markItemRead(context, item.getId(), read, mediaId, resetMediaPosition);
+ }
+
public static void markItemRead(final Context context, final long itemId,
final boolean read) {
markItemRead(context, itemId, read, 0, false);
@@ -507,9 +518,9 @@ public class DBWriter {
}
- static void setFeedMedia(final Context context,
+ public static Future<?> setFeedMedia(final Context context,
final FeedMedia media) {
- dbExec.submit(new Runnable() {
+ return dbExec.submit(new Runnable() {
@Override
public void run() {
@@ -522,6 +533,32 @@ public class DBWriter {
}
+ public static Future<?> setFeedItem(final Context context,
+ final FeedItem item) {
+ return dbExec.submit(new Runnable() {
+
+ @Override
+ public void run() {
+ PodDBAdapter adapter = new PodDBAdapter(context);
+ adapter.open();
+ adapter.setSingleFeedItem(item);
+ adapter.close();
+ }});
+ }
+
+ public static Future<?> setFeedImage(final Context context,
+ final FeedImage image) {
+ return dbExec.submit(new Runnable() {
+
+ @Override
+ public void run() {
+ PodDBAdapter adapter = new PodDBAdapter(context);
+ adapter.open();
+ adapter.setImage(image);
+ adapter.close();
+ }});
+ }
+
private static boolean itemListContains(List<FeedItem> items, long itemId) {
for (FeedItem item : items) {
if (item.getId() == itemId) {