File kontact_summary_widget_fixes.diff of Package kdepim3

Index: kontact/plugins/korganizer/summarywidget.cpp
================================================================================
--- kontact/plugins/korganizer/summarywidget.cpp
+++ kontact/plugins/korganizer/summarywidget.cpp
@@ -79,7 +79,7 @@
   mLabels.clear();
   mLabels.setAutoDelete( false );
 
-  KIconLoader loader( "korganizer" );
+  KIconLoader loader( "kdepim" );
 
   KConfig config( "kcmkorgsummaryrc" );
 
@@ -91,12 +91,41 @@
   QPixmap pm = loader.loadIcon( "appointment", KIcon::Small );
 
   QDate dt;
-  for ( dt=QDate::currentDate();
-        dt<=QDate::currentDate().addDays( days - 1 );
+  QDate currentDate = QDate::currentDate();
+  for ( dt=currentDate;
+        dt<=currentDate.addDays( days - 1 );
         dt=dt.addDays(1) ) {
-    KCal::Event::List events = mCalendar->events( dt, true );
+
     KCal::Event *ev;
-    KCal::Event::List::ConstIterator it;
+
+    KCal::Event::List events_orig = mCalendar->events( dt );
+    KCal::Event::List::ConstIterator it = events_orig.begin();
+
+    KCal::Event::List events;
+    events.setAutoDelete( true );
+    QDateTime qdt;
+
+    // prevent implicitely sharing while finding recurring events
+    // replacing the QDate with the currentDate
+    for ( ; it != events_orig.end(); ++it ) {
+      ev = (*it)->clone();
+      if ( ev->recursOn( dt ) ) {
+        qdt = ev->dtStart();
+        qdt.setDate( dt );
+        ev->setDtStart( qdt );
+      }
+      events.append( ev );
+    }
+
+    // sort the events for this date by summary
+    events = KCal::Calendar::sortEvents( &events,
+                                         KCal::EventSortSummary,
+                                         KCal::SortDirectionAscending );
+    // sort the events for this date by start date
+    events = KCal::Calendar::sortEvents( &events,
+                                         KCal::EventSortStartDate,
+                                         KCal::SortDirectionAscending );
+
     for ( it=events.begin(); it!=events.end(); ++it ) {
       ev = *it;
 
openSUSE Build Service is sponsored by