Warning, /plasma/bluedevil/src/kcm/ui/Device.qml is written in an unsupported language. File is not indexed.
0001 /**
0002 * SPDX-FileCopyrightText: 2020 Nicolas Fella <nicolas.fella@gmx.de>
0003 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005
0006 import QtQuick 2.2
0007 import QtQuick.Layouts 1.1
0008 import QtQuick.Controls 2.0 as QQC2
0009
0010 import org.kde.kirigami 2.10 as Kirigami
0011 import org.kde.kcmutils
0012
0013 import org.kde.bluezqt 1.0 as BluezQt
0014
0015 import "script.js" as Script;
0016
0017 SimpleKCM {
0018
0019 property var device
0020
0021 title: device.name
0022
0023 Connections {
0024 target: kcm
0025 function onNetworkAvailable(service, available) {
0026
0027 if (service === "dun") {
0028 dunButton.visible = available && device.connected
0029 }
0030
0031 if (service === "nap") {
0032 napButton.visible = available && device.connected
0033 }
0034 }
0035 }
0036
0037 Connections {
0038 target: device
0039
0040 function onConnectedChanged() {
0041 kcm.checkNetworkConnection(device.uuids, device.address)
0042 }
0043 }
0044
0045 Component.onCompleted: {
0046 kcm.checkNetworkConnection(device.uuids, device.address)
0047 }
0048
0049 header: Kirigami.InlineMessage {
0050 id: errorMessage
0051 type: Kirigami.MessageType.Error
0052 showCloseButton: true
0053 }
0054
0055 ColumnLayout {
0056
0057 Kirigami.Icon {
0058 source: device.icon
0059 Layout.preferredWidth: Kirigami.Units.iconSizes.enormous
0060 Layout.preferredHeight: Layout.preferredWidth
0061 Layout.alignment: Qt.AlignHCenter
0062 }
0063
0064 Kirigami.FormLayout {
0065
0066 Row {
0067 QQC2.Button {
0068 id: connectButton
0069 enabled: !indicator.running
0070 text: device.connected ? i18n("Disconnect") : i18n("Connect")
0071 icon.name: device.connected ? "network-disconnect-symbolic" : "network-connect-symbolic"
0072
0073 onClicked: {
0074 if (device.connected) {
0075 makeCall(device.disconnectFromDevice())
0076 } else {
0077 makeCall(device.connectToDevice())
0078 }
0079 }
0080
0081 function makeCall(call) {
0082 indicator.running = true
0083 call.finished.connect(call => {
0084 indicator.running = false
0085 if (call.error) {
0086 errorMessage.text = call.errorText
0087 errorMessage.visible = true
0088 }
0089 })
0090 }
0091 }
0092
0093 QQC2.BusyIndicator {
0094 id: indicator
0095 running: false
0096 height: connectButton.height
0097 }
0098 }
0099
0100 QQC2.Label {
0101 text: Script.deviceTypeToString(device.type)
0102 Kirigami.FormData.label: i18n("Type:")
0103 }
0104
0105 QQC2.Label {
0106 text: {
0107 if (device.battery) {
0108 return i18n("%1%", device.battery.percentage)
0109 }
0110 }
0111 visible: device.battery && device.battery.percentage
0112 Kirigami.FormData.label: i18n("Battery:")
0113 }
0114
0115 QQC2.Label {
0116 text: device.address
0117 Kirigami.FormData.label: i18n("Address:")
0118 }
0119
0120 QQC2.Label {
0121 text: device.adapter.name
0122 Kirigami.FormData.label: i18n("Adapter:")
0123 }
0124
0125 QQC2.TextField {
0126 text: device.name
0127 onTextEdited: device.name = text
0128 Kirigami.FormData.label: i18n("Name:")
0129 }
0130
0131 QQC2.CheckBox {
0132 text: i18n("Trusted")
0133 checked: device.trusted
0134 onClicked: device.trusted = !device.trusted
0135 }
0136
0137 QQC2.CheckBox {
0138 text: i18n("Blocked")
0139 checked: device.blocked
0140 onClicked: device.blocked = !device.blocked
0141 }
0142
0143 QQC2.Button {
0144 text: i18n("Send File")
0145 visible: device.uuids.includes(BluezQt.Services.ObexObjectPush) && device.connected
0146 onClicked: kcm.runSendFile(device.ubi)
0147 }
0148
0149 QQC2.Button {
0150 id: napButton
0151 text: i18n("Setup NAP Network…")
0152 visible: false
0153 onClicked: kcm.setupNetworkConnection("nap", device.address, device.name)
0154 }
0155
0156 QQC2.Button {
0157 id: dunButton
0158 text: i18n("Setup DUN Network…")
0159 visible: false
0160 onClicked: kcm.setupNetworkConnection("dun", device.address, device.name)
0161 }
0162 }
0163 }
0164 }