Warning, /network/kdeconnect-kde/app/qml/DevicePage.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@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 0008 import QtCore 0009 import QtQuick.Controls as QQC2 0010 import QtQuick.Layouts 0011 import QtQuick.Dialogs 0012 import org.kde.kirigami as Kirigami 0013 import org.kde.kdeconnect 0014 0015 Kirigami.ScrollablePage { 0016 id: root 0017 property QtObject currentDevice 0018 title: currentDevice.name 0019 0020 actions: [ 0021 Kirigami.Action { 0022 icon.name: "network-disconnect" 0023 onTriggered: root.currentDevice.unpair() 0024 text: i18nd("kdeconnect-app", "Unpair") 0025 visible: root.currentDevice && root.currentDevice.isPaired 0026 }, 0027 Kirigami.Action { 0028 icon.name: "hands-free" 0029 text: i18nd("kdeconnect-app", "Send Ping") 0030 visible: root.currentDevice && root.currentDevice.isPaired && root.currentDevice.isReachable 0031 onTriggered: { 0032 root.currentDevice.pluginCall("ping", "sendPing"); 0033 } 0034 }, 0035 Kirigami.Action { 0036 icon.name: "settings-configure" 0037 text: i18n("Plugin Settings") 0038 visible: root.currentDevice && root.currentDevice.isPaired && root.currentDevice.isReachable 0039 onTriggered: { 0040 pageStack.push( 0041 Qt.resolvedUrl("PluginSettings.qml"), 0042 {device: currentDevice.id()} 0043 ); 0044 } 0045 } 0046 ] 0047 0048 ListView { 0049 model: plugins.filter((plugin) => plugin.loaded) 0050 delegate: QQC2.ItemDelegate { 0051 text: modelData.name 0052 icon.name: modelData.iconName 0053 highlighted: false 0054 icon.color: "transparent" 0055 width: ListView.view.width 0056 onClicked: modelData.onClick() 0057 } 0058 0059 property list<QtObject> plugins: [ 0060 PluginItem { 0061 name: i18nd("kdeconnect-app", "Multimedia control") 0062 interfaceFactory: MprisDbusInterfaceFactory 0063 component: "mpris.qml" 0064 pluginName: "mprisremote" 0065 device: root.currentDevice 0066 }, 0067 PluginItem { 0068 name: i18nd("kdeconnect-app", "Remote input") 0069 interfaceFactory: RemoteControlDbusInterfaceFactory 0070 component: "mousepad.qml" 0071 pluginName: "remotecontrol" 0072 device: root.currentDevice 0073 }, 0074 PluginItem { 0075 name: i18nd("kdeconnect-app", "Presentation Remote") 0076 interfaceFactory: RemoteKeyboardDbusInterfaceFactory 0077 component: "presentationRemote.qml" 0078 pluginName: "remotecontrol" 0079 device: root.currentDevice 0080 }, 0081 PluginItem { 0082 readonly property var lockIface: LockDeviceDbusInterfaceFactory.create(root.currentDevice.id()) 0083 pluginName: "lockdevice" 0084 name: lockIface.isLocked ? i18nd("kdeconnect-app", "Unlock") : i18nd("kdeconnect-app", "Lock") 0085 onClick: () => lockIface.isLocked = !lockIface.isLocked; 0086 device: root.currentDevice 0087 }, 0088 PluginItem { 0089 readonly property var findmyphoneIface: FindMyPhoneDbusInterfaceFactory.create(root.currentDevice.id()) 0090 pluginName: "findmyphone" 0091 name: i18nd("kdeconnect-app", "Find Device") 0092 onClick: () => findmyphoneIface.ring() 0093 device: root.currentDevice 0094 }, 0095 PluginItem { 0096 name: i18nd("kdeconnect-app", "Run command") 0097 interfaceFactory: RemoteCommandsDbusInterfaceFactory 0098 component: "runcommand.qml" 0099 pluginName: "remotecommands" 0100 device: root.currentDevice 0101 }, 0102 PluginItem { 0103 readonly property var clipboardIface: ClipboardDbusInterfaceFactory.create(root.currentDevice.id()) 0104 pluginName: "clipboard" 0105 name: i18nd("kdeconnect-app", "Send Clipboard") 0106 onClick: () => clipboardIface.sendClipboard() 0107 device: root.currentDevice 0108 }, 0109 PluginItem { 0110 pluginName: "share" 0111 name: i18nd("kdeconnect-app", "Share File") 0112 onClick: () => fileDialog.open() 0113 device: root.currentDevice 0114 }, 0115 PluginItem { 0116 name: i18nd("kdeconnect-app", "Volume control") 0117 interfaceFactory: RemoteSystemVolumeDbusInterfaceFactory 0118 component: "volume.qml" 0119 pluginName: "remotesystemvolume" 0120 device: root.currentDevice 0121 } 0122 ] 0123 0124 Kirigami.PlaceholderMessage { 0125 text: i18nd("kdeconnect-app", "This device is not paired") 0126 anchors.centerIn: parent 0127 visible: root.currentDevice && root.currentDevice.isReachable && !root.currentDevice.isPaired && !root.currentDevice.isPairRequestedByPeer && !root.currentDevice.isPairRequested 0128 helpfulAction: Kirigami.Action { 0129 text: i18ndc("kdeconnect-app", "Request pairing with a given device", "Pair") 0130 icon.name:"network-connect" 0131 onTriggered: root.currentDevice.requestPairing() 0132 } 0133 } 0134 0135 Kirigami.PlaceholderMessage { 0136 text: i18nd("kdeconnect-app", "Pair requested") 0137 anchors.centerIn: parent 0138 visible: root.currentDevice && root.currentDevice.isReachable && root.currentDevice.isPairRequested 0139 QQC2.BusyIndicator { 0140 Layout.alignment: Qt.AlignHCenter 0141 } 0142 } 0143 0144 Kirigami.PlaceholderMessage { 0145 text: i18n("Pair requested") 0146 visible: root.currentDevice && root.currentDevice.isPairRequestedByPeer 0147 anchors.centerIn: parent 0148 spacing: Kirigami.Units.largeSpacing 0149 RowLayout { 0150 QQC2.Button { 0151 text: i18nd("kdeconnect-app", "Accept") 0152 icon.name:"dialog-ok" 0153 onClicked: root.currentDevice.acceptPairing() 0154 } 0155 0156 QQC2.Button { 0157 text: i18nd("kdeconnect-app", "Reject") 0158 icon.name:"dialog-cancel" 0159 onClicked: root.currentDevice.cancelPairing() 0160 } 0161 } 0162 } 0163 0164 Kirigami.PlaceholderMessage { 0165 visible: root.currentDevice && !root.currentDevice.isReachable 0166 text: i18nd("kdeconnect-app", "This device is not reachable") 0167 anchors.centerIn: parent 0168 } 0169 } 0170 0171 FileDialog { 0172 id: fileDialog 0173 readonly property var shareIface: root.currentDevice ? ShareDbusInterfaceFactory.create(root.currentDevice.id()) : null 0174 title: i18nd("kdeconnect-app", "Please choose a file") 0175 currentFolder: StandardPaths.standardLocations(StandardPaths.HomeLocation)[0] 0176 onAccepted: shareIface.shareUrl(fileDialog.fileUrl) 0177 } 0178 }