Warning, /plasma/plasma-bigscreen/kcms/kdeconnect/ui/DeviceConnectionView.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2020 Aditya Mehra <aix.m@outlook.com>
0003     SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007 
0008 import QtQuick 2.14
0009 import QtQuick.Layouts 1.14
0010 import QtQuick.Controls 2.14
0011 import org.kde.plasma.core 2.0 as PlasmaCore
0012 import org.kde.plasma.components 2.0 as PlasmaComponents2
0013 import org.kde.plasma.components 3.0 as PlasmaComponents
0014 import org.kde.kirigami 2.12 as Kirigami
0015 import org.kde.mycroft.bigscreen 1.0 as BigScreen
0016 import org.kde.kdeconnect 1.0
0017 import Qt5Compat.GraphicalEffects
0018 
0019 import "delegates" as Delegates
0020 
0021 Rectangle {
0022     id: deviceView
0023     color: Kirigami.Theme.backgroundColor
0024     property QtObject currentDevice
0025     property bool hasPairingRequests: deviceView.currentDevice.hasPairingRequests
0026     property bool isTrusted: deviceView.currentDevice.isTrusted
0027     property bool isReachable: deviceView.currentDevice.isReachable
0028     
0029     onCurrentDeviceChanged: checkCurrentStatus()
0030     
0031     onHasPairingRequestsChanged: {
0032         if(hasPairingRequests) {
0033             checkCurrentStatus()
0034         }
0035     }
0036     
0037     onIsTrustedChanged: checkCurrentStatus()
0038     onIsReachableChanged: checkCurrentStatus()
0039     
0040     onActiveFocusChanged: {
0041         if(activeFocus){
0042             deviceStatView.forceActiveFocus()
0043         }
0044     }
0045     
0046     function checkCurrentStatus() {
0047         //if (deviceView.currentDevice.hasPairingRequests) {
0048         //    deviceStatView.currentIndex = 1
0049         //} else
0050         // disable pairing request handler in kcm as indicator handles pairing in bigscreen
0051         if (deviceView.currentDevice.isReachable) {
0052             if (deviceView.currentDevice.isTrusted) {
0053                 deviceIconStatus.source = deviceView.currentDevice.statusIconName
0054                 deviceStatView.currentIndex = 2
0055                 
0056             } else {
0057                 deviceIconStatus.source = deviceView.currentDevice.iconName
0058                 deviceStatView.currentIndex = 0
0059             }
0060             
0061         } else {
0062             deviceStatView.currentIndex = 3
0063         }
0064     }
0065     
0066     ColumnLayout {
0067         id: colLayoutSettingsItem
0068         clip: true
0069 
0070         anchors {
0071             top: parent.top
0072             left: parent.left
0073             right: parent.right
0074             bottom: headerAreaSettingsItem.top
0075             margins: Kirigami.Units.largeSpacing * 2
0076         }
0077 
0078         Item {
0079             Layout.fillWidth: true
0080             Layout.preferredHeight: parent.height * 0.20
0081         }
0082         
0083         Item {
0084             Layout.fillWidth: true
0085             Layout.preferredHeight: parent.height / 3
0086             Layout.alignment: Qt.AlignTop
0087 
0088             Rectangle {
0089                 id: dIcon
0090                 anchors.top: headrSept.bottom
0091                 anchors.topMargin: Kirigami.Units.largeSpacing
0092                 anchors.horizontalCenter: parent.horizontalCenter
0093                 width: PlasmaCore.Units.iconSizes.huge
0094                 height: width
0095                 radius: 100
0096                 color: Kirigami.Theme.backgroundColor
0097                 
0098                 Kirigami.Icon {
0099                     id: deviceIconStatus
0100                     anchors.centerIn: parent
0101                     width: PlasmaCore.Units.iconSizes.large
0102                     height: width
0103                     source: currentDevice.iconName
0104                 }
0105             }
0106             
0107             Kirigami.Heading {
0108                 id: label2
0109                 width: parent.width
0110                 anchors.top: dIcon.bottom
0111                 anchors.topMargin: Kirigami.Units.largeSpacing
0112                 horizontalAlignment: Text.AlignHCenter
0113                 wrapMode: Text.WordWrap
0114                 level: 2
0115                 maximumLineCount: 2
0116                 elide: Text.ElideRight
0117                 color: Kirigami.Theme.textColor
0118                 text: currentDevice.name
0119             }
0120 
0121             Kirigami.Separator {
0122                 id: lblSept2
0123                 anchors.top: label2.bottom
0124                 anchors.topMargin: Kirigami.Units.smallSpacing
0125                 height: 1
0126                 width: parent.width
0127             }
0128             
0129             StackLayout {
0130                 id: deviceStatView
0131                 anchors.top: lblSept2.bottom
0132                 anchors.topMargin: Kirigami.Units.largeSpacing
0133                 anchors.left: parent.left
0134                 anchors.right: parent.right
0135                 anchors.bottom: parent.bottom
0136                 currentIndex: 0
0137                 
0138                 onActiveFocusChanged: {
0139                     if(activeFocus) {
0140                         deviceStatView.itemAt(currentIndex).forceActiveFocus();
0141                     }
0142                 }
0143                 
0144                 Delegates.UnpairedView{
0145                     id: unpairedView
0146                 }
0147                 
0148                 Delegates.PairRequest{
0149                     id: pairRequestView
0150                 }
0151                 
0152                 Delegates.PairedView{
0153                     id: pairedView
0154                 }
0155                 
0156                 Delegates.Unreachable{
0157                     id: unreachableView
0158                 }
0159             }
0160         }
0161     }
0162 
0163     RowLayout {
0164         id: headerAreaSettingsItem
0165         anchors.bottom: parent.bottom
0166         anchors.left: parent.left
0167         anchors.right: parent.right
0168         anchors.margins: Kirigami.Units.largeSpacing * 2
0169         height: Kirigami.Units.gridUnit * 2
0170 
0171         PlasmaComponents2.Button {
0172             id: backBtnSettingsItem
0173             iconSource: "arrow-left"
0174             Layout.alignment: Qt.AlignLeft
0175 
0176             KeyNavigation.down: deviceStatView
0177 
0178             PlasmaComponents2.Highlight {
0179                 z: -2
0180                 anchors.fill: parent
0181                 anchors.margins: -Kirigami.Units.gridUnit / 4
0182                 visible: backBtnSettingsItem.activeFocus ? 1 : 0
0183             }
0184 
0185             Keys.onReturnPressed: {
0186                 clicked()
0187             }
0188 
0189             onClicked: {
0190                 connectionView.forceActiveFocus()
0191             }
0192         }
0193 
0194         Label {
0195             id: backbtnlabelHeading
0196             text: i18n("Press the [←] Back button to return to device selection")
0197             wrapMode: Text.WordWrap
0198             maximumLineCount: 2
0199             Layout.fillWidth: true
0200             Layout.alignment: Qt.AlignRight
0201         }
0202     }
0203 }