876ce38eb46fedec0c2fb311d9d081d560df08cd
[src/libqthomescreen.git] / src / qlibhomescreen.h
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 #ifndef QLIBHOMESCREEN_H
18 #define QLIBHOMESCREEN_H
19
20 #include <QObject>
21 #include <QQuickWindow>
22 #include <libhomescreen.hpp>
23 #include <functional>
24 #include <QVariant>
25
26 class QLibHomeScreen : public QObject
27 {
28     Q_OBJECT
29 public:
30     explicit QLibHomeScreen(QObject *parent = 0);
31     ~QLibHomeScreen();
32
33     QLibHomeScreen(const QLibHomeScreen &) = delete;
34     QLibHomeScreen &operator=(const QLibHomeScreen &) = delete;
35
36     enum QEventType {
37        Event_TapShortcut = LibHomeScreen::Event_TapShortcut,
38        Event_ShowWindow = LibHomeScreen::Event_ShowWindow,
39        Event_OnScreenMessage = LibHomeScreen::Event_OnScreenMessage,
40        Event_OnScreenReply = LibHomeScreen::Event_OnScreenReply,
41        Event_HideWindow = LibHomeScreen::Event_HideWindow,
42        Event_ReplyShowWindow = LibHomeScreen::Event_ReplyShowWindow,
43        Event_ShowNotification = LibHomeScreen::Event_ShowNotification,
44        Event_ShowInformation = LibHomeScreen::Event_ShowInformation,
45        Event_AppListChanged = LibHomeScreen::Event_AppListChanged,
46        Event_RegisterShortcut = LibHomeScreen::Event_RegisterShortcut,
47        Event_UpdateShortcut = LibHomeScreen::Event_UpdateShortcut
48     };
49     using handler_fun = std::function<void(json_object *object)>;
50
51     void init(int port, const QString &token);
52     void set_event_handler(enum QEventType et, handler_fun f);
53     void showWindow(QString application_id, json_object* area);
54     void replyShowWindow(QString application_id, json_object* reply);
55     Q_INVOKABLE void showInformation(QString info);
56     Q_INVOKABLE void showNotification(QString icon, QString text);
57
58     Q_INVOKABLE int onScreenMessage(const QString &message);
59     Q_INVOKABLE int subscribe(const QString &eventName);
60     Q_INVOKABLE int unsubscribe(const QString &eventName);
61     Q_INVOKABLE void tapShortcut(QString application_id);
62     Q_INVOKABLE void showWindow(QString application_id, QString area);
63     Q_INVOKABLE void hideWindow(QString application_id);
64     Q_INVOKABLE void replyShowWindow(QString application_id, QString reply);
65     Q_INVOKABLE void getRunnables(void);
66     Q_INVOKABLE int registerShortcut(QString shortcut_id, QString shortcut_name, QString position);
67     Q_INVOKABLE int updateShortcut(QString application_id, QString shortcut_id, QString shortcut_name);
68     int updateShortcut(QString application_id, struct json_object* obj);
69     void registerCallback(
70         void (*event_cb)(const std::string& event, struct json_object* event_contents),
71         void (*reply_cb)(struct json_object* reply_contents),
72         void (*hangup_cb)(void) = nullptr);
73     void setQuickWindow(QQuickWindow *qw);
74
75 signals:
76
77 public slots:
78     void slotPublishSubscription(void);
79
80 private:
81     LibHomeScreen *mp_hs;
82     QQuickWindow *mp_window;
83     QMetaObject::Connection m_loading;
84 };
85
86 #endif // QLIBHOMESCREEN_H