aboutsummaryrefslogtreecommitdiffstats
path: root/src/aglextras/hmi/aglapplication.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/aglextras/hmi/aglapplication.cpp')
-rw-r--r--src/aglextras/hmi/aglapplication.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/aglextras/hmi/aglapplication.cpp b/src/aglextras/hmi/aglapplication.cpp
new file mode 100644
index 0000000..295c017
--- /dev/null
+++ b/src/aglextras/hmi/aglapplication.cpp
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (C) 2017 The Qt Company Ltd.
+ * Copyright (c) 2017 Panasonic Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "aglapplication.h"
+#include "aglapplication_p.h"
+#include "aglwindow.h"
+#include "aglwindow_p.h"
+
+#include <QtCore/QCommandLineParser>
+#include <QtCore/QUrlQuery>
+#include <QtGui/QGuiApplication>
+#include <QtQml/QQmlContext>
+#include <QtQml/QQmlApplicationEngine>
+
+QT_BEGIN_NAMESPACE
+
+AGLApplicationPrivate::AGLApplicationPrivate (AGLApplication*)
+ : binding_address(new QUrl)
+{
+ ;
+}
+
+AGLApplicationPrivate::~AGLApplicationPrivate (void)
+{
+ ;
+}
+
+AGLApplication::AGLApplication (int& argc, char** argv)
+ : QGuiApplication(argc, argv),
+ d_ptr(new AGLApplicationPrivate(this))
+{
+ setApplicationVersion(QStringLiteral("4.99.5"));
+ setOrganizationDomain(QStringLiteral("automotivelinux.org"));
+ setOrganizationName(QStringLiteral("AutomotiveGradeLinux"));
+
+ QCommandLineParser parser;
+ parser.addPositionalArgument(QLatin1String("port"),
+ translate("main", "port for binding"));
+ parser.addPositionalArgument(QLatin1String("secret"),
+ translate("main", "secret for binding"));
+ parser.addHelpOption();
+ parser.addVersionOption();
+ parser.process(*this);
+ QStringList positionalArguments = parser.positionalArguments();
+
+ if (positionalArguments.length() < 2) {
+ return;
+ }
+
+ d_ptr->port = positionalArguments.takeFirst().toInt();
+ d_ptr->secret = positionalArguments.takeFirst();
+
+ d_ptr->binding_address->setScheme(QStringLiteral("ws"));
+ d_ptr->binding_address->setHost(QStringLiteral("localhost"));
+ d_ptr->binding_address->setPort(d_ptr->port);
+ d_ptr->binding_address->setPath(QStringLiteral("/api"));
+
+ QUrlQuery query;
+ query.addQueryItem(QStringLiteral("token"), d_ptr->secret);
+ d_ptr->binding_address->setQuery(query);
+
+ d_ptr->engine = new QQmlApplicationEngine();
+ if (!d_ptr->engine) {
+ qDebug("Cannot initialize QML Engine");
+ exit(EXIT_FAILURE);
+ }
+
+ d_ptr->engine->rootContext()->setContextProperty(QStringLiteral("bindingAddress"),
+ *d_ptr->binding_address);
+}
+
+void
+AGLApplication::load (const QUrl &url)
+{
+ d_ptr->engine->load(url);
+}
+
+void
+AGLApplication::load (const QString &filePath)
+{
+ d_ptr->engine->load(filePath);
+}
+
+int
+AGLApplication::exec (void)
+{
+ if (d_ptr->window) {
+ d_ptr->window->attach(d_ptr->engine);
+ }
+ return QGuiApplication::exec();
+}
+
+void AGLApplication::setupApplicationRole (const QString &role)
+{
+ d_ptr->window = new AGLWindow(role, d_ptr->port, d_ptr->secret);
+}
+
+QT_END_NAMESPACE