_activity(NoActivity)
{
// determine BufferType
- if(bufferInfo.buffer().isEmpty())
+ if(bufferInfo.bufferName().isEmpty())
_type = StatusType;
- else if(isChannelName(bufferInfo.buffer()))
+ else if(isChannelName(bufferInfo.bufferName()))
_type = ChannelType;
else
_type = QueryType;
}
quint64 BufferItem::id() const {
- return bufferInfo().uid().toInt();
+ return bufferInfo().bufferId().toInt();
}
bool BufferItem::isStatusBuffer() const {
case NetworkModel::ItemTypeRole:
return NetworkModel::BufferItemType;
case NetworkModel::BufferIdRole:
- return qVariantFromValue(bufferInfo().uid());
+ return qVariantFromValue(bufferInfo().bufferId());
case NetworkModel::NetworkIdRole:
return qVariantFromValue(bufferInfo().networkId());
case NetworkModel::BufferInfoRole:
if(bufferType() == StatusType)
return tr("Status Buffer");
else
- return bufferInfo().buffer();
+ return bufferInfo().bufferName();
}
QString BufferItem::topic() const {
UserCategoryItem *categoryItem = 0;
for(int i = 0; i < childCount(); i++) {
categoryItem = qobject_cast<UserCategoryItem *>(child(i));
- if(success = categoryItem->removeChildById((quint64)ircUser)) {
+ if(success = categoryItem->removeUser(ircUser)) {
if(categoryItem->childCount() == 0)
removeChild(i);
break;
}
}
-
if(!success) {
qDebug() << "didn't find User:" << ircUser << (quint64)ircUser;
qDebug() << "==== Childlist for Item:" << this << id() << bufferName() << "====";
newChild(new IrcUserItem(ircUser, this));
}
+bool UserCategoryItem::removeUser(IrcUser *ircUser) {
+ return removeChildById((quint64)ircUser);
+}
+
int UserCategoryItem::categoryFromModes(const QString &modes) {
for(int i = 0; i < categories.count(); i++) {
if(modes.contains(categories[i].mode))
QVariant UserCategoryItem::data(int column, int role) const {
switch(role) {
+ case NetworkModel::ItemActiveRole:
+ return true;
case NetworkModel::ItemTypeRole:
return NetworkModel::UserCategoryItemType;
case NetworkModel::BufferIdRole:
QVariant IrcUserItem::data(int column, int role) const {
switch(role) {
+ case NetworkModel::ItemActiveRole:
+ return !_ircUser->isAway();
case NetworkModel::ItemTypeRole:
return NetworkModel::IrcUserItemType;
case NetworkModel::BufferIdRole:
QString IrcUserItem::toolTip(int column) const {
Q_UNUSED(column);
- return "<p><b>" + nickName() + "</b><br />" + _ircUser->hostmask() + "</p>";
+ QStringList toolTip(QString("<b>%1</b>").arg(nickName()));
+ if(_ircUser->isAway()) toolTip[0].append(" is away");
+ if(!_ircUser->awayMessage().isEmpty()) toolTip[0].append(QString(" (%1)").arg(_ircUser->awayMessage()));
+ if(!_ircUser->realName().isEmpty()) toolTip.append(_ircUser->realName());
+ if(!_ircUser->ircOperator().isEmpty()) toolTip.append(_ircUser->ircOperator());
+ toolTip.append(_ircUser->hostmask());
+
+ if(_ircUser->idleTime().isValid()) {
+ QDateTime now = QDateTime::currentDateTime();
+ QDateTime idle = _ircUser->idleTime();
+ int idleTime = idle.secsTo(now);
+
+ QList< QPair<int, QString> > timeUnit;
+ timeUnit.append(qMakePair(365*60*60, tr("year")));
+ timeUnit.append(qMakePair(24*60*60, tr("day")));
+ timeUnit.append(qMakePair(60*60, tr("h")));
+ timeUnit.append(qMakePair(60, tr("min")));
+ timeUnit.append(qMakePair(1, tr("sec")));
+
+ QString idleString(' ');
+ for(int i=0; i < timeUnit.size(); i++) {
+ int n = idleTime / timeUnit[i].first;
+ if(n > 0) {
+ idleString += QString("%1 %2 ").arg(QString::number(n), timeUnit[i].second);
+ }
+ idleTime = idleTime % timeUnit[i].first;
+ }
+ toolTip.append(QString("idling since %1").arg(idleString));
+ }
+
+ if(!_ircUser->server().isEmpty()) toolTip.append(QString("server: %1").arg(_ircUser->server()));
+
+ return QString("<p> %1 </p>").arg(toolTip.join("<br />"));
}
void IrcUserItem::setNick(QString newNick) {
}
BufferItem *NetworkModel::existsBufferItem(const BufferInfo &bufferInfo) {
- QModelIndex bufferIdx = bufferIndex(bufferInfo.uid());
+ QModelIndex bufferIdx = bufferIndex(bufferInfo.bufferId());
if(bufferIdx.isValid())
return static_cast<BufferItem *>(bufferIdx.internalPointer());
else
if(msg.type() == Message::Plain || msg.type() == Message::Notice)
level |= BufferItem::NewMessage;
- if(msg.flags() & Message::Highlight)
+ const Network *net = Client::network(msg.bufferInfo().networkId());
+ if(net && msg.text().contains(net->myNick()))
level |= BufferItem::Highlight;
- bufferItem(msg.buffer())->updateActivity(level);
+ bufferItem(msg.bufferInfo())->updateActivity(level);
}