From efdd71f35935f8b14abfb26fa852bad77dbd3f9e Mon Sep 17 00:00:00 2001 From: Alex Borisov Date: Sat, 24 Mar 2012 11:41:57 +0200 Subject: Ticket #3 fix (tray click workaround and no windown on taskbar) --- client/ProxyClientApp.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'client/ProxyClientApp.cpp') 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() -- cgit v1.2.3