1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-07 22:15:38 -05:00

settings: make plugin browser and widget browser floating

This commit is contained in:
bbedward
2025-11-25 10:33:32 -05:00
parent 9920a0a59f
commit 3a365f6807
6 changed files with 1040 additions and 1058 deletions

View File

@@ -194,10 +194,10 @@ Item {
// ! Hacky workaround because we want to re-register any vertical bars after changing a hBar // ! Hacky workaround because we want to re-register any vertical bars after changing a hBar
// ! That allows them to re-make with the right exclusiveZone // ! That allows them to re-make with the right exclusiveZone
function notifyHorizontalBarChange() { function notifyHorizontalBarChange() {
if (!selectedBarIsVertical) { if (selectedBarIsVertical)
return;
horizontalBarChangeDebounce.restart(); horizontalBarChangeDebounce.restart();
} }
}
function createNewBar() { function createNewBar() {
const barCount = SettingsData.barConfigs.length; const barCount = SettingsData.barConfigs.length;
@@ -290,38 +290,44 @@ Item {
} }
function getWidgetsForSection(sectionId) { function getWidgetsForSection(sectionId) {
if (sectionId === "left") switch (sectionId) {
case "left":
return selectedBarConfig?.leftWidgets || []; return selectedBarConfig?.leftWidgets || [];
if (sectionId === "center") case "center":
return selectedBarConfig?.centerWidgets || []; return selectedBarConfig?.centerWidgets || [];
if (sectionId === "right") case "right":
return selectedBarConfig?.rightWidgets || []; return selectedBarConfig?.rightWidgets || [];
default:
return []; return [];
} }
}
function setWidgetsForSection(sectionId, widgets) { function setWidgetsForSection(sectionId, widgets) {
if (sectionId === "left") switch (sectionId) {
case "left":
SettingsData.updateBarConfig(selectedBarId, { SettingsData.updateBarConfig(selectedBarId, {
leftWidgets: widgets leftWidgets: widgets
}); });
else if (sectionId === "center") break;
case "center":
SettingsData.updateBarConfig(selectedBarId, { SettingsData.updateBarConfig(selectedBarId, {
centerWidgets: widgets centerWidgets: widgets
}); });
else if (sectionId === "right") break;
case "right":
SettingsData.updateBarConfig(selectedBarId, { SettingsData.updateBarConfig(selectedBarId, {
rightWidgets: widgets rightWidgets: widgets
}); });
break;
}
} }
function getWidgetsForPopup() { function getWidgetsForPopup() {
return baseWidgetDefinitions.filter(widget => { return baseWidgetDefinitions.filter(widget => {
if (widget.warning && widget.warning.includes("Plugin is disabled")) { if (widget.warning && widget.warning.includes("Plugin is disabled"))
return false; return false;
} if (widget.enabled === false)
if (widget.enabled === false) {
return false; return false;
}
return true; return true;
}); });
} }
@@ -646,13 +652,17 @@ Item {
for (var i = 0; i < widgets.length; i++) { for (var i = 0; i < widgets.length; i++) {
var widget = widgets[i]; var widget = widgets[i];
var widgetId = typeof widget === "string" ? widget : widget.id; var widgetId = typeof widget === "string" ? widget : widget.id;
if (widgetId === itemId) { if (widgetId !== itemId)
continue;
if (typeof widget === "string") { if (typeof widget === "string") {
widgets[i] = { widgets[i] = {
"id": widget, "id": widget,
"enabled": enabled "enabled": enabled
}; };
} else { break;
}
var newWidget = { var newWidget = {
"id": widget.id, "id": widget.id,
"enabled": enabled "enabled": enabled
@@ -668,15 +678,13 @@ Item {
else if (widget.id === "gpuTemp") else if (widget.id === "gpuTemp")
newWidget.pciId = ""; newWidget.pciId = "";
if (widget.id === "controlCenterButton") { if (widget.id === "controlCenterButton") {
newWidget.showNetworkIcon = widget.showNetworkIcon !== undefined ? widget.showNetworkIcon : true; newWidget.showNetworkIcon = widget.showNetworkIcon ?? true;
newWidget.showBluetoothIcon = widget.showBluetoothIcon !== undefined ? widget.showBluetoothIcon : true; newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true;
newWidget.showAudioIcon = widget.showAudioIcon !== undefined ? widget.showAudioIcon : true; newWidget.showAudioIcon = widget.showAudioIcon ?? true;
} }
widgets[i] = newWidget; widgets[i] = newWidget;
}
break; break;
} }
}
setWidgetsForSection(sectionId, widgets); setWidgetsForSection(sectionId, widgets);
} }
@@ -686,18 +694,28 @@ Item {
function handleSpacerSizeChanged(sectionId, widgetIndex, newSize) { function handleSpacerSizeChanged(sectionId, widgetIndex, newSize) {
var widgets = getWidgetsForSection(sectionId).slice(); var widgets = getWidgetsForSection(sectionId).slice();
if (widgetIndex < 0 || widgetIndex >= widgets.length) {
setWidgetsForSection(sectionId, widgets);
return;
}
if (widgetIndex >= 0 && widgetIndex < widgets.length) {
var widget = widgets[widgetIndex]; var widget = widgets[widgetIndex];
var widgetId = typeof widget === "string" ? widget : widget.id; var widgetId = typeof widget === "string" ? widget : widget.id;
if (widgetId === "spacer") { if (widgetId !== "spacer") {
setWidgetsForSection(sectionId, widgets);
return;
}
if (typeof widget === "string") { if (typeof widget === "string") {
widgets[widgetIndex] = { widgets[widgetIndex] = {
"id": widget, "id": widget,
"enabled": true, "enabled": true,
"size": newSize "size": newSize
}; };
} else { setWidgetsForSection(sectionId, widgets);
return;
}
var newWidget = { var newWidget = {
"id": widget.id, "id": widget.id,
"enabled": widget.enabled, "enabled": widget.enabled,
@@ -708,50 +726,53 @@ Item {
if (widget.pciId !== undefined) if (widget.pciId !== undefined)
newWidget.pciId = widget.pciId; newWidget.pciId = widget.pciId;
if (widget.id === "controlCenterButton") { if (widget.id === "controlCenterButton") {
newWidget.showNetworkIcon = widget.showNetworkIcon !== undefined ? widget.showNetworkIcon : true; newWidget.showNetworkIcon = widget.showNetworkIcon ?? true;
newWidget.showBluetoothIcon = widget.showBluetoothIcon !== undefined ? widget.showBluetoothIcon : true; newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true;
newWidget.showAudioIcon = widget.showAudioIcon !== undefined ? widget.showAudioIcon : true; newWidget.showAudioIcon = widget.showAudioIcon ?? true;
} }
widgets[widgetIndex] = newWidget; widgets[widgetIndex] = newWidget;
}
}
}
setWidgetsForSection(sectionId, widgets); setWidgetsForSection(sectionId, widgets);
} }
function handleGpuSelectionChanged(sectionId, widgetIndex, selectedGpuIndex) { function handleGpuSelectionChanged(sectionId, widgetIndex, selectedGpuIndex) {
var widgets = getWidgetsForSection(sectionId).slice(); var widgets = getWidgetsForSection(sectionId).slice();
if (widgetIndex < 0 || widgetIndex >= widgets.length) {
setWidgetsForSection(sectionId, widgets);
return;
}
if (widgetIndex >= 0 && widgetIndex < widgets.length) { var pciId = DgopService.availableGpus && DgopService.availableGpus.length > selectedGpuIndex ? DgopService.availableGpus[selectedGpuIndex].pciId : "";
var widget = widgets[widgetIndex]; var widget = widgets[widgetIndex];
if (typeof widget === "string") { if (typeof widget === "string") {
widgets[widgetIndex] = { widgets[widgetIndex] = {
"id": widget, "id": widget,
"enabled": true, "enabled": true,
"selectedGpuIndex": selectedGpuIndex, "selectedGpuIndex": selectedGpuIndex,
"pciId": DgopService.availableGpus && DgopService.availableGpus.length > selectedGpuIndex ? DgopService.availableGpus[selectedGpuIndex].pciId : "" "pciId": pciId
}; };
} else { setWidgetsForSection(sectionId, widgets);
return;
}
var newWidget = { var newWidget = {
"id": widget.id, "id": widget.id,
"enabled": widget.enabled, "enabled": widget.enabled,
"selectedGpuIndex": selectedGpuIndex, "selectedGpuIndex": selectedGpuIndex,
"pciId": DgopService.availableGpus && DgopService.availableGpus.length > selectedGpuIndex ? DgopService.availableGpus[selectedGpuIndex].pciId : "" "pciId": pciId
}; };
if (widget.size !== undefined) if (widget.size !== undefined)
newWidget.size = widget.size; newWidget.size = widget.size;
widgets[widgetIndex] = newWidget; widgets[widgetIndex] = newWidget;
}
}
setWidgetsForSection(sectionId, widgets); setWidgetsForSection(sectionId, widgets);
} }
function handleDiskMountSelectionChanged(sectionId, widgetIndex, mountPath) { function handleDiskMountSelectionChanged(sectionId, widgetIndex, mountPath) {
var widgets = getWidgetsForSection(sectionId).slice(); var widgets = getWidgetsForSection(sectionId).slice();
if (widgetIndex < 0 || widgetIndex >= widgets.length) {
setWidgetsForSection(sectionId, widgets);
return;
}
if (widgetIndex >= 0 && widgetIndex < widgets.length) {
var widget = widgets[widgetIndex]; var widget = widgets[widgetIndex];
if (typeof widget === "string") { if (typeof widget === "string") {
widgets[widgetIndex] = { widgets[widgetIndex] = {
@@ -759,7 +780,10 @@ Item {
"enabled": true, "enabled": true,
"mountPath": mountPath "mountPath": mountPath
}; };
} else { setWidgetsForSection(sectionId, widgets);
return;
}
var newWidget = { var newWidget = {
"id": widget.id, "id": widget.id,
"enabled": widget.enabled, "enabled": widget.enabled,
@@ -772,13 +796,11 @@ Item {
if (widget.pciId !== undefined) if (widget.pciId !== undefined)
newWidget.pciId = widget.pciId; newWidget.pciId = widget.pciId;
if (widget.id === "controlCenterButton") { if (widget.id === "controlCenterButton") {
newWidget.showNetworkIcon = widget.showNetworkIcon !== undefined ? widget.showNetworkIcon : true; newWidget.showNetworkIcon = widget.showNetworkIcon ?? true;
newWidget.showBluetoothIcon = widget.showBluetoothIcon !== undefined ? widget.showBluetoothIcon : true; newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true;
newWidget.showAudioIcon = widget.showAudioIcon !== undefined ? widget.showAudioIcon : true; newWidget.showAudioIcon = widget.showAudioIcon ?? true;
} }
widgets[widgetIndex] = newWidget; widgets[widgetIndex] = newWidget;
}
}
setWidgetsForSection(sectionId, widgets); setWidgetsForSection(sectionId, widgets);
} }
@@ -786,46 +808,53 @@ Item {
function handleControlCenterSettingChanged(sectionId, widgetIndex, settingName, value) { function handleControlCenterSettingChanged(sectionId, widgetIndex, settingName, value) {
switch (settingName) { switch (settingName) {
case "showNetworkIcon": case "showNetworkIcon":
SettingsData.set("controlCenterShowNetworkIcon", value) SettingsData.set("controlCenterShowNetworkIcon", value);
break break;
case "showBluetoothIcon": case "showBluetoothIcon":
SettingsData.set("controlCenterShowBluetoothIcon", value) SettingsData.set("controlCenterShowBluetoothIcon", value);
break break;
case "showAudioIcon": case "showAudioIcon":
SettingsData.set("controlCenterShowAudioIcon", value) SettingsData.set("controlCenterShowAudioIcon", value);
break break;
case "showVpnIcon": case "showVpnIcon":
SettingsData.set("controlCenterShowVpnIcon", value) SettingsData.set("controlCenterShowVpnIcon", value);
break break;
case "showBrightnessIcon": case "showBrightnessIcon":
SettingsData.set("controlCenterShowBrightnessIcon", value) SettingsData.set("controlCenterShowBrightnessIcon", value);
break break;
case "showMicIcon": case "showMicIcon":
SettingsData.set("controlCenterShowMicIcon", value) SettingsData.set("controlCenterShowMicIcon", value);
break break;
case "showBatteryIcon": case "showBatteryIcon":
SettingsData.set("controlCenterShowBatteryIcon", value) SettingsData.set("controlCenterShowBatteryIcon", value);
break break;
case "showPrinterIcon": case "showPrinterIcon":
SettingsData.set("controlCenterShowPrinterIcon", value) SettingsData.set("controlCenterShowPrinterIcon", value);
break break;
} }
} }
function handlePrivacySettingChanged(sectionId, widgetIndex, settingName, value) { function handlePrivacySettingChanged(sectionId, widgetIndex, settingName, value) {
if (settingName === "showMicIcon") { switch (settingName) {
case "showMicIcon":
SettingsData.set("privacyShowMicIcon", value); SettingsData.set("privacyShowMicIcon", value);
} else if (settingName === "showCameraIcon") { break;
case "showCameraIcon":
SettingsData.set("privacyShowCameraIcon", value); SettingsData.set("privacyShowCameraIcon", value);
} else if (settingName === "showScreenSharingIcon") { break;
case "showScreenSharingIcon":
SettingsData.set("privacyShowScreenShareIcon", value); SettingsData.set("privacyShowScreenShareIcon", value);
break;
} }
} }
function handleMinimumWidthChanged(sectionId, widgetIndex, enabled) { function handleMinimumWidthChanged(sectionId, widgetIndex, enabled) {
var widgets = getWidgetsForSection(sectionId).slice(); var widgets = getWidgetsForSection(sectionId).slice();
if (widgetIndex < 0 || widgetIndex >= widgets.length) {
setWidgetsForSection(sectionId, widgets);
return;
}
if (widgetIndex >= 0 && widgetIndex < widgets.length) {
var widget = widgets[widgetIndex]; var widget = widgets[widgetIndex];
if (typeof widget === "string") { if (typeof widget === "string") {
widgets[widgetIndex] = { widgets[widgetIndex] = {
@@ -833,7 +862,10 @@ Item {
"enabled": true, "enabled": true,
"minimumWidth": enabled "minimumWidth": enabled
}; };
} else { setWidgetsForSection(sectionId, widgets);
return;
}
var newWidget = { var newWidget = {
"id": widget.id, "id": widget.id,
"enabled": widget.enabled, "enabled": widget.enabled,
@@ -850,21 +882,21 @@ Item {
if (widget.showSwap !== undefined) if (widget.showSwap !== undefined)
newWidget.showSwap = widget.showSwap; newWidget.showSwap = widget.showSwap;
if (widget.id === "controlCenterButton") { if (widget.id === "controlCenterButton") {
newWidget.showNetworkIcon = widget.showNetworkIcon !== undefined ? widget.showNetworkIcon : true; newWidget.showNetworkIcon = widget.showNetworkIcon ?? true;
newWidget.showBluetoothIcon = widget.showBluetoothIcon !== undefined ? widget.showBluetoothIcon : true; newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true;
newWidget.showAudioIcon = widget.showAudioIcon !== undefined ? widget.showAudioIcon : true; newWidget.showAudioIcon = widget.showAudioIcon ?? true;
} }
widgets[widgetIndex] = newWidget; widgets[widgetIndex] = newWidget;
}
}
setWidgetsForSection(sectionId, widgets); setWidgetsForSection(sectionId, widgets);
} }
function handleShowSwapChanged(sectionId, widgetIndex, enabled) { function handleShowSwapChanged(sectionId, widgetIndex, enabled) {
var widgets = getWidgetsForSection(sectionId).slice(); var widgets = getWidgetsForSection(sectionId).slice();
if (widgetIndex < 0 || widgetIndex >= widgets.length) {
setWidgetsForSection(sectionId, widgets);
return;
}
if (widgetIndex >= 0 && widgetIndex < widgets.length) {
var widget = widgets[widgetIndex]; var widget = widgets[widgetIndex];
if (typeof widget === "string") { if (typeof widget === "string") {
widgets[widgetIndex] = { widgets[widgetIndex] = {
@@ -872,7 +904,10 @@ Item {
"enabled": true, "enabled": true,
"showSwap": enabled "showSwap": enabled
}; };
} else { setWidgetsForSection(sectionId, widgets);
return;
}
var newWidget = { var newWidget = {
"id": widget.id, "id": widget.id,
"enabled": widget.enabled, "enabled": widget.enabled,
@@ -899,14 +934,11 @@ Item {
if (widget.keyboardLayoutNameCompactMode !== undefined) if (widget.keyboardLayoutNameCompactMode !== undefined)
newWidget.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode; newWidget.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode;
if (widget.id === "controlCenterButton") { if (widget.id === "controlCenterButton") {
newWidget.showNetworkIcon = widget.showNetworkIcon !== undefined ? widget.showNetworkIcon : true; newWidget.showNetworkIcon = widget.showNetworkIcon ?? true;
newWidget.showBluetoothIcon = widget.showBluetoothIcon !== undefined ? widget.showBluetoothIcon : true; newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true;
newWidget.showAudioIcon = widget.showAudioIcon !== undefined ? widget.showAudioIcon : true; newWidget.showAudioIcon = widget.showAudioIcon ?? true;
} }
widgets[widgetIndex] = newWidget; widgets[widgetIndex] = newWidget;
}
}
setWidgetsForSection(sectionId, widgets); setWidgetsForSection(sectionId, widgets);
} }
@@ -932,7 +964,6 @@ Item {
"id": widget.id, "id": widget.id,
"enabled": widget.enabled "enabled": widget.enabled
}; };
if (widget.size !== undefined) if (widget.size !== undefined)
newWidget.size = widget.size; newWidget.size = widget.size;
if (widget.selectedGpuIndex !== undefined) if (widget.selectedGpuIndex !== undefined)
@@ -956,11 +987,10 @@ Item {
if (widget.keyboardLayoutNameCompactMode !== undefined) if (widget.keyboardLayoutNameCompactMode !== undefined)
newWidget.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode; newWidget.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode;
if (widget.id === "controlCenterButton") { if (widget.id === "controlCenterButton") {
newWidget.showNetworkIcon = widget.showNetworkIcon !== undefined ? widget.showNetworkIcon : true; newWidget.showNetworkIcon = widget.showNetworkIcon ?? true;
newWidget.showBluetoothIcon = widget.showBluetoothIcon !== undefined ? widget.showBluetoothIcon : true; newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true;
newWidget.showAudioIcon = widget.showAudioIcon !== undefined ? widget.showAudioIcon : true; newWidget.showAudioIcon = widget.showAudioIcon ?? true;
} }
widgets[i] = newWidget; widgets[i] = newWidget;
widget = newWidget; widget = newWidget;
} }
@@ -993,59 +1023,45 @@ Item {
var widgets = []; var widgets = [];
var widgetData = getWidgetsForSection(sectionId); var widgetData = getWidgetsForSection(sectionId);
widgetData.forEach(widget => { widgetData.forEach(widget => {
var widgetId = typeof widget === "string" ? widget : widget.id; var isString = typeof widget === "string";
var widgetEnabled = typeof widget === "string" ? true : widget.enabled; var widgetId = isString ? widget : widget.id;
var widgetSize = typeof widget === "string" ? undefined : widget.size; var widgetDef = baseWidgetDefinitions.find(w => w.id === widgetId);
var widgetSelectedGpuIndex = typeof widget === "string" ? undefined : widget.selectedGpuIndex; if (!widgetDef)
var widgetPciId = typeof widget === "string" ? undefined : widget.pciId; return;
var widgetMountPath = typeof widget === "string" ? undefined : widget.mountPath;
var widgetShowNetworkIcon = typeof widget === "string" ? undefined : widget.showNetworkIcon;
var widgetShowBluetoothIcon = typeof widget === "string" ? undefined : widget.showBluetoothIcon;
var widgetShowAudioIcon = typeof widget === "string" ? undefined : widget.showAudioIcon;
var widgetMinimumWidth = typeof widget === "string" ? undefined : widget.minimumWidth;
var widgetShowSwap = typeof widget === "string" ? undefined : widget.showSwap;
var widgetMediaSize = typeof widget === "string" ? undefined : widget.mediaSize;
var widgetClockCompactMode = typeof widget === "string" ? undefined : widget.clockCompactMode;
var widgetFocusedWindowCompactMode = typeof widget === "string" ? undefined : widget.focusedWindowCompactMode;
var widgetRunningAppsCompactMode = typeof widget === "string" ? undefined : widget.runningAppsCompactMode;
var widgetKeyboardLayoutNameCompactMode = typeof widget === "string" ? undefined : widget.keyboardLayoutNameCompactMode;
var widgetDef = baseWidgetDefinitions.find(w => {
return w.id === widgetId;
});
if (widgetDef) {
var item = Object.assign({}, widgetDef);
item.enabled = widgetEnabled;
if (widgetSize !== undefined)
item.size = widgetSize;
if (widgetSelectedGpuIndex !== undefined)
item.selectedGpuIndex = widgetSelectedGpuIndex;
if (widgetPciId !== undefined)
item.pciId = widgetPciId;
if (widgetMountPath !== undefined)
item.mountPath = widgetMountPath;
if (widgetShowNetworkIcon !== undefined)
item.showNetworkIcon = widgetShowNetworkIcon;
if (widgetShowBluetoothIcon !== undefined)
item.showBluetoothIcon = widgetShowBluetoothIcon;
if (widgetShowAudioIcon !== undefined)
item.showAudioIcon = widgetShowAudioIcon;
if (widgetMinimumWidth !== undefined)
item.minimumWidth = widgetMinimumWidth;
if (widgetShowSwap !== undefined)
item.showSwap = widgetShowSwap;
if (widgetMediaSize !== undefined)
item.mediaSize = widgetMediaSize;
if (widgetClockCompactMode !== undefined)
item.clockCompactMode = widgetClockCompactMode;
if (widgetFocusedWindowCompactMode !== undefined)
item.focusedWindowCompactMode = widgetFocusedWindowCompactMode;
if (widgetRunningAppsCompactMode !== undefined)
item.runningAppsCompactMode = widgetRunningAppsCompactMode;
if (widgetKeyboardLayoutNameCompactMode !== undefined)
item.keyboardLayoutNameCompactMode = widgetKeyboardLayoutNameCompactMode;
widgets.push(item); var item = Object.assign({}, widgetDef);
item.enabled = isString ? true : widget.enabled;
if (!isString) {
if (widget.size !== undefined)
item.size = widget.size;
if (widget.selectedGpuIndex !== undefined)
item.selectedGpuIndex = widget.selectedGpuIndex;
if (widget.pciId !== undefined)
item.pciId = widget.pciId;
if (widget.mountPath !== undefined)
item.mountPath = widget.mountPath;
if (widget.showNetworkIcon !== undefined)
item.showNetworkIcon = widget.showNetworkIcon;
if (widget.showBluetoothIcon !== undefined)
item.showBluetoothIcon = widget.showBluetoothIcon;
if (widget.showAudioIcon !== undefined)
item.showAudioIcon = widget.showAudioIcon;
if (widget.minimumWidth !== undefined)
item.minimumWidth = widget.minimumWidth;
if (widget.showSwap !== undefined)
item.showSwap = widget.showSwap;
if (widget.mediaSize !== undefined)
item.mediaSize = widget.mediaSize;
if (widget.clockCompactMode !== undefined)
item.clockCompactMode = widget.clockCompactMode;
if (widget.focusedWindowCompactMode !== undefined)
item.focusedWindowCompactMode = widget.focusedWindowCompactMode;
if (widget.runningAppsCompactMode !== undefined)
item.runningAppsCompactMode = widget.runningAppsCompactMode;
if (widget.keyboardLayoutNameCompactMode !== undefined)
item.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode;
} }
widgets.push(item);
}); });
return widgets; return widgets;
} }
@@ -1139,50 +1155,14 @@ Item {
implicitHeight: 1 implicitHeight: 1
} }
Rectangle { DankButton {
id: addBarBtn text: I18n.tr("Add Bar")
width: 100 iconName: "add"
height: 32 buttonHeight: 32
radius: Theme.cornerRadius
color: addBarArea.containsMouse ? Theme.primaryPressed : Theme.primary
visible: SettingsData.barConfigs.length < 4 visible: SettingsData.barConfigs.length < 4
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
Row {
anchors.centerIn: parent
spacing: Theme.spacingXS
DankIcon {
name: "add"
size: 14
color: Theme.onPrimary
anchors.verticalCenter: parent.verticalCenter
}
StyledText {
text: I18n.tr("Add Bar")
font.pixelSize: Theme.fontSizeSmall
font.weight: Font.Medium
color: Theme.onPrimary
anchors.verticalCenter: parent.verticalCenter
}
}
MouseArea {
id: addBarArea
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: dankBarTab.createNewBar() onClicked: dankBarTab.createNewBar()
} }
Behavior on color {
ColorAnimation {
duration: Theme.shortDuration
easing.type: Theme.standardEasing
}
}
}
} }
StyledText { StyledText {
@@ -3284,7 +3264,6 @@ Item {
} }
} }
// Center/Middle Section
StyledRect { StyledRect {
width: parent.width width: parent.width
height: centerSection.implicitHeight + Theme.spacingL * 2 height: centerSection.implicitHeight + Theme.spacingL * 2
@@ -3343,7 +3322,6 @@ Item {
} }
} }
// Right/Bottom Section
StyledRect { StyledRect {
width: parent.width width: parent.width
height: rightSection.implicitHeight + Theme.spacingL * 2 height: rightSection.implicitHeight + Theme.spacingL * 2

View File

@@ -1,10 +1,7 @@
import QtCore
import QtQuick import QtQuick
import QtQuick.Controls
import QtQuick.Effects import QtQuick.Effects
import Quickshell import Quickshell
import qs.Common import qs.Common
import qs.Modals
import qs.Modals.FileBrowser import qs.Modals.FileBrowser
import qs.Services import qs.Services
import qs.Widgets import qs.Widgets
@@ -1542,7 +1539,7 @@ Item {
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
checked: SessionData.isLightMode checked: SessionData.isLightMode
onToggleCompleted: checked => { onToggled: checked => {
Theme.screenTransition(); Theme.screenTransition();
Theme.setLightMode(checked); Theme.setLightMode(checked);
} }

View File

@@ -2,11 +2,10 @@ import QtQuick
import QtQuick.Controls import QtQuick.Controls
import Quickshell import Quickshell
import qs.Common import qs.Common
import qs.Modals.Common
import qs.Services import qs.Services
import qs.Widgets import qs.Widgets
DankModal { FloatingWindow {
id: root id: root
property var allPlugins: [] property var allPlugins: []
@@ -17,12 +16,6 @@ DankModal {
property bool isLoading: false property bool isLoading: false
property var parentModal: null property var parentModal: null
modalWidth: 600
modalHeight: 650
allowStacking: true
backgroundOpacity: 0
closeOnEscapeKey: false
function updateFilteredPlugins() { function updateFilteredPlugins() {
var filtered = []; var filtered = [];
var query = searchQuery ? searchQuery.toLowerCase() : ""; var query = searchQuery ? searchQuery.toLowerCase() : "";
@@ -31,22 +24,21 @@ DankModal {
var plugin = allPlugins[i]; var plugin = allPlugins[i];
var isFirstParty = plugin.firstParty || false; var isFirstParty = plugin.firstParty || false;
if (!SessionData.showThirdPartyPlugins && !isFirstParty) { if (!SessionData.showThirdPartyPlugins && !isFirstParty)
continue;
if (query.length === 0) {
filtered.push(plugin);
continue; continue;
} }
if (query.length > 0) {
var name = plugin.name ? plugin.name.toLowerCase() : ""; var name = plugin.name ? plugin.name.toLowerCase() : "";
var description = plugin.description ? plugin.description.toLowerCase() : ""; var description = plugin.description ? plugin.description.toLowerCase() : "";
var author = plugin.author ? plugin.author.toLowerCase() : ""; var author = plugin.author ? plugin.author.toLowerCase() : "";
if (name.indexOf(query) !== -1 || description.indexOf(query) !== -1 || author.indexOf(query) !== -1) { if (name.indexOf(query) !== -1 || description.indexOf(query) !== -1 || author.indexOf(query) !== -1)
filtered.push(plugin); filtered.push(plugin);
} }
} else {
filtered.push(plugin);
}
}
filteredPlugins = filtered; filteredPlugins = filtered;
selectedIndex = -1; selectedIndex = -1;
@@ -65,74 +57,65 @@ DankModal {
return; return;
keyboardNavigationActive = true; keyboardNavigationActive = true;
selectedIndex = Math.max(selectedIndex - 1, -1); selectedIndex = Math.max(selectedIndex - 1, -1);
if (selectedIndex === -1) { if (selectedIndex === -1)
keyboardNavigationActive = false; keyboardNavigationActive = false;
} }
}
function installPlugin(pluginName) { function installPlugin(pluginName) {
ToastService.showInfo("Installing plugin: " + pluginName); ToastService.showInfo("Installing plugin: " + pluginName);
DMSService.install(pluginName, response => { DMSService.install(pluginName, response => {
if (response.error) { if (response.error) {
ToastService.showError("Install failed: " + response.error); ToastService.showError("Install failed: " + response.error);
} else { return;
}
ToastService.showInfo("Plugin installed: " + pluginName); ToastService.showInfo("Plugin installed: " + pluginName);
PluginService.scanPlugins(); PluginService.scanPlugins();
refreshPlugins(); refreshPlugins();
}
}); });
} }
function refreshPlugins() { function refreshPlugins() {
isLoading = true; isLoading = true;
DMSService.listPlugins(); DMSService.listPlugins();
if (DMSService.apiVersion >= 8) { if (DMSService.apiVersion >= 8)
DMSService.listInstalled(); DMSService.listInstalled();
} }
}
function show() { function show() {
if (parentModal) { if (parentModal)
parentModal.shouldHaveFocus = false; parentModal.shouldHaveFocus = false;
} visible = true;
open();
Qt.callLater(() => { Qt.callLater(() => {
if (contentLoader.item && contentLoader.item.searchField) { browserSearchField.forceActiveFocus();
contentLoader.item.searchField.forceActiveFocus();
}
}); });
} }
function hide() { function hide() {
close(); visible = false;
if (parentModal) { if (!parentModal)
parentModal.shouldHaveFocus = Qt.binding(() => { return;
return parentModal.shouldBeVisible; parentModal.shouldHaveFocus = Qt.binding(() => parentModal.shouldBeVisible);
});
Qt.callLater(() => { Qt.callLater(() => {
if (parentModal.modalFocusScope) { if (parentModal.modalFocusScope)
parentModal.modalFocusScope.forceActiveFocus(); parentModal.modalFocusScope.forceActiveFocus();
}
}); });
} }
}
onOpened: { objectName: "pluginBrowser"
title: I18n.tr("Browse Plugins")
implicitWidth: 600
implicitHeight: 650
color: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency)
visible: false
onVisibleChanged: {
if (visible) {
refreshPlugins(); refreshPlugins();
}
Connections {
target: contentLoader
function onLoaded() {
Qt.callLater(() => { Qt.callLater(() => {
if (contentLoader.item && contentLoader.item.searchField) { browserSearchField.forceActiveFocus();
contentLoader.item.searchField.forceActiveFocus();
}
}); });
return;
} }
}
onDialogClosed: () => {
allPlugins = []; allPlugins = [];
searchQuery = ""; searchQuery = "";
filteredPlugins = []; filteredPlugins = [];
@@ -141,32 +124,26 @@ DankModal {
isLoading = false; isLoading = false;
} }
onBackgroundClicked: () => {
hide();
}
content: Component {
FocusScope { FocusScope {
id: browserKeyHandler id: browserKeyHandler
property alias searchField: browserSearchField
anchors.fill: parent anchors.fill: parent
focus: true focus: true
Component.onCompleted: {
browserSearchField.forceActiveFocus();
}
Keys.onPressed: event => { Keys.onPressed: event => {
if (event.key === Qt.Key_Escape) { switch (event.key) {
root.close(); case Qt.Key_Escape:
root.hide();
event.accepted = true; event.accepted = true;
} else if (event.key === Qt.Key_Down) { return;
case Qt.Key_Down:
root.selectNext(); root.selectNext();
event.accepted = true; event.accepted = true;
} else if (event.key === Qt.Key_Up) { return;
case Qt.Key_Up:
root.selectPrevious(); root.selectPrevious();
event.accepted = true; event.accepted = true;
return;
} }
} }
@@ -216,9 +193,9 @@ DankModal {
if (SessionData.showThirdPartyPlugins) { if (SessionData.showThirdPartyPlugins) {
SessionData.setShowThirdPartyPlugins(false); SessionData.setShowThirdPartyPlugins(false);
root.updateFilteredPlugins(); root.updateFilteredPlugins();
} else { return;
thirdPartyConfirmModal.open();
} }
thirdPartyConfirmModal.visible = true;
} }
} }
@@ -236,7 +213,7 @@ DankModal {
iconName: "close" iconName: "close"
iconSize: Theme.iconSize - 2 iconSize: Theme.iconSize - 2
iconColor: Theme.outline iconColor: Theme.outline
onClicked: root.close() onClicked: root.hide()
} }
} }
} }
@@ -495,13 +472,12 @@ DankModal {
cursorShape: isInstalled ? Qt.ArrowCursor : Qt.PointingHandCursor cursorShape: isInstalled ? Qt.ArrowCursor : Qt.PointingHandCursor
enabled: !isInstalled enabled: !isInstalled
onClicked: { onClicked: {
if (!isInstalled) { if (!isInstalled)
root.installPlugin(modelData.name); root.installPlugin(modelData.name);
} }
} }
} }
} }
}
StyledText { StyledText {
text: modelData.description || "" text: modelData.description || ""
@@ -552,25 +528,24 @@ DankModal {
} }
} }
} }
}
DankModal { FloatingWindow {
id: thirdPartyConfirmModal id: thirdPartyConfirmModal
modalWidth: 500 objectName: "thirdPartyConfirm"
modalHeight: 300 title: I18n.tr("Third-Party Plugin Warning")
allowStacking: true implicitWidth: 500
backgroundOpacity: 0.4 implicitHeight: 350
closeOnEscapeKey: true color: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency)
visible: false
content: Component {
FocusScope { FocusScope {
anchors.fill: parent anchors.fill: parent
focus: true focus: true
Keys.onPressed: event => { Keys.onPressed: event => {
if (event.key === Qt.Key_Escape) { if (event.key === Qt.Key_Escape) {
thirdPartyConfirmModal.close(); thirdPartyConfirmModal.visible = false;
event.accepted = true; event.accepted = true;
} }
} }
@@ -598,6 +573,20 @@ DankModal {
color: Theme.surfaceText color: Theme.surfaceText
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
} }
Item {
width: parent.width - parent.spacing * 2 - Theme.iconSize - parent.children[1].implicitWidth - closeConfirmBtn.width
height: 1
}
DankActionButton {
id: closeConfirmBtn
iconName: "close"
iconSize: Theme.iconSize - 2
iconColor: Theme.outline
anchors.verticalCenter: parent.verticalCenter
onClicked: thirdPartyConfirmModal.visible = false
}
} }
StyledText { StyledText {
@@ -643,7 +632,7 @@ DankModal {
DankButton { DankButton {
text: I18n.tr("Cancel") text: I18n.tr("Cancel")
iconName: "close" iconName: "close"
onClicked: thirdPartyConfirmModal.close() onClicked: thirdPartyConfirmModal.visible = false
} }
DankButton { DankButton {
@@ -652,8 +641,7 @@ DankModal {
onClicked: { onClicked: {
SessionData.setShowThirdPartyPlugins(true); SessionData.setShowThirdPartyPlugins(true);
root.updateFilteredPlugins(); root.updateFilteredPlugins();
thirdPartyConfirmModal.close(); thirdPartyConfirmModal.visible = false;
}
} }
} }
} }

View File

@@ -124,7 +124,7 @@ FocusScope {
iconName: "store" iconName: "store"
enabled: DMSService.dmsAvailable enabled: DMSService.dmsAvailable
onClicked: { onClicked: {
pluginBrowserModal.show(); pluginBrowser.show();
} }
} }
@@ -286,9 +286,9 @@ FocusScope {
Connections { Connections {
target: DMSService target: DMSService
function onPluginsListReceived(plugins) { function onPluginsListReceived(plugins) {
pluginBrowserModal.isLoading = false; pluginBrowser.isLoading = false;
pluginBrowserModal.allPlugins = plugins; pluginBrowser.allPlugins = plugins;
pluginBrowserModal.updateFilteredPlugins(); pluginBrowser.updateFilteredPlugins();
} }
function onInstalledPluginsReceived(plugins) { function onInstalledPluginsReceived(plugins) {
var pluginMap = {}; var pluginMap = {};
@@ -314,13 +314,12 @@ FocusScope {
} }
Component.onCompleted: { Component.onCompleted: {
pluginBrowserModal.parentModal = pluginsTab.parentModal; pluginBrowser.parentModal = pluginsTab.parentModal;
if (DMSService.dmsAvailable && DMSService.apiVersion >= 8) { if (DMSService.dmsAvailable && DMSService.apiVersion >= 8)
DMSService.listInstalled(); DMSService.listInstalled();
} }
}
PluginBrowser { PluginBrowser {
id: pluginBrowserModal id: pluginBrowser
} }
} }

View File

@@ -1,9 +1,9 @@
import QtQuick import QtQuick
import Quickshell
import qs.Common import qs.Common
import qs.Modals.Common
import qs.Widgets import qs.Widgets
DankModal { FloatingWindow {
id: root id: root
property var allWidgets: [] property var allWidgets: []
@@ -12,7 +12,6 @@ DankModal {
property var filteredWidgets: [] property var filteredWidgets: []
property int selectedIndex: -1 property int selectedIndex: -1
property bool keyboardNavigationActive: false property bool keyboardNavigationActive: false
property Component widgetSelectionContent
property var parentModal: null property var parentModal: null
signal widgetSelected(string widgetId, string targetSection) signal widgetSelected(string widgetId, string targetSection)
@@ -32,10 +31,9 @@ DankModal {
var description = widget.description ? widget.description.toLowerCase() : ""; var description = widget.description ? widget.description.toLowerCase() : "";
var id = widget.id ? widget.id.toLowerCase() : ""; var id = widget.id ? widget.id.toLowerCase() : "";
if (text.indexOf(query) !== -1 || description.indexOf(query) !== -1 || id.indexOf(query) !== -1) { if (text.indexOf(query) !== -1 || description.indexOf(query) !== -1 || id.indexOf(query) !== -1)
filtered.push(widget); filtered.push(widget);
} }
}
filteredWidgets = filtered; filteredWidgets = filtered;
selectedIndex = -1; selectedIndex = -1;
@@ -58,136 +56,134 @@ DankModal {
return; return;
keyboardNavigationActive = true; keyboardNavigationActive = true;
selectedIndex = Math.max(selectedIndex - 1, -1); selectedIndex = Math.max(selectedIndex - 1, -1);
if (selectedIndex === -1) { if (selectedIndex === -1)
keyboardNavigationActive = false; keyboardNavigationActive = false;
} }
}
function selectWidget() { function selectWidget() {
if (selectedIndex >= 0 && selectedIndex < filteredWidgets.length) { if (selectedIndex < 0 || selectedIndex >= filteredWidgets.length)
return;
var widget = filteredWidgets[selectedIndex]; var widget = filteredWidgets[selectedIndex];
root.widgetSelected(widget.id, root.targetSection); root.widgetSelected(widget.id, root.targetSection);
root.close(); root.hide();
}
} }
function show() { function show() {
if (parentModal) { if (parentModal)
parentModal.shouldHaveFocus = false; parentModal.shouldHaveFocus = false;
} visible = true;
open();
Qt.callLater(() => { Qt.callLater(() => {
if (contentLoader.item && contentLoader.item.searchField) { searchField.forceActiveFocus();
contentLoader.item.searchField.forceActiveFocus();
}
}); });
} }
function hide() { function hide() {
close(); visible = false;
if (parentModal) { if (!parentModal)
parentModal.shouldHaveFocus = Qt.binding(() => { return;
return parentModal.shouldBeVisible; parentModal.shouldHaveFocus = Qt.binding(() => parentModal.shouldBeVisible);
});
Qt.callLater(() => { Qt.callLater(() => {
if (parentModal && parentModal.modalFocusScope) { if (parentModal && parentModal.modalFocusScope)
parentModal.modalFocusScope.forceActiveFocus(); parentModal.modalFocusScope.forceActiveFocus();
}
}); });
} }
}
modalWidth: 500 objectName: "widgetSelectionPopup"
modalHeight: 550 title: I18n.tr("Add Widget")
allowStacking: true implicitWidth: 500
backgroundOpacity: 0 implicitHeight: 550
closeOnEscapeKey: false color: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency)
onDialogClosed: () => { visible: false
onVisibleChanged: {
if (visible) {
Qt.callLater(() => {
searchField.forceActiveFocus();
});
return;
}
allWidgets = []; allWidgets = [];
targetSection = ""; targetSection = "";
searchQuery = ""; searchQuery = "";
filteredWidgets = []; filteredWidgets = [];
selectedIndex = -1; selectedIndex = -1;
keyboardNavigationActive = false; keyboardNavigationActive = false;
if (parentModal) { if (!parentModal)
parentModal.shouldHaveFocus = Qt.binding(() => { return;
return parentModal.shouldBeVisible; parentModal.shouldHaveFocus = Qt.binding(() => parentModal.shouldBeVisible);
});
Qt.callLater(() => { Qt.callLater(() => {
if (parentModal && parentModal.modalFocusScope) { if (parentModal && parentModal.modalFocusScope)
parentModal.modalFocusScope.forceActiveFocus(); parentModal.modalFocusScope.forceActiveFocus();
}
}); });
} }
}
onBackgroundClicked: () => {
return hide();
}
content: widgetSelectionContent
widgetSelectionContent: Component {
FocusScope { FocusScope {
id: widgetKeyHandler id: widgetKeyHandler
property alias searchField: searchField
anchors.fill: parent anchors.fill: parent
focus: true focus: true
Keys.onPressed: event => { Keys.onPressed: event => {
if (event.key === Qt.Key_Escape) { switch (event.key) {
root.close(); case Qt.Key_Escape:
root.hide();
event.accepted = true; event.accepted = true;
} else if (event.key === Qt.Key_Down) { return;
case Qt.Key_Down:
root.selectNext(); root.selectNext();
event.accepted = true; event.accepted = true;
} else if (event.key === Qt.Key_Up) { return;
case Qt.Key_Up:
root.selectPrevious(); root.selectPrevious();
event.accepted = true; event.accepted = true;
} else if (event.key === Qt.Key_N && event.modifiers & Qt.ControlModifier) { return;
root.selectNext(); case Qt.Key_Return:
event.accepted = true; case Qt.Key_Enter:
} else if (event.key === Qt.Key_P && event.modifiers & Qt.ControlModifier) {
root.selectPrevious();
event.accepted = true;
} else if (event.key === Qt.Key_J && event.modifiers & Qt.ControlModifier) {
root.selectNext();
event.accepted = true;
} else if (event.key === Qt.Key_K && event.modifiers & Qt.ControlModifier) {
root.selectPrevious();
event.accepted = true;
} else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
if (root.keyboardNavigationActive) { if (root.keyboardNavigationActive) {
root.selectWidget(); root.selectWidget();
} else if (root.filteredWidgets.length > 0) { } else if (root.filteredWidgets.length > 0) {
var firstWidget = root.filteredWidgets[0]; var firstWidget = root.filteredWidgets[0];
root.widgetSelected(firstWidget.id, root.targetSection); root.widgetSelected(firstWidget.id, root.targetSection);
root.close(); root.hide();
} }
event.accepted = true; event.accepted = true;
return;
}
if (event.modifiers & Qt.ControlModifier) {
switch (event.key) {
case Qt.Key_N:
case Qt.Key_J:
root.selectNext();
event.accepted = true;
return;
case Qt.Key_P:
case Qt.Key_K:
root.selectPrevious();
event.accepted = true;
return;
} }
} }
DankActionButton {
iconName: "close"
iconSize: Theme.iconSize - 2
iconColor: Theme.outline
anchors.top: parent.top
anchors.topMargin: Theme.spacingM
anchors.right: parent.right
anchors.rightMargin: Theme.spacingM
onClicked: root.close()
} }
Column { Column {
id: contentColumn
spacing: Theme.spacingM
anchors.fill: parent anchors.fill: parent
anchors.margins: Theme.spacingL spacing: 0
anchors.topMargin: Theme.spacingL + 30 // Space for close button
Item {
id: titleBar
width: parent.width
height: 48
Rectangle {
anchors.fill: parent
color: Theme.surfaceContainer
opacity: 0.5
}
Row { Row {
width: parent.width anchors.left: parent.left
anchors.leftMargin: Theme.spacingL
anchors.verticalCenter: parent.verticalCenter
spacing: Theme.spacingM spacing: Theme.spacingM
DankIcon { DankIcon {
@@ -198,16 +194,38 @@ DankModal {
} }
StyledText { StyledText {
text: I18n.tr("Add Widget to ") + root.targetSection + " Section" text: I18n.tr("Add Widget to %1 Section").arg(root.targetSection)
font.pixelSize: Theme.fontSizeLarge font.pixelSize: Theme.fontSizeXLarge
font.weight: Font.Medium
color: Theme.surfaceText color: Theme.surfaceText
font.weight: Font.Medium
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
} }
} }
DankActionButton {
circular: false
iconName: "close"
iconSize: Theme.iconSize - 4
iconColor: Theme.surfaceText
anchors.right: parent.right
anchors.rightMargin: Theme.spacingM
anchors.verticalCenter: parent.verticalCenter
onClicked: root.hide()
}
}
Item {
width: parent.width
height: parent.height - titleBar.height
Column {
id: contentColumn
anchors.fill: parent
anchors.margins: Theme.spacingL
spacing: Theme.spacingM
StyledText { StyledText {
text: I18n.tr("Select a widget to add to the ") + root.targetSection.toLowerCase() + " section of the top bar. You can add multiple instances of the same widget if needed." text: I18n.tr("Select a widget to add. You can add multiple instances of the same widget if needed.")
font.pixelSize: Theme.fontSizeSmall font.pixelSize: Theme.fontSizeSmall
color: Theme.outline color: Theme.outline
width: parent.width width: parent.width
@@ -229,7 +247,7 @@ DankModal {
showClearButton: true showClearButton: true
textColor: Theme.surfaceText textColor: Theme.surfaceText
font.pixelSize: Theme.fontSizeMedium font.pixelSize: Theme.fontSizeMedium
placeholderText: "" placeholderText: I18n.tr("Search widgets...")
text: root.searchQuery text: root.searchQuery
focus: true focus: true
ignoreLeftRightKeys: true ignoreLeftRightKeys: true
@@ -240,11 +258,12 @@ DankModal {
} }
Keys.onPressed: event => { Keys.onPressed: event => {
if (event.key === Qt.Key_Escape) { if (event.key === Qt.Key_Escape) {
root.close(); root.hide();
event.accepted = true; event.accepted = true;
} else if (event.key === Qt.Key_Down || event.key === Qt.Key_Up || ((event.key === Qt.Key_Return || event.key === Qt.Key_Enter) && text.length === 0)) { return;
event.accepted = false;
} }
if (event.key === Qt.Key_Down || event.key === Qt.Key_Up || ((event.key === Qt.Key_Return || event.key === Qt.Key_Enter) && text.length === 0))
event.accepted = false;
} }
} }
@@ -318,7 +337,7 @@ DankModal {
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
onClicked: { onClicked: {
root.widgetSelected(modelData.id, root.targetSection); root.widgetSelected(modelData.id, root.targetSection);
root.close(); root.hide();
} }
} }
@@ -334,3 +353,4 @@ DankModal {
} }
} }
} }
}

View File

@@ -682,7 +682,7 @@ Item {
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
checked: SettingsData.osdAlwaysShowValue checked: SettingsData.osdAlwaysShowValue
onToggleCompleted: checked => { onToggled: checked => {
SettingsData.set("osdAlwaysShowValue", checked); SettingsData.set("osdAlwaysShowValue", checked);
} }
} }