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

List:       kde-commits
Subject:    [Konversation] a3a500a: Unbreak addPendingNickList() for channels
From:       Peter Simonsson <peter.simonsson () gmail ! com>
Date:       2010-07-01 13:28:01
Message-ID: 20100701132801.55836BB5742 () projects ! kde ! org
[Download RAW message or body]

commit a3a500a5b2eda6f2ebc4cf67fc775de2b657b70b
Author: Peter Simonsson <peter.simonsson@gmail.com>
Date:   Wed Aug 18 08:43:41 2004 +0000

    Unbreak addPendingNickList() for channels with lots of nicks.
    
    svn path=/trunk/kdeextragear-2/konversation/; revision=338780

diff --git a/konversation/channel.cpp b/konversation/channel.cpp
index a24e4cd..844f166 100644
--- a/konversation/channel.cpp
+++ b/konversation/channel.cpp
@@ -69,6 +69,9 @@ Channel::Channel(QWidget* parent) : ChatWindow(parent)
 {
   // init variables
   m_processingTimer = 0;
+  m_pendingChannelNickLists.clear();
+  m_currentIndex = 0;
+  m_opsToAdd = 0;
   nicks=0;
   ops=0;
   completionPosition=0;
@@ -1865,8 +1868,6 @@ void Channel::addPendingNickList(const QStringList& newNickList)
     setPendingNicks(true);
   }
 
-  m_opsToAdd = 0;
-  
   if(!m_processingTimer) {
     m_processingTimer = new QTimer(this);
     connect(m_processingTimer, SIGNAL(timeout()), this, SLOT(processPendingNicks()));
@@ -1891,8 +1892,7 @@ void Channel::addPendingNickList(const QStringList& newNickList)
 
   adjustNicks(pendingChannelNickList.count());
 */
-  m_pendingChannelNickList = pendingChannelNickList;
-  m_listIterator = m_pendingChannelNickList.begin();
+  m_pendingChannelNickLists.append(pendingChannelNickList);
 #else
 
   unsigned int mode;
@@ -1928,7 +1928,7 @@ void Channel::addPendingNickList(const QStringList& newNickList)
   nicknameList.sort();
   adjustOps(opsToAdd);
 */
-  if(m_listIterator != m_pendingChannelNickList.end()) {
+  if(!m_processingTimer->isActive()) {
     m_processingTimer->start(0);
   }
 }
@@ -2064,23 +2064,30 @@ void Channel::showTopic(bool show)
 
 void Channel::processPendingNicks()
 {
-  fastAddNickname(*m_listIterator);
+  ChannelNickPtr nick = m_pendingChannelNickLists.first()[m_currentIndex];
+  
+  fastAddNickname(nick);
   
-  if((*m_listIterator)->isAdmin() || (*m_listIterator)->isOwner() ||
-    (*m_listIterator)->isOp() || (*m_listIterator)->isHalfOp())
+  if(nick->isAdmin() || nick->isOwner() ||
+    nick->isOp() || nick->isHalfOp())
   {
     m_opsToAdd++;
   }
   
-  ++m_listIterator;
+  m_currentIndex++;
+  
+  if(m_pendingChannelNickLists.first().count() == m_currentIndex) {
+    adjustNicks(m_pendingChannelNickLists.first().count());
+    adjustOps(m_opsToAdd);
+    m_pendingChannelNickLists.pop_front();
+    m_currentIndex = 0;
+    m_opsToAdd = 0;
+  }
 
-  if(m_listIterator == m_pendingChannelNickList.end()) {
+  if(m_pendingChannelNickLists.isEmpty()) {
     m_processingTimer->stop();
     nicknameListView->sort();
     nicknameList.sort();
-    adjustOps(m_opsToAdd);
-    adjustNicks(m_pendingChannelNickList.count());
-    m_pendingChannelNickList.clear();
   }
 }
 
diff --git a/konversation/channel.h b/konversation/channel.h
index a420daf..8ac66b6 100644
--- a/konversation/channel.h
+++ b/konversation/channel.h
@@ -231,9 +231,9 @@ class Channel : public ChatWindow
 
     bool m_allowNotifications;
     
-    ChannelNickList::iterator m_listIterator;
-    ChannelNickList m_pendingChannelNickList;
+    QValueList<ChannelNickList> m_pendingChannelNickLists;
     int m_opsToAdd;
+    int m_currentIndex;
     
     QTimer* m_processingTimer;
 };
[prev in list] [next in list] [prev in thread] [next in thread] 

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