Bring back the pause/resume action in the systray menu
authorKevin Ottens <kevin.ottens@nextcloud.com>
Thu, 8 Oct 2020 14:49:27 +0000 (16:49 +0200)
committerCamila (Rebase PR Action) <hello@camila.codes>
Tue, 10 Nov 2020 17:29:51 +0000 (17:29 +0000)
Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
src/gui/systray.cpp

index bbcdb879d474f89417d3b21b4e8fd914cbf8d89d..7e5c0bb314d2b6bf4c6c826a63c9d483617f3dd9 100644 (file)
@@ -93,9 +93,28 @@ Systray::Systray()
     } else {
         contextMenu->addAction(tr("Open main dialog"), this, &Systray::openMainDialog);
     }
+
+    auto pauseAction = contextMenu->addAction(tr("Pause sync"), this, &Systray::slotPauseAllFolders);
+    auto resumeAction = contextMenu->addAction(tr("Resume sync"), this, &Systray::slotUnpauseAllFolders);
     contextMenu->addAction(tr("Settings"), this, &Systray::openSettings);
     contextMenu->addAction(tr("Exit %1").arg(Theme::instance()->appNameGUI()), this, &Systray::shutdown);
     setContextMenu(contextMenu);
+
+    connect(contextMenu, &QMenu::aboutToShow, [=] {
+        const auto folders = FolderMan::instance()->map();
+
+        const auto allPaused = std::all_of(std::cbegin(folders), std::cend(folders), [](Folder *f) { return f->syncPaused(); });
+        const auto pauseText = folders.size() > 1 ? tr("Pause sync for all") : tr("Pause sync");
+        pauseAction->setText(pauseText);
+        pauseAction->setVisible(!allPaused);
+        pauseAction->setEnabled(!allPaused);
+
+        const auto anyPaused = std::any_of(std::cbegin(folders), std::cend(folders), [](Folder *f) { return f->syncPaused(); });
+        const auto resumeText = folders.size() > 1 ? tr("Resume sync for all") : tr("Resume sync");
+        resumeAction->setText(resumeText);
+        resumeAction->setVisible(anyPaused);
+        resumeAction->setEnabled(anyPaused);
+    });
 #endif
 
     connect(UserModel::instance(), &UserModel::newUserSelected,