-rw-r--r-- | korganizer/calendarview.cpp | 16 | ||||
-rw-r--r-- | libkcal/alarm.cpp | 36 | ||||
-rw-r--r-- | libkcal/recurrence.cpp | 56 | ||||
-rw-r--r-- | libkcal/sharpformat.cpp | 7 |
4 files changed, 94 insertions, 21 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 258bd43..94cc97d 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -735,13 +735,13 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() ); if ( !remCh && ! locCh ) { qDebug("both not changed "); lastSync = local->lastModified().addDays(1); } else { if ( locCh ) { - qDebug("loc changed %d", local->revision() ); + qDebug("loc changed %d %s %s", local->revision() , local->lastModified().toString().latin1(), mLastCalendarSync.toString().latin1()); lastSync = local->lastModified().addDays( -1 ); if ( !remCh ) remote->setLastModified( lastSync.addDays( -1 ) ); } else { qDebug(" not loc changed "); lastSync = local->lastModified().addDays( 1 ); @@ -783,13 +783,13 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b }//else //debug only //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); } int result; bool localIsNew; - qDebug("mLastCalendarSync %s lastsync %s --- local %s remote %s ",mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); + //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); if ( full && mode < SYNC_PREF_NEWEST ) mode = SYNC_PREF_ASK; switch( mode ) { case SYNC_PREF_LOCAL: @@ -1027,13 +1027,15 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int return false; if ( take == 1 ) {// take local inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); remote->deleteIncidence( inR ); if ( inL->revision() < maxrev ) inL->setRevision( maxrev ); - remote->addIncidence( inL->clone() ); + inR = inL->clone(); + inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); + remote->addIncidence( inR ); ++changedRemote; } else { if ( inR->revision() < maxrev ) inR->setRevision( maxrev ); local->deleteIncidence( inL ); local->addIncidence( inR->clone() ); @@ -1049,13 +1051,14 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); //remote->deleteIncidence( inR ); ++deletedEventR; } else { inR->setLastModified( modifiedCalendar ); - local->addIncidence( inR->clone() ); + inL = inR->clone(); + local->addIncidence( inL ); ++addedEvent; } } else { if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { inR->setLastModified( modifiedCalendar ); local->addIncidence( inR->clone() ); @@ -1100,14 +1103,17 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int local->deleteIncidence( inL ); ++deletedEventL; } else { if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { inL->removeID(mCurrentSyncDevice ); ++addedEventR; + qDebug("remote added Incidence %s ", inL->summary().latin1()); inL->setLastModified( modifiedCalendar ); - remote->addIncidence( inL->clone() ); + inR = inL->clone(); + inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); + remote->addIncidence( inR ); } } } else { if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { checkExternSyncEvent(eventLSyncSharp, inL); local->deleteIncidence( inL ); diff --git a/libkcal/alarm.cpp b/libkcal/alarm.cpp index 29e6205..1fc7169 100644 --- a/libkcal/alarm.cpp +++ b/libkcal/alarm.cpp @@ -46,28 +46,62 @@ Alarm::Alarm(Incidence *parent) Alarm::~Alarm() { } bool Alarm::operator==( const Alarm& rhs ) const { + if ( mType != rhs.mType || mAlarmSnoozeTime != rhs.mAlarmSnoozeTime || mAlarmRepeatCount != rhs.mAlarmRepeatCount || mAlarmEnabled != rhs.mAlarmEnabled || mHasTime != rhs.mHasTime) return false; +#if 0 + if ( mType != rhs.mType ) { + + qDebug("aaa1 "); + return false; + } + + if ( mAlarmSnoozeTime != rhs.mAlarmSnoozeTime ) { + + qDebug("aaa2 "); + return false; + } + + + if ( mAlarmRepeatCount != rhs.mAlarmRepeatCount ) { + + qDebug("aaa3 "); + return false; + } + + if ( mAlarmEnabled != rhs.mAlarmEnabled ) { + + qDebug("aaa4 "); + return false; + } + + if ( mHasTime != rhs.mHasTime ) { + + qDebug("aaa5 "); + return false; + } +#endif + + if (mHasTime) { if (mAlarmTime != rhs.mAlarmTime) return false; } else { if (mOffset != rhs.mOffset || mEndOffset != rhs.mEndOffset) return false; } - switch (mType) { case Display: return mDescription == rhs.mDescription; case Email: return mDescription == rhs.mDescription && diff --git a/libkcal/recurrence.cpp b/libkcal/recurrence.cpp index dd74e10..e84f672 100644 --- a/libkcal/recurrence.cpp +++ b/libkcal/recurrence.cpp @@ -103,12 +103,13 @@ bool Recurrence::operator==( const Recurrence& r2 ) const // the following line is obvious if ( recurs == rNone && r2.recurs == rNone ) return true; // we need the above line, because two non recurring events may // differ in the other settings, because one (or both) // may be not initialized properly + if ( recurs != r2.recurs || rFreq != r2.rFreq || rDuration != r2.rDuration || !rDuration && rEndDateTime != r2.rEndDateTime || mRecurStart != r2.mRecurStart || mFloats != r2.mFloats @@ -119,24 +120,55 @@ bool Recurrence::operator==( const Recurrence& r2 ) const // OK to compare the pointers switch ( recurs ) { case rWeekly: return rDays == r2.rDays && rWeekStart == r2.rWeekStart; - case rMonthlyPos: - return rMonthPositions.count() == r2.rMonthPositions.count(); - case rMonthlyDay: - return rMonthDays.count() == r2.rMonthDays.count(); - case rYearlyPos: - return rYearNums.count() == r2.rYearNums.count() - && rMonthPositions.count() == r2.rMonthPositions.count(); - case rYearlyMonth: - return rYearNums.count() == r2.rYearNums.count() - && mFeb29YearlyType == r2.mFeb29YearlyType; - case rYearlyDay: - return rYearNums == r2.rYearNums; + case rMonthlyPos: { + QPtrList<rMonthPos> MonthPositions = rMonthPositions; + QPtrList<rMonthPos> MonthPositions2 = r2.rMonthPositions; + if ( !MonthPositions.count() ) + return false; + if ( !MonthPositions2.count() ) + return false; + return MonthPositions.first()->rPos == MonthPositions2.first()->rPos; + } + case rMonthlyDay: { + QPtrList<int> MonthDays = rMonthDays ; + QPtrList<int> MonthDays2 = r2.rMonthDays ; + if ( !MonthDays.count() ) + return false; + if ( !MonthDays2.count() ) + return false; + return *MonthDays.first() == *MonthDays2.first() ; + } + case rYearlyPos: { + + QPtrList<int> YearNums = rYearNums; + QPtrList<int> YearNums2 = r2.rYearNums; + if ( *YearNums.first() != *YearNums2.first() ) + return false; + QPtrList<rMonthPos> MonthPositions = rMonthPositions; + QPtrList<rMonthPos> MonthPositions2 = r2.rMonthPositions; + if ( !MonthPositions.count() ) + return false; + if ( !MonthPositions2.count() ) + return false; + return MonthPositions.first()->rPos == MonthPositions2.first()->rPos; + + } + case rYearlyMonth: { + QPtrList<int> YearNums = rYearNums; + QPtrList<int> YearNums2 = r2.rYearNums; + return ( *YearNums.first() == *YearNums2.first() && mFeb29YearlyType == r2.mFeb29YearlyType); + } + case rYearlyDay: { + QPtrList<int> YearNums = rYearNums; + QPtrList<int> YearNums2 = r2.rYearNums; + return ( *YearNums.first() == *YearNums2.first() ); + } case rNone: case rMinutely: case rHourly: case rDaily: default: return true; diff --git a/libkcal/sharpformat.cpp b/libkcal/sharpformat.cpp index defdb09..89eb72f 100644 --- a/libkcal/sharpformat.cpp +++ b/libkcal/sharpformat.cpp @@ -177,14 +177,15 @@ class SharpParser : public QObject Alarm *alarm; if ( event->alarms().count() > 0 ) alarm = event->alarms().first(); else { alarm = new Alarm( event ); event->addAlarm( alarm ); + alarm->setType( Alarm::Audio ); } - alarm->setType( Alarm::Audio ); + //alarm->setType( Alarm::Audio ); alarm->setEnabled( true ); int alarmOffset = attList[9].toInt(); alarm->setStartOffset( alarmOffset * -60 ); } else { Alarm *alarm; if ( event->alarms().count() > 0 ) { @@ -365,19 +366,19 @@ ulong SharpFormat::getCsum( const QStringList & attList) } } return cSum; } #include <stdlib.h> -#define DEBUGMODE false +//#define DEBUGMODE false +#define DEBUGMODE true bool SharpFormat::load( Calendar *calendar, Calendar *existngCal ) { bool debug = DEBUGMODE; - //debug = true; QString text; QString codec = "utf8"; QLabel status ( i18n("Reading events ..."), 0 ); int w = status.sizeHint().width()+20 ; if ( w < 200 ) w = 200; |