-rw-r--r-- | core/pim/datebook/datebook.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/core/pim/datebook/datebook.cpp b/core/pim/datebook/datebook.cpp index 832b2f8..24affd0 100644 --- a/core/pim/datebook/datebook.cpp +++ b/core/pim/datebook/datebook.cpp | |||
@@ -997,6 +997,8 @@ void DateBook::slotDoFind( const QString& txt, const QDate &dt, | |||
997 | inSearch = true; | 997 | inSearch = true; |
998 | } | 998 | } |
999 | static QDate searchDate = dt; | 999 | static QDate searchDate = dt; |
1000 | // if true at the end we will start at the begin again and afterwards | ||
1001 | // we will emit string not found | ||
1000 | static bool wrapAround = true; | 1002 | static bool wrapAround = true; |
1001 | bool candidtate; | 1003 | bool candidtate; |
1002 | candidtate = false; | 1004 | candidtate = false; |
@@ -1004,6 +1006,13 @@ void DateBook::slotDoFind( const QString& txt, const QDate &dt, | |||
1004 | QValueList<Event> repeats = db->getRawRepeats(); | 1006 | QValueList<Event> repeats = db->getRawRepeats(); |
1005 | 1007 | ||
1006 | // find the candidate for the first repeat that matches... | 1008 | // find the candidate for the first repeat that matches... |
1009 | // first check if there can ever be a match and then compute | ||
1010 | // the next occurence from start. See if this event is closer | ||
1011 | // to the beginning (start. next < dtEnd) and not smaller then the last | ||
1012 | // result. If we find a canditate we set the dtEnd to the time | ||
1013 | // of the ocurrence and rev to this occurence. | ||
1014 | // set wrap around to true because there might be more events coming | ||
1015 | // and we're not at the end. | ||
1007 | QValueListConstIterator<Event> it; | 1016 | QValueListConstIterator<Event> it; |
1008 | QDate start = dt; | 1017 | QDate start = dt; |
1009 | for ( it = repeats.begin(); it != repeats.end(); ++it ) { | 1018 | for ( it = repeats.begin(); it != repeats.end(); ++it ) { |
@@ -1023,6 +1032,9 @@ void DateBook::slotDoFind( const QString& txt, const QDate &dt, | |||
1023 | } | 1032 | } |
1024 | 1033 | ||
1025 | // now the for first non repeat... | 1034 | // now the for first non repeat... |
1035 | // dtEnd is set by the previous iteration of repeatingEvents | ||
1036 | // check if we find a closer item. Also set dtEnd to find even | ||
1037 | // more close occurrence | ||
1026 | QValueList<Event> nonRepeats = db->getNonRepeatingEvents( dt, dtEnd.date() ); | 1038 | QValueList<Event> nonRepeats = db->getNonRepeatingEvents( dt, dtEnd.date() ); |
1027 | qHeapSort( nonRepeats.begin(), nonRepeats.end() ); | 1039 | qHeapSort( nonRepeats.begin(), nonRepeats.end() ); |
1028 | for ( it = nonRepeats.begin(); it != nonRepeats.end(); ++it ) { | 1040 | for ( it = nonRepeats.begin(); it != nonRepeats.end(); ++it ) { |