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;