1 #include <QApplication>
6 #include <libhomescreen.hpp>
7 #include <qlibwindowmanager.h>
9 #include <navigation.h>
11 #define DEFAULT_CREDENTIALS_FILE "/etc/poikey"
15 static QLibWindowmanager* qwm;
16 static LibHomeScreen* hs;
17 static QString graphic_role;
18 static MainApp *mainapp;
20 static void SyncDrawHandler(json_object *object)
22 qwm->endDraw(graphic_role);
25 static void ShowWindowHandler(json_object *object)
27 qwm->activateWindow(graphic_role);
30 // Callback to drive raising navigation app
31 static void NavWindowRaiseHandler(void)
34 hs->showWindow("navigation", nullptr);
38 int main(int argc, char *argv[], char *env[])
41 QApplication a(argc, argv);
42 QString credentialsFile(DEFAULT_CREDENTIALS_FILE);
43 qwm = new QLibWindowmanager();
44 hs = new LibHomeScreen();
45 graphic_role = QString("poi");
47 QString pt = QString(argv[1]);
48 int port = pt.toInt();
49 QString secret = QString(argv[2]);
50 std::string token = secret.toStdString();
53 bindingAddress.setScheme(QStringLiteral("ws"));
54 bindingAddress.setHost(QStringLiteral("localhost"));
55 bindingAddress.setPort(port);
56 bindingAddress.setPath(QStringLiteral("/api"));
58 query.addQueryItem(QStringLiteral("token"), secret);
59 bindingAddress.setQuery(query);
61 if (qwm->init(port, secret) != 0) {
65 if (qwm->requestSurface(graphic_role) != 0) {
66 cerr << "Error: wm check failed" << endl;
70 qwm->set_event_handler(QLibWindowmanager::Event_SyncDraw, SyncDrawHandler);
72 mainapp = new MainApp(new Navigation(bindingAddress));
74 hs->init(port, token.c_str());
76 hs->set_event_handler(LibHomeScreen::Event_ShowWindow, ShowWindowHandler);
79 mainapp->setInfoScreen(true);
80 mainapp->setKeyboard(true);
82 // hook up callback to start/raise navigation app
83 mainapp->setNavWindowRaiseCallback(NavWindowRaiseHandler);
85 /* then, authenticate connexion to POI service: */
86 if (mainapp->AuthenticatePOI(credentialsFile) < 0)
88 cerr << "Error: POI server authentication failed" << endl;
92 cerr << "authentication succes !" << endl;
94 /* now, let's start monitor user inut (register callbacks): */
95 if (mainapp->StartMonitoringUserInput() < 0)
98 qwm->activateWindow(graphic_role);