Warning, /plasma/plasma-thunderbolt/src/kcm/ui/DeviceView.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2018-2019 Daniel Vrátil <dvratil@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 import QtQuick 2.7 0008 import QtQuick.Layouts 1.1 0009 import QtQuick.Controls 2.3 0010 0011 import org.kde.kirigami 2.4 as Kirigami 0012 import org.kde.bolt 0.1 as Bolt 0013 import "utils.js" as Utils 0014 0015 Kirigami.ScrollablePage { 0016 id: page 0017 0018 property Bolt.Manager manager: null 0019 property Bolt.Device device: null 0020 0021 property int _evalTrigger: 0 0022 0023 Timer { 0024 interval: 2000 0025 running: device != null 0026 repeat: true 0027 onTriggered: page._evalTrigger++; 0028 } 0029 0030 ColumnLayout { 0031 spacing: Kirigami.Units.smallSpacing * 5 0032 0033 RowLayout { 0034 Button { 0035 icon.name: "draw-arrow-back" 0036 visible: !pageRow.wideMode 0037 onClicked: pageRow.pop() 0038 } 0039 0040 Kirigami.Heading { 0041 level: 2 0042 text: _evalTrigger, device ? device.name : "" 0043 } 0044 } 0045 0046 Kirigami.InlineMessage { 0047 id: errorMessage 0048 0049 Layout.fillWidth: true 0050 0051 type: Kirigami.MessageType.Error 0052 showCloseButton: true 0053 0054 function show(msg) { 0055 text = msg; 0056 visible = true; 0057 } 0058 } 0059 0060 Kirigami.FormLayout { 0061 Label { 0062 text: _evalTrigger, device ? device.vendor : "" 0063 Kirigami.FormData.label: i18n("Vendor:") 0064 } 0065 Label { 0066 text: _evalTrigger, device ? device.uid : "" 0067 Kirigami.FormData.label: i18n("UID:") 0068 } 0069 Label { 0070 text: _evalTrigger, device ? Utils.deviceStatus(device, false).text : "" 0071 Kirigami.FormData.label: i18n("Status:") 0072 } 0073 Label { 0074 visible: device && device.status == Bolt.Bolt.Status.Authorized 0075 text: _evalTrigger, device ? Qt.formatDateTime(device.authorizeTime) : "" 0076 Kirigami.FormData.label: i18n("Authorized at:") 0077 } 0078 Label { 0079 visible: device && device.status == Bolt.Bolt.Status.Connected 0080 text: _evalTrigger, device ? Qt.formatDateTime(device.connectTime) : "" 0081 Kirigami.FormData.label: i18n("Connected at:") 0082 } 0083 Label { 0084 visible: device && device.status == Bolt.Bolt.Status.Disconnected 0085 text: _evalTrigger, device ? Qt.formatDateTime(device.storeTime) : "" 0086 Kirigami.FormData.label: i18n("Enrolled at:") 0087 } 0088 Label { 0089 visible: device && (device.status == Bolt.Bolt.Status.Authorized || device.status == Bolt.Bolt.Status.Disconnected) 0090 text: _evalTrigger, device && device.stored ? i18n("Yes") : i18n("No") 0091 Kirigami.FormData.label: i18n("Trusted:") 0092 } 0093 } 0094 0095 RowLayout { 0096 Layout.alignment: Qt.AlignHCenter 0097 0098 Button { 0099 id: authorizeBtn 0100 text: device && device.status == Bolt.Bolt.Status.Authorizing ? i18n("Authorizing...") : i18n("Authorize") 0101 enabled: device && device.status != Bolt.Bolt.Status.Authorizing 0102 visible: device && (device.status == Bolt.Bolt.Status.Connected || device.status == Bolt.Bolt.Status.AuthError) 0103 onClicked: { 0104 Bolt.QMLHelper.enrollDevice( 0105 manager, device.uid, Bolt.Bolt.Policy.Default, 0106 Bolt.Bolt.Auth.Boot | Bolt.Bolt.Auth.NoKey, 0107 function() { 0108 console.log("Thunderbolt device " + device.uid + " (" + device.name + ") enrolled successfully"); 0109 }, 0110 function(error) { 0111 errorMessage.show(i18n("Failed to enroll device <b>%1</b>: %2", device.name, error)); 0112 } 0113 ); 0114 } 0115 } 0116 Button { 0117 id: storeBtn 0118 text: i18n("Trust this Device") 0119 visible: device && device.status == Bolt.Bolt.Status.Authorized && device.stored == false 0120 onClicked: { 0121 enabled = false; 0122 Bolt.QMLHelper.enrollDevice( 0123 manager, device.uid, Bolt.Bolt.Policy.Default, 0124 Bolt.Bolt.Auth.Boot | Bolt.Bolt.Auth.NoKey, 0125 function() { 0126 enabled = true; 0127 console.log("Thunderbolt Device " + device.uid + " (" + device.name + ") enrolled successfully"); 0128 }, 0129 function(error) { 0130 enabled = true; 0131 errorMessage.show(i18n("Failed to enroll device <b>%1</b>: %2", device.name, error)); 0132 } 0133 ); 0134 } 0135 } 0136 0137 Button { 0138 id: forgetBtn 0139 text: i18n("Revoke Trust") 0140 visible: device && device.stored 0141 onClicked: { 0142 enabled = false 0143 Bolt.QMLHelper.forgetDevice( 0144 manager, device.uid, 0145 function() { 0146 enabled = true; 0147 console.log("Device " + device.uid + " successfully forgotten."); 0148 }, 0149 function(error) { 0150 enabled = true; 0151 errorMessage.show(i18n("Error changing device trust: <b>%1</b>: %2", device.name, error)); 0152 } 0153 ); 0154 // If the device is not connected it will cease to exist 0155 // once forgotten, so we should pop this view 0156 if (device.status == Bolt.Bolt.Status.Disconnected) { 0157 pageRow.pop(); 0158 } 0159 } 0160 } 0161 } 0162 0163 Label { 0164 Layout.alignment: Qt.AlignHCenter 0165 Layout.fillWidth: true 0166 0167 text: device && !device.stored 0168 ? i18n("Hint: trusted device will be automatically authorized the next time it is connected to the computer.") 0169 : i18n("Hint: an untrusted device needs to be manually authorized each time it is connected to the computer.") 0170 visible: storeBtn.visible || forgetBtn.visible 0171 wrapMode: Text.WordWrap 0172 horizontalAlignment: Qt.AlignHCenter 0173 } 0174 } 0175 }