summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--korganizer/calendarview.cpp13
-rw-r--r--korganizer/incidencechanger.cpp13
-rw-r--r--libkcal/resourcecached.cpp4
3 files changed, 23 insertions, 7 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 340c6dab7..ae4a5b6e2 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -832,6 +832,7 @@ void CalendarView::updateView()
void CalendarView::updateUnmanagedViews()
{
mDateNavigator->updateDayMatrix();
+ updateView();
}
int CalendarView::msgItemDelete( Incidence *incidence )
@@ -2062,7 +2063,15 @@ void CalendarView::deleteIncidence(Incidence *incidence, bool force)
Incidence *oldIncidence = incidence->clone();
if (incidence->recurrence()->startDate() == itemDate) {
// Moving the first in a series...don't bother with the nonstandard exclusion list
- incidence->recurrence()->setStartDateTime( incidence->recurrence()->getNextDateTime( incidence->recurrence()->startDateTime() ) );
+ Recurrence *recur = incidence->recurrence();
+ Event* thisevent = static_cast<Event*>(incidence);
+ QDateTime newEnd;
+ QDateTime newRecurEnd;
+ newRecurEnd = recur->endDateTime();
+ newEnd.setTime_t( incidence->dtEnd().toTime_t() + ( recur->getNextDateTime( recur->startDateTime() ).toTime_t() - recur->startDateTime().toTime_t() ) );
+ thisevent->setDtEnd( newEnd );
+ incidence->setDtStart( recur->getNextDateTime( recur->startDateTime() ) );
+ recur->setEndDateTime(newRecurEnd);
}
else {
// No choice but to use the exclusion list
@@ -2094,6 +2103,8 @@ void CalendarView::deleteIncidence(Incidence *incidence, bool force)
processIncidenceSelection( 0 );
}
}
+
+ updateView();
}
void CalendarView::connectIncidenceEditor( KOIncidenceEditor *editor )
diff --git a/korganizer/incidencechanger.cpp b/korganizer/incidencechanger.cpp
index 92332578c..46be25ba7 100644
--- a/korganizer/incidencechanger.cpp
+++ b/korganizer/incidencechanger.cpp
@@ -118,8 +118,8 @@ kdDebug(5850)<<"IncidenceChanger::deleteIncidence for incidence \""<<incidence->
scheduler.performTransaction( tmp, Scheduler::Reply );
}
}
- emit incidenceDeleted( incidence );
}
+ emit incidenceDeleted( incidence );
return doDelete;
}
@@ -298,14 +298,15 @@ kdDebug(5850)<<"IncidenceChanger::changeIncidence for incidence \""<<newinc->sum
KCal::Scheduler::Request,
newinc, false, statusChanged ) ) {
// Accept the event changes
- if ( action<0 ) {
- emit incidenceChanged( oldinc, newinc );
- } else {
- emit incidenceChanged( oldinc, newinc, action );
- }
revert = false;
}
+ if ( action<0 ) {
+ emit incidenceChanged( oldinc, newinc );
+ } else {
+ emit incidenceChanged( oldinc, newinc, action );
+ }
+
if ( revert ) {
assignIncidence( newinc, oldinc );
return false;
diff --git a/libkcal/resourcecached.cpp b/libkcal/resourcecached.cpp
index 22fa79bb9..2fecbb50f 100644
--- a/libkcal/resourcecached.cpp
+++ b/libkcal/resourcecached.cpp
@@ -19,6 +19,10 @@
Boston, MA 02110-1301, USA.
*/
+// TODO [FIXME] IMPORTANT
+// If a cached resource initiates a reload while an event editor is active, or an event is locked for editing,
+// a big fat crash will ensue. The reload subroutine must ABORT if ANY korganizer events are locked for editing!!!
+
#include <tqdatastream.h>
#include <tqdatetime.h>
#include <tqfile.h>