From: wang_zhiqiang Date: Mon, 20 May 2019 03:25:48 +0000 (+0800) Subject: change for new seq X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=src%2Flibqthomescreen.git;a=commitdiff_plain;h=98ed7f2f0897dc8d706bb43e3e2daf2a4d61f9fe change for new seq Change-Id: I05aba3e7b22e5edb2f8026f09aa77a35cdec3c8c --- diff --git a/src/qlibhomescreen.cpp b/src/qlibhomescreen.cpp index b530055..e76a6d8 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."); } @@ -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 diff --git a/src/qlibhomescreen.h b/src/qlibhomescreen.h index 53a461e..306983c 100644 --- a/src/qlibhomescreen.h +++ b/src/qlibhomescreen.h @@ -18,6 +18,7 @@ #define QLIBHOMESCREEN_H #include +#include #include #include #include @@ -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; @@ -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 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