Delete COPYING as LICENSE is to be used
[apps/poi-yelp.git] / main.cpp
1 #include <QApplication>
2 #include <iostream>
3 #include "MainApp.h"
4 #include <getopt.h>
5
6 #include <libhomescreen.hpp>
7 #include <navigation.h>
8
9 #define DEFAULT_CREDENTIALS_FILE "/etc/poikey"
10
11 using namespace std;
12
13 static QString graphic_role;
14 static MainApp *mainapp;
15 static LibHomeScreen* hs;
16
17 // Callback to drive raising navigation app
18 static void NavWindowRaiseHandler(void)
19 {
20     if (hs) {
21         hs->showWindow("navigation", nullptr);
22     }
23 }
24
25 static void ShowWindowHandler(json_object *object)
26 {
27
28 }
29
30 int main(int argc, char *argv[], char *env[])
31 {
32     int opt;
33     QApplication a(argc, argv);
34     QString credentialsFile(DEFAULT_CREDENTIALS_FILE);
35
36     hs = new LibHomeScreen();
37     graphic_role = QString("poi");
38     a.setDesktopFileName(graphic_role);
39
40     QString pt = QString(argv[1]);
41     int port = pt.toInt();
42     QString secret = QString(argv[2]);
43     std::string token = secret.toStdString();
44
45     QUrl bindingAddress;
46     bindingAddress.setScheme(QStringLiteral("ws"));
47     bindingAddress.setHost(QStringLiteral("localhost"));
48     bindingAddress.setPort(port);
49     bindingAddress.setPath(QStringLiteral("/api"));
50     QUrlQuery query;
51     query.addQueryItem(QStringLiteral("token"), secret);
52     bindingAddress.setQuery(query);
53
54     mainapp = new MainApp(new Navigation(bindingAddress));
55
56     // force setting
57     mainapp->setInfoScreen(true);
58     mainapp->setKeyboard(true);
59
60     // hook up callback to start/raise navigation app
61     mainapp->setNavWindowRaiseCallback(NavWindowRaiseHandler);
62
63     hs->init(port, token.c_str());
64     hs->set_event_handler(LibHomeScreen::Event_ShowWindow, ShowWindowHandler);
65
66     /* then, authenticate connexion to POI service: */
67     if (mainapp->AuthenticatePOI(credentialsFile) < 0)
68     {
69         cerr << "Error: POI server authentication failed" << endl;
70         return -1;
71     }
72
73     cerr << "authentication succes !" << endl;
74
75     /* now, let's start monitor user inut (register callbacks): */
76     if (mainapp->StartMonitoringUserInput() < 0)
77         return -1;
78
79     /* main loop: */
80     return a.exec();
81 }