X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=d6c18d7c9bdfcd70e9568a1cd399edf05c840742;hp=27bb3e2f4b879bca692e4cf4d1fd29bf88a60880;hb=4a174a228d64ab906a0944f3de3dfe4324d058ff;hpb=ef97dad874c30d7e0586b3dcb98eed15d8987382 diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 27bb3e2f..d6c18d7c 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -123,7 +123,7 @@ void NetworkItem::attachIrcChannel(IrcChannel *ircChannel) { if(channelItem->bufferName().toLower() == ircChannel->name().toLower()) { channelItem->attachIrcChannel(ircChannel); - break; + return; } } } @@ -293,14 +293,15 @@ QueryBufferItem::QueryBufferItem(const BufferInfo &bufferInfo, NetworkItem *pare IrcUser *ircUser = net->ircUser(bufferInfo.bufferName()); if(ircUser) attachIrcUser(ircUser); - } -bool QueryBufferItem::isActive() const { - if(_ircUser) - return !_ircUser->isAway(); - else - return false; +QVariant QueryBufferItem::data(int column, int role) const { + switch(role) { + case NetworkModel::UserAwayRole: + return (bool)_ircUser ? _ircUser->isAway() : false; + default: + return BufferItem::data(column, role); + } } QString QueryBufferItem::toolTip(int column) const { @@ -526,13 +527,12 @@ void ChannelBufferItem::userModeChanged(IrcUser *ircUser) { } // find the item that needs reparenting - UserCategoryItem *oldCategoryItem = 0; IrcUserItem *ircUserItem = 0; for(int i = 0; i < childCount(); i++) { - UserCategoryItem *catItem = qobject_cast(child(i)); - IrcUserItem *userItem = catItem->findIrcUser(ircUser); + UserCategoryItem *oldCategoryItem = qobject_cast(child(i)); + Q_ASSERT(oldCategoryItem); + IrcUserItem *userItem = oldCategoryItem->findIrcUser(ircUser); if(userItem) { - oldCategoryItem = catItem; ircUserItem = userItem; break; } @@ -542,11 +542,7 @@ void ChannelBufferItem::userModeChanged(IrcUser *ircUser) { qWarning() << "ChannelBufferItem::userModeChanged(IrcUser *): unable to determine old category of" << ircUser; return; } - - Q_ASSERT(oldCategoryItem); - if(ircUserItem->reParent(categoryItem) && oldCategoryItem->childCount() == 0) { - removeChild(oldCategoryItem); - } + ircUserItem->reParent(categoryItem); } /***************************************** @@ -560,6 +556,7 @@ UserCategoryItem::UserCategoryItem(int category, AbstractTreeItem *parent) : PropertyMapItem(QStringList() << "categoryName", parent), _category(category) { + setTreeItemFlags(AbstractTreeItem::DeleteOnLastChildRemoved); setObjectName(parent->data(0, Qt::DisplayRole).toString() + "/" + QString::number(category)); } @@ -696,6 +693,12 @@ QString IrcUserItem::toolTip(int column) const { return QString("

%1

").arg(toolTip.join("
")); } +// void IrcUserItem::ircUserDestroyed() { +// parent()->removeChild(this); +// if(parent()->childCount() == 0) +// parent()->parent()->removeChild(parent()); +// } + /***************************************** * NetworkModel *****************************************/