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

List:       kde-commits
Subject:    [Konversation] 8ec2bb0: Apply filter during list creation and not
From:       Stephan Binner <binner () kde ! org>
Date:       2010-07-01 13:27:08
Message-ID: 20100701132708.EEBBEBB550F () projects ! kde ! org
[Download RAW message or body]

commit 8ec2bb0cfd7c78d4bc23a46ebe8a8d5b5fb8e305
Author: Stephan Binner <binner@kde.org>
Date:   Fri Dec 5 19:12:15 2003 +0000

    Apply filter during list creation and not afterwards
    
    svn path=/trunk/kdeextragear-2/konversation/; revision=271404

diff --git a/konversation/channellistpanel.cpp b/konversation/channellistpanel.cpp
index 96715a0..1f68336 100644
--- a/konversation/channellistpanel.cpp
+++ b/konversation/channellistpanel.cpp
@@ -253,10 +253,6 @@ 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);
-
-  // no filter yet, so set visible value to the same value
-  setVisibleChannels(getNumChannels());
-  setVisibleUsers(getNumUsers());
 }
 
 void ChannelListPanel::updateDisplay()
@@ -276,10 +272,15 @@ void ChannelListPanel::updateDisplay()
       QString channel=channelLine.section(' ',0,0);
       QString users=channelLine.section(' ',1,1);
       QString topic=channelLine.section(' ',2);
-      // if it's the last one of this batch, update the widget
-      if(index==pendingChannels.count()-1) channelListView->setUpdatesEnabled(true);
       // add channel line to list view
-      new ChannelListViewItem(channelListView,channel,users,topic);
+      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();
+      }
     }
     // clear list of pending inserts
     pendingChannels.clear();
@@ -288,8 +289,6 @@ void ChannelListPanel::updateDisplay()
   }
   else
   {
-    // no more channels to insert, so check if we should apply the filter
-    applyFilterClicked();
     updateTimer.stop();
   }
 }
@@ -339,6 +338,38 @@ void ChannelListPanel::channelTargetClicked()        { setChannelTarget(channelF
 void ChannelListPanel::topicTargetClicked()          { setTopicTarget(topicFilter->state()==2); }
 void ChannelListPanel::regExpClicked()               { setRegExp(regexpCheck->state()==2); }
 
+void ChannelListPanel::applyFilterToItem(QListViewItem* item)
+{
+  bool visible=true;
+
+  if(getMinUsers() || getMaxUsers())
+  {
+    if(item->text(1).toInt()<getMinUsers() || (getMaxUsers()>=getMinUsers() &&
+       item->text(1).toInt()>getMaxUsers())) 
+         visible=false;
+  }
+
+  if(!getFilterText().isEmpty())
+  {
+    if(getChannelTarget())
+    {
+      if(item->text(0).find(QRegExp(getFilterText(),false,!getRegExp()))==-1) visible=false;
+    }
+        
+    if(getTopicTarget())
+    {
+      if(item->text(2).find(QRegExp(getFilterText(),false,!getRegExp()))==-1) visible=false;
+    }
+  }
+
+  item->setVisible(visible);
+  if(visible)
+  {
+    setVisibleUsers(getVisibleUsers()+item->text(1).toInt());
+    setVisibleChannels(getVisibleChannels()+1);
+  }
+}
+
 void ChannelListPanel::applyFilterClicked()
 {
   unsigned int index=0;
@@ -346,6 +377,7 @@ void ChannelListPanel::applyFilterClicked()
   if(!getNumChannels())
   {
     refreshList();
+    return;
   }
   else
   {
@@ -356,35 +388,7 @@ void ChannelListPanel::applyFilterClicked()
 
     while(item)
     {
-      bool visible=true;
-
-      if(getMinUsers() || getMaxUsers())
-      {
-        if(item->text(1).toInt()<getMinUsers() ||
-            (getMaxUsers()>=getMinUsers() &&
-             item->text(1).toInt()>getMaxUsers())) visible=false;
-      }
-
-      if(!getFilterText().isEmpty())
-      {
-        if(getChannelTarget())
-        {
-          if(item->text(0).find(QRegExp(getFilterText(),false,!getRegExp()))==-1) visible=false;
-        }
-
-        if(getTopicTarget())
-        {
-          if(item->text(2).find(QRegExp(getFilterText(),false,!getRegExp()))==-1) visible=false;
-        }
-      }
-
-      item->setVisible(visible);
-      if(visible)
-      {
-        setVisibleUsers(getVisibleUsers()+item->text(1).toInt());
-        setVisibleChannels(getVisibleChannels()+1);
-      }
-
+      applyFilterToItem(item);  
       item=channelListView->itemAtIndex(++index);
     }
 
@@ -481,4 +485,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 4498e34..bad39ab 100644
--- a/konversation/channellistpanel.h
+++ b/konversation/channellistpanel.h
@@ -91,6 +91,7 @@ class ChannelListPanel : public ChatWindow
     int getMaxUsers();
 
     const QString& getFilterText();
+    void  applyFilterToItem(QListViewItem* item);
 
     void updateUsersChannels();
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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