Mark as unplayed option

Users can mark feed items as unplayed from feed item fragment and the queue
This commit is contained in:
Martin Fietz 2015-04-22 19:11:42 +02:00 committed by Martin Fietz
parent 3301342a76
commit e68ca0529b
3 changed files with 45 additions and 3 deletions

View File

@ -38,6 +38,8 @@ import de.danoeh.antennapod.core.feed.Feed;
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.gpoddernet.model.GpodnetEpisodeAction;
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadService;
import de.danoeh.antennapod.core.service.download.Downloader;
@ -307,6 +309,11 @@ public class QueueFragment extends Fragment {
menu.findItem(R.id.move_to_top_item).setEnabled(!queue.isEmpty() && queue.get(0) != item);
menu.findItem(R.id.move_to_bottom_item).setEnabled(!queue.isEmpty() && queue.get(queue.size() - 1) != item);
if(item.isRead()) {
menu.findItem(R.id.mark_read_item).setVisible(false);
} else {
menu.findItem(R.id.mark_unread_item).setVisible(false);
}
}
@Override
@ -323,6 +330,33 @@ public class QueueFragment extends Fragment {
case R.id.move_to_top_item:
DBWriter.moveQueueItemToTop(getActivity(), selectedItem.getId(), true);
return true;
case R.id.mark_read_item:
DBWriter.markItemRead(getActivity(), selectedItem, true, false);
selectedItem.setRead(true);
if(GpodnetPreferences.loggedIn()) {
FeedMedia media = selectedItem.getMedia();
GpodnetEpisodeAction actionPlay = new GpodnetEpisodeAction.Builder(selectedItem, GpodnetEpisodeAction.Action.PLAY)
.currentDeviceId()
.currentTimestamp()
.started(media.getDuration() / 1000)
.position(media.getDuration() / 1000)
.total(media.getDuration() / 1000)
.build();
GpodnetPreferences.enqueueEpisodeAction(actionPlay);
}
return true;
case R.id.mark_unread_item:
DBWriter.markItemRead(getActivity(), selectedItem, false, false);
selectedItem.setRead(false);
if(GpodnetPreferences.loggedIn()) {
GpodnetEpisodeAction actionNew = new GpodnetEpisodeAction.Builder(selectedItem, GpodnetEpisodeAction.Action.NEW)
.currentDeviceId()
.currentTimestamp()
.build();
GpodnetPreferences.enqueueEpisodeAction(actionNew);
}
startItemLoader();
return true;
case R.id.move_to_bottom_item:
DBWriter.moveQueueItemToBottom(getActivity(), selectedItem.getId(), true);
return true;

View File

@ -5,7 +5,6 @@ import android.content.Intent;
import android.net.Uri;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.BuildConfig;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.gpoddernet.model.GpodnetEpisodeAction;
@ -100,8 +99,7 @@ public class FeedItemMenuHandler {
mi.setItemVisibility(R.id.share_link_item, false);
}
if (!BuildConfig.DEBUG
|| !(state == FeedItem.State.IN_PROGRESS || state == FeedItem.State.READ)) {
if (!(state == FeedItem.State.IN_PROGRESS || state == FeedItem.State.READ)) {
mi.setItemVisibility(R.id.mark_unread_item, false);
}
if (!(state == FeedItem.State.NEW || state == FeedItem.State.IN_PROGRESS)) {

View File

@ -7,6 +7,16 @@
android:menuCategory="container"
android:title="@string/move_to_top_label" />
<item
android:id="@+id/mark_read_item"
android:menuCategory="container"
android:title="@string/mark_read_label" />
<item
android:id="@+id/mark_unread_item"
android:menuCategory="container"
android:title="@string/mark_unread_label" />
<item
android:id="@+id/remove_from_queue_item"
android:menuCategory="container"