From 05cb09e4fad0befb08396b58dbd5bc2699383e20 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sun, 6 Sep 2015 10:51:49 -0400 Subject: Set episode back to 'New' when undo remove from new episodes. markItemRead -> markItemPlayed and now requires the desired state instead of boolean. fixes AntennaPod/AntennaPod#1173 --- .../de/danoeh/antennapod/core/feed/FeedMedia.java | 2 +- .../core/service/GpodnetSyncService.java | 4 +- .../core/service/playback/PlaybackService.java | 7 +-- .../playback/PlaybackServiceMediaPlayer.java | 2 +- .../danoeh/antennapod/core/storage/DBWriter.java | 58 ++++++++++------------ .../antennapod/core/storage/PodDBAdapter.java | 9 +++- 6 files changed, 38 insertions(+), 44 deletions(-) (limited to 'core/src/main/java/de') 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 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(); -- cgit v1.2.3