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

List:       kde-commits
Subject:    [Konversation] 051b512: Return to previous update hack,
From:       Stephan Binner <binner () kde ! org>
Date:       2010-07-01 13:27:09
Message-ID: 20100701132709.3FEFEBB551E () projects ! kde ! org
[Download RAW message or body]

commit 051b51291dfda179dd42813b94da4669768c65a3
Author: Stephan Binner <binner@kde.org>
Date:   Fri Dec 5 20:13:35 2003 +0000

    Return to previous update hack, start update timer if not already running
    when new channel data arrives, disable "Refresh List" and "Apply Filter"
    buttons during loading to prevent more than one run resulting in duplicates.
    
    svn path=/trunk/kdeextragear-2/konversation/; revision=271409

diff --git a/konversation/channellistpanel.cpp b/konversation/channellistpanel.cpp
index 3e8d1d1..18ec957 100644
--- a/konversation/channellistpanel.cpp
+++ b/konversation/channellistpanel.cpp
@@ -82,7 +82,7 @@ ChannelListPanel::ChannelListPanel(QWidget* parent) :
   channelFilter=new QCheckBox(i18n("&Channel"),targetBox,"filter_target_channel_check");
   topicFilter=new QCheckBox(i18n("&Topic"),targetBox,"filter_target_topic_check");
   regexpCheck=new QCheckBox(i18n("&Regular expression"),targetBox,"regexp_check");
-  QPushButton* applyFilter=new QPushButton(i18n("Appl&y Filter"),targetBox,"apply_filter_button");
+  applyFilter=new QPushButton(i18n("Appl&y Filter"),targetBox,"apply_filter_button");
 
   channelFilter->setChecked(getChannelTarget());
   topicFilter->setChecked(getTopicTarget());
@@ -107,7 +107,7 @@ ChannelListPanel::ChannelListPanel(QWidget* parent) :
   QHBox* actionBox=new QHBox(this);
   actionBox->setSpacing(spacing());
 
-  QPushButton* refreshListButton=new QPushButton(i18n("Re&fresh List"),actionBox,"refresh_list_button");
+  refreshListButton=new QPushButton(i18n("Re&fresh List"),actionBox,"refresh_list_button");
   QPushButton* saveListButton=new QPushButton(i18n("&Save List..."),actionBox,"save_list_button");
   QPushButton* joinChannelButton=new QPushButton(i18n("&Join Channel"),actionBox,"join_channel_button");
 
@@ -164,8 +164,8 @@ void ChannelListPanel::refreshList()
 
   updateUsersChannels();
 
-  // update list view every 0.5 seconds
-  updateTimer.start(500);
+  applyFilter->setEnabled(false);
+  refreshListButton->setEnabled(false);
 
   emit refreshChannelList();
 }
@@ -253,6 +253,11 @@ void ChannelListPanel::addToChannelList(const QString& channel,int users,const Q
   // set internal numbers of channels and users, display will be updated by a timer
   setNumChannels(getNumChannels()+1);
   setNumUsers(getNumUsers()+users);
+  
+  if (!updateTimer.isActive())
+  {
+    updateTimer.start(500);
+  }
 }
 
 void ChannelListPanel::updateDisplay()
@@ -273,14 +278,13 @@ void ChannelListPanel::updateDisplay()
       QString users=channelLine.section(' ',1,1);
       QString topic=channelLine.section(' ',2);
       // add channel line to list view
-      ChannelListViewItem* item=new ChannelListViewItem(channelListView,channel,users,topic);
-      applyFilterToItem(item);
-      // if it's the last one of this batch, update the widget
       if(index==pendingChannels.count()-1)
       {
          channelListView->setUpdatesEnabled(true);
-         channelListView->update();
       }
+      ChannelListViewItem* item=new ChannelListViewItem(channelListView,channel,users,topic);
+      applyFilterToItem(item);
+      // if it's the last one of this batch, update the widget
     }
     // clear list of pending inserts
     pendingChannels.clear();
@@ -290,6 +294,8 @@ void ChannelListPanel::updateDisplay()
   else
   {
     updateTimer.stop();
+    applyFilter->setEnabled(true);
+    refreshListButton->setEnabled(true);
   }
 }
 
@@ -485,4 +491,4 @@ void ChannelListPanel::contextMenu (KListView* /* l */, QListViewItem* i, const
   delete showURLmenu;
 }
 
-#include "channellistpanel.moc"
+#include "channellistpanel.moc"
\ No newline at end of file
diff --git a/konversation/channellistpanel.h b/konversation/channellistpanel.h
index bad39ab..41df215 100644
--- a/konversation/channellistpanel.h
+++ b/konversation/channellistpanel.h
@@ -116,6 +116,9 @@ class ChannelListPanel : public ChatWindow
     QCheckBox* topicFilter;
     QCheckBox* regexpCheck;
 
+    QPushButton* applyFilter;
+    QPushButton* refreshListButton;
+    
     KListView* channelListView;
 
     QString filterText;
[prev in list] [next in list] [prev in thread] [next in thread] 

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