summaryrefslogtreecommitdiffstats
path: root/src/qlibhomescreen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qlibhomescreen.cpp')
-rw-r--r--src/qlibhomescreen.cpp116
1 files changed, 104 insertions, 12 deletions
diff --git a/src/qlibhomescreen.cpp b/src/qlibhomescreen.cpp
index 516f3dd..63dc692 100644
--- a/src/qlibhomescreen.cpp
+++ b/src/qlibhomescreen.cpp
@@ -27,6 +27,10 @@ using namespace std;
#define _KEY_APPLICATION_DATA "application_id"
#define _KEY_REPLY_MESSAGE "reply_message"
#define _KEY_REQUEST_MESSAGE "display_message"
+#define _KEY_SHORTCUT "shortcut"
+#define _KEY_SHORTCUT_ID "shortcut_id"
+#define _KEY_SHORTCUT_NAME "shortcut_name"
+#define _KEY_POSITION "position"
static QLibHomeScreen* myThis;
@@ -43,7 +47,8 @@ static QLibHomeScreen* myThis;
*/
QLibHomeScreen::QLibHomeScreen(QObject *parent) :
QObject(parent),
- mp_hs(NULL)
+ mp_hs(NULL),
+ mp_window(NULL)
{
HMI_DEBUG("qlibhomescreen", "called.");
}
@@ -162,7 +167,7 @@ void QLibHomeScreen::set_event_handler(enum QEventType et, handler_fun f)
{
HMI_DEBUG("qlibhomescreen", "called.");
LibHomeScreen::EventType hs_et = (LibHomeScreen::EventType)et;
- return this->mp_hs->set_event_handler(hs_et, std::move(f));
+ this->mp_hs->set_event_handler(hs_et, std::move(f));
}
/**
@@ -316,28 +321,115 @@ 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))
+{
+ 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()));
+ }
+}
+
+/**
+ * shortcut_id : "dashboard"
+ * shortcut_name : "Dashboard"
+ * positon : 1~3, from left to right on homescreen
+ */
+int QLibHomeScreen::registerShortcut(QString shortcut_id, QString shortcut_name, QString position)
{
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);
+ json_object_object_add(j_obj, _KEY_SHORTCUT_ID, val_id);
+ json_object_object_add(j_obj, _KEY_SHORTCUT_NAME, val_name);
+ json_object_object_add(j_obj, _KEY_POSITION, val_position);
- mp_hs->registerShortcut(j_obj);
+ return mp_hs->registerShortcut("homescreen", j_obj);
}
+
+/**
+ * shortcut_id : "shocut_id1,shocut_id2,shocut_id3"
+ * shortcut_name : "shortcut_name1,shortcut_name2,shortcut_name3"
+ */
+int QLibHomeScreen::updateShortcut(QString application_id, QString shortcut_id, QString shortcut_name)
+{
+ QStringList id = shortcut_id.split(',');
+ QStringList name = shortcut_name.split(',');
+ if(id.size() == 0 || id.size() != name.size()) {
+ HMI_NOTICE("qlibhomescreen","input parameters error.");
+ return -1;
+ }
+
+ // make json contents
+ struct json_object* arr_obj = json_object_new_array();
+ for(int i = 0; i < id.size(); ++i) {
+ struct json_object *j_obj = json_object_new_object();
+ json_object_object_add(j_obj, _KEY_SHORTCUT_ID, json_object_new_string(id[i].toStdString().c_str()));
+ json_object_object_add(j_obj, _KEY_SHORTCUT_NAME, json_object_new_string(name[i].toStdString().c_str()));
+ json_object_array_add(arr_obj, j_obj);
+ }
+ struct json_object* push_obj = json_object_new_object();
+ json_object_object_add(push_obj, _KEY_SHORTCUT, arr_obj);
+ return mp_hs->updateShortcut(application_id.toStdString().c_str(), push_obj);
+}
+
+int QLibHomeScreen::updateShortcut(QString application_id, struct json_object* obj)
+{
+ return mp_hs->updateShortcut(application_id.toStdString().c_str(), obj);
+} \ No newline at end of file