summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-06-14 08:23:19 (UTC)
committer zautrix <zautrix>2005-06-14 08:23:19 (UTC)
commit1dccb9dd9ea32989ecec33c72a3ebd873dce048e (patch) (unidiff)
tree6b7dd7e4696c91a3afaba89225dd4f31f376a30b
parentb3743f5abe0a95c9ffeadf6701c9943f604febd6 (diff)
downloadkdepimpi-1dccb9dd9ea32989ecec33c72a3ebd873dce048e.zip
kdepimpi-1dccb9dd9ea32989ecec33c72a3ebd873dce048e.tar.gz
kdepimpi-1dccb9dd9ea32989ecec33c72a3ebd873dce048e.tar.bz2
faster filter
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendarlocal.cpp55
-rw-r--r--libkcal/calfilter.cpp12
-rw-r--r--libkcal/incidence.cpp5
-rw-r--r--libkcal/incidence.h1
4 files changed, 49 insertions, 24 deletions
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 749d9f6..336c3e8 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -224,18 +224,22 @@ void CalendarLocal::deleteEvent( Event *event )
224 224
225 225
226Event *CalendarLocal::event( const QString &uid ) 226Event *CalendarLocal::event( const QString &uid )
227{ 227{
228 228 Event *event;
229 Event *event; 229 Event *retVal = 0;
230 230 for ( event = mEventList.first(); event; event = mEventList.next() ) {
231 for ( event = mEventList.first(); event; event = mEventList.next() ) { 231 if ( event->calEnabled() && event->uid() == uid ) {
232 if ( event->uid() == uid && event->calEnabled() ) { 232 if ( retVal ) {
233 return event; 233 if ( retVal->calID() > event->calID() ) {
234 retVal = event;
235 }
236 } else {
237 retVal = event;
238 }
239 }
234 } 240 }
235 } 241 return retVal;
236
237 return 0;
238} 242}
239bool CalendarLocal::addTodoNoDup( Todo *todo ) 243bool CalendarLocal::addTodoNoDup( Todo *todo )
240{ 244{
241 Todo * eve; 245 Todo * eve;
@@ -336,14 +340,22 @@ Event *CalendarLocal::event( QString syncProf, QString id )
336 return 0; 340 return 0;
337} 341}
338Todo *CalendarLocal::todo( const QString &uid ) 342Todo *CalendarLocal::todo( const QString &uid )
339{ 343{
340 Todo *todo; 344 Todo *todo;;
345 Todo *retVal = 0;
341 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 346 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
342 if ( todo->calEnabled() && todo->uid() == uid ) return todo; 347 if ( todo->calEnabled() && todo->uid() == uid ) {
348 if ( retVal ) {
349 if ( retVal->calID() > todo->calID() ) {
350 retVal = todo;
351 }
352 } else {
353 retVal = todo;
354 }
355 }
343 } 356 }
344 357 return retVal;
345 return 0;
346} 358}
347QString CalendarLocal::nextSummary() const 359QString CalendarLocal::nextSummary() const
348{ 360{
349 return mNextSummary; 361 return mNextSummary;
@@ -785,13 +797,20 @@ Journal *CalendarLocal::journal( const QDate &date )
785} 797}
786 798
787Journal *CalendarLocal::journal( const QString &uid ) 799Journal *CalendarLocal::journal( const QString &uid )
788{ 800{
789 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 801 Journal * retVal = 0;
790 if ( it->calEnabled() && it->uid() == uid ) 802 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
791 return it; 803 if ( it->calEnabled() && it->uid() == uid ) {
792 804 if ( retVal ) {
793 return 0; 805 if ( retVal->calID() > it->calID() ) {
806 retVal = it;
807 }
808 } else {
809 retVal = it;
810 }
811 }
812 return retVal;
794} 813}
795 814
796QPtrList<Journal> CalendarLocal::journals() 815QPtrList<Journal> CalendarLocal::journals()
797{ 816{
diff --git a/libkcal/calfilter.cpp b/libkcal/calfilter.cpp
index 3510c7d..72f70c2 100644
--- a/libkcal/calfilter.cpp
+++ b/libkcal/calfilter.cpp
@@ -161,11 +161,11 @@ bool CalFilter::filterIncidence(Incidence *incidence)
161 161
162 if (mCriteria & ShowCategories) { 162 if (mCriteria & ShowCategories) {
163 for (QStringList::Iterator it = mCategoryList.begin(); 163 for (QStringList::Iterator it = mCategoryList.begin();
164 it != mCategoryList.end(); ++it ) { 164 it != mCategoryList.end(); ++it ) {
165 QStringList incidenceCategories = incidence->categories(); 165 //QStringList incidenceCategories = incidence->categories();
166 for (QStringList::Iterator it2 = incidenceCategories.begin(); 166 for (QStringList::Iterator it2 = incidence->categoriesP()->begin();
167 it2 != incidenceCategories.end(); ++it2 ) { 167 it2 != incidence->categoriesP()->end(); ++it2 ) {
168 if ((*it) == (*it2)) { 168 if ((*it) == (*it2)) {
169 return true; 169 return true;
170 } 170 }
171 } 171 }
@@ -173,11 +173,11 @@ bool CalFilter::filterIncidence(Incidence *incidence)
173 return false; 173 return false;
174 } else { 174 } else {
175 for (QStringList::Iterator it = mCategoryList.begin(); 175 for (QStringList::Iterator it = mCategoryList.begin();
176 it != mCategoryList.end(); ++it ) { 176 it != mCategoryList.end(); ++it ) {
177 QStringList incidenceCategories = incidence->categories(); 177 //QStringList incidenceCategories = incidence->categories();
178 for (QStringList::Iterator it2 = incidenceCategories.begin(); 178 for (QStringList::Iterator it2 = incidence->categoriesP()->begin();
179 it2 != incidenceCategories.end(); ++it2 ) { 179 it2 != incidence->categoriesP()->end(); ++it2 ) {
180 if ((*it) == (*it2)) { 180 if ((*it) == (*it2)) {
181 return false; 181 return false;
182 } 182 }
183 } 183 }
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp
index 4382416..11f7ecc 100644
--- a/libkcal/incidence.cpp
+++ b/libkcal/incidence.cpp
@@ -395,8 +395,13 @@ void Incidence::setCategories(const QString &catStr)
395 } 395 }
396 checkCategories(); 396 checkCategories();
397 updated(); 397 updated();
398} 398}
399// using this makes filtering 3 times faster
400QStringList* Incidence::categoriesP()
401{
402 return &mCategories;
403}
399 404
400QStringList Incidence::categories() const 405QStringList Incidence::categories() const
401{ 406{
402 return mCategories; 407 return mCategories;
diff --git a/libkcal/incidence.h b/libkcal/incidence.h
index fc97ce9..c88ba2f 100644
--- a/libkcal/incidence.h
+++ b/libkcal/incidence.h
@@ -156,8 +156,9 @@ class Incidence : public IncidenceBase
156 /** set event's categories based on a comma delimited string */ 156 /** set event's categories based on a comma delimited string */
157 void setCategories(const QString &catStr); 157 void setCategories(const QString &catStr);
158 /** return categories in a list */ 158 /** return categories in a list */
159 QStringList categories() const; 159 QStringList categories() const;
160 QStringList* categoriesP();
160 /** return categories as a comma separated string */ 161 /** return categories as a comma separated string */
161 QString categoriesStr(); 162 QString categoriesStr();
162 QString categoriesStrWithSpace(); 163 QString categoriesStrWithSpace();
163 164