aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsupriyasirbi <supriya.sirbi@gmail.com>2019-02-09 20:54:39 +0530
committersupriya sirbi <supriya.sirbi@gmail.com>2019-02-12 03:47:51 +0000
commit4ada6248406bc3d7795fc4b5f0f5752583504c08 (patch)
treedf193811e21d2cb8b19d6872acb73ff64a6a9b3e
parent9dc69dffb11d4fa400b22742748887bac5525970 (diff)
Clean up of Mixer main.cpp
This commit is for clean up of Mixer main.cpp to remove the dependencies of homescreen and qtwindowmanager. It adds AGLExtras to the list of dependencies and simplifies main.cpp. Bug-AGL: SPEC-2002 Change-Id: I18f974223e4bf45876e5dac045105597f55dd7c6 Signed-off-by: supriyasirbi <supriya.sirbi@gmail.com>
-rw-r--r--app/CMakeLists.txt8
-rw-r--r--app/main.cpp115
2 files changed, 11 insertions, 112 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 0259a79..5317224 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -22,7 +22,7 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
-find_package(Qt5 COMPONENTS Core Quick QuickControls2 WebSockets REQUIRED)
+find_package(Qt5 COMPONENTS WebSockets AGLExtras REQUIRED)
PROJECT_TARGET_ADD(mixer)
@@ -49,9 +49,7 @@ set_target_properties(mixer PROPERTIES
)
target_link_libraries(mixer
- Qt5::Core
- Qt5::Quick
- Qt5::QuickControls2
+ Qt5::AGLExtras
Qt5::WebSockets
json-c
afb-helpers
@@ -59,7 +57,5 @@ target_link_libraries(mixer
if(NOT NATIVE_BUILD)
target_link_libraries(mixer
- homescreen
- qtwindowmanager
)
endif()
diff --git a/app/main.cpp b/app/main.cpp
index 6fdc1ce..4921bf2 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -16,119 +16,22 @@
* limitations under the License.
*/
-#include <QtCore/QDebug>
-#include <QtCore/QCommandLineParser>
-#include <QtCore/QUrlQuery>
-#include <QtCore/QDir>
-#include <QtCore/QList>
-#include <QtCore/QStandardPaths>
-#include <QtCore/QThread>
-#include <QtGui/QGuiApplication>
+
#include <QtQml/QQmlApplicationEngine>
-#include <QtQml/QQmlContext>
-#include <QtQuickControls2/QQuickStyle>
+#include <QtAGLExtras/AGLApplication>
#include <QtQml/qqml.h>
-#include <QtQuick/qquickitem.h>
-#include <QtQuick/qquickview.h>
-#include <QQuickWindow>
-#ifndef NATIVE_BUILD
-#include <libhomescreen.hpp>
-#include <qlibwindowmanager.h>
-#else
-#include <QScreen>
-#endif
+
#include "mixer.hpp"
#include "audiorole.hpp"
int main(int argc, char *argv[])
{
- QString graphic_role = QString("mixer");
-
- QGuiApplication app(argc, argv);
-
- QQuickStyle::setStyle("AGL");
-
- QCommandLineParser parser;
- 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();
-
- qmlRegisterType<Mixer>("Mixer", 1, 0, "Mixer");
-
- QQmlApplicationEngine engine;
- if (positionalArguments.length() == 2) {
- int port = positionalArguments.takeFirst().toInt();
- QString secret = positionalArguments.takeFirst();
- 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);
- QQmlContext *context = engine.rootContext();
- context->setContextProperty(QStringLiteral("bindingAddress"), bindingAddress);
- qDebug() << "Connect to: " << bindingAddress;
-
-
-#ifndef NATIVE_BUILD
- LibHomeScreen* hs = new LibHomeScreen();
- QLibWindowmanager* qwm = new QLibWindowmanager();
-
- // WindowManager
- if(qwm->init(port,secret) != 0){
- exit(EXIT_FAILURE);
- }
- AGLScreenInfo screenInfo(qwm->get_scale_factor());
- engine.rootContext()->setContextProperty(QStringLiteral("scale_factor"), screenInfo.scale_factor());
- // Request a surface as described in layers.json windowmanager’s file
- if (qwm->requestSurface(graphic_role) != 0) {
- exit(EXIT_FAILURE);
- }
- // Create an event callbnewack against an event type. Here a lambda is called when SyncDraw event occurs
- qwm->set_event_handler(QLibWindowmanager::Event_SyncDraw, [qwm, &graphic_role](json_object*) {
- fprintf(stderr, "Surface got syncDraw!\n");
- qwm->endDraw(graphic_role);
- });
-
- // HomeScreen
- std::string token = secret.toStdString();
- hs->init(port, token.c_str());
- // Set the event handler for Event_ShowWindow which will activate the surface for windowmanager
- hs->set_event_handler(LibHomeScreen::Event_ShowWindow, [qwm, &graphic_role](json_object *object){
- qDebug("Surface %s got showWindow\n", graphic_role.toStdString().c_str());
- qwm->activateWindow(graphic_role);
- });
-#else
- engine.rootContext()->setContextProperty(QStringLiteral("scale_factor"), 1.0);
-#endif
- engine.load(QUrl(QStringLiteral("qrc:/Mixer.qml")));
-
- // Find the instantiated model QObject and connect the signals/slots
- QList<QObject*> mobjs = engine.rootObjects();
- if (mobjs.empty())
- {
- qDebug() << "[ERROR] Failed to load QML!";
- return -1;
- }
+ AGLApplication app(argc, argv);
+ app.setApplicationName("Mixer");
+ app.setupApplicationRole("mixer");
- QQuickWindow *window = qobject_cast<QQuickWindow *>(mobjs.first());
-#ifdef NATIVE_BUILD
- window->setFlags(window->flags() & ~Qt::FramelessWindowHint); // Remove the borderless flag
- window->setHeight(QGuiApplication::primaryScreen()->geometry().height());
-#else
- QObject::connect(window, SIGNAL(frameSwapped()), qwm, SLOT(slotActivateWindow()));
-#endif
- }
- else
- {
- qDebug() << "[ERROR] No port and token specified!";
- return -1;
- }
+ qmlRegisterType<Mixer>("Mixer", 1, 0, "Mixer");
+ app.load(QUrl(QStringLiteral("qrc:/Mixer.qml")));
+ return app.exec();
- return app.exec();
}