Use appid between homescreen-service and apps
[src/libqthomescreen.git] / src / qlibhomescreen.cpp
1 /*
2  * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "qlibhomescreen.h"
18 #include <QJsonDocument>
19 #include <QJsonObject>
20 #include "hmi-debug.h"
21 using namespace std;
22
23 #define _POPUPREPLY "on_screen_reply"
24 #define _REQ_POPUP_MESSAGE "on_screen_message"
25 #define _TAPSHORTCUT "tap_shortcut"
26 #define _KEY_DATA "data"
27 #define _KEY_APPLICATION_DATA "application_id"
28 #define _KEY_REPLY_MESSAGE "reply_message"
29 #define _KEY_REQUEST_MESSAGE "display_message"
30
31 static QLibHomeScreen* myThis;
32
33 // Note: qlibhomescreen will be integrated to libqtappfw
34 /**
35  * QLibHomeScreen construction function
36  *
37  * #### Parameters
38  * - parent [in] : object parent.
39  *
40  * #### Return
41  * - None
42  *
43  */
44 QLibHomeScreen::QLibHomeScreen(QObject *parent) :
45     QObject(parent),
46     mp_hs(NULL)
47 {
48     HMI_DEBUG("qlibhomescreen", "called.");
49 }
50
51 /**
52  * QLibHomeScreen destruction function
53  *
54  * #### Parameters
55  * - None
56  *
57  * #### Return
58  * - None
59  *
60  */
61 QLibHomeScreen::~QLibHomeScreen()
62 {
63     HMI_DEBUG("qlibhomescreen", "called.");
64     if (mp_hs != NULL) {
65         delete mp_hs;
66     }
67 }
68
69 /**
70  * init function
71  *
72  * call libhomescreen init function to connect to binder by websocket
73  *
74  * #### Parameters
75  * - prot  : port from application
76  * - token : token from application
77  *
78  * #### Return
79  * - None
80  *
81  */
82 void QLibHomeScreen::init(int port, const QString &token)
83 {
84     HMI_DEBUG("qlibhomescreen", "called.");
85     string ctoken = token.toStdString();
86     mp_hs = new LibHomeScreen();
87     mp_hs->init(port, ctoken.c_str());
88
89     myThis = this;
90 }
91
92
93 /**
94  * call on screen message
95  *
96  * use libhomescreen api to call onscreen message
97  *
98  * #### Parameters
99  * - message : message contents
100  *
101  * #### Return
102  * - Returns 0 on success or -1 in case of error.
103  *
104  */
105 int QLibHomeScreen::onScreenMessage(const QString &message)
106 {
107     HMI_DEBUG("qlibhomescreen", "called.");
108     string str = message.toStdString();
109     return mp_hs->onScreenMessage(str.c_str());
110 }
111
112 /**
113  * subscribe event
114  *
115  * use libhomescreen api to subscribe homescreen event
116  *
117  * #### Parameters
118  * - evetNave : homescreen event name
119  *
120  * #### Return
121  * - Returns 0 on success or -1 in case of error.
122  *
123  */
124 int QLibHomeScreen::subscribe(const QString &evetName)
125 {
126     HMI_DEBUG("qlibhomescreen", "called.");
127     string str = evetName.toStdString();
128     return mp_hs->subscribe(str);
129 }
130
131 /**
132  * unsubscribe event
133  *
134  * use libhomescreen api to unsubscribe homescreen event
135  *
136  * #### Parameters
137  * - evetNave : homescreen event name
138  *
139  * #### Return
140  * - Returns 0 on success or -1 in case of error.
141  *
142  */
143 int QLibHomeScreen::unsubscribe(const QString &evetName)
144 {
145     HMI_DEBUG("qlibhomescreen", "called.");
146     string str = evetName.toStdString();
147     return mp_hs->unsubscribe(str);
148 }
149
150 /**
151  * set homescreen event handler function
152  *
153  * #### Parameters
154  * - et : homescreen event name
155  * - f  : event handler function
156  *
157  * #### Return
158  * - None.
159  *
160  */
161 void QLibHomeScreen::set_event_handler(enum QEventType et, handler_fun f)
162 {
163     HMI_DEBUG("qlibhomescreen", "called.");
164     LibHomeScreen::EventType hs_et = (LibHomeScreen::EventType)et;
165     return this->mp_hs->set_event_handler(hs_et, std::move(f));
166 }
167
168 /**
169  * tapShortcut function
170  *
171  * #### Parameters
172  * - application_name : tapped application name
173   *
174  * #### Return
175  * - None.
176  *
177  */
178 void QLibHomeScreen::tapShortcut(QString application_id)
179 {
180     HMI_DEBUG("qlibhomescreen","tapShortcut %s", application_id.toStdString().c_str());
181     this->mp_hs->tapShortcut(application_id.toStdString().c_str());
182 }