diff --git a/PlayWall/src/main/resources/lang/_de.properties b/PlayWall/src/main/resources/lang/_de.properties index 84809cdf0268fa8f6ed2bbb5f625136426f8a3ee..e583b7e22368d531c167a9310fd19018bc4e63e8 100755 --- a/PlayWall/src/main/resources/lang/_de.properties +++ b/PlayWall/src/main/resources/lang/_de.properties @@ -215,7 +215,10 @@ Trigger.Volume.Name=Lautst\u00E4rke TriggerPoint.START=Start TriggerPoint.STOP=Stop TriggerPoint.EOF=Ende -TriggerPoint.PLAYLIST_NEXT=Playlist Next +TriggerPoint.PLAYLIST_START=Playlist Start +TriggerPoint.PLAYLIST_ITEM_START=Playlist Item Start +TriggerPoint.PLAYLIST_ITEM_END=Playlist Item Ende +TriggerPoint.PLAYLIST_END=Playlist Ende # Drag and Drop Mode DnDMode.Replace=Ersetzen diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerPlaylistListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerPlaylistListener.java index 4aad600ee6c0e4059c26195bf72b09a0c34b7cdc..efba0d26413e8bbac6095e7a6bc6e3ed58b8b1ed 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerPlaylistListener.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerPlaylistListener.java @@ -13,40 +13,35 @@ import javafx.util.Duration; public class PadTriggerPlaylistListener implements PlaylistListener { @Override public void onPlaylistStart(Pad pad) { - + handleTrigger(pad, TriggerPoint.PLAYLIST_START); } @Override public void onPlaylistItemStart(Pad pad) { - if (!pad.isIgnoreTrigger()) { - final PadSettings padSettings = pad.getPadSettings(); - final Trigger trigger = padSettings.getTriggers().get(TriggerPoint.PLAYLIST_ITEM_START); - executeTrigger(pad, trigger); - } else { - pad.setIgnoreTrigger(false); - } + handleTrigger(pad, TriggerPoint.PLAYLIST_ITEM_START); } @Override public void onPlaylistItemEnd(Pad pad) { - if (!pad.isIgnoreTrigger()) { - final PadSettings padSettings = pad.getPadSettings(); - final Trigger trigger = padSettings.getTriggers().get(TriggerPoint.PLAYLIST_ITEM_END); - executeTrigger(pad, trigger); - } else { - pad.setIgnoreTrigger(false); - } + handleTrigger(pad, TriggerPoint.PLAYLIST_ITEM_END); } @Override public void onPlaylistEnd(Pad pad) { - + handleTrigger(pad, TriggerPoint.PLAYLIST_END); } - private void executeTrigger(Pad pad, Trigger trigger) { - IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController(); - Profile currentProfile = Profile.currentProfile(); + private void handleTrigger(Pad pad, TriggerPoint point) { + if (!pad.isIgnoreTrigger()) { + final PadSettings padSettings = pad.getPadSettings(); + final Trigger trigger = padSettings.getTriggers().get(point); - trigger.handle(pad, Duration.ZERO, pad.getProject(), mainViewController, currentProfile); + final IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController(); + final Profile currentProfile = Profile.currentProfile(); + + trigger.handle(pad, Duration.ZERO, pad.getProject(), mainViewController, currentProfile); + } else { + pad.setIgnoreTrigger(false); + } } } diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java index fdf57e975dd2059d39424987ae670b61fbae25c6..127c8e007dd6e0f1251717e23ff16aabefcab795 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java @@ -106,22 +106,30 @@ public class Trigger { public void handle(Pad pad, Duration currentDuration, Project project, IMainViewController mainViewController, Profile currentProfile) { for (TriggerItem item : items) { - if (triggerPoint == TriggerPoint.START) { - handleStartPoint(pad, currentDuration, project, mainViewController, currentProfile, item); - } else if (triggerPoint == TriggerPoint.STOP) { - item.performAction(pad, project, mainViewController, currentProfile); - } else if (triggerPoint == TriggerPoint.EOF) { - if (item.getDurationFromPoint() == Duration.ZERO) { - if (pad.isEof()) { - item.performAction(pad, project, mainViewController, currentProfile); + switch (triggerPoint) { + case START: + handleStartPoint(pad, currentDuration, project, mainViewController, currentProfile, item); + break; + case STOP: + item.performAction(pad, project, mainViewController, currentProfile); + break; + case EOF: + if (item.getDurationFromPoint() == Duration.ZERO) { + if (pad.isEof()) { + item.performAction(pad, project, mainViewController, currentProfile); + } + } else { + handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item); } - } else { - handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item); - } - } else if (triggerPoint == TriggerPoint.PLAYLIST_ITEM_START) { - handleStartPoint(pad, currentDuration, project, mainViewController, currentProfile, item); - } else if (triggerPoint == TriggerPoint.PLAYLIST_ITEM_END) { - item.performAction(pad, project, mainViewController, currentProfile); + break; + case PLAYLIST_START: + case PLAYLIST_ITEM_START: + handleStartPoint(pad, currentDuration, project, mainViewController, currentProfile, item); + break; + case PLAYLIST_ITEM_END: + case PLAYLIST_END: + item.performAction(pad, project, mainViewController, currentProfile); + break; } } } diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerMediaContainer.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerMediaContainer.scala index e48882110fce35497d2a9dd5b35226899e8cdf23..54235bf261dc2846348f8d67e28f47579ea02e18 100644 --- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerMediaContainer.scala +++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerMediaContainer.scala @@ -38,9 +38,6 @@ class ContentPlayerMediaContainer(val content: ContentPlayerPadContent, private[ content.getPad.setEof(false) content.currentPlayingMediaIndexProperty().set(content.getMediaContainers.indexOf(this)) - - content.listeners.forEach(listener => listener.onPlaylistStart(content.pad)) - content.listeners.forEach(listener => listener.onPlaylistItemStart(content.pad)) } def resume(withFadeIn: Boolean): Unit = { @@ -56,18 +53,13 @@ class ContentPlayerMediaContainer(val content: ContentPlayerPadContent, private[ val currentIndex = players.indexOf(this) content.currentPlayingMediaIndexProperty().set(currentIndex) - if (currentIndex + 1 < players.length) { - content.listeners.forEach(listener => listener.onPlaylistItemEnd(content.pad)) if (content.getPad.getStatus == PadStatus.PLAY) { players(currentIndex + 1).play(false) - content.listeners.forEach(listener => listener.onPlaylistItemStart(content.pad)) } } else if (content.getPad.getPadSettings.isLoop) { - content.listeners.forEach(listener => listener.onPlaylistItemEnd(content.pad)) if (content.getPad.getStatus == PadStatus.PLAY) { players.head.play(false) - content.listeners.forEach(listener => listener.onPlaylistItemStart(content.pad)) } } else { content.getPad.setStatus(PadStatus.STOP) 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 cf3651d22e700c4810e2c0206cf00236288cfca7..1271fc9784635658409a013de478bb5d64b5f209 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 @@ -69,6 +69,9 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte } getPad.setEof(false) mediaPlayers.head.play(withFadeIn) + + listeners.forEach(listener => listener.onPlaylistStart(pad)) + listeners.forEach(listener => listener.onPlaylistItemStart(pad)) } showingLastFrame = false isPause = false @@ -81,7 +84,11 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte } override def next(): Unit = { - mediaPlayers(getCurrentPlayingMediaIndex).next() + listeners.forEach(listener => listener.onPlaylistItemEnd(pad)) + if (pad.getStatus == PadStatus.PLAY) { + mediaPlayers(getCurrentPlayingMediaIndex).next() + listeners.forEach(listener => listener.onPlaylistItemStart(pad)) + } } override def stop(): Boolean = { @@ -91,6 +98,8 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte if (getCurrentPlayingMediaIndex != -1) { mediaPlayers(getCurrentPlayingMediaIndex).stop() + listeners.forEach(listener => listener.onPlaylistEnd(pad)) + if (showingLastFrame && !stopMediaByOtherPlayer) { ContentPluginMain.playerViewController.clearHold(mediaPlayers(getCurrentPlayingMediaIndex)) } @@ -128,7 +137,7 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte // Only automatically go to the next playlist item, if auto next is active or // the item is the last one (next() go into stop state if no item is left) if (isAutoNext || noFurtherItemsInPlaylist) { - mediaPlayers(getCurrentPlayingMediaIndex).next() + next() } }