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

List:       kde-commits
Subject:    [Konversation] cc2ccbd: More NickInfo tracking. Uncomment define
From:       Gary Cramblitt <garycramblitt () comcast ! net>
Date:       2010-07-01 13:27:21
Message-ID: 20100701132721.A3ED3BB55B3 () projects ! kde ! org
[Download RAW message or body]

commit cc2ccbd6e06d35deab33495f594277636c87c797
Author: Gary Cramblitt <garycramblitt@comcast.net>
Date:   Mon Feb 9 00:08:16 2004 +0000

    More NickInfo tracking.  Uncomment define USE_NICKINFO in server.h if u want to \
experiment with this.  
    svn path=/trunk/kdeextragear-2/konversation/; revision=286305

diff --git a/konversation/konversationapplication.cpp \
b/konversation/konversationapplication.cpp index bb0b9b0..e2108a0 100644
--- a/konversation/konversationapplication.cpp
+++ b/konversation/konversationapplication.cpp
@@ -948,4 +948,7 @@ Konversation::Sound* KonversationApplication::sound()
   return m_sound;
 }
 
+// Returns list of pointers to Servers.
+const QPtrList<Server> KonversationApplication::getServerList() { return serverList; \
} +
 #include "konversationapplication.moc"
diff --git a/konversation/konversationapplication.h \
b/konversation/konversationapplication.h index bf1a7fe..75f8050 100644
--- a/konversation/konversationapplication.h
+++ b/konversation/konversationapplication.h
@@ -60,6 +60,9 @@ class KonversationApplication : public KApplication
     OSDWidget* osd;
     
     Konversation::Sound* sound();
+    
+    // Returns list of pointers to Servers.
+    const QPtrList<Server> getServerList();
 
   signals:
     void catchUrl(const QString& who,const QString& url);
diff --git a/konversation/nicksonline.cpp b/konversation/nicksonline.cpp
index 52f1970..0d9b92a 100644
--- a/konversation/nicksonline.cpp
+++ b/konversation/nicksonline.cpp
@@ -36,10 +36,16 @@ NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
   setType(ChatWindow::NicksOnline);
 
   nickListView=new KListView(this);
-  
+
+#ifdef USE_NICKINFO
+  nickListView->addColumn(i18n("Server/Nickname/Channel"));
+  nickListView->addColumn(i18n("Additional Information"));
+  nickListView->setFullWidth(false);
+#else
   nickListView->addColumn(i18n("Server/Nickname"));
-  nickListView->setRootIsDecorated(false);
   nickListView->setFullWidth(true);
+#endif
+  nickListView->setRootIsDecorated(false);
   
   setMargin(KDialog::marginHint());
   setSpacing(KDialog::spacingHint());
@@ -52,34 +58,41 @@ NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
 
   connect(editButton,SIGNAL (clicked()),SIGNAL (editClicked()) );
   connect(nickListView,SIGNAL \
(doubleClicked(QListViewItem*)),this,SLOT(processDoubleClick(QListViewItem*))); +  
+#ifdef USE_NICKINFO
+  // Display info for all currently-connected servers.
+  refreshAllServerOnlineLists();
+  // Connect and start refresh timer.
+  timer = new QTimer(this, "nicksOnlineTimer");
+  connect(timer, SIGNAL (timeout()), this, SLOT(timerFired()));
+  // TODO: User preference for refresh interval.
+  timer->start(8000);
+#endif
 }
 
 NicksOnline::~NicksOnline()
 {
+#ifdef USE_NICKINFO
+  timer->stop();
+  delete timer;
+#endif
   delete nickListView;
 }
 
-void NicksOnline::setOnlineList(const QString& serverName,const QStringList& \
                list,bool changed)
-{
 #ifdef USE_NICKINFO
+void NicksOnline::updateServerOnlineList(Server* server, bool changed)
+{
+  QString serverName = server->getServerName();
   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);
     // 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);
@@ -148,7 +161,36 @@ void NicksOnline::setOnlineList(const QString& serverName,const \
QStringList& lis  nickListView->adjustColumn(0);
     nickListView->adjustColumn(1);
   }
+}
+#else
+void NicksOnline::updateServerOnlineList(Server*, bool) {}
+#endif
 
+void NicksOnline::refreshAllServerOnlineLists()
+{
+  // Display info for all currently-connected servers.
+  nickListView->clear();
+  KonversationApplication *konvApp=static_cast<KonversationApplication \
*>(KApplication::kApplication()); +  QPtrList<Server> serverList = \
konvApp->getServerList(); +  Server* server;
+  for ( server = serverList.first(); server; server = serverList.next() )
+  {
+    updateServerOnlineList(server, true);
+  }
+}
+
+void NicksOnline::timerFired()
+{
+  refreshAllServerOnlineLists();
+}
+
+void NicksOnline::setOnlineList(const QString& serverName,const QStringList& \
list,bool changed) +{
+#ifdef USE_NICKINFO
+  // Get the server object corresponding to the server name.
+  KonversationApplication *konvApp=static_cast<KonversationApplication \
*>(KApplication::kApplication()); +  Server* server = \
konvApp->getServerByName(serverName); +  updateServerOnlineList(server, changed);
 #else
 
   QListViewItem* serverRoot=nickListView->findItem(serverName,0);
diff --git a/konversation/nicksonline.h b/konversation/nicksonline.h
index da29245..805fabb 100644
--- a/konversation/nicksonline.h
+++ b/konversation/nicksonline.h
@@ -43,9 +43,14 @@ class NicksOnline : public ChatWindow
     
   protected slots:
     void processDoubleClick(QListViewItem* item);
+    void timerFired();
 
   protected:
+    void updateServerOnlineList(Server* server, bool changed);
+    void refreshAllServerOnlineLists();
+
     KListView* nickListView;
+    QTimer* timer;
 };
 
 #endif


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

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