1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-25 14:02:53 -05:00
Files
DankMaterialShell/quickshell/Modules/Settings/DesktopWidgetSettings/ClockSettings.qml
2025-12-22 10:39:19 -05:00

153 lines
4.2 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import qs.Common
import qs.Widgets
import qs.Modules.Settings.Widgets
Column {
id: root
property string instanceId: ""
property var instanceData: null
readonly property var cfg: instanceData?.config ?? {}
function updateConfig(key, value) {
if (!instanceId)
return;
var updates = {};
updates[key] = value;
SettingsData.updateDesktopWidgetInstanceConfig(instanceId, updates);
}
width: parent?.width ?? 400
spacing: 0
SettingsDropdownRow {
text: I18n.tr("Clock Style")
options: [I18n.tr("Digital"), I18n.tr("Analog"), I18n.tr("Stacked")]
currentValue: {
switch (cfg.style) {
case "analog":
return I18n.tr("Analog");
case "stacked":
return I18n.tr("Stacked");
default:
return I18n.tr("Digital");
}
}
onValueChanged: value => {
switch (value) {
case I18n.tr("Analog"):
root.updateConfig("style", "analog");
return;
case I18n.tr("Stacked"):
root.updateConfig("style", "stacked");
return;
default:
root.updateConfig("style", "digital");
}
}
}
SettingsDivider {
visible: cfg.style === "analog"
}
SettingsToggleRow {
visible: cfg.style === "analog"
text: I18n.tr("Show Hour Numbers")
checked: cfg.showAnalogNumbers ?? false
onToggled: checked => root.updateConfig("showAnalogNumbers", checked)
}
SettingsDivider {
visible: cfg.style === "analog"
}
SettingsToggleRow {
visible: cfg.style === "analog"
text: I18n.tr("Show Seconds")
checked: cfg.showAnalogSeconds ?? true
onToggled: checked => root.updateConfig("showAnalogSeconds", checked)
}
SettingsDivider {}
SettingsToggleRow {
text: I18n.tr("Show Date")
checked: cfg.showDate ?? true
onToggled: checked => root.updateConfig("showDate", checked)
}
SettingsDivider {}
SettingsSliderRow {
text: I18n.tr("Transparency")
minimum: 0
maximum: 100
value: Math.round((cfg.transparency ?? 0.8) * 100)
unit: "%"
onSliderValueChanged: newValue => root.updateConfig("transparency", newValue / 100)
}
SettingsDivider {}
SettingsColorPicker {
colorMode: cfg.colorMode ?? "primary"
customColor: cfg.customColor ?? "#ffffff"
onColorModeSelected: mode => root.updateConfig("colorMode", mode)
onCustomColorSelected: selectedColor => root.updateConfig("customColor", selectedColor.toString())
}
SettingsDivider {}
SettingsDisplayPicker {
displayPreferences: cfg.displayPreferences ?? ["all"]
onPreferencesChanged: prefs => root.updateConfig("displayPreferences", prefs)
}
SettingsDivider {}
Item {
width: parent.width
height: resetRow.height + Theme.spacingM * 2
Row {
id: resetRow
x: Theme.spacingM
anchors.verticalCenter: parent.verticalCenter
spacing: Theme.spacingM
DankButton {
text: I18n.tr("Reset Position")
backgroundColor: Theme.surfaceHover
textColor: Theme.surfaceText
buttonHeight: 36
onClicked: {
if (!root.instanceId)
return;
SettingsData.updateDesktopWidgetInstance(root.instanceId, {
positions: {}
});
}
}
DankButton {
text: I18n.tr("Reset Size")
backgroundColor: Theme.surfaceHover
textColor: Theme.surfaceText
buttonHeight: 36
onClicked: {
if (!root.instanceId)
return;
SettingsData.updateDesktopWidgetInstance(root.instanceId, {
positions: {}
});
}
}
}
}
}