Просмотр исходного кода

Show activitylist on initial tray opening when logged in

Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
Dominique Fuchs 6 лет назад
Родитель
Сommit
715924cac6

+ 0 - 4
src/gui/accountsettings.cpp

@@ -189,10 +189,6 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent)
     connect(_accountState, &AccountState::stateChanged, this, &AccountSettings::slotAccountStateChanged);
     slotAccountStateChanged();
 
-    if (!AccountManager::instance()->accounts().isEmpty()) {
-        Systray::instance()->slotChangeActivityModel();
-    }
-
     connect(&_quotaInfo, &QuotaInfo::quotaUpdated,
         this, &AccountSettings::slotUpdateQuota);
 

+ 2 - 0
src/gui/application.cpp

@@ -266,6 +266,8 @@ Application::Application(int &argc, char **argv)
 
     // Allow other classes to hook into isShowingSettingsDialog() signals (re-auth widgets, for example)
     connect(_gui.data(), &ownCloudGui::isShowingSettingsDialog, this, &Application::slotGuiIsShowingSettings);
+
+    _gui->createTray();
 }
 
 Application::~Application()

+ 4 - 0
src/gui/owncloudgui.cpp

@@ -111,6 +111,10 @@ ownCloudGui::ownCloudGui(Application *parent)
     connect(Logger::instance(), &Logger::guiMessage,
         this, &ownCloudGui::slotShowGuiMessage);
 
+}
+
+void ownCloudGui::createTray()
+{
     _tray->create();
 }
 

+ 1 - 0
src/gui/owncloudgui.h

@@ -63,6 +63,7 @@ public:
     void setupCloudProviders();
     bool cloudProviderApiAvailable();
 #endif
+    void createTray();
 
 signals:
     void setupProxy();

+ 1 - 0
src/gui/systray.cpp

@@ -71,6 +71,7 @@ Systray::Systray()
 void Systray::create()
 {
     if (_trayContext == nullptr) {
+        _trayEngine->rootContext()->setContextProperty("activityModel", UserModel::instance()->currentActivityModel());
         _trayContext = _trayEngine->contextForObject(_trayComponent->create());
         hideWindow();
     }

+ 8 - 1
src/gui/tray/UserModel.cpp

@@ -275,8 +275,8 @@ Q_INVOKABLE void UserModel::switchCurrentUser(const int &id)
     _users[_currentUserId]->setCurrentUser(false);
     _users[id]->setCurrentUser(true);
     _currentUserId = id;
-    emit newUserSelected();
     emit refreshCurrentUserGui();
+    emit newUserSelected();
 }
 
 Q_INVOKABLE void UserModel::login(const int &id) {
@@ -371,6 +371,13 @@ bool UserModel::currentUserHasActivities()
     return _users[currentUserIndex()]->hasActivities();
 }
 
+void UserModel::fetchCurrentActivityModel()
+{
+    if (_users[currentUserId()]->isConnected()) {
+        _users[currentUserId()]->getActivityModel()->fetchMore(QModelIndex());
+    }
+}
+
 /*-------------------------------------------------------------------------------------*/
 
 ImageProvider::ImageProvider()

+ 1 - 0
src/gui/tray/UserModel.h

@@ -58,6 +58,7 @@ public:
 
     QImage avatarById(const int &id);
 
+    Q_INVOKABLE void fetchCurrentActivityModel();
     Q_INVOKABLE void openCurrentAccountLocalFolder();
     Q_INVOKABLE void openCurrentAccountTalk();
     Q_INVOKABLE void openCurrentAccountServer();

+ 1 - 4
src/gui/tray/Window.qml

@@ -31,10 +31,6 @@ Window {
         currentAccountStateIndicator.source = ""
         currentAccountStateIndicator.source = userModelBackend.isUserConnected(userModelBackend.currentUserId()) ? "qrc:///client/theme/colored/state-ok.svg" : "qrc:///client/theme/colored/state-offline.svg"
 
-        if (userModelBackend.isUserConnected(userModelBackend.currentUserId())) {
-            systrayBackend.slotChangeActivityModel()
-        }
-
         userLineInstantiator.active = false;
         userLineInstantiator.active = true;
     }
@@ -65,6 +61,7 @@ Window {
             trayWindow.setX( systrayBackend.calcTrayWindowX());
             trayWindow.setY( systrayBackend.calcTrayWindowY());
             systrayBackend.setOpened();
+            userModelBackend.fetchCurrentActivityModel();
         }
         onHideWindow: {
             trayWindow.hide();