X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fnicklistwidget.cpp;h=490f9b60468cca94b3bbdedaf8b94275a96155d4;hp=a7a78dec9379049d46085484a8df356d0a0a05a5;hb=1989f165c2b754a42d3f06dfb5c33afd6111d820;hpb=e671e9da1edaab37ec403f575979f9a92a766e9a diff --git a/src/qtui/nicklistwidget.cpp b/src/qtui/nicklistwidget.cpp index a7a78dec..490f9b60 100644 --- a/src/qtui/nicklistwidget.cpp +++ b/src/qtui/nicklistwidget.cpp @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-08 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * + * (at your option) version 3. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * @@ -29,6 +29,10 @@ NickListWidget::NickListWidget(QWidget *parent) : QWidget(parent) { } void NickListWidget::setBuffer(Buffer *buf) { + if(!buf) { + ui.stackedWidget->setCurrentWidget(ui.emptyPage); + return; + } if(buf->bufferType() != Buffer::ChannelType) { ui.stackedWidget->setCurrentWidget(ui.emptyPage); } else { @@ -40,6 +44,23 @@ void NickListWidget::setBuffer(Buffer *buf) { nickViews[buf] = view; ui.stackedWidget->addWidget(view); ui.stackedWidget->setCurrentWidget(view); + connect(buf, SIGNAL(destroyed(QObject *)), this, SLOT(bufferDestroyed(QObject *))); } } } + +void NickListWidget::reset() { + foreach(NickView *view, nickViews.values()) { + ui.stackedWidget->removeWidget(view); + view->deleteLater(); + } + nickViews.clear(); +} + +void NickListWidget::bufferDestroyed(QObject *buf) { + if(nickViews.contains((Buffer *)buf)) { + NickView *view = nickViews.take((Buffer *)buf); + ui.stackedWidget->removeWidget(view); + view->deleteLater(); + } +}