change for new seq
authorwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Mon, 20 May 2019 03:25:48 +0000 (11:25 +0800)
committerwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Mon, 20 May 2019 03:25:48 +0000 (11:25 +0800)
Change-Id: I05aba3e7b22e5edb2f8026f09aa77a35cdec3c8c

src/qlibhomescreen.cpp
src/qlibhomescreen.h
src/src.pro

index b530055..e76a6d8 100644 (file)
@@ -43,7 +43,8 @@ static QLibHomeScreen* myThis;
  */
 QLibHomeScreen::QLibHomeScreen(QObject *parent) :
     QObject(parent),
-    mp_hs(NULL)
+    mp_hs(NULL),
+    mp_window(NULL)
 {
     HMI_DEBUG("qlibhomescreen", "called.");
 }
@@ -328,4 +329,54 @@ void QLibHomeScreen::showNotification(QString icon, QString text)
 void QLibHomeScreen::getRunnables(void)
 {
     mp_hs->getRunnables();
+}
+
+/**
+ * publlish subscription to homescreen-service
+ *
+ * #### Parameters
+ * - Nothing
+ *
+ * #### Resturn
+ * - None.
+ *
+ */
+void QLibHomeScreen::slotPublishSubscription(void) {
+    HMI_NOTICE("qlibhomescreen","slotPublishSubscription");
+    if(mp_hs != NULL) {
+        mp_hs->publishSubscription();
+        QObject::disconnect(m_loading);
+    }  
+}
+
+/**
+ * This function register callback function for reply/event message from home screen
+ *
+ * #### Parameters
+ * - event_cb [in] : This argument should be specified to the callback for subscribed event
+ * - reply_cb [in] : This argument should be specified to the reply callback for call function
+ *
+ * #### Return
+ * Nothing
+ *
+ * #### Note
+ * Event callback is invoked by home screen for event you subscribed.
+ * If you would like to get event, please call subscribe function before/after this function
+ */
+void QLibHomeScreen::registerCallback(
+       void (*event_cb)(const std::string& event, struct json_object* event_contents),
+       void (*reply_cb)(struct json_object* reply_contents),
+       void (*hangup_cb)(void))
+{
+    if(mp_hs != NULL)
+        mp_hs->registerCallback(event_cb, reply_cb, hangup_cb);
+}
+
+void QLibHomeScreen::setQuickWindow(QQuickWindow *qw)
+{
+    mp_window = qw;
+    if(mp_window != NULL) {
+        HMI_NOTICE("qlibhomescreen", "connect frameSwapped signal.");
+        m_loading = QObject::connect(mp_window, SIGNAL(frameSwapped()), this, SLOT(slotPublishSubscription()));
+    }
 }
\ No newline at end of file
index 53a461e..306983c 100644 (file)
@@ -18,6 +18,7 @@
 #define QLIBHOMESCREEN_H
 
 #include <QObject>
+#include <QQuickWindow>
 #include <libhomescreen.hpp>
 #include <functional>
 #include <QVariant>
@@ -40,7 +41,8 @@ public:
        Event_HideWindow = LibHomeScreen::Event_HideWindow,
        Event_ReplyShowWindow = LibHomeScreen::Event_ReplyShowWindow,
        Event_ShowNotification = LibHomeScreen::Event_ShowNotification,
-       Event_ShowInformation = LibHomeScreen::Event_ShowInformation
+       Event_ShowInformation = LibHomeScreen::Event_ShowInformation,
+       Event_AppListChanged = LibHomeScreen::Event_AppListChanged
     };
     using handler_fun = std::function<void(json_object *object)>;
 
@@ -59,11 +61,21 @@ public:
     Q_INVOKABLE void hideWindow(QString application_id);
     Q_INVOKABLE void replyShowWindow(QString application_id, QString reply);
     Q_INVOKABLE void getRunnables(void);
+    void registerCallback(
+        void (*event_cb)(const std::string& event, struct json_object* event_contents),
+        void (*reply_cb)(struct json_object* reply_contents),
+        void (*hangup_cb)(void) = nullptr);
+    void setQuickWindow(QQuickWindow *qw);
 
 signals:
 
+public slots:
+    void slotPublishSubscription(void);
+
 private:
     LibHomeScreen *mp_hs;
+    QQuickWindow *mp_window;
+    QMetaObject::Connection m_loading;
 };
 
 #endif // QLIBHOMESCREEN_H
index b3c8675..38bdf5b 100644 (file)
@@ -16,6 +16,7 @@
 TEMPLATE = lib
 VERSION = 0.1.0
 TARGET = qthomescreen
+QT += quick
 
 HEADERS = qlibhomescreen.h
 SOURCES = qlibhomescreen.cpp