/***************************************************************************
- * 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 *
#include "nicklistwidget.h"
-#include "buffer.h"
#include "nickview.h"
#include "client.h"
#include "networkmodel.h"
return 0;
}
+void NickListWidget::hideEvent(QHideEvent *event) {
+ emit nickSelectionChanged(QModelIndexList());
+ AbstractItemView::hideEvent(event);
+}
+
+void NickListWidget::showEvent(QShowEvent *event) {
+ NickView *view = qobject_cast<NickView *>(ui.stackedWidget->currentWidget());
+ if(view)
+ emit nickSelectionChanged(view->selectedIndexes());
+
+ AbstractItemView::showEvent(event);
+}
+
void NickListWidget::showWidget(bool visible) {
if(!selectionModel())
return;
if(bufferType != BufferInfo::ChannelBuffer) {
ui.stackedWidget->setCurrentWidget(ui.emptyPage);
+ emit nickSelectionChanged(QModelIndexList());
return;
}
if(newBufferId == oldBufferId)
return;
+ NickView *view;
if(nickViews.contains(newBufferId)) {
- ui.stackedWidget->setCurrentWidget(nickViews.value(newBufferId));
+ view = nickViews.value(newBufferId);
+ ui.stackedWidget->setCurrentWidget(view);
} else {
- NickView *view = new NickView(this);
+ view = new NickView(this);
NickViewFilter *filter = new NickViewFilter(newBufferId, Client::networkModel());
view->setModel(filter);
QModelIndex source_current = Client::bufferModel()->mapToSource(current);
view->setRootIndex(filter->mapFromSource(source_current));
- view->expandAll();
nickViews[newBufferId] = view;
ui.stackedWidget->addWidget(view);
ui.stackedWidget->setCurrentWidget(view);
+ connect(view, SIGNAL(selectionUpdated()), SLOT(nickSelectionChanged()));
+ }
+ emit nickSelectionChanged(view->selectedIndexes());
+}
+
+void NickListWidget::nickSelectionChanged() {
+ NickView *view = qobject_cast<NickView *>(sender());
+ Q_ASSERT(view);
+ if(view != ui.stackedWidget->currentWidget()) {
+ qDebug() << "Nick selection of hidden view changed!";
+ return;
}
+ emit nickSelectionChanged(view->selectedIndexes());
}
void NickListWidget::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) {