From 47a0a51eaae6e66e7a61246e8bf308e614a2cb0f Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Fri, 27 Nov 2020 21:04:17 +0100
Subject: [PATCH] Reorder players on playlist edit

---
 .../option/pad/PlaylistTabViewController.java       |  2 ++
 .../de/tobias/playpad/pad/content/PadContent.java   |  3 +++
 .../content/pad/ContentPlayerPadContent.scala       | 13 ++++++++++++-
 3 files changed, 17 insertions(+), 1 deletion(-)

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 7da0ac80..c75ddd78 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
@@ -127,6 +127,7 @@ public class PlaylistTabViewController extends PadSettingsTabViewController {
 		final int selectedIndex = mediaPathListView.getSelectionModel().getSelectedIndex();
 		Collections.swap(pad.getPaths(), selectedIndex, selectedIndex - 1);
 		mediaPathListView.getSelectionModel().select(selectedIndex - 1);
+		pad.getContent().reorderMedia();
 	}
 
 	@FXML
@@ -134,6 +135,7 @@ public class PlaylistTabViewController extends PadSettingsTabViewController {
 		final int selectedIndex = mediaPathListView.getSelectionModel().getSelectedIndex();
 		Collections.swap(pad.getPaths(), selectedIndex, selectedIndex + 1);
 		mediaPathListView.getSelectionModel().select(selectedIndex + 1);
+		pad.getContent().reorderMedia();
 	}
 
 	@FXML
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContent.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContent.java
index bf50a0b4..0431a444 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContent.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContent.java
@@ -64,6 +64,9 @@ public abstract class PadContent {
 	 */
 	public abstract void unloadMedia(MediaPath mediaPath);
 
+	public void reorderMedia() {
+	}
+
 	public abstract void updateVolume();
 
 	@Override
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 0893543e..6853ccb9 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
@@ -68,9 +68,11 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte
 			_positionProperty.unbind()
 			_positionProperty.set(Duration.ZERO)
 		}
+
+		override def toString: String = f"MediaPlayerContainer: $path"
 	}
 
-	private val mediaPlayers: ListBuffer[MediaPlayerContainer] = ListBuffer.empty
+	private var mediaPlayers: ListBuffer[MediaPlayerContainer] = ListBuffer.empty
 	private var currentRunningIndex: Int = -1
 
 	private val _durationProperty = new SimpleObjectProperty[Duration]
@@ -219,6 +221,15 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte
 		mediaPlayers.remove(index)
 	}
 
+	override def reorderMedia(): Unit = {
+		val paths = pad.getPaths
+		mediaPlayers = mediaPlayers.sortWith((o1, o2) => paths.indexOf(o1.path) < paths.indexOf(o2.path))
+	}
+
+	/*
+	 Volume
+	 */
+
 	override def updateVolume(): Unit = {
 		val volume = VolumeManager.getInstance.computeVolume(getPad)
 		mediaPlayers.foreach(player => player.mediaPlayer.setVolume(volume))
-- 
GitLab