From b40645d109f976df2c54ecaf3851f3d90138bb8b Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 18 Aug 2010 18:48:46 +0000 Subject: Fixed a number of issues, including * event modification and view refresh when GroupWare communication is disabled * Deletion (delay) of first recurring event git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1165287 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- korganizer/calendarview.cpp | 13 ++++++++++++- korganizer/incidencechanger.cpp | 13 +++++++------ libkcal/resourcecached.cpp | 4 ++++ 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(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 \""< scheduler.performTransaction( tmp, Scheduler::Reply ); } } - emit incidenceDeleted( incidence ); } + emit incidenceDeleted( incidence ); return doDelete; } @@ -298,14 +298,15 @@ kdDebug(5850)<<"IncidenceChanger::changeIncidence for incidence \""<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 #include #include -- cgit v1.2.1