Warning, /plasma/plasma-workspace/applets/digital-clock/package/contents/ui/configAppearance.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2013 Bhushan Shah <bhush94@gmail.com> 0003 SPDX-FileCopyrightText: 2013 Sebastian Kügler <sebas@kde.org> 0004 SPDX-FileCopyrightText: 2015 Kai Uwe Broulik <kde@privat.broulik.de> 0005 SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk> 0006 0007 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0008 */ 0009 0010 import QtQuick 2.15 0011 import QtQuick.Controls 2.15 as QQC2 0012 import QtQuick.Layouts 1.15 0013 import QtQuick.Dialogs 6.3 as QtDialogs 0014 import org.kde.plasma.plasmoid 2.0 0015 import org.kde.plasma.core as PlasmaCore 0016 import org.kde.kcmutils // For KCMLauncher 0017 import org.kde.config // For KAuthorized 0018 import org.kde.kirigami 2.20 as Kirigami 0019 0020 SimpleKCM { 0021 id: appearancePage 0022 property alias cfg_autoFontAndSize: autoFontAndSizeRadioButton.checked 0023 0024 // boldText and fontStyleName are not used in DigitalClock.qml 0025 // However, they are necessary to remember the exact font style chosen. 0026 // Otherwise, when the user open the font dialog again, the style will be lost. 0027 property alias cfg_fontFamily : fontDialog.fontChosen.family 0028 property alias cfg_boldText : fontDialog.fontChosen.bold 0029 property alias cfg_italicText : fontDialog.fontChosen.italic 0030 property alias cfg_fontWeight : fontDialog.fontChosen.weight 0031 property alias cfg_fontStyleName : fontDialog.fontChosen.styleName 0032 property alias cfg_fontSize : fontDialog.fontChosen.pointSize 0033 0034 property string cfg_timeFormat: "" 0035 property alias cfg_showLocalTimezone: showLocalTimezone.checked 0036 property alias cfg_displayTimezoneFormat: displayTimezoneFormat.currentIndex 0037 property alias cfg_showSeconds: showSecondsComboBox.currentIndex 0038 0039 property alias cfg_showDate: showDate.checked 0040 property string cfg_dateFormat: "shortDate" 0041 property alias cfg_customDateFormat: customDateFormat.text 0042 property alias cfg_use24hFormat: use24hFormat.currentIndex 0043 property alias cfg_dateDisplayFormat: dateDisplayFormat.currentIndex 0044 0045 Kirigami.FormLayout { 0046 0047 RowLayout { 0048 Kirigami.FormData.label: i18n("Information:") 0049 0050 QQC2.CheckBox { 0051 id: showDate 0052 text: i18n("Show date") 0053 } 0054 0055 QQC2.ComboBox { 0056 id: dateDisplayFormat 0057 enabled: showDate.checked 0058 visible: Plasmoid.formFactor !== PlasmaCore.Types.Vertical 0059 model: [ 0060 i18n("Adaptive location"), 0061 i18n("Always beside time"), 0062 i18n("Always below time"), 0063 ] 0064 onActivated: cfg_dateDisplayFormat = currentIndex 0065 } 0066 } 0067 0068 QQC2.ComboBox { 0069 id: showSecondsComboBox 0070 Kirigami.FormData.label: i18n("Show seconds:") 0071 model: [ 0072 i18nc("@option:check", "Never"), 0073 i18nc("@option:check", "Only in the tooltip"), 0074 i18n("Always"), 0075 ] 0076 onActivated: cfg_showSeconds = currentIndex; 0077 } 0078 0079 Item { 0080 Kirigami.FormData.isSection: true 0081 } 0082 0083 ColumnLayout { 0084 Kirigami.FormData.label: i18n("Show time zone:") 0085 Kirigami.FormData.buddyFor: showLocalTimeZoneWhenDifferent 0086 0087 QQC2.RadioButton { 0088 id: showLocalTimeZoneWhenDifferent 0089 text: i18n("Only when different from local time zone") 0090 } 0091 0092 QQC2.RadioButton { 0093 id: showLocalTimezone 0094 text: i18n("Always") 0095 } 0096 } 0097 0098 Item { 0099 Kirigami.FormData.isSection: true 0100 } 0101 0102 RowLayout { 0103 Kirigami.FormData.label: i18n("Display time zone as:") 0104 0105 QQC2.ComboBox { 0106 id: displayTimezoneFormat 0107 model: [ 0108 i18n("Code"), 0109 i18n("City"), 0110 i18n("Offset from UTC time"), 0111 ] 0112 onActivated: cfg_displayTimezoneFormat = currentIndex 0113 } 0114 } 0115 0116 Item { 0117 Kirigami.FormData.isSection: true 0118 } 0119 0120 RowLayout { 0121 Layout.fillWidth: true 0122 Kirigami.FormData.label: i18n("Time display:") 0123 0124 QQC2.ComboBox { 0125 id: use24hFormat 0126 model: [ 0127 i18n("12-Hour"), 0128 i18n("Use Region Defaults"), 0129 i18n("24-Hour") 0130 ] 0131 onCurrentIndexChanged: cfg_use24hFormat = currentIndex 0132 } 0133 0134 QQC2.Button { 0135 visible: KAuthorized.authorizeControlModule("kcm_regionandlang") 0136 text: i18n("Change Regional Settings…") 0137 icon.name: "preferences-desktop-locale" 0138 onClicked: KCMLauncher.openSystemSettings("kcm_regionandlang") 0139 } 0140 } 0141 0142 Item { 0143 Kirigami.FormData.isSection: true 0144 } 0145 0146 RowLayout { 0147 Kirigami.FormData.label: i18n("Date format:") 0148 enabled: showDate.checked 0149 0150 QQC2.ComboBox { 0151 id: dateFormat 0152 textRole: "label" 0153 model: [ 0154 { 0155 label: i18n("Long Date"), 0156 name: "longDate", 0157 format: Locale.LongFormat 0158 }, 0159 { 0160 label: i18n("Short Date"), 0161 name: "shortDate", 0162 format: Locale.ShortFormat 0163 }, 0164 { 0165 label: i18n("ISO Date"), 0166 name: "isoDate", 0167 format: Qt.ISODate 0168 }, 0169 { 0170 label: i18nc("custom date format", "Custom"), 0171 name: "custom" 0172 } 0173 ] 0174 onCurrentIndexChanged: cfg_dateFormat = model[currentIndex]["name"]; 0175 0176 Component.onCompleted: { 0177 const isConfiguredDateFormat = item => item["name"] === Plasmoid.configuration.dateFormat; 0178 currentIndex = model.findIndex(isConfiguredDateFormat); 0179 } 0180 } 0181 0182 QQC2.Label { 0183 Layout.fillWidth: true 0184 textFormat: Text.PlainText 0185 text: { 0186 if (cfg_dateFormat === "shortDate" || cfg_dateFormat === "longDate") { 0187 return Qt.formatDate(new Date(), Qt.locale(), dateFormat.model[dateFormat.currentIndex].format); 0188 } else if (cfg_dateFormat === "custom") { 0189 return Qt.formatDate(new Date(), customDateFormat.text); 0190 } else { 0191 return Qt.formatDate(new Date(), dateFormat.model[dateFormat.currentIndex].format); 0192 } 0193 } 0194 } 0195 } 0196 0197 QQC2.TextField { 0198 id: customDateFormat 0199 Layout.fillWidth: true 0200 enabled: showDate.checked 0201 visible: cfg_dateFormat === "custom" 0202 } 0203 0204 QQC2.Label { 0205 text: i18n("<a href=\"https://doc.qt.io/qt-6/qml-qtqml-qt.html#formatDateTime-method\">Time Format Documentation</a>") 0206 enabled: showDate.checked 0207 visible: cfg_dateFormat === "custom" 0208 wrapMode: Text.Wrap 0209 0210 Layout.preferredWidth: Layout.maximumWidth 0211 Layout.maximumWidth: Kirigami.Units.gridUnit * 16 0212 0213 HoverHandler { 0214 cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : undefined 0215 } 0216 0217 onLinkActivated: link => Qt.openUrlExternally(link) 0218 } 0219 0220 Item { 0221 Kirigami.FormData.isSection: true 0222 } 0223 0224 QQC2.ButtonGroup { 0225 buttons: [autoFontAndSizeRadioButton, manualFontAndSizeRadioButton] 0226 } 0227 0228 QQC2.RadioButton { 0229 Kirigami.FormData.label: i18nc("@label:group", "Text display:") 0230 id: autoFontAndSizeRadioButton 0231 text: i18nc("@option:radio", "Automatic") 0232 } 0233 0234 QQC2.Label { 0235 text: i18nc("@label", "Text will follow the system font and expand to fill the available space.") 0236 textFormat: Text.PlainText 0237 Layout.fillWidth: true 0238 wrapMode: Text.Wrap 0239 font: Kirigami.Theme.smallFont 0240 } 0241 0242 RowLayout { 0243 QQC2.RadioButton { 0244 id: manualFontAndSizeRadioButton 0245 text: i18nc("@option:radio setting for manually configuring the font settings", "Manual") 0246 checked: !cfg_autoFontAndSize 0247 onClicked: { 0248 if (cfg_fontFamily === "") { 0249 fontDialog.fontChosen = Kirigami.Theme.defaultFont 0250 } 0251 } 0252 } 0253 0254 QQC2.Button { 0255 text: i18nc("@action:button", "Choose Style…") 0256 icon.name: "settings-configure" 0257 enabled: manualFontAndSizeRadioButton.checked 0258 onClicked: { 0259 fontDialog.selectedFont = fontDialog.fontChosen 0260 fontDialog.open() 0261 } 0262 } 0263 0264 } 0265 0266 QQC2.Label { 0267 visible: manualFontAndSizeRadioButton.checked 0268 text: i18nc("@info %1 is the font size, %2 is the font family", "%1pt %2", cfg_fontSize, fontDialog.fontChosen.family) 0269 textFormat: Text.PlainText 0270 font: fontDialog.fontChosen 0271 } 0272 } 0273 0274 QtDialogs.FontDialog { 0275 id: fontDialog 0276 title: i18nc("@title:window", "Choose a Font") 0277 modality: Qt.WindowModal 0278 parentWindow: appearancePage.Window.window 0279 0280 property font fontChosen: Qt.font() 0281 0282 onAccepted: { 0283 fontChosen = selectedFont 0284 } 0285 } 0286 0287 Component.onCompleted: { 0288 if (!Plasmoid.configuration.showLocalTimezone) { 0289 showLocalTimeZoneWhenDifferent.checked = true; 0290 } 0291 } 0292 }