From eb9cbf7f62b3ae9882b88096f223950e93eb31bd Mon Sep 17 00:00:00 2001 From: tobias <tobias@thecodedev.de> Date: Wed, 11 Sep 2019 17:22:22 +0200 Subject: [PATCH] Add design to project web api --- .../playpad/design/modern/ModernColor.java | 2 +- .../websocket/listener/ProjectListener.scala | 4 ++- .../methods/ProjectCurrentMethod.scala | 3 +- .../serialize/ProjectSerializer.scala | 30 ++++++++++++++++++- 4 files changed, 35 insertions(+), 4 deletions(-) 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 f8c90942..7da15f82 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 a099218e..a0a8a8aa 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 df30b50f..ac5cd111 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 aeef56e1..3c1e1571 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 + } } -- GitLab