summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java58
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java9
11 files changed, 49 insertions, 55 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java b/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java
index c3486f2f2..b9247e76b 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java
@@ -93,7 +93,7 @@ public class DefaultActionButtonCallback implements ActionButtonCallback {
}
} else {
if (!item.isPlayed()) {
- DBWriter.markItemRead(context, item, true, true);
+ DBWriter.markItemPlayed(context, item, FeedItem.PLAYED, true);
}
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
index 0751ee602..dbc99b21a 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
@@ -372,12 +372,12 @@ public class EpisodesApplyActionFragment extends Fragment {
}
private void markedCheckedPlayed() {
- DBWriter.markItemRead(getActivity(), true, checkedIds.toArray());
+ DBWriter.markItemPlayed(getActivity(), FeedItem.PLAYED, checkedIds.toArray());
close();
}
private void markedCheckedUnplayed() {
- DBWriter.markItemRead(getActivity(), false, checkedIds.toArray());
+ DBWriter.markItemPlayed(getActivity(), FeedItem.UNPLAYED, checkedIds.toArray());
close();
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
index 9a25674b6..b0ccbfbea 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
@@ -13,7 +13,6 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.feed.QueueEvent;
-import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.util.gui.FeedItemUndoToken;
@@ -72,7 +71,9 @@ public class NewEpisodesFragment extends AllEpisodesFragment {
Log.d(TAG, "remove(" + which + ")");
stopItemLoader();
FeedItem item = (FeedItem) listView.getAdapter().getItem(which);
- DBWriter.markItemRead(getActivity(), true, item.getId());
+ // we're marking it as unplayed since the user didn't actually play it
+ // but they don't want it considered 'NEW' anymore
+ DBWriter.markItemPlayed(getActivity(), FeedItem.UNPLAYED, item.getId());
undoBarController.showUndoBar(false,
getString(R.string.marked_as_read_label), new FeedItemUndoToken(item,
which)
@@ -88,7 +89,7 @@ public class NewEpisodesFragment extends AllEpisodesFragment {
public void onUndo(FeedItemUndoToken token) {
if (token != null) {
long itemId = token.getFeedItemId();
- DBWriter.markItemRead(context, false, itemId);
+ DBWriter.markItemPlayed(context, FeedItem.NEW, itemId);
}
}
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
index 3e2fdf24f..014b44078 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
@@ -155,7 +155,7 @@ public class FeedItemMenuHandler {
break;
case R.id.mark_read_item:
selectedItem.setPlayed(true);
- DBWriter.markItemRead(context, selectedItem, true, false);
+ DBWriter.markItemPlayed(context, selectedItem, FeedItem.PLAYED, false);
if(GpodnetPreferences.loggedIn()) {
FeedMedia media = selectedItem.getMedia();
// not all items have media, Gpodder only cares about those that do
@@ -173,7 +173,7 @@ public class FeedItemMenuHandler {
break;
case R.id.mark_unread_item:
selectedItem.setPlayed(false);
- DBWriter.markItemRead(context, selectedItem, false, false);
+ DBWriter.markItemPlayed(context, selectedItem, FeedItem.UNPLAYED, false);
if(GpodnetPreferences.loggedIn()) {
GpodnetEpisodeAction actionNew = new GpodnetEpisodeAction.Builder(selectedItem, Action.NEW)
.currentDeviceId()
@@ -195,7 +195,7 @@ public class FeedItemMenuHandler {
break;
case R.id.reset_position:
selectedItem.getMedia().setPosition(0);
- DBWriter.markItemRead(context, selectedItem, false, true);
+ DBWriter.markItemPlayed(context, selectedItem, FeedItem.UNPLAYED, true);
break;
case R.id.activate_auto_download:
selectedItem.setAutoDownload(true);
diff --git a/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java b/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java
index 990b3bd54..0f726f214 100644
--- a/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java
+++ b/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java
@@ -16,7 +16,6 @@ import android.widget.RemoteViews;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
-import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
@@ -59,7 +58,7 @@ public class PlayerWidgetService extends Service {
if (media.hasAlmostEnded()) {
Log.d(TAG, "smart mark as read");
FeedItem item = media.getItem();
- DBWriter.markItemRead(this, item, true, false);
+ DBWriter.markItemPlayed(this, item, FeedItem.PLAYED, false);
DBWriter.removeQueueItem(this, item, false);
DBWriter.addItemToPlaybackHistory(this, media);
if (item.getFeed().getPreferences().getCurrentAutoDelete()) {
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 9dbf6cc61..ddb71fa7e 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
@@ -391,7 +391,7 @@ public class FeedMedia extends FeedFile implements Playable {
public void saveCurrentPosition(SharedPreferences pref, int newPosition) {
DBWriter.setFeedMediaPlaybackInformation(ClientConfig.applicationCallbacks.getApplicationInstance(), this);
if(item.isNew()) {
- DBWriter.markItemRead(ClientConfig.applicationCallbacks.getApplicationInstance(), false, item.getId());
+ DBWriter.markItemPlayed(ClientConfig.applicationCallbacks.getApplicationInstance(), FeedItem.UNPLAYED, item.getId());
}
setPosition(newPosition);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
index 915f5ee1b..e925f89a7 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
@@ -244,7 +244,7 @@ public class GpodnetSyncService extends Service {
case NEW:
FeedItem newItem = DBReader.getFeedItem(this, action.getPodcast(), action.getEpisode());
if(newItem != null) {
- DBWriter.markItemRead(this, newItem, false, true);
+ DBWriter.markItemPlayed(this, newItem, FeedItem.UNPLAYED, true);
} else {
Log.i(TAG, "Unknown feed item: " + action);
}
@@ -279,7 +279,7 @@ public class GpodnetSyncService extends Service {
media.setPosition(action.getPosition() * 1000);
DBWriter.setFeedMedia(this, media);
if(playItem.getMedia().hasAlmostEnded()) {
- DBWriter.markItemRead(this, playItem, true, true);
+ DBWriter.markItemPlayed(this, playItem, FeedItem.PLAYED, true);
DBWriter.addItemToPlaybackHistory(this, playItem.getMedia());
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index 0e3a347bc..0ccc04238 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -5,9 +5,7 @@ import android.app.Notification;
import android.app.PendingIntent;
import android.app.Service;
import android.bluetooth.BluetoothA2dp;
-import android.bluetooth.BluetoothHeadset;
import android.content.BroadcastReceiver;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -15,10 +13,8 @@ import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.AudioManager;
-import android.media.MediaMetadataRetriever;
import android.media.MediaPlayer;
import android.media.RemoteControlClient;
-import android.media.RemoteControlClient.MetadataEditor;
import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
@@ -31,7 +27,6 @@ import android.view.SurfaceHolder;
import android.widget.Toast;
import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.engine.DiskCacheStrategy;
import org.apache.commons.lang3.StringUtils;
@@ -569,7 +564,7 @@ public class PlaybackService extends Service {
if (playable instanceof FeedMedia) {
FeedMedia media = (FeedMedia) playable;
FeedItem item = media.getItem();
- DBWriter.markItemRead(PlaybackService.this, item, true, true);
+ DBWriter.markItemPlayed(PlaybackService.this, item, FeedItem.PLAYED, true);
try {
final List<FeedItem> queue = taskManager.getQueue();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
index e4149a6c5..c54afc7d6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
@@ -201,7 +201,7 @@ public class PlaybackServiceMediaPlayer {
if(oldMedia.hasAlmostEnded()) {
Log.d(TAG, "smart mark as read");
FeedItem item = oldMedia.getItem();
- DBWriter.markItemRead(context, item, true, false);
+ DBWriter.markItemPlayed(context, item, FeedItem.PLAYED, false);
DBWriter.removeQueueItem(context, item, false);
DBWriter.addItemToPlaybackHistory(context, oldMedia);
if (item.getFeed().getPreferences().getCurrentAutoDelete()) {
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 12bc208a6..0f7065c59 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
@@ -366,7 +366,7 @@ public class DBWriter {
adapter.setQueue(queue);
EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.ADDED, item, index));
if(item.isNew()) {
- DBWriter.markItemRead(context, false, item.getId());
+ DBWriter.markItemPlayed(context, FeedItem.UNPLAYED, item.getId());
}
}
}
@@ -432,7 +432,7 @@ public class DBWriter {
adapter.setQueue(queue);
EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.ADDED_ITEMS, queue));
if(markAsUnplayedIds.size() > 0) {
- DBWriter.markItemRead(context, false, markAsUnplayedIds.toArray());
+ DBWriter.markItemPlayed(context, FeedItem.UNPLAYED, markAsUnplayedIds.toArray());
}
}
}
@@ -614,20 +614,17 @@ public class DBWriter {
* Sets the 'read'-attribute of all specified FeedItems
*
* @param context A context that is used for opening a database connection.
- * @param read New value of the 'read'-attribute
+ * @param played New value of the 'read'-attribute, one of FeedItem.PLAYED, FeedItem.NEW,
+ * FeedItem.UNPLAYED
* @param itemIds IDs of the FeedItems.
*/
- public static Future<?> markItemRead(final Context context, final boolean read, final long... itemIds) {
- return dbExec.submit(new Runnable() {
- @Override
- public void run() {
- final PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- int played = read ? FeedItem.PLAYED : FeedItem.UNPLAYED;
- adapter.setFeedItemRead(played, itemIds);
- adapter.close();
- EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast();
- }
+ public static Future<?> markItemPlayed(final Context context, final int played, final long... itemIds) {
+ return dbExec.submit(() -> {
+ final PodDBAdapter adapter = new PodDBAdapter(context);
+ adapter.open();
+ adapter.setFeedItemRead(played, itemIds);
+ adapter.close();
+ EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast();
});
}
@@ -637,30 +634,27 @@ public class DBWriter {
*
* @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
+ * @param played New value of the 'read'-attribute one of FeedItem.PLAYED,
+ * FeedItem.NEW, FeedItem.UNPLAYED
* @param resetMediaPosition true if this method should also reset the position of the FeedItem's FeedMedia object.
* If the FeedItem has no FeedMedia object, this parameter will be ignored.
*/
- public static Future<?> markItemRead(Context context, FeedItem item, boolean read, boolean resetMediaPosition) {
+ public static Future<?> markItemPlayed(Context context, FeedItem item, int played, boolean resetMediaPosition) {
long mediaId = (item.hasMedia()) ? item.getMedia().getId() : 0;
- return markItemRead(context, item.getId(), read, mediaId, resetMediaPosition);
+ return markItemPlayed(context, item.getId(), played, mediaId, resetMediaPosition);
}
- private static Future<?> markItemRead(final Context context, final long itemId,
- final boolean read, final long mediaId,
- final boolean resetMediaPosition) {
- return dbExec.submit(new Runnable() {
-
- @Override
- public void run() {
- final PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setFeedItemRead(read, itemId, mediaId,
- resetMediaPosition);
- adapter.close();
-
- EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast();
- }
+ private static Future<?> markItemPlayed(final Context context, final long itemId,
+ final int played, final long mediaId,
+ final boolean resetMediaPosition) {
+ return dbExec.submit(() -> {
+ final PodDBAdapter adapter = new PodDBAdapter(context);
+ adapter.open();
+ adapter.setFeedItemRead(played, itemId, mediaId,
+ resetMediaPosition);
+ adapter.close();
+
+ EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast();
});
}
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 b179c6f24..4714f4880 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
@@ -778,12 +778,12 @@ public class PodDBAdapter {
return item.getId();
}
- public void setFeedItemRead(boolean read, long itemId, long mediaId,
+ public void setFeedItemRead(int played, long itemId, long mediaId,
boolean resetMediaPosition) {
db.beginTransaction();
ContentValues values = new ContentValues();
- values.put(KEY_READ, read ? FeedItem.PLAYED : FeedItem.UNPLAYED);
+ values.put(KEY_READ, played);
db.update(TABLE_NAME_FEED_ITEMS, values, KEY_ID + "=?", new String[]{String.valueOf(itemId)});
if (resetMediaPosition) {
@@ -796,6 +796,11 @@ public class PodDBAdapter {
db.endTransaction();
}
+ /**
+ * Sets the 'read' attribute of the item.
+ * @param read must be one of FeedItem.PLAYED, FeedItem.NEW, FeedItem.UNPLAYED
+ * @param itemIds items to change the value of
+ */
public void setFeedItemRead(int read, long... itemIds) {
db.beginTransaction();
ContentValues values = new ContentValues();