summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/build.gradle1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/QueueEvent.java51
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java17
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java34
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java47
6 files changed, 98 insertions, 57 deletions
diff --git a/core/build.gradle b/core/build.gradle
index 710378a18..c327f194c 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -45,4 +45,5 @@ dependencies {
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okio:okio:1.2.0'
compile 'com.nineoldandroids:library:2.4.0'
+ compile 'de.greenrobot:eventbus:2.4.0'
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java b/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java
index 6655a7522..20a85d43f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java
@@ -24,7 +24,6 @@ public class EventDistributor extends Observable {
public static final int FEED_LIST_UPDATE = 1;
public static final int UNREAD_ITEMS_UPDATE = 2;
- public static final int QUEUE_UPDATE = 4;
public static final int DOWNLOADLOG_UPDATE = 8;
public static final int PLAYBACK_HISTORY_UPDATE = 16;
public static final int DOWNLOAD_QUEUED = 32;
@@ -97,10 +96,6 @@ public class EventDistributor extends Observable {
addEvent(UNREAD_ITEMS_UPDATE);
}
- public void sendQueueUpdateBroadcast() {
- addEvent(QUEUE_UPDATE);
- }
-
public void sendFeedUpdateBroadcast() {
addEvent(FEED_LIST_UPDATE);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/QueueEvent.java b/core/src/main/java/de/danoeh/antennapod/core/feed/QueueEvent.java
new file mode 100644
index 000000000..9f1eec754
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/QueueEvent.java
@@ -0,0 +1,51 @@
+package de.danoeh.antennapod.core.feed;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.List;
+
+public class QueueEvent {
+
+ public enum Action {
+ ADDED, ADDED_ITEMS, REMOVED, CLEARED, DELETED_MEDIA, SORTED
+ }
+
+ public final Action action;
+ public final FeedItem item;
+ public final int position;
+ public final List<FeedItem> items;
+
+ public QueueEvent(Action action) {
+ this(action, null, null, -1);
+ }
+
+ public QueueEvent(Action action, FeedItem item) {
+ this(action, item, null, -1);
+ }
+
+ public QueueEvent(Action action, FeedItem item, int position) {
+ this(action, item, null, position);
+ }
+
+ public QueueEvent(Action action, List<FeedItem> items) {
+ this(action, null, items, -1);
+ }
+
+ private QueueEvent(Action action, FeedItem item, List<FeedItem> items, int position) {
+ this.action = action;
+ this.item = item;
+ this.items = items;
+ this.position = position;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
+ .append("action", action)
+ .append("item", item)
+ .append("items", items)
+ .append("position", position)
+ .toString();
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
index 3e414a8b7..cde03adea 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
@@ -76,18 +76,13 @@ public class PlaybackServiceTaskManager {
}
});
loadQueue();
- EventDistributor.getInstance().register(eventDistributorListener);
+ EventBus.getDefault().register(this);
}
- private final EventDistributor.EventListener eventDistributorListener = new EventDistributor.EventListener() {
- @Override
- public void update(EventDistributor eventDistributor, Integer arg) {
- if ((EventDistributor.QUEUE_UPDATE & arg) != 0) {
- cancelQueueLoader();
- loadQueue();
- }
- }
- };
+ public void onEvent(QueueEvent event) {
+ cancelQueueLoader();
+ loadQueue();
+ }
private synchronized boolean isQueueLoaderActive() {
return queueFuture != null && !queueFuture.isDone();
@@ -319,7 +314,7 @@ public class PlaybackServiceTaskManager {
* execution of this method.
*/
public synchronized void shutdown() {
- EventDistributor.getInstance().unregister(eventDistributorListener);
+ EventBus.getDefault().unregister(this);
cancelAllTasks();
schedExecutor.shutdown();
}
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 63c52b488..bd0cfee5b 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
@@ -41,7 +41,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.util.LongList;
-import de.danoeh.antennapod.core.util.QueueAccess;
import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
import de.danoeh.antennapod.core.util.flattr.FlattrThing;
import de.danoeh.antennapod.core.util.flattr.SimpleFlattrThing;
@@ -350,8 +349,7 @@ public class DBWriter {
public void run() {
final PodDBAdapter adapter = new PodDBAdapter(context);
adapter.open();
- final List<FeedItem> queue = DBReader
- .getQueue(context, adapter);
+ final List<FeedItem> queue = DBReader.getQueue(context, adapter);
FeedItem item = null;
if (queue != null) {
@@ -490,21 +488,14 @@ public class DBWriter {
public void run() {
final PodDBAdapter adapter = new PodDBAdapter(context);
adapter.open();
- final List<FeedItem> queue = DBReader
- .getQueue(context, adapter);
- FeedItem item = null;
+ final List<FeedItem> queue = DBReader.getQueue(context, adapter);
if (queue != null) {
- boolean queueModified = false;
- QueueAccess queueAccess = QueueAccess.ItemListAccess(queue);
- if (queueAccess.contains(item.getId())) {
- if (item != null) {
- queueModified = queueAccess.remove(item.getId());
- }
- }
- if (queueModified) {
+ int position = queue.indexOf(item);
+ if(position >= 0) {
+ queue.remove(position);
adapter.setQueue(queue);
- EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.REMOVED, item));
+ EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.REMOVED, item, position));
} else {
Log.w(TAG, "Queue was not modified by call to removeQueueItem");
}
@@ -631,6 +622,19 @@ public class DBWriter {
/**
* Sets the 'read'-attribute of a FeedItem to the specified value.
*
+ * @param context A context that is used for opening a database connection.
+ * @param itemId ID of the FeedItem
+ * @param read New value of the 'read'-attribute
+ */
+ public static Future<?> markItemRead(final Context context, final long itemId,
+ final boolean read) {
+ return markItemRead(context, itemId, read, 0, false);
+ }
+
+
+ /**
+ * Sets the 'read'-attribute of a FeedItem to the specified value.
+ *
* @param context A context that is used for opening a database connection.
* @param item The FeedItem object
* @param read New value of the 'read'-attribute
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java
index 0e03bc8b4..e947dc5d0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java
@@ -1,9 +1,6 @@
package de.danoeh.antennapod.core.util.gui;
-import android.os.Bundle;
import android.os.Handler;
-import android.os.Parcelable;
-import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
@@ -16,23 +13,36 @@ import de.danoeh.antennapod.core.R;
import static com.nineoldandroids.view.ViewPropertyAnimator.animate;
-public class UndoBarController {
+public class UndoBarController<T> {
private View mBarView;
private TextView mMessageView;
private ViewPropertyAnimator mBarAnimator;
private Handler mHideHandler = new Handler();
- private UndoListener mUndoListener;
+ private UndoListener<T> mUndoListener;
// State objects
- private Parcelable mUndoToken;
+ private T mUndoToken;
private CharSequence mUndoMessage;
- public interface UndoListener {
- void onUndo(Parcelable token);
+ public interface UndoListener<T> {
+ /**
+ * This callback function is called when the undo button is pressed
+ *
+ * @param token
+ */
+ void onUndo(T token);
+
+ /**
+ *
+ * This callback function is called when the bar fades out without button press
+ *
+ * @param token
+ */
+ void onHide(T token);
}
- public UndoBarController(View undoBarView, UndoListener undoListener) {
+ public UndoBarController(View undoBarView, UndoListener<T> undoListener) {
mBarView = undoBarView;
mBarAnimator = animate(mBarView);
mUndoListener = undoListener;
@@ -50,7 +60,7 @@ public class UndoBarController {
hideUndoBar(true);
}
- public void showUndoBar(boolean immediate, CharSequence message, Parcelable undoToken) {
+ public void showUndoBar(boolean immediate, CharSequence message, T undoToken) {
mUndoToken = undoToken;
mUndoMessage = message;
mMessageView.setText(mUndoMessage);
@@ -96,26 +106,11 @@ public class UndoBarController {
}
}
- public void onSaveInstanceState(Bundle outState) {
- outState.putCharSequence("undo_message", mUndoMessage);
- outState.putParcelable("undo_token", mUndoToken);
- }
-
- public void onRestoreInstanceState(Bundle savedInstanceState) {
- if (savedInstanceState != null) {
- mUndoMessage = savedInstanceState.getCharSequence("undo_message");
- mUndoToken = savedInstanceState.getParcelable("undo_token");
-
- if (mUndoToken != null || !TextUtils.isEmpty(mUndoMessage)) {
- showUndoBar(true, mUndoMessage, mUndoToken);
- }
- }
- }
-
private Runnable mHideRunnable = new Runnable() {
@Override
public void run() {
hideUndoBar(false);
+ mUndoListener.onHide(mUndoToken);
}
};
}