return QString();
}
+void BufferItem::ircUserDestroyed() {
+ // PRIVATE
+ IrcUser *ircUser = static_cast<IrcUser *>(sender());
+ removeUserFromCategory(ircUser);
+ emit dataChanged(2);
+}
+
int BufferItem::nickCount() const {
if(_ircChannel)
return _ircChannel->ircUsers().count();
return;
addUserToCategory(ircUser);
+ connect(ircUser, SIGNAL(destroyed()),
+ this, SLOT(ircUserDestroyed()));
emit dataChanged(2);
}
return;
}
+ disconnect(ircUser, 0, this, 0);
removeUserFromCategory(ircUser);
emit dataChanged(2);
}
}
if(!success) {
- qDebug() << "didn't find User:" << ircUser << (quint64)ircUser;
+ 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<UserCategoryItem *>(child(i));
UserCategoryItem *categoryItem;
int categoryId = UserCategoryItem::categoryFromModes(_ircChannel->userModes(ircUser));
- if((categoryItem = qobject_cast<UserCategoryItem *>(childById(qHash(categoryId)))) && categoryItem->childById((quint64)(ircUser)))
+ if((categoryItem = qobject_cast<UserCategoryItem *>(childById(qHash(categoryId)))) && categoryItem->childById(qHash(ircUser)))
return; // already in the right category;
removeUserFromCategory(ircUser);
}
bool BufferItem::setLastSeen() {
+ if(_lastSeen > _lastMsgInsert)
+ return false;
+
_lastSeen = _lastMsgInsert;
BufferSettings(bufferInfo().bufferId()).setLastSeen(_lastSeen);
return true;
}
bool UserCategoryItem::removeUser(IrcUser *ircUser) {
- return removeChildById((quint64)ircUser);
+ return removeChildById(qHash(ircUser));
}
int UserCategoryItem::categoryFromModes(const QString &modes) {
*****************************************/
IrcUserItem::IrcUserItem(IrcUser *ircUser, AbstractTreeItem *parent)
: PropertyMapItem(QStringList() << "nickName", parent),
- _ircUser(ircUser)
+ _ircUser(ircUser),
+ _id(qHash(ircUser))
{
// we don't need to handle the ircUser's destroyed signal since it's automatically removed
// by the IrcChannel::ircUserParted();
}
quint64 IrcUserItem::id() const {
- return qHash((IrcUser *)_ircUser);
+ return _id;
}
QVariant IrcUserItem::data(int column, int role) const {
// experimental stuff :)
QModelIndex NetworkModel::networkIndex(NetworkId networkId) {
- return indexById(networkId.toInt());
+ return indexById(qHash(networkId));
}
NetworkItem *NetworkModel::existsNetworkItem(NetworkId networkId) {
return netItem;
}
+void NetworkModel::networkRemoved(const NetworkId &networkId) {
+ rootItem->removeChildById(qHash(networkId));
+}
+
QModelIndex NetworkModel::bufferIndex(BufferId bufferId) {
AbstractTreeItem *netItem, *bufferItem;
for(int i = 0; i < rootItem->childCount(); i++) {
netItem = rootItem->child(i);
- if((bufferItem = netItem->childById(bufferId.toInt()))) {
- return indexById(bufferItem->id(), networkIndex(netItem->id()));
+ if((bufferItem = netItem->childById(qHash(bufferId)))) {
+ return indexByItem(bufferItem);
}
}
return QModelIndex();
if(bufferId == parent.data(BufferIdRole).value<BufferId>())
return false;
- Q_ASSERT(rootItem->childById(netId.toInt()));
- Q_ASSERT(rootItem->childById(netId.toInt())->childById(bufferId.toInt()));
+ Q_ASSERT(rootItem->childById(qHash(netId)));
+ Q_ASSERT(rootItem->childById(qHash(netId))->childById(qHash(bufferId)));
// source must be a query too
- BufferItem::Type sourceType = (BufferItem::Type)rootItem->childById(netId.toInt())->childById(bufferId.toInt())->data(0, BufferTypeRole).toInt();
+ BufferItem::Type sourceType = (BufferItem::Type)rootItem->childById(qHash(netId))->childById(qHash(bufferId))->data(0, BufferTypeRole).toInt();
if(sourceType != BufferItem::QueryType)
return false;
if(msg.type() == Message::Plain || msg.type() == Message::Notice)
level |= BufferItem::NewMessage;
- const Network *net = Client::network(msg.bufferInfo().networkId());
- if(net && msg.text().contains(net->myNick()))
- level |= BufferItem::Highlight;
+ if(msg.flags() & Message::Highlight)
+ level |= BufferItem::Highlight;
bufferItem(msg.bufferInfo())->updateActivity(level);
}
NetworkId networkId = netVariant.value<NetworkId>();
return Client::network(networkId);
}
+