diff options
Diffstat (limited to 'client/ProxyClientApp.cpp')
-rw-r--r-- | client/ProxyClientApp.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/client/ProxyClientApp.cpp b/client/ProxyClientApp.cpp index 030f260..e3a30a9 100644 --- a/client/ProxyClientApp.cpp +++ b/client/ProxyClientApp.cpp @@ -1,7 +1,6 @@ -#include <QSystemTrayIcon> -#include <QMessageBox> #include <QMenu> +#include <QMessageBox> #include "client.h" #include "Dialog.h" @@ -13,19 +12,23 @@ ProxyClientApp::ProxyClientApp(int &argc, char *argv[]): QApplication(argc, argv { Logger::Fatal("No system tray available! Terminating.\n"); return; - } + } + + /* create system tray menu */ + QMenu *trayMenu = new QMenu; QAction *showAction = new QAction(tr("&Show"), this); showAction->setStatusTip(tr("Open dialog to choose a proxy")); connect(showAction, SIGNAL(triggered()), this, SLOT(showProxyDialog())); QAction *quitAction = new QAction(tr("&Quit"), this); quitAction->setStatusTip(tr("Close this application")); connect(quitAction, SIGNAL(triggered()), this, SLOT(quitApp())); - QMenu *trayMenu = new QMenu; trayMenu->addAction(showAction); trayMenu->addAction(quitAction); QIcon *icon = new QIcon("icon.png"); QSystemTrayIcon *trayIcon = new QSystemTrayIcon(*icon); + connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), + this, SLOT(trayActivated(QSystemTrayIcon::ActivationReason))); trayIcon->setContextMenu(trayMenu); trayIcon->show(); delete icon; @@ -33,6 +36,14 @@ ProxyClientApp::ProxyClientApp(int &argc, char *argv[]): QApplication(argc, argv QApplication::setQuitOnLastWindowClosed(false); } +void ProxyClientApp::trayActivated(QSystemTrayIcon::ActivationReason reason) +{ + if (reason == QSystemTrayIcon::DoubleClick) + { + showProxyDialog(); + } +} + void ProxyClientApp::showProxyDialog() { Logger::Trace("Creating proxy dialog.\n"); |