+
+QVariant IrcUserItem::data(int column, int role) const
+{
+ switch (role) {
+ case NetworkModel::ItemActiveRole:
+ return isActive();
+ case NetworkModel::ItemTypeRole:
+ return NetworkModel::IrcUserItemType;
+ case NetworkModel::BufferIdRole:
+ return parent()->data(column, role);
+ case NetworkModel::NetworkIdRole:
+ 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<QObject *>(_ircUser.data());
+ case NetworkModel::UserAwayRole:
+ return (bool)_ircUser ? _ircUser->isAway() : false;
+ default:
+ return PropertyMapItem::data(column, role);
+ }
+}
+
+
+QString IrcUserItem::toolTip(int column) const
+{
+ Q_UNUSED(column);
+ QString strTooltip;
+ QTextStream tooltip( &strTooltip, QIODevice::WriteOnly );
+ tooltip << "<qt><style>.bold { font-weight: bold; }</style>";
+
+ tooltip << "<p class='bold' align='center'>" << nickName();
+ if (_ircUser->userModes() != "") {
+ //TODO: Translate user Modes and add them to the table below
+ tooltip << " (" << _ircUser->userModes() << ")";
+ }
+ tooltip << "</p>";
+
+ auto addRow = [&](const QString& key, const QString& value, bool condition) {
+ if (condition)
+ {
+ tooltip << "<tr><td class='bold' align='right'>" << key << "</td><td>" << value << "</td></tr>";
+ }
+ };
+
+ tooltip << "<table cellspacing='5' cellpadding='0'>";
+ 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);
+ addRow(tr("Idling since"), secondsToString(idleTime), true);
+ }
+
+ if (_ircUser->loginTime().isValid()) {
+ addRow(tr("Login time"), _ircUser->loginTime().toString(), true);
+ }
+
+ addRow(tr("Server"), _ircUser->server(), !_ircUser->server().isEmpty());
+
+ tooltip << "</table></qt>";
+ return strTooltip;
+}
+
+