X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=ddc71dd4f4ab19c5579b07922f93d4e391ee5bfd;hb=0b4b7c1cc23a915aa42b1d60bf00f047639f1279;hp=63a123e60d8a4bc92c614bf63ed4e6505a53bbe6;hpb=dae6003f55206168e6d3c5cbace84e5b0c65990c;p=quassel.git diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 63a123e6..ddc71dd4 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -463,6 +463,12 @@ bool QueryBufferItem::setData(int column, const QVariant &value, int role) case Qt::EditRole: { QString newName = value.toString(); + + // Sanity check - buffer names must not contain newlines! + int nlpos = newName.indexOf('\n'); + if (nlpos >= 0) + newName = newName.left(nlpos); + if (!newName.isEmpty()) { Client::renameBuffer(bufferId(), newName); return true; @@ -723,7 +729,7 @@ void ChannelBufferItem::addUsersToCategory(const QList &ircUsers) QHash >::const_iterator catIter = categories.constBegin(); while (catIter != categories.constEnd()) { catIter.key()->addUsers(catIter.value()); - catIter++; + ++catIter; } } @@ -947,33 +953,54 @@ QVariant IrcUserItem::data(int column, int role) const QString IrcUserItem::toolTip(int column) const { Q_UNUSED(column); - QStringList toolTip(QString("%1").arg(nickName())); - if (_ircUser->userModes() != "") toolTip[0].append(QString(" (%1)").arg(_ircUser->userModes())); - if (_ircUser->isAway()) { - toolTip[0].append(tr(" is away")); - if (!_ircUser->awayMessage().isEmpty()) - toolTip[0].append(QString(" (%1)").arg(_ircUser->awayMessage())); + QString strTooltip; + QTextStream tooltip( &strTooltip, QIODevice::WriteOnly ); + tooltip << ""; + + tooltip << "

" << nickName(); + if (_ircUser->userModes() != "") { + //TODO: Translate user Modes and add them to the table below + tooltip << " (" << _ircUser->userModes() << ")"; } - if (!_ircUser->realName().isEmpty()) toolTip.append(_ircUser->realName()); - if (!_ircUser->ircOperator().isEmpty()) toolTip.append(QString("%1 %2").arg(nickName()).arg(_ircUser->ircOperator())); - if (!_ircUser->suserHost().isEmpty()) toolTip.append(_ircUser->suserHost()); - if (!_ircUser->whoisServiceReply().isEmpty()) toolTip.append(_ircUser->whoisServiceReply()); + tooltip << "

"; + + auto addRow = [&](const QString& key, const QString& value, bool condition) { + if (condition) + { + tooltip << "" << key << "" << value << ""; + } + }; - toolTip.append(_ircUser->hostmask().remove(0, _ircUser->hostmask().indexOf("!")+1)); + tooltip << ""; + if (_ircUser->isAway()) { + QString awayMessage(tr("(unknown)")); + if(!_ircUser->awayMessage().isEmpty()) { + awayMessage = _ircUser->awayMessage(); + } + addRow(tr("Away Message"), awayMessage, true); + } + addRow(tr("Realname"), _ircUser->realName(), !_ircUser->realName().isEmpty()); + addRow(tr("Operator"), _ircUser->ircOperator(), !_ircUser->ircOperator().isEmpty()); + addRow(tr("Suser Host"), _ircUser->suserHost(),!_ircUser->suserHost().isEmpty()); + addRow(tr("Whois Service Reply"), _ircUser->whoisServiceReply(), !_ircUser->whoisServiceReply().isEmpty()); + addRow(tr("Hostmask"), _ircUser->hostmask().remove(0, _ircUser->hostmask().indexOf("!")+1), true); + addRow(tr("Operator"), _ircUser->ircOperator(), !_ircUser->ircOperator().isEmpty()); if (_ircUser->idleTime().isValid()) { QDateTime now = QDateTime::currentDateTime(); QDateTime idle = _ircUser->idleTime(); int idleTime = idle.secsTo(now); - toolTip.append(tr("idling since %1").arg(secondsToString(idleTime))); + addRow(tr("Idling since"), secondsToString(idleTime), true); } + if (_ircUser->loginTime().isValid()) { - toolTip.append(tr("login time: %1").arg(_ircUser->loginTime().toString())); + addRow(tr("Login time"), _ircUser->loginTime().toString(), true); } - if (!_ircUser->server().isEmpty()) toolTip.append(tr("server: %1").arg(_ircUser->server())); + addRow(tr("Server"), _ircUser->server(), !_ircUser->server().isEmpty()); - return QString("

%1

").arg(toolTip.join("
")); + tooltip << "
"; + return strTooltip; } @@ -1279,7 +1306,8 @@ void NetworkModel::updateBufferActivity(Message &msg) } } else { - updateBufferActivity(bufferItem(msg.bufferInfo()), msg); + if ((BufferSettings(msg.bufferId()).messageFilter() & msg.type()) != msg.type()) + updateBufferActivity(bufferItem(msg.bufferInfo()), msg); } }