From: Kevin Ottens Date: Thu, 8 Oct 2020 14:49:27 +0000 (+0200) Subject: Bring back the pause/resume action in the systray menu X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~22^2~67^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6c463442ef085bf189b941d14f6d109d11aff1b6;p=nextcloud-desktop.git Bring back the pause/resume action in the systray menu Signed-off-by: Kevin Ottens --- diff --git a/src/gui/systray.cpp b/src/gui/systray.cpp index bbcdb879d..7e5c0bb31 100644 --- a/src/gui/systray.cpp +++ b/src/gui/systray.cpp @@ -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,