diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2012-03-24 14:04:03 +0200 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2012-03-24 14:04:03 +0200 |
commit | c7475fb35f897e7c3876e3cd8ae54fe00f55c046 (patch) | |
tree | 90fe54a4b2c2b555f5100f633ff686d02726f8e8 /client/ProxyClientApp.cpp | |
parent | 8652adfae7bd16db6d74e361608d6a99b04720a3 (diff) | |
parent | 45a1eb48d982ebff2edfc66e254ce220b1cf93a5 (diff) |
Merge branch 'master' of ssh://sss.chaoslab.ru//home/private_git/proxy_ui
Diffstat (limited to 'client/ProxyClientApp.cpp')
-rw-r--r-- | client/ProxyClientApp.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/client/ProxyClientApp.cpp b/client/ProxyClientApp.cpp index c20d232..3b703d8 100644 --- a/client/ProxyClientApp.cpp +++ b/client/ProxyClientApp.cpp @@ -11,6 +11,7 @@ using namespace std; ProxyClientApp::ProxyClientApp(int &argc, char *argv[]): QApplication(argc, argv) { dialog = NULL; + closeTime = 0; /* initiates UpdatedConfig singleton that start sending configuration requests */ UpdatedConfig *cfg = UpdatedConfig::CurrentConfig(); @@ -81,6 +82,14 @@ void ProxyClientApp::trayActivated(QSystemTrayIcon::ActivationReason reason) if (dialog == NULL) { + // part of tray click workaround + quint64 time = QDateTime::currentMSecsSinceEpoch(); + if (time - closeTime < 400) + { + return; + } + closeTime = 0; + showProxyDialog(); } else @@ -95,7 +104,30 @@ void ProxyClientApp::showProxyDialog() { dialog = new ProxyDialog(); dialog->setAttribute(Qt::WA_DeleteOnClose); + connect(dialog, SIGNAL(finished(int)), this, SLOT(DialogClosed(int))); dialog->show(); + dialog->activateWindow(); + + closeTime = 0; +} + +void ProxyClientApp::DialogClosed(int result) +{ + // part of tray click workaround + closeTime = QDateTime::currentMSecsSinceEpoch(); + + Logger::Trace("Dialog closed\n"); + dialog = NULL; + Proxifier *proxifier = Proxifier::GetInstance(); + if (!proxifier->IsValid()) + { + Logger::Error("No valid proxifier configuration file found!\n"); + return; // do not restart if no config found + } + if (!proxifier->ReloadConfig()) + { + Logger::Error("Unable to restart Proxifier process!\n"); + } } void ProxyClientApp::configUpdated() |