[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [Konversation] 7b55e13: More server nick info tracking,
From: Gary Cramblitt <garycramblitt () comcast ! net>
Date: 2010-07-01 13:27:18
Message-ID: 20100701132718.48E80BB558C () projects ! kde ! org
[Download RAW message or body]
commit 7b55e138a6cccf4a390e338ebec95c0db0ffaa76
Author: Gary Cramblitt <garycramblitt@comcast.net>
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 <klistview.h>
#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<KonversationApplication *>(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; index<channelList.count(); index++ )
+ {
+ // Known channels where nickname is online.
+ new KListViewItem(nickRoot, channelList[index]);
+ }
+ nickRoot->setOpen(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&);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic