diff -Naur psi-0.10-test3-orig/iris/include/im.h psi-0.10-test3/iris/include/im.h --- psi-0.10-test3-orig/iris/include/im.h 2005-12-04 23:41:54.000000000 +0000 +++ psi-0.10-test3/iris/include/im.h 2005-12-04 23:49:31.000000000 +0000 @@ -189,6 +189,7 @@ const QString & xsigned() const; const QString & songTitle() const; + const QString & nickName() const; void setPriority(int); void setShow(const QString &); @@ -201,6 +202,7 @@ void setXSigned(const QString &); void setSongTitle(const QString &); + void setNickname(const QString &); // JEP-8 Avatars const QString& avatarHash() const; diff -Naur psi-0.10-test3-orig/iris/xmpp-im/types.cpp psi-0.10-test3/iris/xmpp-im/types.cpp --- psi-0.10-test3-orig/iris/xmpp-im/types.cpp 2005-12-04 23:41:54.000000000 +0000 +++ psi-0.10-test3/iris/xmpp-im/types.cpp 2005-12-04 23:49:00.000000000 +0000 @@ -884,6 +884,7 @@ bool v_isInvisible; QString v_xsigned; + QString v_nickname; // gabber song extension QString v_songTitle; @@ -986,6 +987,11 @@ d->v_songTitle = _songtitle; } +void Status::setNickname(const QString & _nickname) +{ + d->v_nickname = _nickname; +} + const QString& Status::avatarHash() const { return v_avatarHash; @@ -1078,6 +1084,11 @@ return d->v_songTitle; } +const QString & Status::nickName() const +{ + return d->v_nickname; +} + int Status::errorCode() const { return d->ecode; diff -Naur psi-0.10-test3-orig/iris/xmpp-im/xmpp_tasks.cpp psi-0.10-test3/iris/xmpp-im/xmpp_tasks.cpp --- psi-0.10-test3-orig/iris/xmpp-im/xmpp_tasks.cpp 2005-12-04 23:41:46.000000000 +0000 +++ psi-0.10-test3/iris/xmpp-im/xmpp_tasks.cpp 2005-12-04 23:51:13.000000000 +0000 @@ -523,10 +523,13 @@ x.appendChild(textTag(doc(), "hash", s.avatarHash())); tag.appendChild(x); } - if(s.hasPhotoHash()) { + if(s.hasPhotoHash() || !s.nickName().isEmpty()) { QDomElement x = doc()->createElement("x"); x.setAttribute("xmlns", "vcard-temp:x:update"); - x.appendChild(textTag(doc(), "photo", s.avatarHash())); + if(s.hasPhotoHash()) + x.appendChild(textTag(doc(), "photo", s.avatarHash())); + if(!s.nickName().isEmpty()) + x.appendChild(textTag(doc(), "nickname", s.nickName())); tag.appendChild(x); } } @@ -694,6 +697,11 @@ p.setPhotoHash(tagContent(t)); else p.setPhotoHash(""); + t = findSubTag(i, "nickname", &found); + if (found) + p.setNickname(tagContent(t)); + else + p.setNickname(""); } else if(i.tagName() == "x" && i.attribute("xmlns") == "http://jabber.org/protocol/muc") { p.setMuc(true); diff -Naur psi-0.10-test3-orig/src/psiaccount.cpp psi-0.10-test3/src/psiaccount.cpp --- psi-0.10-test3-orig/src/psiaccount.cpp 2005-12-04 23:41:55.000000000 +0000 +++ psi-0.10-test3/src/psiaccount.cpp 2005-12-05 00:10:07.000000000 +0000 @@ -1831,7 +1831,8 @@ { d->loginStatus = s; - d->client->setPresence(s); + d->loginStatus.setNickname(nick()); + d->client->setPresence(d->loginStatus); if(presenceSent) { stateChanged(); } @@ -3884,6 +3885,7 @@ d->self.setName(nick); cpUpdate(d->self); nickChanged(); + setStatusActual(d->loginStatus); } QString PsiAccount::nick() const diff -Naur psi-0.10-test3-orig/src/userlist.cpp psi-0.10-test3/src/userlist.cpp --- psi-0.10-test3-orig/src/userlist.cpp 2005-12-04 23:41:55.000000000 +0000 +++ psi-0.10-test3/src/userlist.cpp 2005-12-05 00:08:15.000000000 +0000 @@ -450,6 +450,15 @@ str += QString("
") + QObject::tr("Listening to") + QString(": %1").arg(s) + ""; } + // nickname + if(!r.status().nickName().isEmpty()) { + QString nick = r.status().nickName(); + if(trim) + nick = dot_truncate(nick, 80); + nick = expandEntities(nick); + str += QString("
") + QObject::tr("Nickname") + QString(": %1").arg(nick) + ""; + } + // client if(!r.versionString().isEmpty()) { QString ver = r.versionString();