diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PlaylistTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PlaylistTabViewController.java index 6abd741ffd33f91d9d96d0f1cc50c43fe4d5b99c..0a80e87d3169c61af24b9a8fdaf0f233f6cf2979 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PlaylistTabViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PlaylistTabViewController.java @@ -10,6 +10,7 @@ import de.tobias.playpad.layout.desktop.listener.PadNewContentListener; import de.tobias.playpad.pad.Pad; 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.mediapath.MediaPath; import de.tobias.playpad.viewcontroller.PadSettingsTabViewController; import javafx.beans.binding.Bindings; @@ -65,8 +66,15 @@ public class PlaylistTabViewController extends PadSettingsTabViewController { super.updateItem(item, empty); if (!empty) { setText(item.getFileName()); + final Playlistable playlist = (Playlistable) pad.getContent(); + if (!playlist.isLoaded(item)) { + setGraphic(new FontIcon(FontAwesomeType.WARNING)); + } else { + setGraphic(null); + } } else { setText(""); + setGraphic(null); } } }); 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 ffb6d4bac7b00ef75514650396fb8fca8bc9447c..6373d324d0f4d5d536c6c9a3167dca1776ed3e3d 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 @@ -1,5 +1,6 @@ package de.tobias.playpad.pad.content; +import de.tobias.playpad.pad.mediapath.MediaPath; import javafx.beans.property.IntegerProperty; public interface Playlistable { @@ -8,4 +9,6 @@ public interface Playlistable { IntegerProperty currentPlayingMediaIndexProperty(); void next(); + + boolean isLoaded(MediaPath mediaPath); } 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 23cc16ac40fb83585db925dc7f94917c11c5aaa3..7261d359d4b95828ee92286d0bc1a46d619f79bf 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 @@ -172,6 +172,12 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte mediaPlayers.isNotEmpty && !mediaPlayers.stream().anyMatch(player => player.mediaPlayer.getStatus == MediaPlayer.Status.UNKNOWN) } + override def isLoaded(mediaPath: MediaPath): Boolean = mediaPlayers.stream() + .filter(item => item.path == mediaPath) + .findFirst() + .map(container => container.mediaPlayer.getStatus != MediaPlayer.Status.UNKNOWN) + .get() + /** * Load media files. */