Warning, /plasma/plasma-mobile/initialstart/modules/time/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 import QtQuick 2.15
0005 import QtQuick.Controls 2.15
0006 import QtQuick.Layouts 1.15
0007 
0008 import org.kde.kirigami 2.20 as Kirigami
0009 import org.kde.kirigamiaddons.formcard 1.0 as FormCard
0010 import org.kde.plasma.mobileinitialstart.time 1.0 as Time
0011 
0012 Item {
0013     id: root
0014     property string name: i18n("Time and Date")
0015 
0016     readonly property real cardWidth: Math.min(Kirigami.Units.gridUnit * 30, root.width - Kirigami.Units.gridUnit * 2)
0017 
0018     ColumnLayout {
0019         anchors {
0020             fill: parent
0021             topMargin: Kirigami.Units.gridUnit
0022             bottomMargin: Kirigami.Units.largeSpacing
0023         }
0024 
0025         width: root.width
0026         spacing: Kirigami.Units.gridUnit
0027 
0028         Label {
0029             Layout.leftMargin: Kirigami.Units.gridUnit
0030             Layout.rightMargin: Kirigami.Units.gridUnit
0031             Layout.alignment: Qt.AlignTop
0032             Layout.fillWidth: true
0033 
0034             wrapMode: Text.Wrap
0035             horizontalAlignment: Text.AlignHCenter
0036             text: i18n("Select your time zone and preferred time format.")
0037         }
0038 
0039         FormCard.FormCard {
0040             maximumWidth: root.cardWidth
0041 
0042             Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
0043             Layout.fillWidth: true
0044 
0045             FormCard.FormSwitchDelegate {
0046                 Layout.fillWidth: true
0047                 text: i18n("24-Hour Format")
0048                 checked: Time.TimeUtil.is24HourTime
0049                 onCheckedChanged: {
0050                     if (checked !== Time.TimeUtil.is24HourTime) {
0051                         Time.TimeUtil.is24HourTime = checked;
0052                     }
0053                 }
0054             }
0055         }
0056 
0057         FormCard.FormCard {
0058             maximumWidth: root.cardWidth
0059 
0060             Layout.fillHeight: true
0061             Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
0062             Layout.fillWidth: true
0063 
0064             ListView {
0065                 id: listView
0066 
0067                 clip: true
0068                 Layout.fillWidth: true
0069                 Layout.fillHeight: true
0070                 model: Time.TimeUtil.timeZones
0071 
0072                 header: Control {
0073                     width: listView.width
0074                     leftPadding: Kirigami.Units.largeSpacing
0075                     rightPadding: Kirigami.Units.largeSpacing
0076                     topPadding: Kirigami.Units.largeSpacing
0077                     bottomPadding: Kirigami.Units.largeSpacing
0078 
0079                     contentItem: Kirigami.SearchField {
0080                         id: searchField
0081 
0082                         onTextChanged: {
0083                             Time.TimeUtil.timeZones.filterString = text;
0084                             // HACK: search field seems to lose focus every time the text changes
0085                             focusTimer.restart();
0086                         }
0087 
0088                         Timer {
0089                             id: focusTimer
0090                             interval: 1
0091                             onTriggered: searchField.forceActiveFocus()
0092                         }
0093                     }
0094                 }
0095 
0096                 delegate: FormCard.FormRadioDelegate {
0097                     required property string timeZoneId
0098 
0099                     width: ListView.view.width
0100                     text: timeZoneId
0101                     checked: Time.TimeUtil.currentTimeZone === timeZoneId
0102                     onCheckedChanged: {
0103                         if (checked && timeZoneId !== Time.TimeUtil.currentTimeZone) {
0104                             Time.TimeUtil.currentTimeZone = model.timeZoneId;
0105                             checked = Qt.binding(() => Time.TimeUtil.currentTimeZone === timeZoneId);
0106                         }
0107                     }
0108                 }
0109             }
0110         }
0111     }
0112 }
0113