From: Nicolas Fella Date: Sun, 22 Mar 2020 15:14:26 +0000 (+0100) Subject: Use QQmlApplicationEngine X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~222^2^2~273^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d54add6233cf3ce663f6f4f82689547f09cd5acf;p=nextcloud-desktop.git Use QQmlApplicationEngine This simplifies the code a bit. Signed-off-by: Nicolas Fella --- diff --git a/src/gui/systray.cpp b/src/gui/systray.cpp index 081a90b0e..dc9ca6bed 100644 --- a/src/gui/systray.cpp +++ b/src/gui/systray.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #ifdef USE_FDO_NOTIFICATIONS @@ -50,20 +50,14 @@ Systray *Systray::instance() Systray::Systray() : _isOpen(false) , _syncIsPaused(false) - , _trayComponent(nullptr) - , _trayContext(nullptr) { - // Create QML tray engine, build component, set C++ backend context used in window.qml - // Use pointer instead of engine() helper function until Qt 5.12 is minimum standard - _trayEngine = new QQmlEngine; + _trayEngine = new QQmlApplicationEngine; _trayEngine->addImportPath("qrc:/qml/theme"); _trayEngine->addImageProvider("avatars", new ImageProvider); _trayEngine->rootContext()->setContextProperty("userModelBackend", UserModel::instance()); _trayEngine->rootContext()->setContextProperty("appsMenuModelBackend", UserAppsModel::instance()); _trayEngine->rootContext()->setContextProperty("systrayBackend", this); - _trayComponent = new QQmlComponent(_trayEngine, QUrl(QStringLiteral("qrc:/qml/src/gui/tray/Window.qml"))); - connect(UserModel::instance(), &UserModel::newUserSelected, this, &Systray::slotNewUserSelected); @@ -73,13 +67,11 @@ Systray::Systray() void Systray::create() { - if (_trayContext == nullptr) { - if (!AccountManager::instance()->accounts().isEmpty()) { - _trayEngine->rootContext()->setContextProperty("activityModel", UserModel::instance()->currentActivityModel()); - } - _trayContext = _trayEngine->contextForObject(_trayComponent->create()); - hideWindow(); + if (!AccountManager::instance()->accounts().isEmpty()) { + _trayEngine->rootContext()->setContextProperty("activityModel", UserModel::instance()->currentActivityModel()); } + _trayEngine->load(QStringLiteral("qrc:/qml/src/gui/tray/Window.qml")); + hideWindow(); } void Systray::slotNewUserSelected() diff --git a/src/gui/systray.h b/src/gui/systray.h index d562dcf42..9900c2d2e 100644 --- a/src/gui/systray.h +++ b/src/gui/systray.h @@ -22,6 +22,7 @@ #include "tray/UserModel.h" class QIcon; +class QQmlApplicationEngine; namespace OCC { @@ -78,9 +79,7 @@ private: Systray(); bool _isOpen; bool _syncIsPaused; - QQmlEngine *_trayEngine; - QQmlComponent *_trayComponent; - QQmlContext *_trayContext; + QQmlApplicationEngine *_trayEngine; }; } // namespace OCC