diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernColor.java b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernColor.java index f8c909429cdf16b6d266c6ae3c3d7b9212870002..7da15f82d91761906a3534072254934696a11123 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernColor.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernColor.java @@ -69,7 +69,7 @@ public enum ModernColor implements DisplayableColor { colors = Storage.load(inputStream, StorageTypes.JSON, ModernColorBean[].class); } - private Optional<ModernColorBean> getCurrentModernColor() { + public Optional<ModernColorBean> getCurrentModernColor() { return Stream.of(colors).filter(color -> color.getName().equals(name())).findAny(); } diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/ProjectListener.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/ProjectListener.scala index a099218e946faf8904553def1ed921d11a833810..a0a8a8aae190a554c88884f474c4cda70fb1a4e8 100644 --- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/ProjectListener.scala +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/ProjectListener.scala @@ -3,10 +3,12 @@ package de.tobias.playpad.plugin.api.websocket.listener import de.tobias.playpad.plugin.GlobalAdapter import de.tobias.playpad.plugin.api.websocket.WebSocketHandler import de.tobias.playpad.plugin.api.websocket.serialize.ProjectSerializer +import de.tobias.playpad.profile.Profile import de.tobias.playpad.project.Project class ProjectListener extends GlobalAdapter { override def projectOpened(newProject: Project): Unit = { - WebSocketHandler.instance.sendUpdate("project-changed", ProjectSerializer.serializeProject(newProject)) + val jsonObject = ProjectSerializer.serializeProject(newProject, Profile.currentProfile()) + WebSocketHandler.instance.sendUpdate("project-changed", jsonObject) } } diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/ProjectCurrentMethod.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/ProjectCurrentMethod.scala index df30b50fc0631d8057067bd99e035aa9bb239896..ac5cd11148fc9d3fd31276b49bde39f5664fb631 100644 --- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/ProjectCurrentMethod.scala +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/ProjectCurrentMethod.scala @@ -5,6 +5,7 @@ import de.tobias.playpad.PlayPadPlugin import de.tobias.playpad.plugin.api.websocket.MethodExecutable import de.tobias.playpad.plugin.api.websocket.message.Message import de.tobias.playpad.plugin.api.websocket.serialize.ProjectSerializer +import de.tobias.playpad.profile.Profile import org.eclipse.jetty.websocket.api.Session class ProjectCurrentMethod extends MethodExecutable { @@ -14,7 +15,7 @@ class ProjectCurrentMethod extends MethodExecutable { if (currentProject == null) { new JsonObject } else { - ProjectSerializer.serializeProject(currentProject) + ProjectSerializer.serializeProject(currentProject, Profile.currentProfile) } } } diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/serialize/ProjectSerializer.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/serialize/ProjectSerializer.scala index aeef56e1080bd10d9dd99c70cba1152aaea60dc8..3c1e157137bf1ed7d405a784bdf87510581443a8 100644 --- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/serialize/ProjectSerializer.scala +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/serialize/ProjectSerializer.scala @@ -1,11 +1,13 @@ package de.tobias.playpad.plugin.api.websocket.serialize import com.google.gson.{JsonArray, JsonObject} +import de.tobias.playpad.design.modern.ModernColor +import de.tobias.playpad.profile.Profile import de.tobias.playpad.project.Project object ProjectSerializer { - def serializeProject(project: Project): JsonObject = { + def serializeProject(project: Project, profile: Profile): JsonObject = { val result = new JsonObject result.addProperty("id", project.getProjectReference.getUuid.toString) @@ -31,6 +33,11 @@ object ProjectSerializer { padObject.addProperty("position", pad.getPosition) padObject.addProperty("page", pad.getPage.getPosition) + val padDesign = new JsonObject + padDesign.add("normal", serializeDesign(pad.getPadSettings.getDesign.getBackgroundColor)) + padDesign.add("play", serializeDesign(pad.getPadSettings.getDesign.getPlayColor)) + padObject.add("design", padDesign) + padArray.add(padObject) }) pageObject.add("pads", padArray) @@ -38,6 +45,27 @@ object ProjectSerializer { pageArray.add(pageObject) }) result.add("pages", pageArray) + + val globalDesign = new JsonObject + globalDesign.add("normal", serializeDesign(profile.getProfileSettings.getDesign.getBackgroundColor)) + globalDesign.add("play", serializeDesign(profile.getProfileSettings.getDesign.getPlayColor)) + result.add("design", globalDesign) + result } + + private def serializeDesign(color: ModernColor): JsonObject = { + val json = new JsonObject + + color.getCurrentModernColor.ifPresent(c => { + json.addProperty("hi", c.getColors.getHi) + json.addProperty("low", c.getColors.getLow) + json.addProperty("font", c.getColors.getFont) + json.addProperty("button", c.getColors.getButton) + json.addProperty("playbarBackground", c.getColors.getPlaybar.getBackground) + json.addProperty("playbarTrack", c.getColors.getPlaybar.getTrack) + }) + + json + } }