summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Settings/Widgets/SettingsDisplayPicker.qml
diff options
context:
space:
mode:
authorAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
committerAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
commit70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch)
treeab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Settings/Widgets/SettingsDisplayPicker.qml
parent5d94c0a7d44a2255b81815a52a7056a94a39842d (diff)
downloadRaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz
RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Settings/Widgets/SettingsDisplayPicker.qml')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Settings/Widgets/SettingsDisplayPicker.qml103
1 files changed, 103 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Settings/Widgets/SettingsDisplayPicker.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Settings/Widgets/SettingsDisplayPicker.qml
new file mode 100644
index 0000000..ba453fd
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Settings/Widgets/SettingsDisplayPicker.qml
@@ -0,0 +1,103 @@
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import Quickshell
+import qs.Common
+import qs.Widgets
+
+Item {
+ id: root
+
+ property var displayPreferences: []
+
+ signal preferencesChanged(var preferences)
+
+ property bool localAllDisplays: true
+
+ onDisplayPreferencesChanged: {
+ if (!Array.isArray(displayPreferences) || displayPreferences.length === 0) {
+ localAllDisplays = true;
+ return;
+ }
+ localAllDisplays = displayPreferences.includes("all");
+ }
+
+ width: parent?.width ?? 0
+ height: displayColumn.height + Theme.spacingM * 2
+
+ Column {
+ id: displayColumn
+ width: parent.width - Theme.spacingM * 2
+ x: Theme.spacingM
+ anchors.verticalCenter: parent.verticalCenter
+ spacing: Theme.spacingM
+
+ StyledText {
+ text: I18n.tr("Displays")
+ font.pixelSize: Theme.fontSizeMedium
+ color: Theme.surfaceText
+ }
+
+ DankToggle {
+ width: parent.width
+ text: I18n.tr("All displays")
+ checked: root.localAllDisplays
+ onToggled: isChecked => {
+ root.localAllDisplays = isChecked;
+ if (isChecked) {
+ root.preferencesChanged(["all"]);
+ return;
+ }
+ var screens = [];
+ for (var i = 0; i < Quickshell.screens.length; i++) {
+ var s = Quickshell.screens[i];
+ screens.push({
+ name: s.name,
+ model: s.model || ""
+ });
+ }
+ root.preferencesChanged(screens);
+ }
+ }
+
+ Column {
+ width: parent.width
+ spacing: Theme.spacingXS
+ visible: !root.localAllDisplays
+
+ Repeater {
+ model: Quickshell.screens
+
+ DankToggle {
+ required property var modelData
+
+ property bool localChecked: {
+ const prefs = root.displayPreferences;
+ if (!Array.isArray(prefs) || prefs.includes("all"))
+ return true;
+ return prefs.some(p => p.name === modelData.name);
+ }
+
+ width: parent.width
+ text: SettingsData.getScreenDisplayName(modelData)
+ description: modelData.width + "×" + modelData.height
+ checked: localChecked
+ onToggled: isChecked => {
+ localChecked = isChecked;
+ var prefs = JSON.parse(JSON.stringify(root.displayPreferences));
+ if (!Array.isArray(prefs) || prefs.includes("all"))
+ prefs = [];
+ prefs = prefs.filter(p => p.name !== modelData.name);
+ if (isChecked) {
+ prefs.push({
+ name: modelData.name,
+ model: modelData.model || ""
+ });
+ }
+ root.preferencesChanged(prefs);
+ }
+ }
+ }
+ }
+ }
+}