/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
connect(Client::signalProxy(), SIGNAL(lagUpdated(int)), this, SLOT(updateLagIndicator(int)));
// SSL indicator
- connect(Client::instance(), SIGNAL(securedConnection()), this, SLOT(securedConnection()));
sslLabel->setPixmap(QPixmap());
statusBar()->addPermanentWidget(sslLabel);
sslLabel->hide();
}
#ifndef Q_WS_MAC
- connect(systemTrayIcon(), SIGNAL(activated( QSystemTrayIcon::ActivationReason )),
- this, SLOT(systrayActivated( QSystemTrayIcon::ActivationReason )));
+ connect(systemTrayIcon(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systrayActivated(QSystemTrayIcon::ActivationReason)));
#endif
-
}
void MainWin::changeEvent(QEvent *event) {
if(windowState() & Qt::WindowMinimized) {
QtUiSettings s;
if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnMinimize").toBool()) {
- toggleVisibility();
- event->ignore();
+ hideToTray();
+ event->accept();
}
}
}
if(!Client::internalCore())
statusBar()->showMessage(tr("Connected to core."));
- if(sslLabel->width() == 0)
+ if(Client::signalProxy()->isSecure()) {
+ sslLabel->setPixmap(SmallIcon("security-high"));
+ } else {
sslLabel->setPixmap(SmallIcon("security-low"));
+ }
sslLabel->setVisible(!Client::internalCore());
coreLagLabel->setVisible(!Client::internalCore());
coreLagLabel->setText(text);
}
-
-void MainWin::securedConnection() {
- // todo: make status bar entry
- sslLabel->setPixmap(SmallIcon("security-high"));
-}
-
void MainWin::disconnectedFromCore() {
// save core specific layout and remove bufferviews;
saveLayout();
void MainWin::closeEvent(QCloseEvent *event) {
QtUiSettings s;
- if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
- toggleVisibility();
+ QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
+ Q_ASSERT(app);
+ if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
+ hideToTray();
event->ignore();
} else {
event->accept();
}
}
-void MainWin::systrayActivated( QSystemTrayIcon::ActivationReason activationReason) {
+void MainWin::systrayActivated(QSystemTrayIcon::ActivationReason activationReason) {
if(activationReason == QSystemTrayIcon::Trigger) {
- toggleVisibility();
+ toggleMinimizedToTray();
}
}
-void MainWin::toggleVisibility() {
- if(isHidden() /*|| !isActiveWindow()*/) {
- show();
- if(isMinimized()) {
- if(isMaximized())
- showMaximized();
- else
- showNormal();
- }
+void MainWin::hideToTray() {
+ if(!systemTrayIcon()->isSystemTrayAvailable()) {
+ qWarning() << Q_FUNC_INFO << "was called with no SystemTray available!";
+ return;
+ }
- raise();
- activateWindow();
- // setFocus(); //Qt::ActiveWindowFocusReason
+ clearFocus();
+ hide();
+ systemTrayIcon()->show();
+}
+void MainWin::toggleMinimizedToTray() {
+ if(windowState() & Qt::WindowMinimized) {
+ // restore
+ setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
+ show();
+ raise();
} else {
- if(systemTrayIcon()->isSystemTrayAvailable ()) {
- clearFocus();
- hide();
- if(!systemTrayIcon()->isVisible()) {
- systemTrayIcon()->show();
- }
- } else {
- lower();
- }
+ setWindowState((windowState() & ~Qt::WindowActive) | Qt::WindowMinimized);
+ hideToTray();
}
}