From ba45055f66001f684117c7bdc7f4a2d6430adf30 Mon Sep 17 00:00:00 2001 From: Wouter Born Date: Mon, 15 Aug 2022 10:43:19 +0200 Subject: [PATCH] [Basic UI] Add support for webaudio (#1426) * [Basic UI] Add support for webaudio * Add Web Audio configuration option Signed-off-by: Wouter Born --- .../ui/basic/internal/WebAppConfig.java | 25 +++++----- .../basic/internal/render/PageRenderer.java | 1 + .../main/resources/OH-INF/config/config.xml | 9 ++++ .../resources/OH-INF/i18n/basic.properties | 4 ++ .../src/main/resources/snippets/main.html | 1 + .../org.openhab.ui.basic/web-src/smarthome.js | 47 +++++++++++++++++++ 6 files changed, 73 insertions(+), 14 deletions(-) diff --git a/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/WebAppConfig.java b/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/WebAppConfig.java index a62162acc..41476cf7f 100644 --- a/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/WebAppConfig.java +++ b/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/WebAppConfig.java @@ -34,8 +34,11 @@ public class WebAppConfig { public static final String THEME_NAME_DARK = "dark"; private static final String DEFAULT_THEME = THEME_NAME_DEFAULT; + private static final String DEFAULT_WEB_AUDIO = "false"; + private String defaultSitemap = DEFAULT_SITEMAP; private String theme = DEFAULT_THEME; + private boolean webAudio = Boolean.parseBoolean(DEFAULT_WEB_AUDIO); private List cssClassList = new ArrayList<>(); @@ -66,7 +69,7 @@ public class WebAppConfig { Boolean value = CSS_DEFAULT_VALUES.get(key); Object configValue = configProps.get(key); if (configValue != null) { - value = configValue.toString().equalsIgnoreCase("true"); + value = "true".equalsIgnoreCase(configValue.toString()); } if (value != null && value) { cssClassList.add(entry.getValue()); @@ -75,19 +78,9 @@ public class WebAppConfig { } public void applyConfig(Map configProps) { - String configDefaultSitemap = (String) configProps.get("defaultSitemap"); - String configTheme = (String) configProps.get("theme"); - - if (configDefaultSitemap == null) { - configDefaultSitemap = DEFAULT_SITEMAP; - } - - if (configTheme == null) { - configTheme = DEFAULT_THEME; - } - - defaultSitemap = configDefaultSitemap; - theme = configTheme; + defaultSitemap = (String) configProps.getOrDefault("defaultSitemap", DEFAULT_SITEMAP); + theme = (String) configProps.getOrDefault("theme", DEFAULT_THEME); + webAudio = "true".equalsIgnoreCase((String) configProps.getOrDefault("webAudio", DEFAULT_WEB_AUDIO)); applyCssClasses(configProps); } @@ -107,4 +100,8 @@ public class WebAppConfig { } return result; } + + public boolean isWebAudio() { + return webAudio; + } } diff --git a/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/PageRenderer.java b/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/PageRenderer.java index 5b9fd54e3..8ac9ebaef 100644 --- a/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/PageRenderer.java +++ b/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/PageRenderer.java @@ -98,6 +98,7 @@ public class PageRenderer extends AbstractWidgetRenderer { snippet = snippet.replaceAll("%main.long-polling-mode-msg%", longPollingModeMsg); } snippet = snippet.replaceAll("%id%", id); + snippet = snippet.replace("%config.web-audio%", Boolean.toString(config.isWebAudio())); // if the label contains a value span, we remove this span as // the title of a page/layer cannot deal with this diff --git a/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/config/config.xml b/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/config/config.xml index c2fdc93a5..c0bf5929a 100644 --- a/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/config/config.xml +++ b/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/config/config.xml @@ -42,6 +42,15 @@ false + + + Play audio sent to the web audio sink. + + + + + false + The sitemap to show if no parameter is passed. diff --git a/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/i18n/basic.properties b/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/i18n/basic.properties index ae8589b1e..08c72c4bb 100644 --- a/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/i18n/basic.properties +++ b/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/i18n/basic.properties @@ -16,6 +16,10 @@ ui.config.basic.theme.label = Theme ui.config.basic.theme.description = Defines the UI theme. ui.config.basic.theme.option.default = Default ui.config.basic.theme.option.dark = Dark +ui.config.basic.webAudio.label = Web Audio +ui.config.basic.webAudio.description = Play audio sent to the web audio sink. +ui.config.basic.webAudio.option.true = Enable +ui.config.basic.webAudio.option.false = Disable # service diff --git a/bundles/org.openhab.ui.basic/src/main/resources/snippets/main.html b/bundles/org.openhab.ui.basic/src/main/resources/snippets/main.html index 1041d8564..65da28eca 100644 --- a/bundles/org.openhab.ui.basic/src/main/resources/snippets/main.html +++ b/bundles/org.openhab.ui.basic/src/main/resources/snippets/main.html @@ -28,6 +28,7 @@ +