summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Ranostay <matt.ranostay@konsulko.com>2019-03-20 21:38:10 -0700
committerMatt Ranostay <matt.ranostay@konsulko.com>2019-04-04 12:41:42 -0700
commita4138d46829dd96017b1af77ef42793f44b5b8d4 (patch)
treedc68cdaeb8ee3c79427582832b3b3fd173fb10bc
parentd79e5011a530de5d2cf90f0399624968a82ebed0 (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.qml182
-rw-r--r--app/main.cpp2
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();