diff options
author | supriyasirbi <supriya.sirbi@gmail.com> | 2019-02-09 20:54:39 +0530 |
---|---|---|
committer | supriya sirbi <supriya.sirbi@gmail.com> | 2019-02-12 03:47:51 +0000 |
commit | 4ada6248406bc3d7795fc4b5f0f5752583504c08 (patch) | |
tree | df193811e21d2cb8b19d6872acb73ff64a6a9b3e | |
parent | 9dc69dffb11d4fa400b22742748887bac5525970 (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.txt | 8 | ||||
-rw-r--r-- | app/main.cpp | 115 |
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(); } |