X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=f58dc971d618a96a2963287fbda52021084e1e6c;hp=ed2abaeb7805e8f021c0468aa50ca09f7dd70bb5;hb=e3ad107e9783ac5ca4064fd7ce3cac7ff092e316;hpb=0025d931dcb96ec494ff696b10f6ae1e4182698e diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index ed2abaeb..f58dc971 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -389,6 +389,15 @@ ChannelBufferItem::ChannelBufferItem(const BufferInfo &bufferInfo, AbstractTreeI attachIrcChannel(ircChannel); } +QVariant ChannelBufferItem::data(int column, int role) const { + switch(role) { + case NetworkModel::IrcChannelRole: + return _ircChannel; + default: + return BufferItem::data(column, role); + } +} + QString ChannelBufferItem::toolTip(int column) const { Q_UNUSED(column); QStringList toolTip; @@ -680,6 +689,10 @@ QVariant IrcUserItem::data(int column, int role) const { return parent()->data(column, role); case NetworkModel::BufferInfoRole: return parent()->data(column, role); + case NetworkModel::IrcUserRole: + return _ircUser.data(); + case NetworkModel::UserAwayRole: + return (bool)_ircUser ? _ircUser->isAway() : false; default: return PropertyMapItem::data(column, role); } @@ -744,7 +757,7 @@ bool NetworkModel::isBufferIndex(const QModelIndex &index) const { return index.data(NetworkModel::ItemTypeRole) == NetworkModel::BufferItemType; } -int NetworkModel::networkRow(NetworkId networkId) { +int NetworkModel::networkRow(NetworkId networkId) const { NetworkItem *netItem = 0; for(int i = 0; i < rootItem->childCount(); i++) { netItem = qobject_cast(rootItem->child(i)); @@ -764,7 +777,7 @@ QModelIndex NetworkModel::networkIndex(NetworkId networkId) { return indexByItem(qobject_cast(rootItem->child(netRow))); } -NetworkItem *NetworkModel::findNetworkItem(NetworkId networkId) { +NetworkItem *NetworkModel::findNetworkItem(NetworkId networkId) const { int netRow = networkRow(networkId); if(netRow == -1) return 0; @@ -796,7 +809,7 @@ QModelIndex NetworkModel::bufferIndex(BufferId bufferId) { return indexByItem(_bufferItemCache[bufferId]); } -BufferItem *NetworkModel::findBufferItem(BufferId bufferId) { +BufferItem *NetworkModel::findBufferItem(BufferId bufferId) const { if(_bufferItemCache.contains(bufferId)) return _bufferItemCache[bufferId]; else @@ -1043,11 +1056,15 @@ QString NetworkModel::networkName(BufferId bufferId) const { return QString(); } -BufferId NetworkModel::bufferId(NetworkId networkId, const QString &bufferName) const { - foreach(BufferItem *item, _bufferItemCache) { - NetworkItem *netItem = qobject_cast(item->parent()); - if(netItem && netItem->networkId() == networkId && item->bufferName() == bufferName) - return item->bufferId(); +BufferId NetworkModel::bufferId(NetworkId networkId, const QString &bufferName, Qt::CaseSensitivity cs) const { + const NetworkItem *netItem = findNetworkItem(networkId); + if(!netItem) + return BufferId(); + + for(int i = 0; i < netItem->childCount(); i++) { + BufferItem *bufferItem = qobject_cast(netItem->child(i)); + if(bufferItem && !bufferItem->bufferName().compare(bufferName, cs)) + return bufferItem->bufferId(); } return BufferId(); }