diff options
Diffstat (limited to 'src/settingsui/bluetooth/Discovery.qml')
-rw-r--r-- | src/settingsui/bluetooth/Discovery.qml | 164 |
1 files changed, 90 insertions, 74 deletions
diff --git a/src/settingsui/bluetooth/Discovery.qml b/src/settingsui/bluetooth/Discovery.qml index 1b3184a..515d37a 100644 --- a/src/settingsui/bluetooth/Discovery.qml +++ b/src/settingsui/bluetooth/Discovery.qml @@ -30,93 +30,109 @@ import QtQuick 2.6 import QtQuick.Layouts 1.3 import QtQuick.Controls 2.0 import QtDeviceUtilities.BluetoothSettings 1.0 +import QtDeviceUtilities.QtButtonImageProvider 1.0 Item { id: top - GroupBox { - id: groupBox - title: qsTr("Devices") + ListView { + id: mainList anchors.fill: parent + opacity: BtDevice.scanning ? .5 : 1.0 + interactive: !BtDevice.scanning + clip: true + model: BtDevice.deviceModel - ListView { - id: mainList - anchors.fill: parent - opacity: BtDevice.scanning ? .5 : 1.0 - interactive: !BtDevice.scanning - clip: true - model: BtDevice.deviceModel - - function getIcon(deviceType) { - switch (deviceType) { - case BtDeviceItem.Computer: - return "../icons/Laptop_qt_1x.png" - case BtDeviceItem.Headphones: - return "../icons/Headphones_qt_1x.png" - case BtDeviceItem.Microphone: - return "../icons/Microphone_qt_1x.png" - case BtDeviceItem.Mouse: - return "../icons/Mouse_qt_1x.png" - case BtDeviceItem.Keyboard: - return "../icons/Keyboard_qt_1x.png" - default: - return "../icons/Bluetooth_qt_1x.png" - } + function getIcon(deviceType) { + switch (deviceType) { + case BtDeviceItem.Computer: + return "../icons/Laptop_qt_1x.png" + case BtDeviceItem.Headphones: + return "../icons/Headphones_qt_1x.png" + case BtDeviceItem.Microphone: + return "../icons/Microphone_qt_1x.png" + case BtDeviceItem.Mouse: + return "../icons/Mouse_qt_1x.png" + case BtDeviceItem.Keyboard: + return "../icons/Keyboard_qt_1x.png" + default: + return "../icons/Bluetooth_qt_1x.png" } + } - delegate: Item { - id: btDelegate - width: parent.width - height: expanded || connected ? column.height + 10 : bttext.height + 10 - property bool expanded: false; - - MouseArea { - anchors.fill: parent - onClicked: { - if (!connected) - btDelegate.expanded = !btDelegate.expanded + delegate: Item { + id: btDelegate + width: parent.width + height: expanded || connected ? mainList.height * 0.175 + mainList.height * 0.05 : mainList.height * 0.175 + property bool expanded: false + MouseArea { + anchors.fill: parent + onClicked: { + if (!connected){ + btDelegate.expanded = !btDelegate.expanded } } - Image { - id: bticon - anchors.left: parent.left - anchors.top: parent.top - anchors.topMargin: 4 - source: mainList.getIcon(type) - } - Column { - id: column - anchors.left: bticon.right - anchors.leftMargin: 10 - anchors.right: connectButton.left - anchors.rightMargin: 10 - - Label { - id: bttext - text: name - } - Label { - id: details - opacity: btDelegate.expanded || connected ? 1 : 0.0 - text: address - Behavior on opacity { NumberAnimation { duration: 200} } - } + } + Image { + id: bticon + sourceSize.width: parent.width + sourceSize.height: parent.height + height: parent.height * 0.5 + width: height + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + source: mainList.getIcon(type) + } + Column { + anchors.left: bticon.right + anchors.leftMargin: parent.width * 0.025 + anchors.right: connectButton.left + anchors.verticalCenter: parent.verticalCenter + Label { + id: bttext + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + font.pixelSize: mainList.height * 0.06 + text: name + color: connected ? viewSettings.buttonGreenColor : "white" + font.family: appFont + font.styleName: connected ? "SemiBold" : "Regular" } - Button { - id: connectButton - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - visible: (expanded || connected) && !BtDevice.scanning - text: connected ? qsTr("Disconnect") : qsTr("Connect") - onClicked : connected ? BtDevice.requestDisconnect(address) : BtDevice.requestPairing(address); + Label { + id: details + height: btDelegate.height * 0.275 * opacity + opacity: btDelegate.expanded || connected ? 1 : 0.0 + visible: opacity > 0 + text: address + color: connected ? viewSettings.buttonGreenColor : "white" + font.family: appFont + Behavior on opacity { NumberAnimation { duration: 200} } } - Behavior on height { NumberAnimation { duration: 200} } } - focus: true + QtButton { + id: connectButton + height: mainList.height * 0.125 + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + opacity: (expanded || connected) && !BtDevice.scanning ? 1.0 : 0.0 + visible: opacity > 0 + fillColor: connected ? viewSettings.buttonGrayColor : viewSettings.buttonGreenColor + borderColor: "transparent" + text: connected ? qsTr("Disconnect") : qsTr("Connect") + onClicked : connected ? BtDevice.requestDisconnect(address) : BtDevice.requestPairing(address); + Behavior on opacity { NumberAnimation { duration: 200 } } + } + Behavior on height { NumberAnimation { duration: 200} } + + Rectangle { + id: delegateBottom + width: btDelegate.width + color: viewSettings.borderColor + height: 2 + anchors.bottom: btDelegate.bottom + anchors.horizontalCenter: btDelegate.horizontalCenter + } } - } - BusyIndicator { - anchors.centerIn: parent - running: BtDevice.scanning + focus: true } } |