summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-06-11 17:38:07 +0900
committerzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-06-11 17:38:07 +0900
commitc79bf79564bc7da0e4478754408f63a0f59add19 (patch)
tree12cfdfd80987a89a006e673094e4ae98dddc868e
parenta2375bf14686f11cfdc8a8f1a83b895a31f44450 (diff)
update seq
-rw-r--r--src/qlibhomescreen.cpp69
-rw-r--r--src/qlibhomescreen.h15
-rw-r--r--src/src.pro1
3 files changed, 68 insertions, 17 deletions
diff --git a/src/qlibhomescreen.cpp b/src/qlibhomescreen.cpp
index 516f3dd..359e885 100644
--- a/src/qlibhomescreen.cpp
+++ b/src/qlibhomescreen.cpp
@@ -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.");
}
@@ -316,28 +317,66 @@ void QLibHomeScreen::showNotification(QString icon, QString text)
}
/**
- * register shortcut key
+ * get runnables list from homescreen-service
*
- * tell HomeScreen to change shortcut key
+ * #### Parameters
+ * - Nothing
+ *
+ * #### Resturn
+ * - None.
+ *
+ */
+void QLibHomeScreen::getRunnables(void)
+{
+ mp_hs->getRunnables();
+}
+
+/**
+ * publlish subscription to homescreen-service
*
* #### Parameters
- * - shortcut_id : shortcut id
- * - shortcut_name : shortcut name
- * - position : shortcut position
+ * - Nothing
*
* #### Resturn
* - None.
*
*/
-void QLibHomeScreen::registerShortcut(QString shortcut_id, QString shortcut_name, QString position)
+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))
{
- struct json_object* j_obj = json_object_new_object();
- struct json_object* val_id = json_object_new_string(shortcut_id.toStdString().c_str());
- struct json_object* val_name = json_object_new_string(shortcut_name.toStdString().c_str());
- struct json_object* val_position = json_object_new_string(position.toStdString().c_str());
- json_object_object_add(j_obj, "shortcut_id", val_id);
- json_object_object_add(j_obj, "shortcut_name", val_name);
- json_object_object_add(j_obj, "position", val_position);
+ if(mp_hs != NULL)
+ mp_hs->registerCallback(event_cb, reply_cb, hangup_cb);
+}
- mp_hs->registerShortcut(j_obj);
+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()));
+ }
}
diff --git a/src/qlibhomescreen.h b/src/qlibhomescreen.h
index a91fda5..306983c 100644
--- a/src/qlibhomescreen.h
+++ b/src/qlibhomescreen.h
@@ -18,6 +18,7 @@
#define QLIBHOMESCREEN_H
#include <QObject>
+#include <QQuickWindow>
#include <libhomescreen.hpp>
#include <functional>
#include <QVariant>
@@ -41,7 +42,7 @@ public:
Event_ReplyShowWindow = LibHomeScreen::Event_ReplyShowWindow,
Event_ShowNotification = LibHomeScreen::Event_ShowNotification,
Event_ShowInformation = LibHomeScreen::Event_ShowInformation,
- Event_RegisterShortcut = LibHomeScreen::Event_RegisterShortcut
+ Event_AppListChanged = LibHomeScreen::Event_AppListChanged
};
using handler_fun = std::function<void(json_object *object)>;
@@ -59,12 +60,22 @@ public:
Q_INVOKABLE void showWindow(QString application_id, QString area);
Q_INVOKABLE void hideWindow(QString application_id);
Q_INVOKABLE void replyShowWindow(QString application_id, QString reply);
- Q_INVOKABLE void registerShortcut(QString shortcut_id, QString shortcut_name, QString position);
+ 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
diff --git a/src/src.pro b/src/src.pro
index b3c8675..38bdf5b 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -16,6 +16,7 @@
TEMPLATE = lib
VERSION = 0.1.0
TARGET = qthomescreen
+QT += quick
HEADERS = qlibhomescreen.h
SOURCES = qlibhomescreen.cpp