From 74b71a1dde2e2cab142a641db6e696595cf62493 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Tue, 3 Feb 2009 00:29:14 +0100 Subject: [PATCH] Fixes #510 - Network item shows wrong buffer --- src/client/networkmodel.cpp | 20 ++++++++++++++++---- src/client/networkmodel.h | 5 +++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 5663738f..01b6cde0 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -37,7 +37,8 @@ *****************************************/ NetworkItem::NetworkItem(const NetworkId &netid, AbstractTreeItem *parent) : PropertyMapItem(QList() << "networkName" << "currentServer" << "nickCount", parent), - _networkId(netid) + _networkId(netid), + _statusBufferItem(0) { // DO NOT EMIT dataChanged() DIRECTLY IN NetworkItem // use networkDataChanged() instead. Otherwise you will end up in a infinite loop @@ -52,8 +53,8 @@ QVariant NetworkItem::data(int column, int role) const { case NetworkModel::BufferInfoRole: case NetworkModel::BufferTypeRole: case NetworkModel::BufferActivityRole: - if(childCount()) - return child(0)->data(column, role); + if(_statusBufferItem) + return _statusBufferItem->data(column, role); else return QVariant(); case NetworkModel::NetworkIdRole: @@ -88,7 +89,8 @@ BufferItem *NetworkItem::bufferItem(const BufferInfo &bufferInfo) { switch(bufferInfo.type()) { case BufferInfo::StatusBuffer: - bufferItem = new StatusBufferItem(bufferInfo, this); + _statusBufferItem = new StatusBufferItem(bufferInfo, this); + bufferItem = _statusBufferItem; disconnect(this, SIGNAL(networkDataChanged(int)), this, SIGNAL(dataChanged(int))); connect(this, SIGNAL(networkDataChanged(int)), bufferItem, SIGNAL(dataChanged(int))); connect(bufferItem, SIGNAL(dataChanged(int)), this, SIGNAL(dataChanged(int))); @@ -182,6 +184,16 @@ QString NetworkItem::toolTip(int column) const { return QString("

%1

").arg(toolTip.join("
")); } +void NetworkItem::onBeginRemoveChilds(int start, int end) { + for(int i = start; i <= end; i++) { + StatusBufferItem *statusBufferItem = qobject_cast(child(i)); + if(statusBufferItem) { + _statusBufferItem = 0; + break; + } + } +} + /***************************************** * Fancy Buffer Items *****************************************/ diff --git a/src/client/networkmodel.h b/src/client/networkmodel.h index 840f1aa2..868de0bd 100644 --- a/src/client/networkmodel.h +++ b/src/client/networkmodel.h @@ -28,6 +28,7 @@ #include "treemodel.h" class BufferItem; +class StatusBufferItem; /***************************************** * Network Items @@ -67,8 +68,12 @@ public slots: signals: void networkDataChanged(int column = -1); +private slots: + void onBeginRemoveChilds(int start, int end); + private: NetworkId _networkId; + StatusBufferItem *_statusBufferItem; QPointer _network; }; -- 2.20.1