From kde-commits Thu Jul 01 13:27:18 2010 From: Gary Cramblitt Date: Thu, 01 Jul 2010 13:27:18 +0000 To: kde-commits Subject: [Konversation] 7b55e13: More server nick info tracking, Message-Id: <20100701132718.48E80BB558C () projects ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=127800008921185 commit 7b55e138a6cccf4a390e338ebec95c0db0ffaa76 Author: Gary Cramblitt Date: Thu Jan 22 03:19:15 2004 +0000 More server nick info tracking, still IFDEFed off. svn path=/trunk/kdeextragear-2/konversation/; revision=281710 diff --git a/konversation/nickinfo.cpp b/konversation/nickinfo.cpp index bc307a7..2b6c1fd 100644 --- a/konversation/nickinfo.cpp +++ b/konversation/nickinfo.cpp @@ -50,7 +50,10 @@ Server* NickInfo::getServer() { return owningServer; } // Set properties of NickInfo object. // If any of these are called, call Server::nickInfoUpdated to let Server know about the change. void NickInfo::setNickname(const QString& newNickname) { nickname = newNickname; } -void NickInfo::setHostmask(const QString& newMask) { hostmask = newMask; } +void NickInfo::setHostmask(const QString& newMask) +{ + if (!newMask.isEmpty()) hostmask = newMask; +} void NickInfo::setAway(bool state) { away = state; } void NickInfo::setAwayMessage(const QString& newMessage) { awayMessage = newMessage; } void NickInfo::setIdentdInfo(const QString& newIdentdInfo) {identdInfo = newIdentdInfo; } diff --git a/konversation/nicksonline.cpp b/konversation/nicksonline.cpp index 3bf6e14..0bc5cf7 100644 --- a/konversation/nicksonline.cpp +++ b/konversation/nicksonline.cpp @@ -23,6 +23,8 @@ #include #include "nicksonline.h" +#include "server.h" +#include "konversationapplication.h" NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent) { @@ -31,7 +33,7 @@ NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent) nickListView=new KListView(this); - nickListView->addColumn(i18n("Nickname")); + nickListView->addColumn(i18n("Server/Nickname")); nickListView->setRootIsDecorated(false); nickListView->setFullWidth(true); @@ -55,6 +57,60 @@ NicksOnline::~NicksOnline() void NicksOnline::setOnlineList(const QString& serverName,const QStringList& list,bool changed) { +#ifdef USE_NICKINFO + QListViewItem* serverRoot=nickListView->findItem(serverName,0); + // If server is not in our list, or if the list changed, then display the new list. + if ( true ) + { + delete serverRoot; + if (nickListView->columns() == 1) + { + nickListView->addColumn(i18n("Additional Information")); + nickListView->setColumnText(0, i18n("Server/Nickname/Channel")); + } + KListViewItem* newServerRoot=new KListViewItem(nickListView,serverName); + KonversationApplication *konvApp=static_cast(KApplication::kApplication()); + Server* server = konvApp->getServerByName(serverName); + const NickInfoList* nickInfoList = server->getNicksOnline(); + NickInfoListIterator itOnline(*nickInfoList); + // Online nicknames. + NickInfo* nickInfo; + for ( ; (nickInfo=itOnline.current()) ; ++itOnline) + { + QString nickname = nickInfo->getNickname(); + QString nickAdditionalInfo = ""; + if (nickInfo->isAway()) + { + nickAdditionalInfo = nickAdditionalInfo + i18n("Away"); + QString awayMsg = nickInfo->getAwayMessage(); + if (!awayMsg.isEmpty()) nickAdditionalInfo = nickAdditionalInfo + "(" + awayMsg + ")"; + } + nickAdditionalInfo = nickAdditionalInfo + " "; + nickAdditionalInfo = nickAdditionalInfo + nickInfo->getHostmask(); + KListViewItem* nickRoot = new KListViewItem(newServerRoot, nickname, nickAdditionalInfo); + QStringList channelList = server->getNickChannels(nickname); + for ( unsigned int index=0; indexsetOpen(true); + } + // Offline nicknames. + KListViewItem* offlineRoot = new KListViewItem(newServerRoot, i18n("Offline")); + nickInfoList = server->getNicksOffline(); + NickInfoListIterator itOffline(*nickInfoList); + for ( ; (nickInfo=itOffline.current()) ; ++itOffline) + { + new KListViewItem(offlineRoot, nickInfo->getNickname()); + } + newServerRoot->setOpen(true); + offlineRoot->setOpen(true); + nickListView->adjustColumn(0); + } + +#else + QListViewItem* serverRoot=nickListView->findItem(serverName,0); // If server is not in our list, or if the list changed, then display the new list. if ( (serverRoot == 0) || changed) @@ -70,6 +126,7 @@ void NicksOnline::setOnlineList(const QString& serverName,const QStringList& lis newServerRoot->setOpen(true); } } +#endif } void NicksOnline::processDoubleClick(QListViewItem* item) diff --git a/konversation/server.cpp b/konversation/server.cpp index 981cdba..2ec94b6 100644 --- a/konversation/server.cpp +++ b/konversation/server.cpp @@ -59,9 +59,6 @@ typedef unsigned long long __u64; #endif #endif -// Comment this out to turn off the NICKINFO code. -// #define USE_NICKINFO - Server::Server(KonversationMainWindow* newMainWindow,int id) { identity=0; @@ -943,6 +940,11 @@ QStringList Server::getNickChannels(QString& nickname) return channellist; } +// Returns a list of the nicks on the watch list that are online. +const NickInfoList* Server::getNicksOnline() { return &nicknamesOnline; } + +// Returns a list of the nicks on the watch list that are offline. +const NickInfoList* Server::getNicksOffline() { return &nicknamesOffline; } QString Server::getIp() { @@ -1337,7 +1339,7 @@ void Server::sendJoinCommand(const QString& name) void Server::joinChannel(const QString &name, const QString &hostmask, const QString &/*key*/) { - // (re-)join channel, open a new panel if needded + // (re-)join channel, open a new panel if needed Channel* channel=getChannelByName(name); if(!channel) { @@ -1966,10 +1968,19 @@ void Server::renameNick(const QString &nickname, const QString &newNick) #endif } +#ifdef USE_NICKINFO +void Server::userhost(const QString& nick,const QString& hostmask,bool away,bool /* ircOp */) +{ + addHostmaskToNick(nick,hostmask); + NickInfo* nickInfo = getNickInfo(nick); + if (nickInfo) nickInfo->setAway(away); +} +#else void Server::userhost(const QString& nick,const QString& hostmask,bool /* away */ ,bool /* ircOp */) { addHostmaskToNick(nick,hostmask); } +#endif void Server::appendToChannel(const QString& channel,const QString& nickname,const QString& message) { diff --git a/konversation/server.h b/konversation/server.h index c4db9e1..59dcffb 100644 --- a/konversation/server.h +++ b/konversation/server.h @@ -27,6 +27,9 @@ #include "dcctransfer.h" #include "nickinfo.h" +// Comment this out to turn off the NICKINFO code. +// #define USE_NICKINFO + /* @author Dario Abatianni */ @@ -165,6 +168,10 @@ class Server : public QObject // Returns pointer to the ChannelNick (mode and pointer to NickInfo) for a given channel and nickname. // 0 if not found. ChannelNick* getChannelNick(const QString& channelName, const QString& nickname); + // Returns a list of the nicks on the watch list that are online. + const NickInfoList* getNicksOnline(); + // Returns a list of the nicks on the watch list that are offline. + const NickInfoList* getNicksOffline(); signals: void nicknameChanged(const QString&);