feat(activewindow): Add tri-state hideMode to ActiveWindow

This commit is contained in:
loner
2025-10-12 04:00:25 +08:00
parent 9f95901eb7
commit 3e26da9641
3 changed files with 43 additions and 12 deletions
+8 -3
View File
@@ -889,9 +889,9 @@
"search-placeholder": "Search widget..."
},
"active-window": {
"auto-hide": {
"label": "Hide automatically",
"description": "Automatically hide the widget when no window is active."
"hide-mode": {
"label": "Hiding mode",
"description": "Controls how the widget behaves when no window is active."
},
"show-app-icon": {
"label": "Show app icon",
@@ -1332,6 +1332,11 @@
"hover": "Scroll On Hover",
"never": "Never Scroll"
},
"hide-modes": {
"visible": "Always Visible",
"hidden": "Hide When Empty",
"transparent": "Transparent When Empty"
},
"frame-rates": {
"fps": "{fps} FPS"
},
+10 -2
View File
@@ -40,14 +40,22 @@ Item {
// Widget settings - matching MediaMini pattern
readonly property bool showIcon: (widgetSettings.showIcon !== undefined) ? widgetSettings.showIcon : widgetMetadata.showIcon
readonly property bool autoHide: (widgetSettings.autoHide !== undefined) ? widgetSettings.autoHide : widgetMetadata.autoHide
readonly property string hideMode: (widgetSettings.hideMode !== undefined) ? widgetSettings.hideMode : "hidden" // "visible", "hidden", "transparent"
readonly property string scrollingMode: (widgetSettings.scrollingMode !== undefined) ? widgetSettings.scrollingMode : (widgetMetadata.scrollingMode !== undefined ? widgetMetadata.scrollingMode : "hover")
readonly property int widgetWidth: (widgetSettings.width !== undefined) ? widgetSettings.width : Math.max(widgetMetadata.width, screen.width * 0.06)
implicitHeight: visible ? ((barPosition === "left" || barPosition === "right") ? calculatedVerticalHeight() : Math.round(Style.barHeight * scaling)) : 0
implicitWidth: visible ? ((barPosition === "left" || barPosition === "right") ? Math.round(Style.baseWidgetSize * 0.8 * scaling) : (widgetWidth * scaling)) : 0
visible: !autoHide || hasActiveWindow
// "visible": Always Visible, "hidden": Hide When Empty, "transparent": Transparent When Empty
visible: hideMode !== "hidden" || hasActiveWindow
opacity: hideMode !== "transparent" || hasActiveWindow ? 1.0 : 0
Behavior on opacity {
NumberAnimation {
duration: Style.animationNormal
easing.type: Easing.OutCubic
}
}
function calculatedVerticalHeight() {
return Math.round(Style.baseWidgetSize * 0.8 * scaling)
@@ -15,25 +15,43 @@ ColumnLayout {
// Local state
property bool valueShowIcon: widgetData.showIcon !== undefined ? widgetData.showIcon : widgetMetadata.showIcon
property bool valueAutoHide: widgetData.autoHide !== undefined ? widgetData.autoHide : widgetMetadata.autoHide
property string valueHideMode: "hidden" // Default to 'Hide When Empty'
property string valueScrollingMode: widgetData.scrollingMode || widgetMetadata.scrollingMode
property int valueWidth: widgetData.width !== undefined ? widgetData.width : widgetMetadata.width
Component.onCompleted: {
if (widgetData && widgetData.hideMode !== undefined) {
valueHideMode = widgetData.hideMode
}
}
function saveSettings() {
var settings = Object.assign({}, widgetData || {})
settings.autoHide = valueAutoHide
settings.hideMode = valueHideMode
settings.showIcon = valueShowIcon
settings.scrollingMode = valueScrollingMode
settings.width = parseInt(widthInput.text) || widgetMetadata.width
return settings
}
NToggle {
NComboBox {
Layout.fillWidth: true
label: I18n.tr("bar.widget-settings.active-window.auto-hide.label")
description: I18n.tr("bar.widget-settings.active-window.auto-hide.description")
checked: root.valueAutoHide
onToggled: checked => root.valueAutoHide = checked
label: I18n.tr("bar.widget-settings.active-window.hide-mode.label")
description: I18n.tr("bar.widget-settings.active-window.hide-mode.description")
model: [
{
"key": "visible",
"name": I18n.tr("options.hide-modes.visible")
}, {
"key": "hidden",
"name": I18n.tr("options.hide-modes.hidden")
}, {
"key": "transparent",
"name": I18n.tr("options.hide-modes.transparent")
}
]
currentKey: root.valueHideMode
onSelected: key => root.valueHideMode = key
}
NToggle {