[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