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

List:       kde-commits
Subject:    make_it_cool: kdenetwork/kmail
From:       Don Sanders <don () sanders ! org>
Date:       2003-02-08 18:14:51
[Download RAW message or body]

CVS commit by sanders: 

Stealthier full text indexing.


  M +41 -0     kmmsgindex.cpp   1.1.2.28
  M +6 -0      kmmsgindex.h   1.1.2.17


--- kdenetwork/kmail/kmmsgindex.h  #1.1.2.16:1.1.2.17
@@ -66,4 +66,10 @@ class KMMsgIndex : public QObject
         bool reading_processed, restart_index;
     } restore;
+    struct {
+        int timer_id;
+        int create_id;
+        int restore_id;
+        int counter;
+    } delay;
     QTime mLastSearch; //when last index lookup was performed
     QIntDict<KMIndexSearchTarget> mActiveSearches; //for async search

--- kdenetwork/kmail/kmmsgindex.cpp  #1.1.2.27:1.1.2.28
@@ -214,4 +214,9 @@ KMMsgIndex::KMMsgIndex(QObject *o, const
 {
     mActiveSearches.setAutoDelete(TRUE);
+    create.timer_id = -1;
+    restore.timer_id = -1;
+    delay.timer_id = -1;
+    delay.create_id = -1;
+    delay.restore_id = -1;
     reset(FALSE);
     mTermIndex.loc = kernel->folderMgr()->basePath() + "/.kmmsgindex_search";
@@ -246,4 +251,9 @@ KMMsgIndex::reset(bool clean)
         restore.timer_id = -1;
     }
+    if(delay.timer_id != -1) {
+        if(clean)
+            killTimer(delay.timer_id);
+        delay.timer_id = -1;
+    }
     //TOC
     if(clean)
@@ -641,6 +651,37 @@ void
 KMMsgIndex::timerEvent(QTimerEvent *e)
 {
+    if (e->timerId() == delay.timer_id) {
+        if(qApp->hasPendingEvents()) {
+            delay.counter = 10;
+            return;
+        }
+        --delay.counter;
+        if (delay.counter > 0)
+            return;
+        killTimer(delay.timer_id);
+        if (delay.create_id != -1)
+            create.timer_id = startTimer(0);
+        if (delay.restore_id != -1)
+            restore.timer_id = startTimer(0);
+        delay.timer_id = -1;
+        delay.create_id = -1;
+        delay.restore_id = -1;
+    }
+    if (delay.timer_id != -1)
+        return; 
     if(qApp->hasPendingEvents()) //nah, next time..
+    {
+        delay.timer_id = startTimer(1000);
+        delay.counter = 10;
+        delay.create_id = create.timer_id;
+        delay.restore_id = restore.timer_id;
+        if (create.timer_id != -1)
+            killTimer( create.timer_id );
+        create.timer_id = -1;
+        if (restore.timer_id != -1)
+            killTimer( restore.timer_id );
+        restore.timer_id = -1;
         return;
+    }
     if(mIndexState == INDEX_CREATE && e->timerId() == create.timer_id)
         createState(FALSE);


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

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