Warning, /plasma/bluedevil/src/applet/package/contents/ui/FullRepresentation.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 import QtQuick.Controls 2.15 0010 0011 import org.kde.plasma.components 3.0 as PlasmaComponents3 0012 import org.kde.plasma.core 2.0 as PlasmaCore 0013 import org.kde.plasma.extras 2.0 as PlasmaExtras 0014 import org.kde.plasma.plasmoid 2.0 0015 import org.kde.plasma.private.bluetooth 1.0 as PlasmaBt 0016 0017 import org.kde.bluezqt 1.0 as BluezQt 0018 0019 PlasmaExtras.Representation { 0020 id: root 0021 0022 readonly property bool emptyList: btManager.devices.length === 0 0023 0024 implicitWidth: PlasmaCore.Units.gridUnit * 24 0025 implicitHeight: PlasmaCore.Units.gridUnit * 24 0026 0027 focus: true 0028 collapseMarginsHint: true 0029 0030 Keys.onDownPressed: { 0031 if (listView.count === 0) { 0032 return; 0033 } 0034 if (listView.currentIndex < 0 || toolbar.checkbox.activeFocus) { 0035 listView.incrementCurrentIndex(); 0036 listView.currentItem.forceActiveFocus(); 0037 } else { 0038 event.accepted = false; 0039 } 0040 } 0041 0042 Action { 0043 id: addBluetoothDeviceAction 0044 0045 enabled: root.emptyList 0046 0047 text: Plasmoid.action("addNewDevice").text 0048 icon.name: "list-add" 0049 0050 onTriggered: Plasmoid.action("addNewDevice").trigger() 0051 } 0052 0053 Action { 0054 id: enableBluetoothAction 0055 0056 enabled: btManager.bluetoothBlocked 0057 0058 text: i18n("Enable") 0059 icon.name: "preferences-system-bluetooth" 0060 0061 onTriggered: bluetoothApplet.toggleBluetooth() 0062 } 0063 0064 header: Toolbar { 0065 id: toolbar 0066 visible: btManager.adapters.length > 0 0067 focus: true 0068 } 0069 0070 PlasmaComponents3.ScrollView { 0071 id: scrollView 0072 anchors.fill: parent 0073 0074 // HACK: workaround for https://bugreports.qt.io/browse/QTBUG-83890 0075 PlasmaComponents3.ScrollBar.horizontal.policy: PlasmaComponents3.ScrollBar.AlwaysOff 0076 0077 contentWidth: availableWidth - contentItem.leftMargin - contentItem.rightMargin 0078 0079 contentItem: ListView { 0080 id: listView 0081 readonly property var devicesModel: PlasmaBt.DevicesProxyModel { 0082 id: devicesModel 0083 sourceModel: BluezQt.DevicesModel { } 0084 } 0085 model: btManager.adapters.length > 0 && !btManager.bluetoothBlocked ? devicesModel : null 0086 currentIndex: -1 0087 boundsBehavior: Flickable.StopAtBounds 0088 topMargin: PlasmaCore.Units.smallSpacing * 2 0089 bottomMargin: PlasmaCore.Units.smallSpacing * 2 0090 leftMargin: PlasmaCore.Units.smallSpacing * 2 0091 rightMargin: PlasmaCore.Units.smallSpacing * 2 0092 spacing: PlasmaCore.Units.smallSpacing 0093 0094 section.property: "Section" 0095 // We want to hide the section delegate for the "Connected" 0096 // group because it's unnecessary; all we want to do here is 0097 // separate the connected devices from the available ones 0098 section.delegate: Loader { 0099 active: section !== "Connected" && bluetoothApplet.connectedDevices.length > 0 0100 // Need to manually set the height or else the loader takes up 0101 // space after the first time it unloads a previously-loaded item 0102 height: active ? PlasmaCore.Units.gridUnit : 0 0103 0104 // give us 2 frames to try and figure out a layout, this reduces jumpyness quite a bit but doesn't 0105 // entirely eliminate it https://bugs.kde.org/show_bug.cgi?id=438610 0106 Behavior on height { PropertyAnimation { duration: 32 } } 0107 0108 sourceComponent: Item { 0109 width: listView.width - PlasmaCore.Units.smallSpacing * 4 0110 height: PlasmaCore.Units.gridUnit 0111 0112 PlasmaCore.SvgItem { 0113 width: parent.width - PlasmaCore.Units.gridUnit * 2 0114 anchors.centerIn: parent 0115 id: separatorLine 0116 svg: PlasmaCore.Svg { 0117 imagePath: "widgets/line" 0118 } 0119 elementId: "horizontal-line" 0120 } 0121 } 0122 } 0123 highlight: PlasmaExtras.Highlight {} 0124 highlightMoveDuration: 0 0125 highlightResizeDuration: 0 0126 delegate: DeviceItem {} 0127 0128 Keys.onUpPressed: { 0129 if (listView.currentIndex === 0) { 0130 listView.currentIndex = -1; 0131 toolbar.checkbox.forceActiveFocus(Qt.BacktabFocusReason); 0132 } else { 0133 event.accepted = false; 0134 } 0135 } 0136 0137 Loader { 0138 anchors.centerIn: parent 0139 width: parent.width - (4 * PlasmaCore.Units.largeSpacing) 0140 active: BluezQt.Manager.rfkill.state === BluezQt.Rfkill.Unknown || btManager.bluetoothBlocked || root.emptyList 0141 sourceComponent: PlasmaExtras.PlaceholderMessage { 0142 iconName: BluezQt.Manager.rfkill.state === BluezQt.Rfkill.Unknown || btManager.bluetoothBlocked ? "network-bluetooth" : "edit-none" 0143 0144 text: { 0145 // We cannot use the adapter count here because that can be zero when 0146 // bluetooth is disabled even when there are physical devices 0147 if (BluezQt.Manager.rfkill.state === BluezQt.Rfkill.Unknown) { 0148 return i18n("No Bluetooth adapters available"); 0149 } else if (btManager.bluetoothBlocked) { 0150 return i18n("Bluetooth is disabled"); 0151 } else if (root.emptyList) { 0152 return i18n("No devices found"); 0153 } else { 0154 return ""; 0155 } 0156 } 0157 0158 helpfulAction: { 0159 if (BluezQt.Manager.rfkill.state === BluezQt.Rfkill.Unknown) { 0160 return null; 0161 } else if (btManager.bluetoothBlocked) { 0162 return enableBluetoothAction; 0163 } else if (root.emptyList) { 0164 return addBluetoothDeviceAction; 0165 } else { 0166 return null; 0167 } 0168 } 0169 } 0170 } 0171 } 0172 } 0173 }