X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=c79717911b65d4f82045e217410ab7dba7aa344b;hp=9a16ac176a8e1466b50ffc732593faa6e3938ca6;hb=52a7b4d0f289f075aa386445a47d876743bcb6d0;hpb=997a62b68d7469a93f373476dd955c44eb051be0 diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 9a16ac17..c7971791 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -27,13 +27,11 @@ #include "signalproxy.h" #include "network.h" #include "ircchannel.h" -#include "ircuser.h" #include "buffersettings.h" #include "util.h" // get rid of this (needed for isChannelName) - /***************************************** * Fancy Buffer Items *****************************************/ @@ -41,7 +39,8 @@ BufferItem::BufferItem(BufferInfo bufferInfo, AbstractTreeItem *parent) : PropertyMapItem(QStringList() << "bufferName" << "topic" << "nickCount", parent), _bufferInfo(bufferInfo), _bufferName(bufferInfo.bufferName()), - _activity(Buffer::NoActivity) + _activity(Buffer::NoActivity), + _ircChannel(0) { Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled; if(bufferType() == BufferInfo::QueryBuffer) @@ -69,10 +68,11 @@ bool BufferItem::isActive() const { return qobject_cast(parent())->isActive(); } -bool BufferItem::setActivityLevel(Buffer::ActivityLevel level) { - _activity = level; - emit dataChanged(); - return true; +void BufferItem::setActivityLevel(Buffer::ActivityLevel level) { + if(_activity != level) { + _activity = level; + emit dataChanged(); + } } void BufferItem::updateActivityLevel(Buffer::ActivityLevel level) { @@ -106,7 +106,8 @@ QVariant BufferItem::data(int column, int role) const { bool BufferItem::setData(int column, const QVariant &value, int role) { switch(role) { case NetworkModel::BufferActivityRole: - return setActivityLevel((Buffer::ActivityLevel)value.toInt()); + setActivityLevel((Buffer::ActivityLevel)value.toInt()); + return true; default: return PropertyMapItem::setData(column, value, role); } @@ -144,6 +145,9 @@ void BufferItem::attachIrcChannel(IrcChannel *ircChannel) { } void BufferItem::ircChannelDestroyed() { + Q_CHECK_PTR(_ircChannel); + disconnect(_ircChannel, 0, this, 0); + _ircChannel = 0; emit dataChanged(); removeAllChilds(); } @@ -250,23 +254,23 @@ void BufferItem::removeUserFromCategory(IrcUser *ircUser) { UserCategoryItem *categoryItem = 0; for(int i = 0; i < childCount(); i++) { categoryItem = qobject_cast(child(i)); - if(success = categoryItem->removeUser(ircUser)) { + if((success = categoryItem->removeUser(ircUser))) { if(categoryItem->childCount() == 0) removeChild(i); break; } } - if(!success) { - qDebug() << "didn't find User:" << ircUser << qHash(ircUser); - qDebug() << "==== Childlist for Item:" << this << id() << bufferName() << "===="; - for(int i = 0; i < childCount(); i++) { - categoryItem = qobject_cast(child(i)); - categoryItem->dumpChildList(); - } - qDebug() << "==== End Of Childlist for Item:" << this << id() << bufferName() << "===="; - } - Q_ASSERT(success); +// if(!success) { +// qDebug() << "didn't find User:" << ircUser << qHash(ircUser); +// qDebug() << "==== Childlist for Item:" << this << id() << bufferName() << "===="; +// for(int i = 0; i < childCount(); i++) { +// categoryItem = qobject_cast(child(i)); +// categoryItem->dumpChildList(); +// } +// qDebug() << "==== End Of Childlist for Item:" << this << id() << bufferName() << "===="; +// } +// Q_ASSERT(success); } void BufferItem::userModeChanged(IrcUser *ircUser) { @@ -308,6 +312,11 @@ QString BufferItem::toolTip(int column) const { toolTip.append(tr("Topic: %1").arg(_topic)); } } + if(_ircChannel) { + QString channelMode = _ircChannel->channelModeString(); // channelModeString is compiled on the fly -> thus cache the result + if(!channelMode.isEmpty()) + toolTip.append(tr("Mode: %1").arg(channelMode)); + } } else { toolTip.append(tr("Not active
Double-click to join")); } @@ -560,14 +569,6 @@ bool IrcUserItem::isActive() const { return false; } -IrcUser *IrcUserItem::ircUser() { - return _ircUser; -} - -quint64 IrcUserItem::id() const { - return _id; -} - QVariant IrcUserItem::data(int column, int role) const { switch(role) { case NetworkModel::ItemActiveRole: