summaryrefslogtreecommitdiffabout
path: root/libkcal
Side-by-side diff
Diffstat (limited to 'libkcal') (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
@@ -226,14 +226,18 @@ void CalendarLocal::deleteEvent( Event *event )
Event *CalendarLocal::event( const QString &uid )
{
-
- Event *event;
-
- for ( event = mEventList.first(); event; event = mEventList.next() ) {
- if ( event->uid() == uid && event->calEnabled() ) {
- return event;
+ Event *event;
+ Event *retVal = 0;
+ for ( event = mEventList.first(); event; event = mEventList.next() ) {
+ if ( event->calEnabled() && event->uid() == uid ) {
+ if ( retVal ) {
+ if ( retVal->calID() > event->calID() ) {
+ retVal = event;
+ }
+ } else {
+ retVal = event;
+ }
+ }
}
- }
-
- return 0;
+ return retVal;
}
bool CalendarLocal::addTodoNoDup( Todo *todo )
@@ -338,10 +342,18 @@ Event *CalendarLocal::event( QString syncProf, QString id )
Todo *CalendarLocal::todo( const QString &uid )
{
- Todo *todo;
+ Todo *todo;;
+ Todo *retVal = 0;
for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
- if ( todo->calEnabled() && todo->uid() == uid ) return todo;
+ if ( todo->calEnabled() && todo->uid() == uid ) {
+ if ( retVal ) {
+ if ( retVal->calID() > todo->calID() ) {
+ retVal = todo;
+ }
+ } else {
+ retVal = todo;
+ }
+ }
}
-
- return 0;
+ return retVal;
}
QString CalendarLocal::nextSummary() const
@@ -787,9 +799,16 @@ Journal *CalendarLocal::journal( const QDate &date )
Journal *CalendarLocal::journal( const QString &uid )
{
- for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
- if ( it->calEnabled() && it->uid() == uid )
- return it;
-
- return 0;
+ Journal * retVal = 0;
+ for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
+ if ( it->calEnabled() && it->uid() == uid ) {
+ if ( retVal ) {
+ if ( retVal->calID() > it->calID() ) {
+ retVal = it;
+ }
+ } else {
+ retVal = it;
+ }
+ }
+ return retVal;
}
diff --git a/libkcal/calfilter.cpp b/libkcal/calfilter.cpp
index 3510c7d..72f70c2 100644
--- a/libkcal/calfilter.cpp
+++ b/libkcal/calfilter.cpp
@@ -163,7 +163,7 @@ bool CalFilter::filterIncidence(Incidence *incidence)
for (QStringList::Iterator it = mCategoryList.begin();
it != mCategoryList.end(); ++it ) {
- QStringList incidenceCategories = incidence->categories();
- for (QStringList::Iterator it2 = incidenceCategories.begin();
- it2 != incidenceCategories.end(); ++it2 ) {
+ //QStringList incidenceCategories = incidence->categories();
+ for (QStringList::Iterator it2 = incidence->categoriesP()->begin();
+ it2 != incidence->categoriesP()->end(); ++it2 ) {
if ((*it) == (*it2)) {
return true;
@@ -175,7 +175,7 @@ bool CalFilter::filterIncidence(Incidence *incidence)
for (QStringList::Iterator it = mCategoryList.begin();
it != mCategoryList.end(); ++it ) {
- QStringList incidenceCategories = incidence->categories();
- for (QStringList::Iterator it2 = incidenceCategories.begin();
- it2 != incidenceCategories.end(); ++it2 ) {
+ //QStringList incidenceCategories = incidence->categories();
+ for (QStringList::Iterator it2 = incidence->categoriesP()->begin();
+ it2 != incidence->categoriesP()->end(); ++it2 ) {
if ((*it) == (*it2)) {
return false;
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp
index 4382416..11f7ecc 100644
--- a/libkcal/incidence.cpp
+++ b/libkcal/incidence.cpp
@@ -397,4 +397,9 @@ void Incidence::setCategories(const QString &catStr)
updated();
}
+// using this makes filtering 3 times faster
+QStringList* Incidence::categoriesP()
+{
+ return &mCategories;
+}
QStringList Incidence::categories() const
diff --git a/libkcal/incidence.h b/libkcal/incidence.h
index fc97ce9..c88ba2f 100644
--- a/libkcal/incidence.h
+++ b/libkcal/incidence.h
@@ -158,4 +158,5 @@ class Incidence : public IncidenceBase
/** return categories in a list */
QStringList categories() const;
+ QStringList* categoriesP();
/** return categories as a comma separated string */
QString categoriesStr();