[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [Konversation] 0e9b164: More server nick info tracking. If you want
From:       Gary Cramblitt <garycramblitt () comcast ! net>
Date:       2010-07-01 13:27:18
Message-ID: 20100701132718.E9E8BBB5595 () projects ! kde ! org
[Download RAW message or body]

commit 0e9b164405d0532184ef88037cf8322d1a843376
Author: Gary Cramblitt <garycramblitt@comcast.net>
Date:   Sun Jan 25 04:02:17 2004 +0000

    More server nick info tracking.  If you want to play with this, uncomment define \
USE_NICKINFO in server.h.  
    svn path=/trunk/kdeextragear-2/konversation/; revision=282414

diff --git a/konversation/inputfilter.cpp b/konversation/inputfilter.cpp
index 40ba570..3d06134 100644
--- a/konversation/inputfilter.cpp
+++ b/konversation/inputfilter.cpp
@@ -972,6 +972,11 @@ void InputFilter::parseServerCommand(const QString &prefix, \
const QString &comma  }
       case RPL_AWAY:
         {
+#ifdef USE_NICKINFO
+          NickInfo* nickInfo = server->obtainNickInfo(parameterList[1]);
+          nickInfo->setAway(true);
+          nickInfo->setAwayMessage(trailing);
+#endif
           server->appendStatusMessage(i18n("Away"),i18n("%1 is away: \
%2").arg(parameterList[1]).arg(trailing));  break;
         }
@@ -980,8 +985,23 @@ void InputFilter::parseServerCommand(const QString &prefix, \
                const QString &comma
           server->appendStatusMessage(i18n("Invite"),i18n("You invited %1 into \
channel %2.").arg(parameterList[1]).arg(parameterList[2]));  break;
         }
+/* Sample WHOIS response
+/WHOIS psn 
+[19:11] :zahn.freenode.net 311 PhantomsDad psn ~psn \
h106n2fls23o1068.bredband.comhem.se * :Peter Simonsson  +[19:11] :zahn.freenode.net \
319 PhantomsDad psn :#kde-devel #koffice  +[19:11] :zahn.freenode.net 312 PhantomsDad \
psn irc.freenode.net :http://freenode.net/  +[19:11] :zahn.freenode.net 301 \
PhantomsDad psn :away  +[19:11] :zahn.freenode.net 320 PhantomsDad psn :is an \
identified user  +[19:11] :zahn.freenode.net 317 PhantomsDad psn 4921 1074973024 \
:seconds idle, signon time  +[19:11] :zahn.freenode.net 318 PhantomsDad psn :End of \
/WHOIS list. +*/
       case RPL_WHOISUSER:
         {
+#ifdef USE_NICKINFO
+          NickInfo* nickInfo = server->obtainNickInfo(parameterList[1]);
+          nickInfo->setHostmask(i18n("%1@%2").arg(parameterList[2]).arg(parameterList[3]));
 +          nickInfo->setRealName(trailing);
+#endif
           server->appendStatusMessage(i18n("Whois"),
                                       i18n("%1 is %2&#64;%3 \
                (%4)").arg(parameterList[1]) // Use &#64; instead of @
                                       .arg(parameterList[2])                         \
// to avoid parsing as email @@ -1002,17 +1022,47 @@ void \
InputFilter::parseServerCommand(const QString &prefix, const QString &comma  {
             QString lookChannel=channelList[index];
             if(lookChannel.startsWith("*"))
+            {
               adminChannels.append(lookChannel.mid(1));
+#ifdef USE_NICKINFO
+              server->setChannelNick(lookChannel.mid(1), parameterList[1], 16);
+#endif
+            }
             else if(lookChannel.startsWith("!"))
+            {
               ownerChannels.append(lookChannel.mid(1));
+#ifdef USE_NICKINFO
+              server->setChannelNick(lookChannel.mid(1), parameterList[1], 8); 
+#endif
+            }
             else if(lookChannel.startsWith("@"))
+            {
               opChannels.append(lookChannel.mid(1));
+#ifdef USE_NICKINFO
+              server->setChannelNick(lookChannel.mid(1), parameterList[1], 4);
+#endif
+            }
             else if(lookChannel.startsWith("%"))
+            {
               halfopChannels.append(lookChannel.mid(1));
+#ifdef USE_NICKINFO
+              server->setChannelNick(lookChannel.mid(1), parameterList[1], 2); 
+#endif
+            }
             else if(lookChannel.startsWith("+"))
+            {
               voiceChannels.append(lookChannel.mid(1));
+#ifdef USE_NICKINFO
+              server->setChannelNick(lookChannel.mid(1), parameterList[1], 1); 
+#endif
+            }
             else
+            {
               userChannels.append(lookChannel);
+#ifdef USE_NICKINFO
+              server->setChannelNick(lookChannel, parameterList[1], 0); 
+#endif
+            }
           } // endfor
           if(userChannels.count())
           {
@@ -1054,6 +1104,15 @@ void InputFilter::parseServerCommand(const QString &prefix, \
const QString &comma  }
       case RPL_WHOISSERVER:
         {
+#ifdef USE_NICKINFO
+          NickInfo* nickInfo = server->obtainNickInfo(parameterList[1]);
+          nickInfo->setNetServer(parameterList[2]);
+          nickInfo->setNetServerInfo(trailing);
+          // Clear the away state on assumption that if nick is away, this message \
will be followed +          // by a 301 RPL_AWAY message.  Not necessary a invalid \
assumption, but what can we do? +          nickInfo->setAway(false);
+          nickInfo->setAwayMessage(QString::null);
+#endif
           server->appendStatusMessage(i18n("Whois"),
                                       i18n("%1 is online via %2 \
                (%3)").arg(parameterList[1])
                                       .arg(parameterList[2])
@@ -1096,12 +1155,20 @@ void InputFilter::parseServerCommand(const QString &prefix, \
const QString &comma  QDateTime when;
             when.setTime_t(parameterList[3].toUInt());
 
+#ifdef USE_NICKINFO
+            NickInfo* nickInfo = server->obtainNickInfo(parameterList[1]);
+            nickInfo->setOnlineSince(when);
+#endif
             server->appendStatusMessage(i18n("Whois"),i18n("%1 is online since \
%2.").arg(parameterList[1]).arg(when.toString(Qt::LocalDate)));  break;
           }
         }
       case RPL_ENDOFWHOIS:
         {
+#ifdef USE_NICKINFO
+          NickInfo* nickInfo = server->getNickInfo(parameterList[1]);
+          if (nickInfo) server->nickInfoUpdated(nickInfo);
+#endif
           server->appendStatusMessage(i18n("Whois"),i18n("End of WHOIS list."));
           break;
         }
@@ -1124,7 +1191,7 @@ void InputFilter::parseServerCommand(const QString &prefix, \
const QString &comma  mask=mask.mid(1);
             if(ircOp) nick=nick.left(nick.length()-1);
 
-            // inform serer of this user's data
+            // inform server of this user's data
             emit userhost(nick,mask,away,ircOp);
 
             // display message only if this was no automatic request
diff --git a/konversation/nickinfo.cpp b/konversation/nickinfo.cpp
index 8ea7773..b068741 100644
--- a/konversation/nickinfo.cpp
+++ b/konversation/nickinfo.cpp
@@ -45,6 +45,10 @@ QString NickInfo::getAwayMessage() { return awayMessage; }
 QString NickInfo::getIdentdInfo() { return identdInfo; }
 QString NickInfo::getVersionInfo() { return versionInfo; }
 bool NickInfo::isNotified() { return notified; }
+QString NickInfo::getRealName() { return realName; }
+QString NickInfo::getNetServer() { return netServer; }
+QString NickInfo::getNetServerInfo() { return netServerInfo; }
+QDateTime NickInfo::getOnlineSince() { return onlineSince; }
      
 // Return the Server object that owns this NickInfo object.
 Server* NickInfo::getServer() { return owningServer; }
@@ -52,13 +56,13 @@ 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)
-{
-  if (!newMask.isEmpty()) 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; }  void NickInfo::setVersionInfo(const QString& newVersionInfo) { \
versionInfo = newVersionInfo; }  void NickInfo::setNotified(bool state) { notified = \
                state; }
-
+void NickInfo::setRealName(const QString& newRealName) { if (!newRealName.isEmpty()) \
realName = newRealName; } +void NickInfo::setNetServer(const QString& newNetServer) { \
if (!newNetServer.isEmpty()) netServer = newNetServer; } +void \
NickInfo::setNetServerInfo(const QString& newNetServerInfo) { if \
(!newNetServerInfo.isEmpty()) netServerInfo = newNetServerInfo; } +void \
NickInfo::setOnlineSince(const QDateTime& datetime) { if (!datetime.isNull()) \
                onlineSince = datetime; }
diff --git a/konversation/nickinfo.h b/konversation/nickinfo.h
index a7bf135..6e4a6dc 100644
--- a/konversation/nickinfo.h
+++ b/konversation/nickinfo.h
@@ -20,6 +20,7 @@
 */
 
 #include <qstringlist.h>
+#include <qdatetime.h>
 
 class Server;
 
@@ -44,6 +45,10 @@ class NickInfo
     QString getIdentdInfo();
     QString getVersionInfo();
     bool isNotified();
+    QString getRealName();
+    QString getNetServer();
+    QString getNetServerInfo();
+    QDateTime getOnlineSince();
      
     // Return the Server object that owns this NickInfo object.
     Server* getServer();
@@ -57,6 +62,10 @@ class NickInfo
     void setIdentdInfo(const QString& newIdentdInfo);
     void setVersionInfo(const QString& newVersionInfo);
     void setNotified(bool state);
+    void setRealName(const QString& newRealName);
+    void setNetServer(const QString& newNetServer);
+    void setNetServerInfo(const QString& newNetServerInfo);
+    void setOnlineSince(const QDateTime& datetime);
 
   protected:
     QString nickname;
@@ -67,6 +76,10 @@ class NickInfo
     QString identdInfo;
     QString versionInfo;
     bool notified;
+    QString realName;
+    QString netServer;
+    QString netServerInfo;
+    QDateTime onlineSince;
 };
 
 #endif
diff --git a/konversation/nicksonline.cpp b/konversation/nicksonline.cpp
index d85eea8..52f1970 100644
--- a/konversation/nicksonline.cpp
+++ b/konversation/nicksonline.cpp
@@ -26,6 +26,10 @@
 #include "server.h"
 #include "konversationapplication.h"
 
+#ifdef USE_NICKINFO
+#include "images.h"
+#endif
+
 NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
 {  
   setName(i18n("Watched Nicks Online"));
@@ -69,31 +73,49 @@ void NicksOnline::setOnlineList(const QString& serverName,const \
QStringList& lis  nickListView->setColumnText(0, i18n("Server/Nickname/Channel"));
     }
     KListViewItem* newServerRoot=new KListViewItem(nickListView,serverName);
+    // Get a green LED for flagging of joined channels.
+    Images leds;
+    QIconSet currentLeds = leds.getGreenLed(false);
+    QPixmap joinedLed = currentLeds.pixmap(QIconSet::Automatic, QIconSet::Active, \
QIconSet::On); +    // Get the server object corresponding to the server name.
     KonversationApplication *konvApp=static_cast<KonversationApplication \
*>(KApplication::kApplication());  Server* server = \
konvApp->getServerByName(serverName); +    // List online nicknames.
     const NickInfoList* nickInfoList = server->getNicksOnline();
     NickInfoListIterator itOnline(*nickInfoList);
-    // Online nicknames.
     NickInfo* nickInfo;
     for ( ; (nickInfo=itOnline.current()) ; ++itOnline)
     {
       QString lcNickName = itOnline.currentKey();
       QString nickname = nickInfo->getNickname();
+      // Construct additional information string for nick.
       QString nickAdditionalInfo;
       if (nickInfo->isAway())
       {
         nickAdditionalInfo = nickAdditionalInfo + i18n("Away");
-        QString awayMsg = nickInfo->getAwayMessage();
-        if (!awayMsg.isEmpty()) nickAdditionalInfo = nickAdditionalInfo + "(" + \
awayMsg + ")"; +        if (!nickInfo->getAwayMessage().isEmpty())
+          nickAdditionalInfo = nickAdditionalInfo + "(" + nickInfo->getAwayMessage() \
+ ")"; +      }
+      if (!nickInfo->getHostmask().isEmpty())
+        nickAdditionalInfo = nickAdditionalInfo + " " + nickInfo->getHostmask();
+      if (!nickInfo->getRealName().isEmpty())
+        nickAdditionalInfo = nickAdditionalInfo + " (" + nickInfo->getRealName() + \
")"; +      if (!nickInfo->getNetServer().isEmpty())
+      {
+        nickAdditionalInfo = nickAdditionalInfo + " online via " + \
nickInfo->getNetServer(); +        if (!nickInfo->getNetServerInfo().isEmpty())
+          nickAdditionalInfo = nickAdditionalInfo + " (" + \
nickInfo->getNetServerInfo() + ")";  }
-      nickAdditionalInfo = nickAdditionalInfo + " ";
-      nickAdditionalInfo = nickAdditionalInfo + nickInfo->getHostmask();
+      if (!nickInfo->getOnlineSince().isNull())
+        nickAdditionalInfo = nickAdditionalInfo + " since " + \
nickInfo->getOnlineSince().toString(Qt::LocalDate); +        
       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 and mode in each channel.
-        ChannelNick* channelNick = \
server->getChannelNick(channelList[index].lower(), lcNickName); +        QString \
channelName = channelList[index]; +        ChannelNick* channelNick = \
server->getChannelNick(channelName, lcNickName);  unsigned int nickModeWord = \
channelNick->mode;  QString nickMode;
         if (nickModeWord & 1) nickMode = nickMode + i18n(" Voice");
@@ -105,11 +127,15 @@ void NicksOnline::setOnlineList(const QString& serverName,const \
QStringList& lis  if (nickModeWord & 1) nickMode = nickMode + i18n(" Owner");
         nickModeWord >>= 1;
         if (nickModeWord & 1) nickMode = nickMode + i18n(" Admin");
-        new KListViewItem(nickRoot, channelList[index], nickMode);
+        KListViewItem* channelItem = new KListViewItem(nickRoot, channelName, \
nickMode); +        if (server->getJoinedChannelMembers(channelName) != 0)
+        {
+          channelItem->setPixmap(0, joinedLed);
+        }
       }
       nickRoot->setOpen(true);
     }
-    // Offline nicknames.
+    // List offline nicknames.
     KListViewItem* offlineRoot = new KListViewItem(newServerRoot, i18n("Offline"));
     nickInfoList = server->getNicksOffline();
     NickInfoListIterator itOffline(*nickInfoList);
@@ -120,6 +146,7 @@ void NicksOnline::setOnlineList(const QString& serverName,const \
QStringList& lis  newServerRoot->setOpen(true);
     offlineRoot->setOpen(true);
     nickListView->adjustColumn(0);
+    nickListView->adjustColumn(1);
   }
 
 #else
diff --git a/konversation/server.cpp b/konversation/server.cpp
index 01a3a86..5ca81fe 100644
--- a/konversation/server.cpp
+++ b/konversation/server.cpp
@@ -881,21 +881,44 @@ NickInfo* Server::getNickInfo(const QString& nickname)
   return allNicks.find(lcNickname);
 }
 
-// Returns the list of members for a channel in the joinedChannels list.  0 if \
channel is not in the joinedChannels list. +// Anyone who changes the contents of a \
NickInfo should call this method to let server +// know that it has changed.
+void Server::nickInfoUpdated(const NickInfo* nickInfo)
+{
+  if (nickInfo) emit nickInfoChanged(this, nickInfo);
+}
+
+// Given a nickname, returns an existing NickInfo object, or creates a new NickInfo \
object. +// Returns pointer to the found or created NickInfo object.
+NickInfo* Server::obtainNickInfo(const QString& nickname)
+{
+  NickInfo* nickInfo = getNickInfo(nickname);
+  if (!nickInfo)
+  {
+    nickInfo = new NickInfo(nickname, this);
+    allNicks.insert(nickname.lower(), nickInfo);
+  }
+  return nickInfo;
+}
+
+// Returns the list of members for a channel in the joinedChannels list.
+// 0 if channel is not in the joinedChannels list.
 // Using code must not alter the list.
 const ChannelNickList* Server::getJoinedChannelMembers(const QString& channelName) \
const  {
   return joinedChannels.find(channelName);
 }
 
-// Returns the list of members for a channel in the unjoinedChannels list.  0 if \
channel is not in the unjoinedChannels list. +// Returns the list of members for a \
channel in the unjoinedChannels list. +// 0 if channel is not in the unjoinedChannels \
list.  // Using code must not alter the list.
 const ChannelNickList* Server::getUnjoinedChannelMembers(const QString& channelName) \
const  {
   return unjoinedChannels.find(channelName);
 }
 
-// Searches the Joined and Unjoined lists for the given channel and returns the \
member list.  0 if channel is not in either list. +// Searches the Joined and \
Unjoined lists for the given channel and returns the member list. +// 0 if channel is \
not in either list.  // Using code must not alter the list.
 const ChannelNickList* Server::getChannelMembers(const QString& channelName) const
 {
@@ -921,6 +944,35 @@ ChannelNick* Server::getChannelNick(const QString& channelName, \
const QString& n  }
 }
 
+// Updates a nickname in a channel.  If not on the joined or unjoined lists, and \
nick +// is in the watch list, adds the channel and nick to the unjoinedChannels \
list. +// If mode != 99, sets the mode for the nick in the channel.
+// Returns the NickInfo object if nick is on any lists, otherwise 0.
+NickInfo* Server::setChannelNick(const QString& channelName, const QString& \
nickname, unsigned int mode) +{
+  QString lcNickname = nickname.lower();
+  // If already on a list, update mode.
+  ChannelNick* channelNick = getChannelNick(channelName, lcNickname);
+  if (channelNick)
+  {
+    if (mode != 99) channelNick->mode = mode;
+    return channelNick->nickInfo;
+  }
+  else
+  {
+    // Get watch list from preferences.
+    QString watchlist=KonversationApplication::preferences.getNotifyString();
+    // Create a lower case nick list from the watch list.
+    QStringList watchLowerList=QStringList::split(' ',watchlist.lower());
+    // If on the watch list, add channel and nick to unjoinedChannels list.
+    if (watchLowerList.find(lcNickname) != watchLowerList.end())
+    { 
+      return addNickToUnjoinedChannelsList(channelName, nickname, mode);
+    }
+    else return 0;
+  }
+}
+
 // Returns a list of all the channels (joined or unjoined) that a nick is in.
 QStringList Server::getNickChannels(QString& nickname)
 {
@@ -1597,7 +1649,7 @@ NickInfo* Server::addNickToUnjoinedChannelsList(const QString& \
channelName, cons  }
   // Move the channel from joined list (if present) to unjoined list.
   QString lcChannelName = channelName.lower();
-  ChannelNickList* members=joinedChannels.find(lcChannelName);
+  ChannelNickList* members = joinedChannels.find(lcChannelName);
   if (members) 
   {
     joinedChannels.remove(lcChannelName);
@@ -1606,18 +1658,18 @@ NickInfo* Server::addNickToUnjoinedChannelsList(const \
QString& channelName, cons  else
   {
     // Create a new list in the unjoined channels if not already present.
-    members=unjoinedChannels.find(lcChannelName);
+    members = unjoinedChannels.find(lcChannelName);
     if (!members) 
     {
       members = new ChannelNickList;
       unjoinedChannels.insert(lcChannelName, members);
     }
   }
-  // Add NickInfo to joinedChannels list if not already in the list.
-  ChannelNick* channelNick=members->find(lcNickname);
+  // Add NickInfo to unjoinedChannels list if not already in the list.
+  ChannelNick* channelNick = members->find(lcNickname);
   if (!channelNick)
   {
-    ChannelNick* channelNick = new ChannelNick;
+    channelNick = new ChannelNick;
     channelNick->nickInfo = nickInfo;
     channelNick->mode = 0;
     members->insert(lcNickname, channelNick);
@@ -1636,7 +1688,8 @@ NickInfo* Server::addNickToUnjoinedChannelsList(const QString& \
channelName, cons  NickInfo* Server::addNickToUnjoinedChannelsList(const QString&, \
const QString&, unsigned int) { return 0; }  #endif
 
-// Adds a nickname to the Online list, removing it from the Offline list, if \
present.  Returns the NickInfo of the nickname. +// Adds a nickname to the Online \
list, removing it from the Offline list, if present. +// Returns the NickInfo of the \
nickname.  // Creates new NickInfo if necessary.
 #ifdef USE_NICKINFO
 NickInfo* Server::addNickToOnlineList(const QString& nickname)
@@ -1659,7 +1712,8 @@ NickInfo* Server::addNickToOnlineList(const QString& nickname)
 NickInfo* Server::addNickToOnlineList(const QString&) { return 0; }
 #endif
 
-// Adds a nickname to the Offline list provided it is on the watch list, removing it \
from the Online list, if present. +// Adds a nickname to the Offline list provided it \
is on the watch list, +// removing it from the Online list, if present.
 // Also removes it from all channels on the joined and unjoined lists.
 // Returns the NickInfo of the nickname or 0 if deleted altogether.
 // Creates new NickInfo if necessary.
@@ -1843,7 +1897,11 @@ void Server::addNickToChannel(const QString &channelName,const \
QString &nickname  
 #ifdef USE_NICKINFO
   // Update NickInfo.
-  unsigned int mode = (admin << 4) | (owner << 3) | (op << 2) | (halfop << 1) | \
voice; +  unsigned int mode = (admin  ? 16 : 0)+
+                      (owner  ?  8 : 0)+
+                      (op     ?  4 : 0)+
+                      (halfop ?  2 : 0)+
+                      (voice  ?  1 : 0);
   NickInfo* nickInfo = addNickToJoinedChannelsList(channelName, nickname, mode);
   nickInfo->setHostmask(hostmask);
 #endif
diff --git a/konversation/server.h b/konversation/server.h
index 59dcffb..c79374d 100644
--- a/konversation/server.h
+++ b/konversation/server.h
@@ -154,20 +154,34 @@ class Server : public QObject
     
     // Given a nickname, returns NickInfo object.  0 if not found.
     NickInfo* getNickInfo(const QString& nickname);
-    // Returns the list of members for a channel in the joinedChannels list.  0 if \
channel is not in the joinedChannels list. +    // Given a nickname, returns an \
existing NickInfo object, or creates a new NickInfo object. +    // Returns pointer \
to the found or created NickInfo object. +    NickInfo* obtainNickInfo(const QString& \
nickname); +    // Anyone who changes the contents of a NickInfo should call this \
method to let server +    // know that it has changed.
+    void nickInfoUpdated(const NickInfo* nickInfo);
+    // Returns the list of members for a channel in the joinedChannels list.
+    // 0 if channel is not in the joinedChannels list.
     // Using code must not alter the list.
     const ChannelNickList* getJoinedChannelMembers(const QString& channelName) \
                const;
-    // Returns the list of members for a channel in the unjoinedChannels list.  0 if \
channel is not in the unjoinedChannels list. +    // Returns the list of members for \
a channel in the unjoinedChannels list. +    // 0 if channel is not in the \
unjoinedChannels list.  // Using code must not alter the list.
     const ChannelNickList* getUnjoinedChannelMembers(const QString& channelName) \
                const;
-    // Searches the Joined and Unjoined lists for the given channel and returns the \
member list.  0 if channel is not in either list. +    // Searches the Joined and \
Unjoined lists for the given channel and returns the member list. +    // 0 if \
channel is not in either list.  // Using code must not alter the list.
     const ChannelNickList* getChannelMembers(const QString& channelName) const;
     // Returns a list of all the channels (joined or unjoined) that a nick is in.
     QStringList getNickChannels(QString& nickname);
     // Returns pointer to the ChannelNick (mode and pointer to NickInfo) for a given \
                channel and nickname.
-   // 0 if not found.
+    // 0 if not found.
     ChannelNick* getChannelNick(const QString& channelName, const QString& \
nickname); +    // Updates a nickname in a channel.  If not on the joined or unjoined \
lists, and nick +    // is in the watch list, adds the channel and nick to the \
unjoinedChannels list. +    // If mode != 99, sets the mode for the nick in the \
channel. +    // Returns the NickInfo object if nick is on any lists, otherwise 0.
+    NickInfo* setChannelNick(const QString& channelName, const QString& nickname, \
unsigned int mode = 99);  // 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.
@@ -186,6 +200,22 @@ class Server : public QObject
     void awayState(bool away); // will be connected to any user input panel;
     void multiServerCommand(const QString& command, const QString& parameter);
     void serverOnline(bool state); // will be connected to all server dependant tabs
+    // Note that these signals haven't been implemented yet.
+    // Fires when the information in a NickInfo object changes.
+    void nickInfoChanged(Server* server, const NickInfo* nickInfo);
+    // Fires when the mode of a nick in a channel changes.
+    void channelNickChanged(Server* server, const ChannelNick* channelNick);
+    // Fires when a nick leaves or joins a channel.  Based on joined flag, receiver \
could +    // call getJoinedChannelMembers or getUnjoinedChannelMembers, or just
+    // getChannelMembers to get a list of all the nicks now in the channel.
+    // parted indicates whether the nick joined or left the channel.
+    void channelMembersChanged(Server* server, const QString& channelName, bool \
joined, bool parted, const QString& nickname); +    // Fires when a channel is moved \
to/from the Joinied/Unjoined lists. +    // joined indicates which list it is now on. \
Note that if joined is False, it is +    // possible the channel does not exist in \
any list anymore. +    void channelJoinedOrUnjoined(Server* server, const QString& \
channelName, bool joined); +    // Fires when a nick on the watch list goes online or \
offline. +    void watchedNickChanged(Server* server, const NickInfo* nickInfo, bool \
online);  
   public slots:
     void connectToIRCServer();
@@ -276,10 +306,12 @@ class Server : public QObject
     // If mode != 99 sets the mode for this nick in this channel.
     // Returns the NickInfo for the nickname.
     NickInfo* addNickToUnjoinedChannelsList(const QString& channelName, const \
                QString& nickname, unsigned int mode = 99);
-    // Adds a nickname to the Online list, removing it from the Offline list, if \
present.  Returns the NickInfo of the nickname. +    // Adds a nickname to the Online \
list, removing it from the Offline list, if present. +    // Returns the NickInfo of \
the nickname.  // Creates new NickInfo if necessary.
     NickInfo* addNickToOnlineList(const QString& nickname);
-    // Adds a nickname to the Offline list provided it is on the watch list, \
removing it from the Online list, if present. +    // Adds a nickname to the Offline \
list provided it is on the watch list, +    // removing it from the Online list, if \
present.  // Returns the NickInfo of the nickname or 0 if deleted altogether.
     // Creates new NickInfo if necessary.
     NickInfo* addNickToOfflineList(const QString& nickname, const QStringList& \
watchList);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic