diff options
author | Matt Ranostay <matt.ranostay@konsulko.com> | 2019-03-20 21:38:10 -0700 |
---|---|---|
committer | Matt Ranostay <matt.ranostay@konsulko.com> | 2019-04-04 12:41:42 -0700 |
commit | a4138d46829dd96017b1af77ef42793f44b5b8d4 (patch) | |
tree | dc68cdaeb8ee3c79427582832b3b3fd173fb10bc | |
parent | d79e5011a530de5d2cf90f0399624968a82ebed0 (diff) |
settings: bluetooth: qml: switch from qml ListModel to libqtappfw provided
Switch from using single threaded and incorrect QML processing of ListViews to
using models provided from libqtappfw.
Also this allows removal of most of the Javascript code that processed the
repective lists.
Bug-AGL: SPEC-2270 SPEC-2290
Change-Id: Ib00a2f34938de4c427ec5ee6956ee3e7e3c96959
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
-rw-r--r-- | app/bluetooth/Bluetooth.qml | 182 | ||||
-rw-r--r-- | app/main.cpp | 2 |
2 files changed, 19 insertions, 165 deletions
diff --git a/app/bluetooth/Bluetooth.qml b/app/bluetooth/Bluetooth.qml index 6c93b2e..efc2374 100644 --- a/app/bluetooth/Bluetooth.qml +++ b/app/bluetooth/Bluetooth.qml @@ -26,7 +26,6 @@ SettingPage { title: 'Bluetooth' checkable: true readonly property bool isBluetooth: true - property int pairedDeviceCount: 0 Connections { target: bluetooth @@ -34,73 +33,6 @@ SettingPage { bluetooth.send_confirmation(data.pincode) } - onDeviceAddedEvent: { - var id = data.device; - var value = data.properties; - - if (value.paired === true) { - pairedDeviceList.append({ - deviceId: id, - deviceAddress: value.address, - deviceName: value.name, - devicePairable: value.paired, - deviceConnect: value.connected, - }) - pairedDeviceCount = pairedDeviceCount + 1 - } else { - btDeviceList.append({ - deviceId: id, - deviceAddress: value.address, - deviceName: value.name, - devicePairable: value.paired, - deviceConnect: value.connected, - }) - } - } - - onDeviceRemovedEvent: { - if (findDevice(data.device) >= 0) { - btDeviceList.remove(findDevice(data.device)) - } else if(findPairDevice(data.device) >= 0) { - pairedDeviceList.remove(findPairDevice(data.device)) - pairedDeviceCount = pairedDeviceCount - 1 - } - } - - onDeviceUpdatedEvent: { - updateDeviceAttribute(data) - } - - onDeviceListEvent: { - for (var i = 0; i < data.devices.length; i++) { - var id = data.devices[i].device; - var value = data.devices[i].properties; - - if (value.paired === true) { - if(findPairDevice(id) == -1) { - pairedDeviceList.append({ - deviceId: id, - deviceAddress: value.address, - deviceName: value.name, - devicePairable: value.paired, - deviceConnect: value.connected, - }) - pairedDeviceCount = pairedDeviceCount + 1 - } - } else { - if (findDevice(id) == -1) { - btDeviceList.append({ - deviceId: id, - deviceAddress: value.address, - deviceName: value.name, - devicePairable: value.paired, - deviceConnect: value.connected, - }) - } - } - } - } - onPowerChanged: if (!root.checked) root.checked = state } @@ -118,21 +50,10 @@ SettingPage { bluetooth.power = checked; bluetooth.discoverable = checked; - if (checked == true) { + if (checked == true) bluetooth.start_discovery() - } else { - btDeviceList.clear() - } } - ListModel { - id: pairedDeviceList - } - ListModel { - id: btDeviceList - } - - Rectangle { anchors.horizontalCenter: parent.horizontalCenter anchors.bottom: parent.bottom @@ -149,7 +70,6 @@ SettingPage { visible: bluetooth.power MouseArea { - //id: mouseArea anchors.fill: parent onClicked: { @@ -166,7 +86,7 @@ SettingPage { } Component { - id:blueToothDevice + id: blueToothDevice Rectangle { height: 120 width: parent.width @@ -181,32 +101,19 @@ SettingPage { font.family: "Arial" elide: Text.ElideRight elideWidth: 140 - text: deviceName + text: name } Text { - id: btName text: textMetrics.elidedText color: '#66FF99' font.pixelSize: 48 } Text { - id: btStatus - property string connectionState:"" - text: deviceAddress + text: address font.pixelSize: 18 color: "#ffffff" font.italic: true } - Text { - id: btPairable - text: devicePairable - visible: false - } - Text { - id: btConnectstatus - text: deviceConnect - visible: false - } } Button { id: removeButton @@ -220,13 +127,7 @@ SettingPage { MouseArea { anchors.fill: parent onClicked: { - bluetooth.remove_device(deviceId); - if (findDevice(deviceId) != -1) { - btDeviceList.remove(findDevice(deviceId)) - } else if (findPairDevice(deviceAddress) != -1) { - pairedDeviceList.remove(findPairDevice(deviceId)) - pairedDeviceCount = pairedDeviceCount - 1 - } + bluetooth.remove_device(id); } } } @@ -238,18 +139,18 @@ SettingPage { anchors.right: removeButton.left anchors.rightMargin: 10 - text: (deviceConnect === true) ? "Disconnect" : ((devicePairable === true) ? "Connect" : "Pair") + text: (connected === true) ? "Disconnect" : ((paired === true) ? "Connect" : "Pair") MouseArea { anchors.fill: parent onClicked: { if (connectButton.text == "Pair"){ - bluetooth.pair(deviceId) + bluetooth.pair(id) } else if (connectButton.text == "Connect"){ - bluetooth.connect(deviceId) + bluetooth.connect(id) } else if (connectButton.text == "Disconnect"){ - bluetooth.disconnect(deviceId) + bluetooth.disconnect(id) } } } @@ -267,36 +168,36 @@ SettingPage { height: 80 color:'grey' font.pixelSize: 30 - text:{ - if (bluetooth.power === true && pairedDeviceCount != 0) + text: { + if (bluetooth.power === true && pairedListView.count) "LIST OF PAIRED DEVICES" else "" } } - ListView{ + ListView { id: pairedListView width: parent.width anchors.top: pairedlabel.bottom anchors.bottom: pairedlabel.bottom - anchors.bottomMargin: (-120*pairedDeviceCount) - model: pairedDeviceList + anchors.bottomMargin: (-120 * pairedListView.count) + model: BluetoothPairedModel visible: bluetooth.power delegate: blueToothDevice clip: true } Image { - anchors.bottom: pairedListView.bottom + anchors.top: pairedListView.bottom anchors.left: parent.left anchors.leftMargin: 80 height: 5 - source: (bluetooth.power === true && pairedDeviceCount != 0) ? '../images/HMI_Settings_DividingLine.svg':'' + source: (bluetooth.power === true && pairedListView.count) ? '../images/HMI_Settings_DividingLine.svg':'' } Text { id: detectedlabel width: parent.width anchors.top: pairedListView.bottom - anchors.topMargin: (pairedDeviceCount != 0) ? 80:-80 + anchors.topMargin: pairedListView.count ? 80 : -80 anchors.left: parent.left anchors.leftMargin: 80 height: 80 @@ -315,56 +216,9 @@ SettingPage { anchors.top: detectedlabel.bottom anchors.bottom: parent.bottom anchors.bottomMargin: 150 - model: btDeviceList + model: BluetoothDiscoveryModel visible: bluetooth.power delegate: blueToothDevice clip: true } - - function findDevice(id) { - for (var i = 0; i < btDeviceList.count; i++) { - if (id === btDeviceList.get(i).deviceId) - return i - } - return -1 - } - function findPairDevice(id){ - for (var i = 0; i < pairedDeviceList.count; i++) { - if (id === pairedDeviceList.get(i).deviceId) - return i - } - return -1 - } - - function updateDeviceAttribute(data){ - var id = data.device; - var value = data.properties; - - for (var i = 0; i < btDeviceList.count; i++) { - if (id === btDeviceList.get(i).deviceId){ - btDeviceList.get(i).devicePairable = value.paired - if (value.paired === true) - { - pairedDeviceList.append({ - deviceId: btDeviceList.get(i).deviceId, - deviceAddress: btDeviceList.get(i).deviceAddress, - deviceName: btDeviceList.get(i).deviceName, - devicePairable: btDeviceList.get(i).devicePairable, - deviceConnect: btDeviceList.get(i).deviceConnect, - }) - pairedDeviceCount = pairedDeviceCount + 1 - btDeviceList.remove(i, 1) - } - } - } - - for (var i = 0; i < pairedDeviceList.count; i++) { - if (id === pairedDeviceList.get(i).deviceId){ - if (value.connected !== undefined) - pairedDeviceList.get(i).deviceConnect = value.connected - if (value.paired !== undefined) - pairedDeviceList.get(i).devicePairable = value.paired - } - } - } } diff --git a/app/main.cpp b/app/main.cpp index 3b39810..8d78b74 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -114,7 +114,7 @@ int main(int argc, char *argv[]) qWarning() << aglversion.errorString(); } - engine.rootContext()->setContextProperty("bluetooth", new Bluetooth(bindingAddressWS)); + engine.rootContext()->setContextProperty("bluetooth", new Bluetooth(bindingAddressWS, context)); engine.rootContext()->setContextProperty(QStringLiteral("screenInfo"), &screenInfo); engine.load(QUrl(QStringLiteral("qrc:/Settings.qml"))); QObject *root = engine.rootObjects().first(); |