From 1605e50cef85e54a7ff6faee6519ba13c45c0b74 Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 9 Sep 2020 20:30:57 +0200 Subject: [PATCH] Update notification when play queue is edited --- .../schabi/newpipe/player/VideoPlayerImpl.java | 6 ++++++ .../player/playback/MediaSourceManager.java | 16 ++++++++-------- .../player/playback/PlaybackListener.java | 11 ++++++++++- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/VideoPlayerImpl.java b/app/src/main/java/org/schabi/newpipe/player/VideoPlayerImpl.java index dd23b47e6..7e02549f1 100644 --- a/app/src/main/java/org/schabi/newpipe/player/VideoPlayerImpl.java +++ b/app/src/main/java/org/schabi/newpipe/player/VideoPlayerImpl.java @@ -642,6 +642,12 @@ public class VideoPlayerImpl extends VideoPlayer duration); } + @Override + public void onPlayQueueEdited() { + updatePlayback(); + NotificationUtil.getInstance().createNotificationIfNeededAndUpdate(this, false); + } + @Override @Nullable public MediaSource sourceOf(final PlayQueueItem item, final StreamInfo info) { diff --git a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java index 23e813c4b..1b8c62e64 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java @@ -255,21 +255,21 @@ public class MediaSourceManager { // Loading and Syncing switch (event.type()) { - case INIT: - case REORDER: - case ERROR: - case SELECT: + case INIT: case REORDER: case ERROR: case SELECT: loadImmediate(); // low frequency, critical events break; - case APPEND: - case REMOVE: - case MOVE: - case RECOVERY: + case APPEND: case REMOVE: case MOVE: case RECOVERY: default: loadDebounced(); // high frequency or noncritical events break; } + // update ui and notification + switch (event.type()) { + case APPEND: case REMOVE: case MOVE: case REORDER: + playbackListener.onPlayQueueEdited(); + } + if (!isPlayQueueReady()) { maybeBlock(); playQueue.fetch(); diff --git a/app/src/main/java/org/schabi/newpipe/player/playback/PlaybackListener.java b/app/src/main/java/org/schabi/newpipe/player/playback/PlaybackListener.java index 0755bdd7a..811f82b3b 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playback/PlaybackListener.java +++ b/app/src/main/java/org/schabi/newpipe/player/playback/PlaybackListener.java @@ -69,7 +69,7 @@ public interface PlaybackListener { MediaSource sourceOf(PlayQueueItem item, StreamInfo info); /** - * Called when the play queue can no longer to played or used. + * Called when the play queue can no longer be played or used. * Currently, this means the play queue is empty and complete. * Signals to the listener that it should shutdown. *

@@ -77,4 +77,13 @@ public interface PlaybackListener { *

*/ void onPlaybackShutdown(); + + /** + * Called whenever the play queue was edited (items were added, deleted or moved), + * use this to e.g. update notification buttons or fragment ui. + *

+ * May be called at any time. + *

+ */ + void onPlayQueueEdited(); }