Skip to content
Snippets Groups Projects
Commit ae268215 authored by Tobias Ullerich's avatar Tobias Ullerich
Browse files

Do not fade out on end of file in playlists with next item or while looping

parent ea6bcb06
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,8 @@ public interface Playlistable { ...@@ -8,6 +8,8 @@ public interface Playlistable {
IntegerProperty currentPlayingMediaIndexProperty(); IntegerProperty currentPlayingMediaIndexProperty();
boolean hasNext();
void next(); void next();
boolean isLoaded(MediaPath mediaPath); boolean isLoaded(MediaPath mediaPath);
......
...@@ -7,9 +7,12 @@ import de.tobias.playpad.pad.fade.Fadeable; ...@@ -7,9 +7,12 @@ import de.tobias.playpad.pad.fade.Fadeable;
import javafx.beans.value.ChangeListener; import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue; import javafx.beans.value.ObservableValue;
/**
* Remove end of file fade listener on old pad content and register on new pad content
*/
public class PadFadeContentListener implements ChangeListener<PadContent> { public class PadFadeContentListener implements ChangeListener<PadContent> {
private Pad pad; private final Pad pad;
public PadFadeContentListener(Pad pad) { public PadFadeContentListener(Pad pad) {
this.pad = pad; this.pad = pad;
......
package de.tobias.playpad.pad.fade.listener; package de.tobias.playpad.pad.fade.listener;
import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.Pad;
import de.tobias.playpad.pad.content.Playlistable;
import de.tobias.playpad.pad.content.play.Durationable; import de.tobias.playpad.pad.content.play.Durationable;
import de.tobias.playpad.pad.fade.Fadeable; import de.tobias.playpad.pad.fade.Fadeable;
import javafx.beans.value.ChangeListener; import javafx.beans.value.ChangeListener;
...@@ -20,6 +21,16 @@ public class PadFadeDurationListener implements ChangeListener<Duration> { ...@@ -20,6 +21,16 @@ public class PadFadeDurationListener implements ChangeListener<Duration> {
if (pad.getPadSettings().getFade().isFadeOutEof()) { if (pad.getPadSettings().getFade().isFadeOutEof()) {
final Duration fadeDuration = pad.getPadSettings().getFade().getFadeOut(); final Duration fadeDuration = pad.getPadSettings().getFade().getFadeOut();
// Do not fade out if looping is enabled
if (pad.getPadSettings().isLoop()) {
return;
}
// Do not fade out if the playlist has a next entry
if (pad.getContent() instanceof Playlistable && ((Playlistable) pad.getContent()).hasNext()) {
return;
}
if (pad.getContent() instanceof Durationable) { if (pad.getContent() instanceof Durationable) {
final Durationable durationable = (Durationable) pad.getContent(); final Durationable durationable = (Durationable) pad.getContent();
......
...@@ -50,6 +50,8 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte ...@@ -50,6 +50,8 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte
def getMediaPlayers: ObservableList[ContentPlayerMediaContainer] = mediaPlayers def getMediaPlayers: ObservableList[ContentPlayerMediaContainer] = mediaPlayers
override def hasNext: Boolean = getCurrentPlayingMediaIndex + 1 < mediaPlayers.length
/* /*
Control Methods Control Methods
*/ */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment