Move pause/unpause helpers to Systray
authorKevin Ottens <kevin.ottens@nextcloud.com>
Thu, 8 Oct 2020 14:32:10 +0000 (16:32 +0200)
committerCamila (Rebase PR Action) <hello@camila.codes>
Tue, 10 Nov 2020 17:29:51 +0000 (17:29 +0000)
We had signals just to call those backs in ownCloudGui, they were
otherwise unused. So let's move them inside of Systray since it's
specific to it anyway.

Also fix the dangerous call to sender(). We can call this function
without going through a signal/slot connection and also it's never
connected to an AccountState.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
src/gui/owncloudgui.cpp
src/gui/owncloudgui.h
src/gui/systray.cpp
src/gui/systray.h

index 3f1cee09cdd7efd55b07b7e43d657e1eb9708055..07b69259850e7704a8902bbac343059e82b5fccc 100644 (file)
@@ -76,12 +76,6 @@ ownCloudGui::ownCloudGui(Application *parent)
     connect(_tray.data(), &QSystemTrayIcon::activated,
         this, &ownCloudGui::slotTrayClicked);
 
-    connect(_tray.data(), &Systray::pauseSync,
-        this, &ownCloudGui::slotPauseAllFolders);
-
-    connect(_tray.data(), &Systray::resumeSync,
-        this, &ownCloudGui::slotUnpauseAllFolders);
-
     connect(_tray.data(), &Systray::openHelp,
         this, &ownCloudGui::slotHelp);
 
@@ -507,41 +501,11 @@ void ownCloudGui::slotLogout()
     }
 }
 
-void ownCloudGui::slotUnpauseAllFolders()
-{
-    setPauseOnAllFoldersHelper(false);
-}
-
-void ownCloudGui::slotPauseAllFolders()
-{
-    setPauseOnAllFoldersHelper(true);
-}
-
 void ownCloudGui::slotNewAccountWizard()
 {
     OwncloudSetupWizard::runWizard(qApp, SLOT(slotownCloudWizardDone(int)));
 }
 
-void ownCloudGui::setPauseOnAllFoldersHelper(bool pause)
-{
-    QList<AccountState *> accounts;
-    if (auto account = qvariant_cast<AccountStatePtr>(sender()->property(propertyAccountC))) {
-        accounts.append(account.data());
-    } else {
-        foreach (auto a, AccountManager::instance()->accounts()) {
-            accounts.append(a.data());
-        }
-    }
-    foreach (Folder *f, FolderMan::instance()->map()) {
-        if (accounts.contains(f->accountState())) {
-            f->setSyncPaused(pause);
-            if (pause) {
-                f->slotTerminateSync();
-            }
-        }
-    }
-}
-
 void ownCloudGui::slotShowGuiMessage(const QString &title, const QString &message)
 {
     auto *msgBox = new QMessageBox;
index 74a1abfddeb10e3ea6686f877f4903cdf5505505..f0c34b0e786cfd4474ebc107f1e4f1809bfd377a 100644 (file)
@@ -108,13 +108,9 @@ public slots:
 private slots:
     void slotLogin();
     void slotLogout();
-    void slotUnpauseAllFolders();
-    void slotPauseAllFolders();
     void slotNewAccountWizard();
 
 private:
-    void setPauseOnAllFoldersHelper(bool pause);
-
     QPointer<Systray> _tray;
     QPointer<SettingsDialog> _settingsDialog;
     QPointer<LogBrowser> _logBrowser;
index 421e13c6c2a7b595adcbe1ea36473fd4b85e6fb4..bbcdb879d474f89417d3b21b4e8fd914cbf8d89d 100644 (file)
@@ -136,6 +136,41 @@ void Systray::slotNewUserSelected()
     UserAppsModel::instance()->buildAppList();
 }
 
+void Systray::slotUnpauseAllFolders()
+{
+    setPauseOnAllFoldersHelper(false);
+}
+
+void Systray::slotPauseAllFolders()
+{
+    setPauseOnAllFoldersHelper(true);
+}
+
+void Systray::setPauseOnAllFoldersHelper(bool pause)
+{
+    // For some reason we get the raw pointer from Folder::accountState()
+    // that's why we need a list of raw pointers for the call to contains
+    // later on...
+    const auto accounts = [=] {
+        const auto ptrList = AccountManager::instance()->accounts();
+        auto result = QList<AccountState *>();
+        result.reserve(ptrList.size());
+        std::transform(std::cbegin(ptrList), std::cend(ptrList), std::back_inserter(result), [](const AccountStatePtr &account) {
+            return account.data();
+        });
+        return result;
+    }();
+    const auto folders = FolderMan::instance()->map();
+    for (auto f : folders) {
+        if (accounts.contains(f->accountState())) {
+            f->setSyncPaused(pause);
+            if (pause) {
+                f->slotTerminateSync();
+            }
+        }
+    }
+}
+
 bool Systray::isOpen()
 {
     return _isOpen;
@@ -187,10 +222,10 @@ void Systray::pauseResumeSync()
 {
     if (_syncIsPaused) {
         _syncIsPaused = false;
-        emit resumeSync();
+        slotUnpauseAllFolders();
     } else {
         _syncIsPaused = true;
-        emit pauseSync();
+        slotPauseAllFolders();
     }
 }
 
index bf7e6133ee2ba43e338ead2eaa0a154d328b821f..13f79ed01bd46c9d7e1a6279807d77a6b3052cc7 100644 (file)
@@ -66,8 +66,6 @@ signals:
     void openSettings();
     void openHelp();
     void shutdown();
-    void pauseSync();
-    void resumeSync();
 
     Q_INVOKABLE void hideWindow();
     Q_INVOKABLE void showWindow();
@@ -76,7 +74,13 @@ signals:
 public slots:
     void slotNewUserSelected();
 
+private slots:
+    void slotUnpauseAllFolders();
+    void slotPauseAllFolders();
+
 private:
+    void setPauseOnAllFoldersHelper(bool pause);
+
     static Systray *_instance;
     Systray();