Change bluetooth status using agl-service-bluetooth 75/15875/1
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>
Wed, 1 Aug 2018 02:09:38 +0000 (11:09 +0900)
committerzheng_wenlong <wenlong_zheng@nexty-ele.com>
Wed, 1 Aug 2018 02:09:38 +0000 (11:09 +0900)
    Use libqtappfw's bluetooth to connection with agl-service-bluetooth.
    Instead of using dbus.

Change-Id: Ib0de7cf81ee9e582995a1e4102f8c3b297694328
Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
homescreen/qml/StatusArea.qml
homescreen/src/main.cpp
homescreen/src/statusbarmodel.cpp
homescreen/src/statusbarserver.h
package/config.xml

index ab14a23..24d2b18 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2016 The Qt Company Ltd.
  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
 /*
  * Copyright (C) 2016 The Qt Company Ltd.
  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
+ * Copyright (c) 2017, 2018 TOYOTA MOTOR CORPORATION
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -116,6 +117,45 @@ Item {
             Layout.fillHeight: true
             Layout.preferredWidth: 76
             spacing: -10
             Layout.fillHeight: true
             Layout.preferredWidth: 76
             spacing: -10
+
+            Image {
+                id: bt_icon
+                Layout.preferredWidth: 77
+                Layout.preferredHeight: 73
+                source: connStatus ? './images/Status/HMI_Status_Bluetooth_On-01.png' : './images/Status/HMI_Status_Bluetooth_Inactive-01.png'
+                fillMode: Image.PreserveAspectFit
+                property string deviceName: "none"
+                property bool connStatus: false
+                Connections {
+                    target: bluetooth
+
+                    //{"event":"Bluetooth-Manager\/connection","data":{"Status":"connected","Address":"88:BD:45:EC:3A:E6"},"jtype":"afb-event"}
+                    //{"event":"Bluetooth-Manager\/connection","data":{"Status":"disconnected","Address":"88:BD:45:EC:3A:E6"},"jtype":"afb-event"}
+                    onConnectionEvent: {
+                        // console.log("bluetooth connection is:", data.Status)
+                        // console.log("onConnectionEvent bt_icon.deviceName:",bt_icon.deviceName, "bt_icon.connStatus:", bt_icon.connStatus)
+                        if (data.Status == "connected"){
+                            bt_icon.connStatus = true
+                        } else if (data.Status == "disconnected"){
+                            bt_icon.connStatus = false
+                        }
+                    }
+                    //{"event":"Bluetooth-Manager\/device_updated","data":{"Address":"88:BD:45:EC:3A:E6","Name":"SG02","Paired":"True","Connected":"True","AVPConnected":"True","Metadata":{"Title":"","Artist":"","Status":"stop}
+                    onDeviceUpdatedEvent: {
+                        // console.log("bluetooth onDeviceUpdatedEvent date is:", data.Name, "Paired: ", data.Paired, "Connected: ", data.Connected)
+                        // console.log("onDeviceUpdatedEvent bt_icon.deviceName:",bt_icon.deviceName, "bt_icon.connStatus:", bt_icon.connStatus)
+                        if ( data.Paired == "True" &&  data.Connected == "True" ){
+                            bt_icon.deviceName = data.Name
+                            bt_icon.connStatus = true
+                        } else {
+                            if(bt_icon.deviceName == data.Name)
+                            {
+                                bt_icon.connStatus = false
+                            }
+                        }
+                    }
+                }
+            }
             Repeater {
                 model: StatusBarModel {}
                 delegate: Image {
             Repeater {
                 model: StatusBarModel {}
                 delegate: Image {
index 19bb0d3..704bb9a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
 /*
  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
- * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2017, 2018 TOYOTA MOTOR CORPORATION
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,6 +25,7 @@
 
 #include <qlibwindowmanager.h>
 #include <weather.h>
 
 #include <qlibwindowmanager.h>
 #include <weather.h>
+#include <bluetooth.h>
 #include "applicationlauncher.h"
 #include "statusbarmodel.h"
 #include "afm_user_daemon_proxy.h"
 #include "applicationlauncher.h"
 #include "statusbarmodel.h"
 #include "afm_user_daemon_proxy.h"
@@ -134,6 +135,7 @@ int main(int argc, char *argv[])
     engine.rootContext()->setContextProperty("homescreenHandler", homescreenHandler);
     engine.rootContext()->setContextProperty("launcher", launcher);
     engine.rootContext()->setContextProperty("weather", new Weather(bindingAddress));
     engine.rootContext()->setContextProperty("homescreenHandler", homescreenHandler);
     engine.rootContext()->setContextProperty("launcher", launcher);
     engine.rootContext()->setContextProperty("weather", new Weather(bindingAddress));
+    engine.rootContext()->setContextProperty("bluetooth", new Bluetooth(bindingAddress));
     engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
 
     QObject *root = engine.rootObjects().first();
     engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
 
     QObject *root = engine.rootObjects().first();
index 5438e89..bb44171 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Qt Company Ltd.
 /*
  * Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2017, 2018 TOYOTA MOTOR CORPORATION
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -64,7 +65,8 @@ int StatusBarModel::rowCount(const QModelIndex &parent) const
     if (parent.isValid())
         return 0;
 
     if (parent.isValid())
         return 0;
 
-    return StatusBarServer::SupportedCount;
+    // Delete bluetooth because use agl-service-bluetooth.
+    return StatusBarServer::SupportedCount - 1;
 }
 
 QVariant StatusBarModel::data(const QModelIndex &index, int role) const
 }
 
 QVariant StatusBarModel::data(const QModelIndex &index, int role) const
@@ -75,7 +77,11 @@ QVariant StatusBarModel::data(const QModelIndex &index, int role) const
 
     switch (role) {
     case Qt::DisplayRole:
 
     switch (role) {
     case Qt::DisplayRole:
-        ret = d->iconList[index.row()];
+        if (index.row() == 0){
+            ret = d->iconList[StatusBarServer::StatusWifi];
+        }else if (index.row() == 1){
+            ret = d->iconList[StatusBarServer::StatusCellular];
+        }
         break;
     default:
         break;
         break;
     default:
         break;
index a5b89e5..dabf6d3 100644 (file)
@@ -24,6 +24,9 @@ class StatusBarServer : public QObject
     Q_OBJECT
 public:
     enum {
     Q_OBJECT
 public:
     enum {
+        StatusWifi = 0,
+        StatusBluetooth = 1,
+        StatusCellular = 2,
         SupportedCount = 3,
     };
     explicit StatusBarServer(QObject *parent = NULL);
         SupportedCount = 3,
     };
     explicit StatusBarServer(QObject *parent = NULL);
index 1cd5438..4b2a218 100644 (file)
@@ -9,6 +9,7 @@
   <feature name="urn:AGL:widget:required-api">
     <param name="homescreen" value="ws" />
     <param name="weather" value="ws" />
   <feature name="urn:AGL:widget:required-api">
     <param name="homescreen" value="ws" />
     <param name="weather" value="ws" />
+    <param name="Bluetooth-Manager" value="ws" />
     <param name="windowmanager" value="ws" />
   </feature>
   <feature name="urn:AGL:widget:required-permission">
     <param name="windowmanager" value="ws" />
   </feature>
   <feature name="urn:AGL:widget:required-permission">