Warning, /plasma-bigscreen/calamares-bigscreen-branding/bigscreen/Offline.qml is written in an unsupported language. File is not indexed.

0001 /* === This file is part of Calamares - <https://calamares.io> ===
0002  *
0003  *   SPDX-FileCopyrightText: 2020-2021 Anke Boersma <demm@kaosx.us>
0004  *   SPDX-FileCopyrightText: 2022 Aditya Mehra <aix.m@outlook.com>
0005  *   SPDX-License-Identifier: GPL-3.0-or-later
0006  *
0007  *   Calamares is Free Software: see the License-Identifier above.
0008  *
0009  */
0010 
0011 import io.calamares.core 1.0
0012 import io.calamares.ui 1.0
0013 
0014 import QtQuick 2.10
0015 import QtQuick.Controls 2.10
0016 import QtQuick.Window 2.14
0017 import QtQuick.Layouts 1.3
0018 
0019 import org.kde.kirigami 2.7 as Kirigami
0020 
0021 Item {
0022     id: control
0023     property string currentRegion
0024     property string currentZone
0025     property color accentColor: Branding.styleString(Branding.SidebarTextHighlight)
0026     property alias stackIndex: stack.currentIndex
0027 
0028     onActiveFocusChanged: {
0029         if(activeFocus) {
0030             if(stackIndex == 0){
0031                 listOneButton.forceActiveFocus()
0032             }
0033             if(stackIndex == 1){
0034                 listTwoButton.forceActiveFocus()
0035             }
0036         }
0037     }
0038 
0039     Rectangle {
0040         id: controlBar
0041         anchors.top: parent.top
0042         anchors.left: parent.left
0043         anchors.right: parent.right
0044         height: Kirigami.Units.gridUnit * 3
0045         color: "#ff212121"
0046 
0047         RowLayout {
0048             id: controlBarLayout
0049             anchors.fill: parent
0050             
0051             Rectangle {
0052                 color: listOneButton.activeFocus ? control.accentColor : "#ff212121"
0053                 Layout.fillWidth: true
0054                 Layout.preferredHeight: Kirigami.Units.gridUnit * 3
0055                 radius: 3
0056                 border.color: Branding.styleString(Branding.SidebarText)
0057                 border.width: stack.currentIndex == 0 ? 1 : 0
0058 
0059                 Button {
0060                     id: listOneButton
0061                     objectName: "listOneButton"
0062                     text: "Region Selection"
0063                     anchors.fill: parent                        
0064                     anchors.margins: 3
0065                     highlighted: listOneButton.activeFocus ? 1 : 0
0066                     flat: stack.currentIndex == 0
0067 
0068                     Kirigami.Theme.backgroundColor: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.4)
0069                     Kirigami.Theme.textColor: Kirigami.Theme.textColor
0070 
0071                     KeyNavigation.right: listTwoButton
0072                     KeyNavigation.down: list
0073 
0074                     onActiveFocusChanged: {
0075                         if(activeFocus) {
0076                             navigationHelper.activeFocusedElement = objectName
0077                         }
0078                     }
0079 
0080                     Keys.onBackPressed: {
0081                         localStackContainer.forceActiveFocus()
0082                     }
0083 
0084                     onClicked: {
0085                         stack.currentIndex = 0
0086                     }
0087                 }
0088             }
0089 
0090             Rectangle {
0091                 color: listTwoButton.activeFocus ? control.accentColor : "#ff212121"
0092                 Layout.fillWidth: true
0093                 Layout.preferredHeight: Kirigami.Units.gridUnit * 3
0094                 radius: 3
0095                 border.color: Branding.styleString(Branding.SidebarText)
0096                 border.width: stack.currentIndex == 1 ? 1 : 0
0097 
0098                 Button {
0099                     id: listTwoButton
0100                     objectName: "listTwoButton"
0101                     text: "Zone Selection"
0102                     anchors.fill: parent                        
0103                     anchors.margins: 3
0104                     highlighted: listTwoButton.activeFocus ? 1 : 0
0105                     flat: stack.currentIndex == 1
0106 
0107                     Kirigami.Theme.backgroundColor: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.4)
0108                     Kirigami.Theme.textColor: Kirigami.Theme.textColor
0109 
0110 
0111                     KeyNavigation.left: listOneButton
0112                     KeyNavigation.down: list2
0113 
0114                     onActiveFocusChanged: {
0115                         if(activeFocus) {
0116                             navigationHelper.activeFocusedElement = objectName
0117                         }
0118                     }
0119 
0120                     Keys.onBackPressed: {
0121                         localStackContainer.forceActiveFocus()
0122                     }
0123 
0124                     onClicked: {
0125                         stack.currentIndex = 1
0126                     }
0127                 }
0128             }
0129         }
0130     }
0131     
0132     StackLayout {
0133         id: stack
0134         anchors.top: controlBar.bottom
0135         anchors.left: parent.left
0136         anchors.right: parent.right
0137         anchors.bottom: parent.bottom
0138         clip: true
0139         currentIndex: 0
0140 
0141         ColumnLayout {
0142             implicitWidth: parent.width
0143             implicitHeight: parent.height
0144 
0145             Rectangle {
0146                 Layout.fillWidth: true
0147                 Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0148                 color: "#ff212121"
0149 
0150                 Label {
0151                     id: region
0152                     anchors.fill: parent
0153                     anchors.margins: Kirigami.Units.largeSpacing
0154                     verticalAlignment: Text.AlignVCenter
0155                     horizontalAlignment: Text.AlignCenter
0156                     color: Branding.styleString(Branding.SidebarText)
0157                     font.pixelSize: parent.height * 0.45
0158                     text: qsTr("Select your preferred Region, or use the default settings.")
0159                     maximumLineCount: 1
0160                     elide: Text.ElideRight
0161                 }
0162             }
0163 
0164             Kirigami.CardsListView {
0165                 id: list
0166                 objectName: "list"
0167                 Layout.fillWidth: true                
0168                 Layout.fillHeight: true                
0169                 boundsBehavior: Flickable.StopAtBounds
0170                 spacing: 4
0171                 model: config.regionModel
0172                 currentIndex: -1
0173                 clip: true
0174                 highlight: Rectangle {
0175                     color: control.accentColor
0176                     radius: 4
0177                 }
0178                 ScrollBar.vertical: ScrollBar {
0179                     active: true
0180                 }
0181                 
0182                 KeyNavigation.up: listOneButton
0183                 KeyNavigation.down: adjustSettingsButton
0184 
0185                 onActiveFocusChanged: {
0186                     if(activeFocus) {
0187                         navigationHelper.activeFocusedElement = objectName
0188                     }
0189                 }
0190 
0191                 Keys.onRightPressed: {
0192                     localStackContainer.forceActiveFocus()
0193                 }
0194 
0195                 Keys.onLeftPressed: {
0196                     localStackContainer.forceActiveFocus()
0197                 }
0198 
0199                 Keys.onBackPressed: {
0200                     localStackContainer.forceActiveFocus()
0201                 }
0202                 
0203                 delegate: Kirigami.BasicListItem {
0204                     width: parent.width
0205                     height: 40
0206                     label: model.name
0207 
0208                     onClicked: {
0209                         list.currentIndex = index
0210                         control.currentRegion = model.name
0211                         config.regionalZonesModel.region = control.currentRegion
0212                         tztext.text = qsTr("Timezone: %1").arg(config.currentTimezoneName)
0213                         stack.currentIndex = 1
0214                         list2.forceActiveFocus()
0215                     }
0216                 }
0217             }
0218         }
0219 
0220         ColumnLayout {
0221             id: zoneView
0222             implicitWidth: parent.width
0223             implicitHeight: parent.height
0224 
0225             Rectangle {
0226                 Layout.fillWidth: true
0227                 Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0228                 color: "#ff212121"
0229 
0230                 Label {
0231                     id: zone
0232                     anchors.fill: parent
0233                     anchors.margins: Kirigami.Units.largeSpacing
0234                     verticalAlignment: Text.AlignVCenter
0235                     horizontalAlignment: Text.AlignCenter
0236                     color: Branding.styleString(Branding.SidebarText)
0237                     font.pixelSize: parent.height * 0.45
0238                     text: qsTr("Select your preferred Zone within your Region.")
0239                     maximumLineCount: 1
0240                     elide: Text.ElideRight
0241                 }
0242             }
0243 
0244             Kirigami.CardsListView {
0245                 id: list2
0246                 objectName: "list2"
0247                 Layout.fillWidth: true                
0248                 Layout.fillHeight: true                
0249                 boundsBehavior: Flickable.StopAtBounds
0250                 spacing: 4
0251                 model: config.regionalZonesModel
0252                 currentIndex: -1
0253                 clip: true
0254                 highlight: Rectangle {
0255                     color: control.accentColor
0256                     radius: 4
0257                 }
0258                 ScrollBar.vertical: ScrollBar {
0259                     active: true
0260                 }
0261 
0262                 KeyNavigation.up: listOneButton
0263                 KeyNavigation.down: adjustSettingsButton
0264 
0265                 onActiveFocusChanged: {
0266                     if(activeFocus) {
0267                         navigationHelper.activeFocusedElement = objectName
0268                     }
0269                 }
0270 
0271                 Keys.onRightPressed: {
0272                     localStackContainer.forceActiveFocus()
0273                 }
0274 
0275                 Keys.onLeftPressed: {
0276                     localStackContainer.forceActiveFocus()
0277                 }
0278 
0279                 Keys.onBackPressed: {
0280                     localStackContainer.forceActiveFocus()
0281                 }
0282 
0283                 delegate: Kirigami.BasicListItem {
0284                     width: parent.width
0285                     height: 40
0286                     label: model.name
0287 
0288                     onClicked: {
0289                         list2.currentIndex = index
0290                         list2.positionViewAtIndex(index, ListView.Center)
0291                         control.currentZone = model.name
0292                         config.setCurrentLocation(control.currentRegion, control.currentZone)
0293                         tztext.text = qsTr("Timezone: %1").arg(config.currentTimezoneName)
0294                         adjustSettingsButton.forceActiveFocus()
0295                     }
0296                 }
0297             }
0298         }
0299     }
0300 }