diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PlayerPadTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PlayerPadTabViewController.java index 11d394f681a0bb2f852d0907cffd60e927012d4b..ed283f8db6cf955021cf3ab5c50c4c0cb024d2af 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PlayerPadTabViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PlayerPadTabViewController.java @@ -17,6 +17,8 @@ import javafx.util.Duration; public class PlayerPadTabViewController extends PadSettingsTabViewController { + @FXML + private CheckBox playOverlayEnableCheckBox; @FXML private CheckBox customFadeCheckBox; @FXML @@ -48,6 +50,8 @@ public class PlayerPadTabViewController extends PadSettingsTabViewController { warningFeedbackViewController = WarningFeedbackViewController.newViewControllerForPad(); warningFeedbackContainer.getChildren().add(warningFeedbackViewController.getParent()); + playOverlayEnableCheckBox.selectedProperty().addListener((observable, oldValue, newValue) -> pad.getPadSettings().setPlayOverlay(newValue)); + customFadeCheckBox.selectedProperty().addListener((a, b, c) -> { fadeContainer.setDisable(!c); @@ -103,6 +107,8 @@ public class PlayerPadTabViewController extends PadSettingsTabViewController { public void loadSettings(Pad pad) { PadSettings padSettings = pad.getPadSettings(); + playOverlayEnableCheckBox.setSelected(padSettings.isPlayOverlay()); + if (padSettings.isCustomFade()) fadeViewController.setFadeSettings(padSettings.getFade()); diff --git a/PlayWall/src/main/resources/lang/ui_de.properties b/PlayWall/src/main/resources/lang/ui_de.properties index d90e1e09f759c5a4eb83a98b2eff7465035da671..062aace8ef256641cf4fb3fef49f8197dfb38747 100755 --- a/PlayWall/src/main/resources/lang/ui_de.properties +++ b/PlayWall/src/main/resources/lang/ui_de.properties @@ -132,6 +132,8 @@ padSettings.gen.label.timeDisplay=Zeitanzeige: padSettings.gen.checkbox.customSettings=Eigene Einstellungen padSettings.label.loop=Wiederholen: padSettings.button.finish=Fertig +padSettings.player.label.playOverlay=Play Overlay: +padSettings.player.label.playOverlay.description=Mit dieser Einstellung darf diese Kachel zus\u00E4tzlich zu einer bereits laufenden wiedergegeben werden, wenn der Modus "Mehrere Kacheln wiedergaben" deakitiviert ist. padSettings.player.label.warning=Warnhinweise: padSettings.player.label.cueIn=Intro Dauer (in s): padSettings.player.label.fade=Ein-/Ausblenden: diff --git a/PlayWall/src/main/resources/view/option/pad/PlayerTab.fxml b/PlayWall/src/main/resources/view/option/pad/PlayerTab.fxml index 9f5771e57c8f2ffd7234c4c002ec2b7de8a800d5..ec40e05612d22b9b2ef1ee6456a5bc47042a2ff3 100644 --- a/PlayWall/src/main/resources/view/option/pad/PlayerTab.fxml +++ b/PlayWall/src/main/resources/view/option/pad/PlayerTab.fxml @@ -5,6 +5,22 @@ <?import javafx.scene.layout.*?> <VBox spacing="14.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1"> <children> + <VBox spacing="14.0"> + <children> + <HBox layoutX="14.0" layoutY="139.0" spacing="14.0"> + <children> + <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%padSettings.player.label.playOverlay" textAlignment="RIGHT" /> + <CheckBox fx:id="playOverlayEnableCheckBox" mnemonicParsing="false" text="%settings.checkbox.activate" /> + </children> + </HBox> + <Label text="%padSettings.player.label.playOverlay.description" wrapText="true"> + <VBox.margin> + <Insets left="164.0" /> + </VBox.margin> + </Label> + </children> + </VBox> + <Separator prefWidth="200.0" /> <VBox spacing="14.0"> <children> <HBox layoutX="14.0" layoutY="253.0" spacing="14.0"> diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java index f857d09438102ceae8e7cab8105be25c29a49591..3b3d449b7838ec4e83c94f1b6a665f01301f2578 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java @@ -30,6 +30,7 @@ public class PadSettings { private DoubleProperty volumeProperty = new SimpleDoubleProperty(1.0); private DoubleProperty speedProperty = new SimpleDoubleProperty(1.0); private BooleanProperty loopProperty = new SimpleBooleanProperty(false); + private BooleanProperty playOverlayProperty = new SimpleBooleanProperty(false); private ObjectProperty<TimeMode> timeModeProperty = new SimpleObjectProperty<>(); private ObjectProperty<FadeSettings> fadeProperty = new SimpleObjectProperty<>(); private ObjectProperty<Duration> warningProperty = new SimpleObjectProperty<>(); @@ -100,6 +101,18 @@ public class PadSettings { return loopProperty; } + public boolean isPlayOverlay() { + return playOverlayProperty.get(); + } + + public void setPlayOverlay(boolean playOverlay) { + playOverlayProperty.set(playOverlay); + } + + public BooleanProperty playOverlayProperty() { + return playOverlayProperty; + } + public boolean isCustomTimeMode() { return timeModeProperty.isNotNull().get(); } @@ -242,6 +255,7 @@ public class PadSettings { clone.volumeProperty = new SimpleDoubleProperty(getVolume()); clone.loopProperty = new SimpleBooleanProperty(isLoop()); + clone.playOverlayProperty = new SimpleBooleanProperty(isPlayOverlay()); if (isCustomTimeMode()) clone.timeModeProperty = new SimpleObjectProperty<>(getTimeMode()); diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java index fdaaff85c79831c49e00e6322f16d7ad3934c59e..adf5c3e4befdd7ec2e4d3b56ad08c9defd4fa611 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java @@ -21,6 +21,7 @@ public class PadSettingsSerializer { private static final String VOLUME_ELEMENT = "Volume"; private static final String LOOP_ELEMENT = "Loop"; + private static final String PLAY_OVERLAY_ELEMENT = "PlayOverlay"; private static final String TIME_MODE_ELEMENT = "TimeMode"; private static final String FADE_ELEMENT = "Fade"; private static final String WARNING_ELEMENT = "Warning"; @@ -47,6 +48,8 @@ public class PadSettingsSerializer { padSettings.setVolume(Double.parseDouble(settingsElement.element(VOLUME_ELEMENT).getStringValue())); if (settingsElement.element(LOOP_ELEMENT) != null) padSettings.setLoop(Boolean.parseBoolean(settingsElement.element(LOOP_ELEMENT).getStringValue())); + if (settingsElement.element(PLAY_OVERLAY_ELEMENT) != null) + padSettings.setPlayOverlay(Boolean.parseBoolean(settingsElement.element(PLAY_OVERLAY_ELEMENT).getStringValue())); if (settingsElement.element(TIME_MODE_ELEMENT) != null) padSettings.setTimeMode(TimeMode.valueOf(settingsElement.element(TIME_MODE_ELEMENT).getStringValue())); if (settingsElement.element(FADE_ELEMENT) != null) @@ -108,6 +111,7 @@ public class PadSettingsSerializer { settingsElement.addElement(VOLUME_ELEMENT).addText(String.valueOf(padSettings.getVolume())); settingsElement.addElement(LOOP_ELEMENT).addText(String.valueOf(padSettings.isLoop())); + settingsElement.addElement(PLAY_OVERLAY_ELEMENT).addText(String.valueOf(padSettings.isPlayOverlay())); if (padSettings.isCustomTimeMode()) settingsElement.addElement(TIME_MODE_ELEMENT).addText(String.valueOf(padSettings.getTimeMode())); if (padSettings.isCustomWarning()) diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java index a791354a38462196371d63f1471273a9dfbdbe4f..28bb500fc1d03326ee532d9fbaa934b77554ba39 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java @@ -43,7 +43,8 @@ public class PadStatusControlListener implements ChangeListener<PadStatus> { pad.getProject().updateActivePlayerProperty(); // bei Single Pad Playing wird das alte Pad beendet. - if (!profileSettings.isMultiplePlayer()) { + // Und wenn das neu abzuspielende Pad nicht im Modus "PlayOverlay" ist. + if (!profileSettings.isMultiplePlayer() && !pad.getPadSettings().isPlayOverlay()) { if (currentPlayingPad != null && currentPlayingPad != pad) { if (currentPlayingPad.isPlay() || currentPlayingPad.isPaused()) { currentPlayingPad.stop();