Queue desktop tray show action

This commit is contained in:
Курнат Андрей
2026-06-10 07:24:48 +03:00
parent 371f94b669
commit f1cbf65a3c
+11 -2
View File
@@ -24,11 +24,19 @@
#include <QApplication>
#include <QDesktopServices>
#include <QMenu>
#include <QMetaObject>
using namespace Qt::Literals::StringLiterals;
namespace OCC {
namespace {
void showSettingsAfterTrayEvent()
{
auto *app = ocApp();
QMetaObject::invokeMethod(app, [app] { app->showSettings(); }, Qt::QueuedConnection);
}
}
Systray::Systray(QObject *parent)
: QSystemTrayIcon(parent)
@@ -36,7 +44,7 @@ Systray::Systray(QObject *parent)
connect(this, &QSystemTrayIcon::activated, this, [](QSystemTrayIcon::ActivationReason reason) {
// Left click
if (reason == QSystemTrayIcon::Trigger) {
ocApp()->showSettings();
showSettingsAfterTrayEvent();
}
});
connect(AccountManager::instance(), &AccountManager::accountAdded, this,
@@ -143,7 +151,8 @@ void Systray::computeContextMenu()
Q_ASSERT(!contextMenu());
auto *menu = new QMenu(Theme::instance()->appNameGUI());
menu->addAction(Theme::instance()->applicationIcon(), tr("Show %1").arg(Theme::instance()->appNameGUI()), ocApp(), &Application::showSettings);
auto *showAction = menu->addAction(Theme::instance()->applicationIcon(), tr("Show %1").arg(Theme::instance()->appNameGUI()));
connect(showAction, &QAction::triggered, this, [] { showSettingsAfterTrayEvent(); });
auto *pauseResume = new QAction(menu);
auto updatePauseResumeAction = [pauseResume] {
pauseResume->setText(FolderMan::instance()->scheduler()->isRunning() ? tr("Pause synchronizations") : tr("Resume synchronizations"));