Close notifications on other connected clients as well
[quassel.git] / src / qtui / qtui.cpp
index 2a08836..8844848 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-09 by the Quassel Project                          *
+ *   Copyright (C) 2005-2010 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -37,8 +37,8 @@
 #  include <QX11Info>
 #endif
 
-QPointer<QtUi> QtUi::_instance = 0;
-QPointer<MainWin> QtUi::_mainWin = 0;
+QtUi *QtUi::_instance = 0;
+MainWin *QtUi::_mainWin = 0;
 QList<AbstractNotificationBackend *> QtUi::_notificationBackends;
 QList<AbstractNotificationBackend::Notification> QtUi::_notifications;
 
@@ -62,17 +62,22 @@ QtUi::QtUi() : GraphicalUi() {
 
   connect(_mainWin, SIGNAL(connectToCore(const QVariantMap &)), this, SIGNAL(connectToCore(const QVariantMap &)));
   connect(_mainWin, SIGNAL(disconnectFromCore()), this, SIGNAL(disconnectFromCore()));
+  connect(Client::instance(), SIGNAL(bufferMarkedAsRead(BufferId)), SLOT(closeNotifications(BufferId)));
 }
 
 QtUi::~QtUi() {
   unregisterAllNotificationBackends();
   delete _mainWin;
+  _mainWin = 0;
+  _instance = 0;
 }
 
 void QtUi::init() {
   _mainWin->init();
   QtUiSettings uiSettings;
   uiSettings.initAndNotify("UseSystemTrayIcon", this, SLOT(useSystemTrayChanged(QVariant)), true);
+
+  GraphicalUi::init(); // needs to be called after the mainWin is initialized
 }
 
 MessageModel *QtUi::createMessageModel(QObject *parent) {
@@ -89,6 +94,7 @@ void QtUi::connectedToCore() {
 
 void QtUi::disconnectedFromCore() {
   _mainWin->disconnectedFromCore();
+  GraphicalUi::disconnectedFromCore();
 }
 
 void QtUi::useSystemTrayChanged(const QVariant &v) {
@@ -195,3 +201,9 @@ void QtUi::notificationActivated(uint notificationId) {
 
   activateMainWidget();
 }
+
+void QtUi::bufferMarkedAsRead(BufferId bufferId) {
+  if(bufferId.isValid()) {
+    closeNotifications(bufferId);
+  }
+}