248dd725a4eac7f7f6f9f3bac83c3defb028ca71
[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 using namespace std;
21
22 #define _POPUPREPLY "on_screen_reply"
23 #define _REQ_POPUP_MESSAGE "on_screen_message"
24 #define _TAPSHORTCUT "tap_shortcut"
25 #define _KEY_DATA "data"
26 #define _KEY_APPLICATION_DATA "application_name"
27 #define _KEY_REPLY_MESSAGE "reply_message"
28 #define _KEY_REQUEST_MESSAGE "display_message"
29
30 static QLibHomeScreen* myThis;
31
32 // Note: qlibhomescreen will be integrated to libqtappfw
33 /**
34  * QLibHomeScreen construction function
35  *
36  * #### Parameters
37  * - parent [in] : object parent.
38  *
39  * #### Return
40  * - None
41  *
42  */
43 QLibHomeScreen::QLibHomeScreen(QObject *parent) :
44     QObject(parent),
45     mp_hs(NULL)
46 {
47
48 }
49
50 /**
51  * QLibHomeScreen destruction function
52  *
53  * #### Parameters
54  * - None
55  *
56  * #### Return
57  * - None
58  *
59  */
60 QLibHomeScreen::~QLibHomeScreen()
61 {
62     if (mp_hs != NULL) {
63         delete mp_hs;
64     }
65 }
66
67 /**
68  * init function
69  *
70  * call libhomescreen init function to connect to binder by websocket
71  *
72  * #### Parameters
73  * - prot  : port from application
74  * - token : token from application
75  *
76  * #### Return
77  * - None
78  *
79  */
80 void QLibHomeScreen::init(int port, const QString &token)
81 {
82     string ctoken = token.toStdString();
83     mp_hs = new LibHomeScreen();
84     mp_hs->init(port, ctoken.c_str());
85
86     myThis = this;
87 }
88
89
90 /**
91  * call on screen message
92  *
93  * use libhomescreen api to call onscreen message
94  *
95  * #### Parameters
96  * - message : message contents
97  *
98  * #### Return
99  * - Returns 0 on success or -1 in case of error.
100  *
101  */
102 int QLibHomeScreen::onScreenMessage(const QString &message)
103 {
104     string str = message.toStdString();
105     return mp_hs->onScreenMessage(str.c_str());
106 }
107
108 /**
109  * subscribe event
110  *
111  * use libhomescreen api to subscribe homescreen event
112  *
113  * #### Parameters
114  * - evetNave : homescreen event name
115  *
116  * #### Return
117  * - Returns 0 on success or -1 in case of error.
118  *
119  */
120 int QLibHomeScreen::subscribe(const QString &evetName)
121 {
122     string str = evetName.toStdString();
123     return mp_hs->subscribe(str);
124 }
125
126 /**
127  * unsubscribe event
128  *
129  * use libhomescreen api to unsubscribe homescreen event
130  *
131  * #### Parameters
132  * - evetNave : homescreen event name
133  *
134  * #### Return
135  * - Returns 0 on success or -1 in case of error.
136  *
137  */
138 int QLibHomeScreen::unsubscribe(const QString &evetName)
139 {
140     string str = evetName.toStdString();
141     return mp_hs->unsubscribe(str);
142 }
143
144 /**
145  * set homescreen event handler function
146  *
147  * #### Parameters
148  * - et : homescreen event name
149  * - f  : event handler function
150  *
151  * #### Return
152  * - None.
153  *
154  */
155 void QLibHomeScreen::set_event_handler(enum QEventType et, handler_fun f)
156 {
157     LibHomeScreen::EventType hs_et = (LibHomeScreen::EventType)et;
158     return this->mp_hs->set_event_handler(hs_et, std::move(f));
159 }