mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
62 lines
1.7 KiB
QML
62 lines
1.7 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import qs.Commons
|
|
import qs.Services.Compositor
|
|
import qs.Widgets
|
|
|
|
ColumnLayout {
|
|
id: root
|
|
enabled: Settings.data.dock.enabled
|
|
spacing: Style.marginL
|
|
Layout.fillWidth: true
|
|
|
|
// Helper functions to update arrays immutably
|
|
function addMonitor(list, name) {
|
|
const arr = (list || []).slice();
|
|
if (!arr.includes(name))
|
|
arr.push(name);
|
|
return arr;
|
|
}
|
|
function removeMonitor(list, name) {
|
|
return (list || []).filter(function (n) {
|
|
return n !== name;
|
|
});
|
|
}
|
|
|
|
NText {
|
|
text: I18n.tr("panels.dock.monitors-desc")
|
|
wrapMode: Text.WordWrap
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Repeater {
|
|
model: Quickshell.screens || []
|
|
delegate: NCheckbox {
|
|
Layout.fillWidth: true
|
|
readonly property real compositorScale: {
|
|
const info = CompositorService.displayScales[modelData.name];
|
|
return (info && info.scale) ? info.scale : 1.0;
|
|
}
|
|
label: modelData.name || "Unknown"
|
|
description: {
|
|
I18n.tr("system.monitor-description", {
|
|
"model": modelData.model,
|
|
"width": modelData.width * compositorScale,
|
|
"height": modelData.height * compositorScale,
|
|
"scale": compositorScale
|
|
});
|
|
}
|
|
checked: (Settings.data.dock.monitors || []).indexOf(modelData.name) !== -1
|
|
onToggled: checked => {
|
|
if (checked) {
|
|
Settings.data.dock.monitors = root.addMonitor(Settings.data.dock.monitors, modelData.name);
|
|
} else {
|
|
Settings.data.dock.monitors = root.removeMonitor(Settings.data.dock.monitors, modelData.name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|