Warning, /plasma/bluedevil/src/applet/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2013-2014 Jan Grulich <jgrulich@redhat.com> 0003 SPDX-FileCopyrightText: 2014-2015 David Rosca <nowrep@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 import QtQuick 2.15 0009 0010 import org.kde.plasma.core 2.0 as PlasmaCore 0011 import org.kde.plasma.plasmoid 2.0 0012 import org.kde.plasma.private.bluetooth 1.0 as PlasmaBt 0013 0014 import org.kde.bluezqt 1.0 as BluezQt 0015 import org.kde.kquickcontrolsaddons 2.0 0016 0017 Item { 0018 id: bluetoothApplet 0019 0020 property var connectedDevices: [] 0021 property int runningActions: 0 0022 property QtObject btManager: BluezQt.Manager 0023 0024 Plasmoid.switchWidth: PlasmaCore.Units.gridUnit * 15 0025 Plasmoid.switchHeight: PlasmaCore.Units.gridUnit * 10 0026 0027 Plasmoid.compactRepresentation: CompactRepresentation { } 0028 Plasmoid.fullRepresentation: FullRepresentation { } 0029 0030 Plasmoid.status: (btManager.bluetoothOperational) ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.PassiveStatus 0031 Plasmoid.busy: runningActions > 0 0032 0033 Plasmoid.icon: { 0034 if (connectedDevices.length > 0) { 0035 return "preferences-system-bluetooth-activated"; 0036 } 0037 if (!btManager.bluetoothOperational) { 0038 return "preferences-system-bluetooth-inactive"; 0039 } 0040 return "preferences-system-bluetooth"; 0041 } 0042 Plasmoid.toolTipMainText: i18n("Bluetooth") 0043 Plasmoid.toolTipSubText: { 0044 if (btManager.bluetoothBlocked) { 0045 return i18n("Bluetooth is disabled; middle-click to enable"); 0046 } 0047 if (!btManager.bluetoothOperational) { 0048 if (btManager.adapters.length === 0) { 0049 return i18n("No adapters available"); 0050 } 0051 return i18n("Bluetooth is offline"); 0052 } 0053 0054 const hint = i18n("Middle-click to disable Bluetooth"); 0055 0056 if (connectedDevices.length === 0) { 0057 return "%1\n%2".arg(i18n("No connected devices")).arg(hint); 0058 0059 } else if (connectedDevices.length === 1) { 0060 const device = connectedDevices[0]; 0061 const battery = device.battery; 0062 const name = i18n("%1 connected", device.name); 0063 let text = battery 0064 ? "%1 · %2".arg(name).arg(i18n("%1% Battery", battery.percentage)) 0065 : name 0066 return "%1\n%2".arg(text).arg(hint); 0067 0068 } else { 0069 let text = i18ncp("Number of connected devices", "%1 connected device", "%1 connected devices", connectedDevices.length); 0070 for (let i = 0; i < connectedDevices.length; ++i) { 0071 const device = connectedDevices[i]; 0072 const battery = device.battery; 0073 text += battery 0074 ? "\n \u2022 %1 · %2".arg(device.name).arg(i18n("%1% Battery", battery.percentage)) 0075 : "\n \u2022 %1".arg(device.name); 0076 } 0077 text += "\n%1".arg(hint); 0078 return text; 0079 } 0080 } 0081 0082 Connections { 0083 target: btManager 0084 0085 function onDeviceAdded() { 0086 updateConnectedDevices(); 0087 } 0088 function onDeviceRemoved() { 0089 updateConnectedDevices(); 0090 } 0091 function onDeviceChanged() { 0092 updateConnectedDevices(); 0093 } 0094 function onBluetoothBlockedChanged() { 0095 updateConnectedDevices(); 0096 } 0097 function onBluetoothOperationalChanged() { 0098 updateConnectedDevices(); 0099 } 0100 } 0101 0102 function updateConnectedDevices() { 0103 let _connectedDevices = []; 0104 for (let i = 0; i < btManager.devices.length; ++i) { 0105 const device = btManager.devices[i]; 0106 if (device.connected) { 0107 _connectedDevices.push(device); 0108 } 0109 } 0110 0111 if (connectedDevices != _connectedDevices) { 0112 connectedDevices = _connectedDevices; 0113 connectedDevicesChanged(); 0114 } 0115 } 0116 0117 function toggleBluetooth() { 0118 const enable = !btManager.bluetoothOperational; 0119 btManager.bluetoothBlocked = !enable; 0120 0121 for (let i = 0; i < btManager.adapters.length; ++i) { 0122 const adapter = btManager.adapters[i]; 0123 adapter.powered = enable; 0124 } 0125 } 0126 0127 function action_configure() { 0128 KCMShell.openSystemSettings("kcm_bluetooth"); 0129 } 0130 0131 function action_addNewDevice() { 0132 PlasmaBt.LaunchApp.launchWizard(); 0133 } 0134 0135 function action_btSwitch() { 0136 toggleBluetooth() 0137 } 0138 0139 Component.onCompleted: { 0140 Plasmoid.removeAction("configure"); 0141 Plasmoid.setAction("configure", i18n("Configure &Bluetooth…"), "configure"); 0142 0143 Plasmoid.setAction("addNewDevice", i18n("Add New Device…"), "list-add"); 0144 Plasmoid.action("addNewDevice").visible = Qt.binding(() => !btManager.bluetoothBlocked); 0145 0146 Plasmoid.setAction("btSwitch", i18n("Enable Bluetooth"), "preferences-system-bluetooth"); 0147 Plasmoid.action("btSwitch").priority = 0; 0148 Plasmoid.action("btSwitch").checkable = true; 0149 Plasmoid.action("btSwitch").checked = Qt.binding(() => btManager.bluetoothOperational); 0150 Plasmoid.action("btSwitch").visible = Qt.binding(() => btManager.bluetoothBlocked || btManager.adapters.length > 0); 0151 0152 updateConnectedDevices(); 0153 } 0154 }