app/: Avoid any AGL wrappers and use plain Qt
[apps/hvac.git] / app / main.cpp
index 38ccfe1..94b46ad 100644 (file)
  * limitations under the License.
  */
 
-#include <QtAGLExtras/AGLApplication>
+#include <QtGui/QGuiApplication>
+#include <QDebug>
+#include <QUrlQuery>
+#include <QCommandLineParser>
 #include <QtQml/QQmlApplicationEngine>
 #include <hvac.h>
+#include <QtQml/QQmlContext>
 
 #include "translator.h"
 
 int main(int argc, char *argv[])
 {
-    AGLApplication app(argc, argv);
-    app.setApplicationName("HVAC");
-    app.setupApplicationRole("hvac");
-
-    QQmlApplicationEngine *engine = app.getQmlApplicationEngine();
-    QQmlContext *context = engine->rootContext();
-    QVariant v = context->contextProperty(QStringLiteral("bindingAddress"));
-    if(v.canConvert(QMetaType::QUrl)) {
-        QUrl bindingAddress = v.toUrl();
-        context->setContextProperty("hvac", new HVAC(bindingAddress));
-    } else {
-        qCritical("Cannot find bindingAddress property in context, SignalComposer unavailable");
-    }
-
-    qmlRegisterType<Translator>("Translator", 1, 0, "Translator");
-    app.load(QUrl(QStringLiteral("qrc:/HVAC.qml")));
-    return app.exec();
-}
+       setenv("QT_QPA_PLATFORM", "wayland", 1);
+       int port;
+       QString token;
+
+       QCommandLineParser parser;
+       QGuiApplication app(argc, argv);
+
+       parser.addPositionalArgument("port",
+               app.translate("main", "port for binding"));
+       parser.addPositionalArgument("secret",
+               app.translate("main", "secret for binding"));
+
+        parser.addHelpOption();
+        parser.addVersionOption();
+        parser.process(app);
+        QStringList positionalArguments = parser.positionalArguments();
+
+       if (positionalArguments.length() == 2) {
+               port = positionalArguments.takeFirst().toInt();
+               token = positionalArguments.takeFirst();
+               qInfo() << "setting port:" << port << ", token:" << token;
+       } else {
+               qInfo() << "Need to specify port and token";
+               exit(EXIT_FAILURE);
+       }
 
+       QUrl bindingAddress;
+       bindingAddress.setScheme(QStringLiteral("ws"));
+       bindingAddress.setHost(QStringLiteral("localhost"));
+       bindingAddress.setPort(port);
+       bindingAddress.setPath(QStringLiteral("/api"));
+
+       QUrlQuery query;
+       query.addQueryItem(QStringLiteral("token"), token);
+       bindingAddress.setQuery(query);
+
+       QQmlApplicationEngine engine;
+       engine.rootContext()->setContextProperty("bindingAddress", bindingAddress);
+        engine.rootContext()->setContextProperty("hvac", new HVAC(bindingAddress));
+       qmlRegisterType<Translator>("Translator", 1, 0, "Translator");
+       engine.load(QUrl(QStringLiteral("qrc:/HVAC.qml")));
+
+       return app.exec();
+}