+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;
+
+ QModelIndex currentIndex = selectionModel()->currentIndex();
+ if (currentIndex.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer) {
+ QDockWidget *dock_ = dock();
+ if (!dock_)
+ return;
+
+ if (visible)
+ dock_->show();
+ else
+ dock_->close();
+ }
+}
+
+void NickListWidget::setVisible(bool visible)
+{
+ QWidget::setVisible(visible);
+ QDockWidget *dock_ = dock();
+ if (!dock_)
+ return;
+
+ if (visible)
+ dock_->show();
+ else
+ dock_->close();
+}
+
+
+void NickListWidget::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
+{
+ BufferInfo::Type bufferType = (BufferInfo::Type)current.data(NetworkModel::BufferTypeRole).toInt();
+ BufferId newBufferId = current.data(NetworkModel::BufferIdRole).value<BufferId>();
+ BufferId oldBufferId = previous.data(NetworkModel::BufferIdRole).value<BufferId>();
+
+ if (bufferType != BufferInfo::ChannelBuffer) {
+ ui.stackedWidget->setCurrentWidget(ui.emptyPage);
+ emit nickSelectionChanged(QModelIndexList());
+ return;
+ }
+
+ // See NickListDock::NickListDock() below
+// if(bufferType != BufferInfo::ChannelBuffer) {
+// ui.stackedWidget->setCurrentWidget(ui.emptyPage);
+// QDockWidget *dock_ = dock();
+// if(dock_) {
+// dock_->close();
+// }
+// return;
+// } else {
+// QDockWidget *dock_ = dock();
+// if(dock_ && dock_->toggleViewAction()->isChecked()) {
+// dock_->show();
+// }
+// }
+
+ if (newBufferId == oldBufferId)
+ return;