summaryrefslogtreecommitdiffabout
path: root/korganizer/calendarview.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/calendarview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index a350c3b..7044e90 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1441,7 +1441,7 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
QString idS;
qApp->processEvents();
if ( !skipIncidence ) {
- inL = local->incidence( uid );
+ inL = local->incidenceForUid( uid , false );
if ( inL ) { // maybe conflict - same uid in both calendars
if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
//qDebug("take %d %s ", take, inL->summary().latin1());
@@ -1464,21 +1464,23 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
inR->setPilotId( 2 );
++changedRemote;
} else {// take remote **********************
- idS = inL->IDStr();
- int pid = inL->pilotId();
- int calID = inL->calID();
- local->deleteIncidence( inL );
- inL = inR->clone();
- inL->setCalID( calID );
- if ( mSyncManager->syncWithDesktop() )
- inL->setPilotId( pid );
- inL->setIDStr( idS );
- if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
- inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
- inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
+ if ( !inL->isReadOnly() ) {
+ idS = inL->IDStr();
+ int pid = inL->pilotId();
+ int calID = inL->calID();
+ local->deleteIncidence( inL );
+ inL = inR->clone();
+ inL->setCalID( calID );
+ if ( mSyncManager->syncWithDesktop() )
+ inL->setPilotId( pid );
+ inL->setIDStr( idS );
+ if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
+ inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
+ inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
+ }
+ local->addIncidence( inL );
+ ++changedLocal;
}
- local->addIncidence( inL );
- ++changedLocal;
}
}
} else { // no conflict ********** add or delete remote
@@ -1549,7 +1551,7 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
skipIncidence = true;
if ( !skipIncidence ) {
- inR = remote->incidence( uid );
+ inR = remote->incidenceForUid( uid , true );
if ( ! inR ) {
if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
// no conflict ********** add or delete local