add new features in homescreen-service and homescreen 35/17935/6
authorwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Wed, 14 Nov 2018 03:17:48 +0000 (11:17 +0800)
committerwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Tue, 27 Nov 2018 01:39:51 +0000 (09:39 +0800)
homescreen-service: add five verbs.
1.showWindow: instead of tap_shortcut and show onscreen.
2.hideWindow: used when want to hide onscreen.
3.replyShowWindow: used when post onscreen reply information to application.
4.showNotification: used by application who want to display notification on homescreen top area.
5.showInformation: used by application who want to display information on homescreen botton area.

homescreen:
display notification and information.

Bug-AGL: SPEC-1931

Change-Id: Ia17a9793c5d284458009ea71eb9594a40286fa8c
Signed-off-by: wang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
homescreen/qml/main.qml
homescreen/src/homescreenhandler.cpp
homescreen/src/homescreenhandler.h

index 96a1950..7d40276 100644 (file)
@@ -61,4 +61,96 @@ Window {
             }
         }
     }
+
+    Timer {
+        id:informationTimer
+        interval: 3000
+        running: false
+        repeat: true
+        onTriggered: {
+            bottomInformation.visible = false
+        }
+    }
+
+    Item {
+        id: bottomInformation
+        width: parent.width
+        height: 215
+        anchors.bottom: parent.bottom
+        visible: false
+        Text {
+            id: bottomText
+            anchors.centerIn: parent
+            font.pixelSize: 25
+            font.letterSpacing: 5
+            horizontalAlignment: Text.AlignHCenter
+            color: "white"
+            text: ""
+            z:1
+        }
+    }
+
+    Connections {
+        target: homescreenHandler
+        onShowInformation: {
+            bottomText.text = info
+            bottomInformation.visible = true
+            informationTimer.restart()
+        }
+    }
+
+       Timer {
+        id:notificationTimer
+        interval: 3000
+        running: false
+        repeat: true
+        onTriggered: notificationItem.visible = false
+    }
+
+    Item {
+        id: notificationItem
+        x: 0
+        y: 0
+        z: 1
+        width: 1280
+        height: 100
+        opacity: 0.8
+        visible: false
+
+        Rectangle {
+            width: parent.width
+            height: parent.height
+            anchors.fill: parent
+            color: "gray"
+            Image {
+                id: notificationIcon
+                width: 70
+                height: 70
+                anchors.left: parent.left
+                anchors.leftMargin: 20
+                anchors.verticalCenter: parent.verticalCenter
+                source: ""
+            }
+
+            Text {
+                id: notificationtext
+                font.pixelSize: 25
+                anchors.left: notificationIcon.right
+                anchors.leftMargin: 5
+                anchors.verticalCenter: parent.verticalCenter
+                color: "white"
+                text: qsTr("")
+            }
+        }
+    }
+
+    Connections {
+        target: homescreenHandler
+        onShowNotification: {
+            notificationIcon.source = icon_path
+            notificationtext.text = text
+            notificationItem.visible = true
+            notificationTimer.restart()
+        }
+    }
 }
index daf1b90..3aaef26 100644 (file)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include <QFileInfo>
 #include "homescreenhandler.h"
 #include <functional>
 #include "hmi-debug.h"
@@ -49,12 +50,44 @@ void HomescreenHandler::init(int port, const char *token)
         HMI_DEBUG("HomeScreen","set_event_handler Event_OnScreenMessage display_message = %s", display_message);
     });
 
+    mp_hs->set_event_handler(LibHomeScreen::Event_ShowNotification,[this](json_object *object){
+       const char *application_id = json_object_get_string(
+                   json_object_object_get(object, "application_id"));
+
+       json_object *p_obj = json_object_object_get(object, "parameter");
+       const char *icon = json_object_get_string(
+                   json_object_object_get(p_obj, "icon"));
+       const char *text = json_object_get_string(
+                   json_object_object_get(p_obj, "text"));
+       QFileInfo icon_file(icon);
+       QString icon_path;
+       if (icon_file.isFile() && icon_file.exists()) {
+           icon_path = QString(QLatin1String(icon));
+       } else {
+           icon_path = "./images/Utility_Logo_Grey-01.svg";
+       }
+
+       emit showNotification(QString(QLatin1String(application_id)), icon_path, QString(QLatin1String(text)));
+    });
+
+    mp_hs->set_event_handler(LibHomeScreen::Event_ShowInformation,[this](json_object *object){
+       json_object *p_obj = json_object_object_get(object, "parameter");
+       const char *info = json_object_get_string(
+                   json_object_object_get(p_obj, "info"));
+
+       emit showInformation(QString(QLatin1String(info)));
+    });
 }
 
 void HomescreenHandler::tapShortcut(QString application_id)
 {
     HMI_DEBUG("HomeScreen","tapShortcut %s", application_id.toStdString().c_str());
-    mp_hs->tapShortcut(application_id.toStdString().c_str());
+    struct json_object* j_json = json_object_new_object();
+    struct json_object* value;
+    value = json_object_new_string("normal");
+    json_object_object_add(j_json, "area", value);
+
+    mp_hs->showWindow(application_id.toStdString().c_str(), j_json);
 }
 
 void HomescreenHandler::onRep_static(struct json_object* reply_contents)
index 1a9a2b5..5dfe041 100644 (file)
@@ -40,6 +40,10 @@ public:
     static void* myThis;
     static void onRep_static(struct json_object* reply_contents);
     static void onEv_static(const string& event, struct json_object* event_contents);
+
+signals:
+    void showNotification(QString application_id, QString icon_path, QString text);
+    void showInformation(QString info);
 private:
     LibHomeScreen *mp_hs;
 };