X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Fnetworkmodel.cpp;h=9202036064785307fe8ed1c8f5315548de7d16ba;hb=1adc00219ba072da57994764d086beed8ffb7bb4;hp=1de02e50cec6841602d8802d89455a0c0e282d82;hpb=00f4731d43366b9c5fb535147597c254084984ce;p=quassel.git diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 1de02e50..92020360 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -317,6 +317,8 @@ QueryBufferItem::QueryBufferItem(const BufferInfo &bufferInfo, NetworkItem *pare QVariant QueryBufferItem::data(int column, int role) const { switch(role) { + case NetworkModel::IrcUserRole: + return QVariant::fromValue(_ircUser); case NetworkModel::UserAwayRole: return (bool)_ircUser ? _ircUser->isAway() : false; default: @@ -361,12 +363,12 @@ QString QueryBufferItem::toolTip(int column) const { void QueryBufferItem::attachIrcUser(IrcUser *ircUser) { _ircUser = ircUser; - connect(_ircUser, SIGNAL(destroyed()), this, SLOT(ircUserDestroyed())); + connect(_ircUser, SIGNAL(quited()), this, SLOT(ircUserQuited())); connect(_ircUser, SIGNAL(awaySet(bool)), this, SIGNAL(dataChanged())); emit dataChanged(); } -void QueryBufferItem::ircUserDestroyed() { +void QueryBufferItem::ircUserQuited() { _ircUser = 0; emit dataChanged(); } @@ -387,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 QVariant::fromValue(_ircChannel); + default: + return BufferItem::data(column, role); + } +} + QString ChannelBufferItem::toolTip(int column) const { Q_UNUSED(column); QStringList toolTip; @@ -431,8 +442,8 @@ void ChannelBufferItem::attachIrcChannel(IrcChannel *ircChannel) { this, SLOT(join(QList))); connect(ircChannel, SIGNAL(ircUserParted(IrcUser *)), this, SLOT(part(IrcUser *))); - connect(ircChannel, SIGNAL(destroyed()), - this, SLOT(ircChannelDestroyed())); + connect(ircChannel, SIGNAL(parted()), + this, SLOT(ircChannelParted())); connect(ircChannel, SIGNAL(ircUserModesSet(IrcUser *, QString)), this, SLOT(userModeChanged(IrcUser *))); connect(ircChannel, SIGNAL(ircUserModeAdded(IrcUser *, QString)), @@ -446,7 +457,7 @@ void ChannelBufferItem::attachIrcChannel(IrcChannel *ircChannel) { emit dataChanged(); } -void ChannelBufferItem::ircChannelDestroyed() { +void ChannelBufferItem::ircChannelParted() { Q_CHECK_PTR(_ircChannel); disconnect(_ircChannel, 0, this, 0); _ircChannel = 0; @@ -661,7 +672,7 @@ IrcUserItem::IrcUserItem(IrcUser *ircUser, AbstractTreeItem *parent) _ircUser(ircUser) { setObjectName(ircUser->nick()); - connect(ircUser, SIGNAL(destroyed()), this, SLOT(ircUserDestroyed())); + connect(ircUser, SIGNAL(quited()), this, SLOT(ircUserQuited())); connect(ircUser, SIGNAL(nickSet(QString)), this, SIGNAL(dataChanged())); connect(ircUser, SIGNAL(awaySet(bool)), this, SIGNAL(dataChanged())); } @@ -678,6 +689,12 @@ QVariant IrcUserItem::data(int column, int role) const { return parent()->data(column, role); case NetworkModel::BufferInfoRole: return parent()->data(column, role); + case NetworkModel::IrcChannelRole: + return parent()->data(column, role); + case NetworkModel::IrcUserRole: + return QVariant::fromValue(_ircUser.data()); + case NetworkModel::UserAwayRole: + return (bool)_ircUser ? _ircUser->isAway() : false; default: return PropertyMapItem::data(column, role); } @@ -714,12 +731,6 @@ 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 *****************************************/ @@ -742,7 +753,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)); @@ -762,7 +773,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; @@ -794,7 +805,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 @@ -1041,11 +1052,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(); }