ClearClock/package/contents/ui/config/configAppearance.qml
2024-04-18 21:49:46 +03:00

348 lines
9.6 KiB
QML

/*
SPDX-FileCopyrightText: 2022 qewer33
SPDX-License-Identifier: GPL-3.0-or-later
*/
import QtQuick 2.12
import QtQuick.Controls 2.12 as QtControls
import QtQuick.Layouts 1.12 as QtLayouts
import QtQuick.Dialogs
import org.kde.kirigami 2.3 as Kirigami
import org.kde.kcmutils as KCM
import "../lib"
KCM.SimpleKCM {
id: appearancePage
width: childrenRect.width
height: childrenRect.height
signal configurationChanged
property alias cfg_clockUse24hFormat: use24hFormat.checkState
property alias cfg_clockShowSeconds: showSeconds.checkState
property alias cfg_clockSeparator: clockSeparatorTextField.text
property string cfg_clockFontColor
property string cfg_clockFontFamily
property bool cfg_clockBoldText
property bool cfg_clockItalicText
property int cfg_clockFontSize
property alias cfg_clockShadowEnabled: clockShadowCheckBox.checked
property color cfg_clockShadowColor
property int cfg_clockShadowRadius
property int cfg_clockShadowXOffset
property int cfg_clockShadowYOffset
property alias cfg_showDayDisplay: showDayDisplayCheckBox.checked
property string cfg_dayFontColor
property string cfg_dayFontFamily
property bool cfg_dayBoldText
property bool cfg_dayItalicText
property int cfg_dayFontSize
property alias cfg_dayShadowEnabled: dayShadowCheckBox.checked
property color cfg_dayShadowColor
property int cfg_dayShadowRadius
property int cfg_dayShadowXOffset
property int cfg_dayShadowYOffset
property alias cfg_showDateDisplay: showDateDisplayCheckBox.checked
property alias cfg_dateCustomDateFormat: customDateFormat.text
property string cfg_dateFontColor
property string cfg_dateFontFamily
property bool cfg_dateBoldText
property bool cfg_dateItalicText
property int cfg_dateFontSize
property alias cfg_dateShadowEnabled: dateShadowCheckBox.checked
property color cfg_dateShadowColor
property int cfg_dateShadowRadius
property int cfg_dateShadowXOffset
property int cfg_dateShadowYOffset
ListModel {
id: fontsModel
Component.onCompleted: {
var arr = [] // use temp array to avoid constant binding stuff
arr.push({
"text": "ClearClock Default",
"value": "ccdefault"
})
var fonts = Qt.fontFamilies()
var foundIndex = 0
for (var i = 0, j = fonts.length; i < j; ++i) {
arr.push({
"text": fonts[i],
"value": fonts[i]
})
}
append(arr)
}
}
Kirigami.FormLayout {
id: layout
anchors.fill: parent
Kirigami.Separator {
Kirigami.FormData.isSection: true
Kirigami.FormData.label: "Clock Display Settings"
}
QtControls.CheckBox {
Kirigami.FormData.label: "Use 24-hour clock"
id: use24hFormat
tristate: false
checked: cfg_clockUse24hFormat
}
QtControls.CheckBox {
Kirigami.FormData.label: "Show seconds"
id: showSeconds
tristate: false
checked: cfg_clockShowSeconds
}
QtControls.TextField {
Kirigami.FormData.label: "Separator"
id: clockSeparatorTextField
maximumLength: 1
}
ColorButton {
Kirigami.FormData.label: "Color"
onValueChanged: {
cfg_clockFontColor = value
}
}
FontConfig {
Kirigami.FormData.label: "Font"
fontModel: fontsModel
fontValue: cfg_clockFontFamily
onFontValueChanged: {
cfg_clockFontFamily = fontValue
}
boldValue: cfg_clockBoldText
onBoldValueChanged: {
cfg_clockBoldText = boldValue
}
italicValue: cfg_clockItalicText
onItalicValueChanged: {
cfg_clockItalicText = italicValue
}
pxSizeValue: cfg_clockFontSize
onPxSizeValueChanged: {
cfg_clockFontSize = pxSizeValue
}
}
QtControls.CheckBox {
id: clockShadowCheckBox
text: i18n("Enable shadow")
tristate: false
checked: cfg_clockShadowEnabled
}
ShadowConfig {
Kirigami.FormData.label: "Shadow"
enabled: clockShadowCheckBox.checked
colorValue: cfg_clockShadowColor
onColorValueChanged: {
cfg_clockShadowColor = colorValue
}
radiusValue: cfg_clockShadowRadius
onRadiusValueChanged: {
cfg_clockShadowRadius = radiusValue
}
offsetXValue: cfg_clockShadowXOffset
onOffsetXValueChanged: {
cfg_clockShadowXOffset = offsetXValue
}
offsetYValue: cfg_clockShadowYOffset
onOffsetYValueChanged: {
cfg_clockShadowYOffset = offsetYValue
}
}
Kirigami.Separator {
Kirigami.FormData.isSection: true
Kirigami.FormData.label: "Day Display Settings"
}
QtControls.CheckBox {
Kirigami.FormData.label: "Show day display"
id: showDayDisplayCheckBox
}
ColorButton {
Kirigami.FormData.label: "Color"
onValueChanged: {
cfg_dayFontColor = value
}
}
FontConfig {
Kirigami.FormData.label: "Font"
fontModel: fontsModel
enabled: showDayDisplayCheckBox.checked
fontValue: cfg_dayFontFamily
onFontValueChanged: {
cfg_dayFontFamily = fontValue
}
boldValue: cfg_dayBoldText
onBoldValueChanged: {
cfg_dayBoldText = boldValue
}
italicValue: cfg_dayItalicText
onItalicValueChanged: {
cfg_dayItalicText = italicValue
}
pxSizeValue: cfg_dayFontSize
onPxSizeValueChanged: {
cfg_dayFontSize = pxSizeValue
}
}
QtControls.CheckBox {
id: dayShadowCheckBox
text: i18n("Enable shadow")
tristate: false
checked: cfg_dayShadowEnabled
}
ShadowConfig {
Kirigami.FormData.label: "Shadow"
enabled: dayShadowCheckBox.checked
colorValue: cfg_dayShadowColor
onColorValueChanged: {
cfg_dayShadowColor = colorValue
}
radiusValue: cfg_dayShadowRadius
onRadiusValueChanged: {
cfg_dayShadowRadius = radiusValue
}
offsetXValue: cfg_dayShadowXOffset
onOffsetXValueChanged: {
cfg_dayShadowXOffset = offsetXValue
}
offsetYValue: cfg_clockShadowYOffset
onOffsetYValueChanged: {
cfg_dayShadowYOffset = offsetYValue
}
}
Kirigami.Separator {
Kirigami.FormData.isSection: true
Kirigami.FormData.label: "Date Display Settings"
}
QtControls.CheckBox {
Kirigami.FormData.label: "Show date display"
id: showDateDisplayCheckBox
}
QtLayouts.RowLayout {
Kirigami.FormData.label: "Date format"
enabled: showDateDisplayCheckBox.checked
QtControls.TextField {
id: customDateFormat
QtLayouts.Layout.fillWidth: true
}
QtControls.Button {
icon.name: "exifinfo"
onClicked: Qt.openUrlExternally("https://doc.qt.io/qt-5/qml-qtqml-qt.html#formatDateTime-method")
}
}
ColorButton {
Kirigami.FormData.label: "Color"
onValueChanged: {
cfg_dateFontColor = value
}
}
FontConfig {
Kirigami.FormData.label: "Font"
fontModel: fontsModel
enabled: showDateDisplayCheckBox.checked
fontValue: cfg_dateFontFamily
onFontValueChanged: {
cfg_dateFontFamily = fontValue
}
boldValue: cfg_dateBoldText
onBoldValueChanged: {
cfg_dateBoldText = boldValue
}
italicValue: cfg_dateItalicText
onItalicValueChanged: {
cfg_dateItalicText = italicValue
}
pxSizeValue: cfg_dateFontSize
onPxSizeValueChanged: {
cfg_dateFontSize = pxSizeValue
}
}
QtControls.CheckBox {
id: dateShadowCheckBox
text: i18n("Enable shadow")
tristate: false
checked: cfg_dateShadowEnabled
}
ShadowConfig {
Kirigami.FormData.label: "Shadow"
enabled: dateShadowCheckBox.checked
colorValue: cfg_dateShadowColor
onColorValueChanged: {
cfg_dateShadowColor = colorValue
}
radiusValue: cfg_dateShadowRadius
onRadiusValueChanged: {
cfg_dateShadowRadius = radiusValue
}
offsetXValue: cfg_dateShadowXOffset
onOffsetXValueChanged: {
cfg_dateShadowXOffset = offsetXValue
}
offsetYValue: cfg_dateShadowYOffset
onOffsetYValueChanged: {
cfg_dateShadowYOffset = offsetYValue
}
}
}
}