Use QQmlApplicationEngine

This simplifies the code a bit.

Signed-off-by: Nicolas Fella <nicolas.fella@gmx.de>
This commit is contained in:
Nicolas Fella 2020-03-22 16:14:26 +01:00
parent 3ca586c464
commit d54add6233
2 changed files with 8 additions and 17 deletions

View File

@ -22,7 +22,7 @@
#include <QDesktopServices>
#include <QGuiApplication>
#include <QQmlComponent>
#include <QQmlEngine>
#include <QQmlApplicationEngine>
#include <QScreen>
#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()

View File

@ -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