Notification backends now can emit a signal activated() that tells MainWin to raise...
[quassel.git] / src / qtui / qtui.cpp
index 1b513a7..231bbf4 100644 (file)
 #include "util.h"
 
 QHash<QString, ActionCollection *> QtUi::_actionCollections;
+QPointer<QtUi> QtUi::_instance = 0;
 QPointer<MainWin> QtUi::_mainWin = 0;
 QList<AbstractNotificationBackend *> QtUi::_notificationBackends;
 QList<AbstractNotificationBackend::Notification> QtUi::_notifications;
 QtUiStyle *QtUi::_style = 0;
 
 QtUi::QtUi() : AbstractUi() {
-  if(_style != 0) {
+  if(_instance != 0) {
     qWarning() << "QtUi has been instantiated again!";
     return;
   }
+  _instance = this;
 
   _actionProvider = new NetworkModelActionProvider(this);
 
@@ -93,6 +95,7 @@ void QtUi::disconnectedFromCore() {
 void QtUi::registerNotificationBackend(AbstractNotificationBackend *backend) {
   if(!_notificationBackends.contains(backend)) {
     _notificationBackends.append(backend);
+    instance()->connect(backend, SIGNAL(activated()), SLOT(notificationActivated()));
   }
 }
 
@@ -147,3 +150,8 @@ const QList<AbstractNotificationBackend::Notification> &QtUi::activeNotification
   return _notifications;
 }
 
+void QtUi::notificationActivated() {
+  // this might not work with some window managers
+  _mainWin->raise();
+  _mainWin->activateWindow();
+}