app/: Avoid any AGL wrappers and use plain Qt 31/24831/1
authorMarius Vlad <marius.vlad@collabora.com>
Tue, 21 Jan 2020 23:18:44 +0000 (01:18 +0200)
committerMarius Vlad <marius.vlad@collabora.com>
Wed, 24 Jun 2020 14:15:49 +0000 (17:15 +0300)
Removes homescreen/windowmanger requirements from config

Bug-AGL: SPEC-3447

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I99a2221e44d04a06b8d3cf412b22e0204a9c89a5

app/app.pro
app/main.cpp
package/config.xml

index d032417..f4ab212 100644 (file)
@@ -1,5 +1,5 @@
 TARGET = hvac
-QT = quick qml aglextras
+QT = quick qml websockets
 
 HEADERS += \
     translator.h
@@ -7,7 +7,7 @@ HEADERS += \
 SOURCES = main.cpp \
     translator.cpp
 
-CONFIG += link_pkgconfig
+CONFIG += c++11 link_pkgconfig
 PKGCONFIG += qtappfw-hvac
 
 CONFIG(release, debug|release) {
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();
+}
index cd4dbbd..c830521 100644 (file)
@@ -7,8 +7,6 @@
   <author>Romain Forlot &lt;romain.forlot@iot.bzh&gt;</author>
   <license>APL 2.0</license>
   <feature name="urn:AGL:widget:required-api">
-    <param name="windowmanager" value="ws" />
-    <param name="homescreen" value="ws" />
     <param name="identity" value="ws" />
     <param name="HVAC" value="ws" />
   </feature>