[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