From 37f279eb34d5ef335614a16676f19a42acf17da3 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 29 Nov 2020 11:08:19 +0100 Subject: [PATCH] Add next button for playlists --- .../playpad/layout/desktop/pad/DesktopPadView.java | 13 ++++++++++++- .../desktop/pad/DesktopPadViewController.java | 8 ++++++++ .../de/tobias/playpad/pad/content/Playlistable.java | 2 ++ .../content/pad/ContentPlayerPadContent.scala | 4 ++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java index 56097e45..c8107626 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java @@ -14,6 +14,7 @@ import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.pad.content.PadContent; import de.tobias.playpad.pad.content.PadContentFactory; import de.tobias.playpad.pad.content.PadContentRegistry; +import de.tobias.playpad.pad.content.Playlistable; import de.tobias.playpad.pad.content.play.Pauseable; import de.tobias.playpad.pad.view.IPadContentView; import de.tobias.playpad.pad.view.IPadView; @@ -56,6 +57,7 @@ public class DesktopPadView implements IPadView { private ProgressBar playBar; private Button playButton; private Button pauseButton; + private Button nextButton; private Button stopButton; private Button newButton; private Button settingsButton; @@ -108,6 +110,7 @@ public class DesktopPadView implements IPadView { // Buttons playButton = new PadButton(new FontIcon(FontAwesomeType.PLAY), controller); pauseButton = new PadButton(new FontIcon(FontAwesomeType.PAUSE), controller); + nextButton = new PadButton(new FontIcon(FontAwesomeType.FORWARD), controller); stopButton = new PadButton(new FontIcon(FontAwesomeType.STOP), controller); newButton = new PadButton(new FontIcon(FontAwesomeType.FOLDER_OPEN), controller); settingsButton = new PadButton(new FontIcon(FontAwesomeType.GEAR), controller); @@ -214,6 +217,10 @@ public class DesktopPadView implements IPadView { return pauseButton; } + Button getNextButton() { + return nextButton; + } + Button getStopButton() { return stopButton; } @@ -252,7 +259,11 @@ public class DesktopPadView implements IPadView { if (pad.getContent() != null) { if (pad.getContent() instanceof Pauseable) { if (pad.getStatus() == PadStatus.PLAY) { - buttonBox.getChildren().setAll(pauseButton, stopButton, settingsButton); + if (pad.getContent() instanceof Playlistable) { + buttonBox.getChildren().setAll(pauseButton, nextButton, stopButton, settingsButton); + } else { + buttonBox.getChildren().setAll(pauseButton, stopButton, settingsButton); + } } else { buttonBox.getChildren().setAll(playButton, stopButton, settingsButton); } diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java index 3b9bbbc5..34f7d484 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java @@ -156,6 +156,8 @@ public class DesktopPadViewController implements IPadViewController, EventHandle onPlay(); } else if (event.getSource() == padView.getPauseButton()) { onPause(); + } else if (event.getSource() == padView.getNextButton()) { + onNext(); } else if (event.getSource() == padView.getStopButton()) { onStop(); } else if (event.getSource() == padView.getNewButton()) { @@ -183,6 +185,12 @@ public class DesktopPadViewController implements IPadViewController, EventHandle } } + private void onNext() { + if (pad.getContent() instanceof Playlistable) { + ((Playlistable) pad.getContent()).next(); + } + } + private void onStop() { if (pad.getContent() != null) { pad.setStatus(PadStatus.STOP); diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java index 43232e51..e615cf3e 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java @@ -2,4 +2,6 @@ package de.tobias.playpad.pad.content; public interface Playlistable { int currentPlayingMediaIndex(); + + void next(); } diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala index e7bce2c1..a637ae6d 100644 --- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala +++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala @@ -103,6 +103,10 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte mediaPlayers(currentRunningIndex).pause() } + override def next(): Unit = { + mediaPlayers(currentRunningIndex).next() + } + override def stop(): Boolean = { isPause = false mediaPlayers(currentRunningIndex).stop() -- GitLab