From: Marcus Eggenberger Date: Mon, 21 Apr 2008 11:56:01 +0000 (+0000) Subject: active and inactive networks are now expanded and collapsed properly X-Git-Tag: 0.2.0-beta1~24 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=28b6868290a5281b2e2da17f52514c55df802a30 active and inactive networks are now expanded and collapsed properly --- diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index 9887818b..3b895d1e 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -81,7 +81,7 @@ void BufferView::init() { void BufferView::setModel(QAbstractItemModel *model) { delete selectionModel(); if(QTreeView::model()) { - disconnect(QTreeView::model(), SIGNAL(layoutChanged()), this, SLOT(updateSelection())); + disconnect(QTreeView::model(), SIGNAL(layoutChanged()), this, SLOT(layoutChanged())); } QTreeView::setModel(model); @@ -96,7 +96,7 @@ void BufferView::setModel(QAbstractItemModel *model) { if(!model) return; - connect(model, SIGNAL(layoutChanged()), this, SLOT(updateSelection())); + connect(model, SIGNAL(layoutChanged()), this, SLOT(layoutChanged())); QString sectionName; QAction *showSection; @@ -187,9 +187,10 @@ void BufferView::keyPressEvent(QKeyEvent *event) { QTreeView::keyPressEvent(event); } -// ensure that newly inserted network nodes are expanded per default void BufferView::rowsInserted(const QModelIndex & parent, int start, int end) { QTreeView::rowsInserted(parent, start, end); + + // ensure that newly inserted network nodes are expanded per default if(parent.data(NetworkModel::ItemTypeRole) != NetworkModel::NetworkItemType) return; @@ -200,9 +201,24 @@ void BufferView::rowsInserted(const QModelIndex & parent, int start, int end) { } } -void BufferView::updateSelection() { +void BufferView::layoutChanged() { + Q_ASSERT(model()); + + // expand all active networks + QModelIndex networkIdx; + for(int row = 0; row < model()->rowCount(); row++) { + networkIdx = model()->index(row, 0); + update(networkIdx); + if(model()->rowCount(networkIdx) > 0 && model()->data(networkIdx, NetworkModel::ItemActiveRole) == true) { + expand(networkIdx); + } else { + collapse(networkIdx); + } + } + + // update selection to current one MappedSelectionModel *mappedSelectionModel = qobject_cast(selectionModel()); - if(!config()) + if(!config() || !mappedSelectionModel) return; mappedSelectionModel->mappedSetCurrentIndex(Client::bufferModel()->standardSelectionModel()->currentIndex(), QItemSelectionModel::Current); diff --git a/src/uisupport/bufferview.h b/src/uisupport/bufferview.h index 6485fa5b..b42c6c1a 100644 --- a/src/uisupport/bufferview.h +++ b/src/uisupport/bufferview.h @@ -64,7 +64,7 @@ private slots: void joinChannel(const QModelIndex &index); void toggleHeader(bool checked); void showContextMenu(const QPoint &); - void updateSelection(); + void layoutChanged(); private: QPointer _config; diff --git a/version.inc b/version.inc index 372684b8..53e17af9 100644 --- a/version.inc +++ b/version.inc @@ -5,7 +5,7 @@ quasselVersion = "0.2.0-beta1-pre"; quasselDate = "2008-04-21"; - quasselBuild = 784; + quasselBuild = 786; //! Minimum client build number the core needs clientBuildNeeded = 731;