[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