From fb330490f80f798016d88de4ac60c4021d56b101 Mon Sep 17 00:00:00 2001 From: Ly-sec Date: Tue, 4 Nov 2025 08:50:22 +0100 Subject: [PATCH] MediaMini: add setting to hide when idle i18n: add hide when idle translation --- Assets/Translations/de.json | 1 + Assets/Translations/en.json | 1 + Assets/Translations/es.json | 1 + Assets/Translations/fr.json | 1 + Assets/Translations/pt.json | 1 + Assets/Translations/tr.json | 1 + Assets/Translations/uk-UA.json | 1 + Assets/Translations/zh-CN.json | 1 + Modules/Bar/Widgets/MediaMini.qml | 22 ++++++++++++------- .../Bar/WidgetSettings/MediaMiniSettings.qml | 6 +++++ Services/BarWidgetRegistry.qml | 1 + 11 files changed, 29 insertions(+), 8 deletions(-) diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index 253eb48a..61bd55a8 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -428,6 +428,7 @@ }, "hide-modes": { "hidden": "Ausblenden, wenn leer", + "idle": "Ausblenden bei Inaktivität", "transparent": "Transparent, wenn leer", "visible": "Immer sichtbar" }, diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index 686eb73a..d2eee948 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -428,6 +428,7 @@ }, "hide-modes": { "hidden": "Hide When Empty", + "idle": "Hide When Idle", "transparent": "Transparent When Empty", "visible": "Always Visible" }, diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index 6747e4cf..ddcc0b06 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -428,6 +428,7 @@ }, "hide-modes": { "hidden": "Ocultar cuando esté vacío", + "idle": "Ocultar cuando está inactivo", "transparent": "Transparente cuando está vacío", "visible": "Siempre visible" }, diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index b5a39a3b..9f9a87fb 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -428,6 +428,7 @@ }, "hide-modes": { "hidden": "Masquer si vide", + "idle": "Masquer à l'arrêt", "transparent": "Transparent quand vide", "visible": "Toujours visible" }, diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index 2b3314a3..f635278b 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -428,6 +428,7 @@ }, "hide-modes": { "hidden": "Ocultar Quando Vazio", + "idle": "Ocultar quando inativo", "transparent": "Transparente quando vazio", "visible": "Sempre Visível" }, diff --git a/Assets/Translations/tr.json b/Assets/Translations/tr.json index 5d756c03..63da3f02 100644 --- a/Assets/Translations/tr.json +++ b/Assets/Translations/tr.json @@ -428,6 +428,7 @@ }, "hide-modes": { "hidden": "Boşken Gizle", + "idle": "Boştayken gizle", "transparent": "Boşken Şeffaf", "visible": "Her zaman Görünür" }, diff --git a/Assets/Translations/uk-UA.json b/Assets/Translations/uk-UA.json index b21b1729..f8ab0094 100644 --- a/Assets/Translations/uk-UA.json +++ b/Assets/Translations/uk-UA.json @@ -428,6 +428,7 @@ }, "hide-modes": { "hidden": "Приховати, коли порожньо", + "idle": "Приховувати під час простою", "transparent": "Прозорий, коли порожньо", "visible": "Завжди видимий" }, diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index 5bc59082..117f9496 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -428,6 +428,7 @@ }, "hide-modes": { "hidden": "当为空时隐藏", + "idle": "空闲时隐藏", "transparent": "空时透明", "visible": "始终可见" }, diff --git a/Modules/Bar/Widgets/MediaMini.qml b/Modules/Bar/Widgets/MediaMini.qml index 55f93443..bbe671e1 100644 --- a/Modules/Bar/Widgets/MediaMini.qml +++ b/Modules/Bar/Widgets/MediaMini.qml @@ -32,7 +32,9 @@ Item { readonly property bool isVerticalBar: (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") - readonly property string hideMode: (widgetSettings.hideMode !== undefined) ? widgetSettings.hideMode : "hidden" // "visible", "hidden", "transparent" + readonly property string hideMode: (widgetSettings.hideMode !== undefined) ? widgetSettings.hideMode : "hidden" // "visible", "hidden", "transparent", "idle" + // Backward compatibility: honor legacy hideWhenIdle setting if present + readonly property bool hideWhenIdle: (widgetSettings.hideWhenIdle !== undefined) ? widgetSettings.hideWhenIdle : (widgetMetadata.hideWhenIdle !== undefined ? widgetMetadata.hideWhenIdle : false) readonly property bool showAlbumArt: (widgetSettings.showAlbumArt !== undefined) ? widgetSettings.showAlbumArt : widgetMetadata.showAlbumArt readonly property bool showVisualizer: (widgetSettings.showVisualizer !== undefined) ? widgetSettings.showVisualizer : widgetMetadata.showVisualizer readonly property string visualizerType: (widgetSettings.visualizerType !== undefined && widgetSettings.visualizerType !== "") ? widgetSettings.visualizerType : widgetMetadata.visualizerType @@ -60,12 +62,16 @@ Item { return title } - implicitHeight: visible ? (isVerticalBar ? (((!hasActivePlayer) && (hideMode === "hidden" || hideMode === "transparent")) ? 0 : calculatedVerticalDimension()) : Style.capsuleHeight) : 0 - implicitWidth: visible ? (isVerticalBar ? (((!hasActivePlayer) && (hideMode === "hidden" || hideMode === "transparent")) ? 0 : calculatedVerticalDimension()) : (((!hasActivePlayer) && (hideMode === "hidden" || hideMode === "transparent")) ? 0 : dynamicWidth)) : 0 + // Hide conditions + readonly property bool shouldHideIdle: ((hideMode === "idle") || hideWhenIdle) && !MediaService.isPlaying + readonly property bool isEmptyForHideMode: (!hasActivePlayer) && (hideMode === "hidden" || hideMode === "transparent") - // "visible": Always Visible, "hidden": Hide When Empty, "transparent": Transparent When Empty - visible: hideMode !== "hidden" || opacity > 0 - opacity: ((hideMode !== "hidden" || hasActivePlayer) && (hideMode !== "transparent" || hasActivePlayer)) ? 1.0 : 0.0 + implicitHeight: visible ? (isVerticalBar ? ((shouldHideIdle || isEmptyForHideMode) ? 0 : calculatedVerticalDimension()) : Style.capsuleHeight) : 0 + implicitWidth: visible ? (isVerticalBar ? ((shouldHideIdle || isEmptyForHideMode) ? 0 : calculatedVerticalDimension()) : ((shouldHideIdle || isEmptyForHideMode) ? 0 : dynamicWidth)) : 0 + + // "visible": Always Visible, "hidden": Hide When Empty, "transparent": Transparent When Empty, "idle": Hide When Idle (not playing) + visible: shouldHideIdle ? false : (hideMode !== "hidden" || opacity > 0) + opacity: shouldHideIdle ? 0.0 : (((hideMode !== "hidden" || hasActivePlayer) && (hideMode !== "transparent" || hasActivePlayer)) ? 1.0 : 0.0) Behavior on opacity { NumberAnimation { duration: Style.animationNormal @@ -155,8 +161,8 @@ Item { visible: root.visible anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter - width: isVerticalBar ? (((!hasActivePlayer) && (hideMode === "hidden" || hideMode === "transparent")) ? 0 : calculatedVerticalDimension()) : (((!hasActivePlayer) && (hideMode === "hidden" || hideMode === "transparent")) ? 0 : dynamicWidth) - height: isVerticalBar ? (((!hasActivePlayer) && (hideMode === "hidden" || hideMode === "transparent")) ? 0 : calculatedVerticalDimension()) : Style.capsuleHeight + width: isVerticalBar ? ((shouldHideIdle || isEmptyForHideMode) ? 0 : calculatedVerticalDimension()) : ((shouldHideIdle || isEmptyForHideMode) ? 0 : dynamicWidth) + height: isVerticalBar ? ((shouldHideIdle || isEmptyForHideMode) ? 0 : calculatedVerticalDimension()) : Style.capsuleHeight radius: isVerticalBar ? width / 2 : Style.radiusM color: Settings.data.bar.showCapsule ? Color.mSurfaceVariant : Color.transparent diff --git a/Modules/Settings/Bar/WidgetSettings/MediaMiniSettings.qml b/Modules/Settings/Bar/WidgetSettings/MediaMiniSettings.qml index 5e109feb..5f8c039d 100644 --- a/Modules/Settings/Bar/WidgetSettings/MediaMiniSettings.qml +++ b/Modules/Settings/Bar/WidgetSettings/MediaMiniSettings.qml @@ -15,6 +15,8 @@ ColumnLayout { // Local state property string valueHideMode: "hidden" // Default to 'Hide When Empty' + // Deprecated: hideWhenIdle now folded into hideMode = "idle" + property bool valueHideWhenIdle: widgetData.hideWhenIdle !== undefined ? widgetData.hideWhenIdle : (widgetMetadata.hideWhenIdle !== undefined ? widgetMetadata.hideWhenIdle : false) property bool valueShowAlbumArt: widgetData.showAlbumArt !== undefined ? widgetData.showAlbumArt : widgetMetadata.showAlbumArt property bool valueShowVisualizer: widgetData.showVisualizer !== undefined ? widgetData.showVisualizer : widgetMetadata.showVisualizer property string valueVisualizerType: widgetData.visualizerType || widgetMetadata.visualizerType @@ -31,6 +33,7 @@ ColumnLayout { function saveSettings() { var settings = Object.assign({}, widgetData || {}) settings.hideMode = valueHideMode + // No longer store hideWhenIdle separately; kept for backward compatibility only settings.showAlbumArt = valueShowAlbumArt settings.showVisualizer = valueShowVisualizer settings.visualizerType = valueVisualizerType @@ -53,6 +56,9 @@ ColumnLayout { }, { "key": "transparent", "name": I18n.tr("options.hide-modes.transparent") + }, { + "key": "idle", + "name": I18n.tr("options.hide-modes.idle") }] currentKey: root.valueHideMode onSelected: key => root.valueHideMode = key diff --git a/Services/BarWidgetRegistry.qml b/Services/BarWidgetRegistry.qml index 55214a5a..bae17add 100644 --- a/Services/BarWidgetRegistry.qml +++ b/Services/BarWidgetRegistry.qml @@ -114,6 +114,7 @@ Singleton { "scrollingMode": "hover", "maxWidth": 145, "useFixedWidth": false, + "hideWhenIdle": false, "showAlbumArt": false, "showVisualizer": false, "visualizerType": "linear"