Rework to raise navigation app and improve behavior
[apps/poi-yelp.git] / main.cpp
index 77e910f..8bf8b51 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -6,26 +6,35 @@
 #include <libhomescreen.hpp>
 #include <qlibwindowmanager.h>
 
+#include <navigation.h>
 
 #define DEFAULT_CREDENTIALS_FILE "/etc/poikey"
 
 using namespace std;
 
-QLibWindowmanager* qwm;
-LibHomeScreen* hs;
-QString graphic_role;
-MainApp *mainapp;
+static QLibWindowmanager* qwm;
+static LibHomeScreen* hs;
+static QString graphic_role;
+static MainApp *mainapp;
 
-void SyncDrawHandler(json_object *object)
+static void SyncDrawHandler(json_object *object)
 {
     qwm->endDraw(graphic_role);
 }
 
-void TapShortcutHandler(json_object *object)
+static void ShowWindowHandler(json_object *object)
 {
     qwm->activateWindow(graphic_role);
 }
 
+// Callback to drive raising navigation app
+static void NavWindowRaiseHandler(void)
+{
+    if (hs) {
+        hs->showWindow("navigation", nullptr);
+    }
+}
+
 int main(int argc, char *argv[], char *env[])
 {
     int opt;
@@ -40,6 +49,15 @@ int main(int argc, char *argv[], char *env[])
     QString secret = QString(argv[2]);
     std::string token = secret.toStdString();
 
+    QUrl bindingAddress;
+    bindingAddress.setScheme(QStringLiteral("ws"));
+    bindingAddress.setHost(QStringLiteral("localhost"));
+    bindingAddress.setPort(port);
+    bindingAddress.setPath(QStringLiteral("/api"));
+    QUrlQuery query;
+    query.addQueryItem(QStringLiteral("token"), secret);
+    bindingAddress.setQuery(query);
+
     if (qwm->init(port, secret) != 0) {
         exit(EXIT_FAILURE);
     }
@@ -51,22 +69,18 @@ int main(int argc, char *argv[], char *env[])
 
     qwm->set_event_handler(QLibWindowmanager::Event_SyncDraw, SyncDrawHandler);
 
-    mainapp = new MainApp();
+    mainapp = new MainApp(new Navigation(bindingAddress));
 
     hs->init(port, token.c_str());
 
-    hs->set_event_handler(LibHomeScreen::Event_TapShortcut, TapShortcutHandler);
+    hs->set_event_handler(LibHomeScreen::Event_ShowWindow, ShowWindowHandler);
 
-    //force setting
+    // force setting
     mainapp->setInfoScreen(true);
     mainapp->setKeyboard(true);
 
-    /* check naviapi */
-    if (mainapp->CheckNaviApi(argc, argv) == false)
-    {
-        cerr << "Error: naviapi check failed" << endl;
-        return -1;
-    }
+    // hook up callback to start/raise navigation app
+    mainapp->setNavWindowRaiseCallback(NavWindowRaiseHandler);
 
     /* then, authenticate connexion to POI service: */
     if (mainapp->AuthenticatePOI(credentialsFile) < 0)