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

List:       kde-commits
Subject:    [Konversation] 978353d: Use QTimer instead of processEvents()... will
From:       Peter Simonsson <peter.simonsson () gmail ! com>
Date:       2010-07-01 13:28:01
Message-ID: 20100701132801.26A9BBB573E () projects ! kde ! org
[Download RAW message or body]

commit 978353d94b097c2cad372f8e7cc95c6fd70506e6
Author: Peter Simonsson <peter.simonsson@gmail.com>
Date:   Tue Aug 17 22:20:48 2004 +0000

    Use QTimer instead of processEvents()... will break if USE_NICKINFO is undefined
    
    svn path=/trunk/kdeextragear-2/konversation/; revision=338730

diff --git a/konversation/channel.cpp b/konversation/channel.cpp
index dea76fc..a24e4cd 100644
--- a/konversation/channel.cpp
+++ b/konversation/channel.cpp
@@ -68,6 +68,7 @@ Channel::Channel(QWidget* parent) : ChatWindow(parent)
 #endif
 {
   // init variables
+  m_processingTimer = 0;
   nicks=0;
   ops=0;
   completionPosition=0;
@@ -1853,7 +1854,7 @@ void Channel::changeNickname(const QString& newNickname)
 }
 
 #ifdef USE_NICKINFO
-void Channel::addPendingNickList(ChannelNickList pendingChannelNickList)
+void Channel::addPendingNickList(const ChannelNickList& pendingChannelNickList)
 #else
 void Channel::addPendingNickList(const QStringList& newNickList)
 #endif
@@ -1864,10 +1865,16 @@ void Channel::addPendingNickList(const QStringList& newNickList)
     setPendingNicks(true);
   }
 
-  int opsToAdd=0;
+  m_opsToAdd = 0;
+  
+  if(!m_processingTimer) {
+    m_processingTimer = new QTimer(this);
+    connect(m_processingTimer, SIGNAL(timeout()), this, SLOT(processPendingNicks()));
+  }
 
-  nicknameListView->setUpdatesEnabled(false);
+//  nicknameListView->setUpdatesEnabled(false);
 #ifdef USE_NICKINFO
+/*  
   ChannelNickList::iterator it;
   int count = 0;
   for( it = pendingChannelNickList.begin(); it != pendingChannelNickList.end(); it++,count++)
@@ -1883,6 +1890,9 @@ void Channel::addPendingNickList(const QStringList& newNickList)
   }
 
   adjustNicks(pendingChannelNickList.count());
+*/
+  m_pendingChannelNickList = pendingChannelNickList;
+  m_listIterator = m_pendingChannelNickList.begin();
 #else
 
   unsigned int mode;
@@ -1910,12 +1920,17 @@ void Channel::addPendingNickList(const QStringList& newNickList)
 
   adjustNicks(newNickList.count());
 #endif
+/*  
   // should have been done already, but you never know ...
   nicknameListView->setUpdatesEnabled(true);
 
   nicknameListView->sort();
   nicknameList.sort();
   adjustOps(opsToAdd);
+*/
+  if(m_listIterator != m_pendingChannelNickList.end()) {
+    m_processingTimer->start(0);
+  }
 }
 
 void Channel::setPendingNicks(bool state)
@@ -2047,6 +2062,28 @@ void Channel::showTopic(bool show)
   }
 }
 
+void Channel::processPendingNicks()
+{
+  fastAddNickname(*m_listIterator);
+  
+  if((*m_listIterator)->isAdmin() || (*m_listIterator)->isOwner() ||
+    (*m_listIterator)->isOp() || (*m_listIterator)->isHalfOp())
+  {
+    m_opsToAdd++;
+  }
+  
+  ++m_listIterator;
+
+  if(m_listIterator == m_pendingChannelNickList.end()) {
+    m_processingTimer->stop();
+    nicknameListView->sort();
+    nicknameList.sort();
+    adjustOps(m_opsToAdd);
+    adjustNicks(m_pendingChannelNickList.count());
+    m_pendingChannelNickList.clear();
+  }
+}
+
 //
 // NickList
 //
diff --git a/konversation/channel.h b/konversation/channel.h
index 8476b7e..a420daf 100644
--- a/konversation/channel.h
+++ b/konversation/channel.h
@@ -77,7 +77,7 @@ class Channel : public ChatWindow
     void kickNick(ChannelNickPtr channelNick, const ChannelNick &kicker, const QString &reason);
     void addNickname(ChannelNickPtr channelNick);
     void nickRenamed(const QString &oldNick, const NickInfo& channelnick);	    
-    void addPendingNickList(ChannelNickList pendingChannelNickList);
+    void addPendingNickList(const ChannelNickList& pendingChannelNickList);
 #else
     void joinNickname(const QString& nickname,const QString& hostname);
     void addNickname(const QString& nickname,const QString& hostmask,
@@ -161,6 +161,8 @@ class Channel : public ChatWindow
 
     void closeYourself(ChatWindow* view); // USE_MDI
     void serverQuit(const QString& reason); // USE_MDI
+    
+    void processPendingNicks();
 
   protected:
     void showEvent(QShowEvent* event);
@@ -228,6 +230,11 @@ class Channel : public ChatWindow
     QTimer userhostTimer;
 
     bool m_allowNotifications;
+    
+    ChannelNickList::iterator m_listIterator;
+    ChannelNickList m_pendingChannelNickList;
+    int m_opsToAdd;
+    
+    QTimer* m_processingTimer;
 };
-
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

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