#include "cloudproviders/cloudprovidermanager.h"
#endif
+#include <QQmlApplicationEngine>
#include <QDesktopServices>
#include <QDir>
#include <QMessageBox>
, _app(parent)
{
_tray = Systray::instance();
- _tray->setParent(this);
+ _tray->setTrayEngine(new QQmlApplicationEngine(this));
// for the beginning, set the offline icon until the account was verified
_tray->setIcon(Theme::instance()->folderOfflineIcon(/*systray?*/ true));
return _instance;
}
-Systray::Systray()
- : QSystemTrayIcon(nullptr)
- , _trayEngine(new QQmlApplicationEngine(this))
+void Systray::setTrayEngine(QQmlApplicationEngine *trayEngine)
{
+ _trayEngine = trayEngine;
+
_trayEngine->addImportPath("qrc:/qml/theme");
_trayEngine->addImageProvider("avatars", new ImageProvider);
+}
+Systray::Systray()
+ : QSystemTrayIcon(nullptr)
+{
qmlRegisterSingletonType<UserModel>("com.nextcloud.desktopclient", 1, 0, "UserModel",
[](QQmlEngine *, QJSEngine *) -> QObject * {
return UserModel::instance();
void Systray::create()
{
- if (!AccountManager::instance()->accounts().isEmpty()) {
- _trayEngine->rootContext()->setContextProperty("activityModel", UserModel::instance()->currentActivityModel());
+ if (_trayEngine) {
+ if (!AccountManager::instance()->accounts().isEmpty()) {
+ _trayEngine->rootContext()->setContextProperty("activityModel", UserModel::instance()->currentActivityModel());
+ }
+ _trayEngine->load(QStringLiteral("qrc:/qml/src/gui/tray/Window.qml"));
}
- _trayEngine->load(QStringLiteral("qrc:/qml/src/gui/tray/Window.qml"));
hideWindow();
emit activated(QSystemTrayIcon::ActivationReason::Unknown);
}
void Systray::slotNewUserSelected()
{
- // Change ActivityModel
- _trayEngine->rootContext()->setContextProperty("activityModel", UserModel::instance()->currentActivityModel());
+ if (_trayEngine) {
+ // Change ActivityModel
+ _trayEngine->rootContext()->setContextProperty("activityModel", UserModel::instance()->currentActivityModel());
+ }
// Rebuild App list
UserAppsModel::instance()->buildAppList();
enum class TaskBarPosition { Bottom, Left, Top, Right };
Q_ENUM(TaskBarPosition);
+ void setTrayEngine(QQmlApplicationEngine *trayEngine);
void create();
void showMessage(const QString &title, const QString &message, MessageIcon icon = Information);
void setToolTip(const QString &tip);
bool _isOpen = false;
bool _syncIsPaused = false;
- QQmlApplicationEngine *_trayEngine;
+ QQmlApplicationEngine *_trayEngine = nullptr;
};
} // namespace OCC