summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp44
-rw-r--r--libkcal/calendarlocal.cpp27
2 files changed, 41 insertions, 30 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 1800cf2..8385bcc 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1686,145 +1686,151 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1686 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1686 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1687 QPtrList<Incidence> er = remote->rawIncidences(); 1687 QPtrList<Incidence> er = remote->rawIncidences();
1688 Incidence* inR = er.first(); 1688 Incidence* inR = er.first();
1689 Incidence* inL; 1689 Incidence* inL;
1690 QProgressBar bar( er.count(),0 ); 1690 QProgressBar bar( er.count(),0 );
1691 bar.setCaption (i18n("Syncing - close to abort!") ); 1691 bar.setCaption (i18n("Syncing - close to abort!") );
1692 1692
1693 // ************** setting up filter ************* 1693 // ************** setting up filter *************
1694 CalFilter *filterIN = 0; 1694 CalFilter *filterIN = 0;
1695 CalFilter *filterOUT = 0; 1695 CalFilter *filterOUT = 0;
1696 CalFilter *filter = mFilters.first(); 1696 CalFilter *filter = mFilters.first();
1697 while(filter) { 1697 while(filter) {
1698 if ( filter->name() == mSyncManager->mFilterInCal ) 1698 if ( filter->name() == mSyncManager->mFilterInCal )
1699 filterIN = filter; 1699 filterIN = filter;
1700 if ( filter->name() == mSyncManager->mFilterOutCal ) 1700 if ( filter->name() == mSyncManager->mFilterOutCal )
1701 filterOUT = filter; 1701 filterOUT = filter;
1702 filter = mFilters.next(); 1702 filter = mFilters.next();
1703 } 1703 }
1704 int w = 300; 1704 int w = 300;
1705 if ( QApplication::desktop()->width() < 320 ) 1705 if ( QApplication::desktop()->width() < 320 )
1706 w = 220; 1706 w = 220;
1707 int h = bar.sizeHint().height() ; 1707 int h = bar.sizeHint().height() ;
1708 int dw = QApplication::desktop()->width(); 1708 int dw = QApplication::desktop()->width();
1709 int dh = QApplication::desktop()->height(); 1709 int dh = QApplication::desktop()->height();
1710 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1710 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1711 bar.show(); 1711 bar.show();
1712 int modulo = (er.count()/10)+1; 1712 int modulo = (er.count()/10)+1;
1713 int incCounter = 0; 1713 int incCounter = 0;
1714 while ( inR ) { 1714 while ( inR ) {
1715 if ( ! bar.isVisible() ) 1715 if ( ! bar.isVisible() )
1716 return false; 1716 return false;
1717 if ( incCounter % modulo == 0 ) 1717 if ( incCounter % modulo == 0 )
1718 bar.setProgress( incCounter ); 1718 bar.setProgress( incCounter );
1719 ++incCounter; 1719 ++incCounter;
1720 uid = inR->uid(); 1720 uid = inR->uid();
1721 bool skipIncidence = false; 1721 bool skipIncidence = false;
1722 if ( uid.left(15) == QString("last-syncEvent-") ) 1722 if ( uid.left(15) == QString("last-syncEvent-") )
1723 skipIncidence = true; 1723 skipIncidence = true;
1724 QString idS; 1724 QString idS;
1725 qApp->processEvents(); 1725 qApp->processEvents();
1726 if ( !skipIncidence ) { 1726 if ( !skipIncidence ) {
1727 int hasCalId = 0; 1727 int hasCalId = 0;
1728 inL = local->incidenceForUid( uid , false , true, &hasCalId ); 1728 inL = local->incidenceForUid( uid , false , true, &hasCalId );
1729 if ( hasCalId && !inL ) 1729 if ( hasCalId && !inL )
1730 inL = local->incidenceForUid( uid , false , true, &hasCalId ); 1730 inL = local->incidenceForUid( uid , false , true, &hasCalId );
1731 else 1731 else
1732 hasCalId = 0; 1732 hasCalId = 0;
1733 if ( inL ) { // maybe conflict - same uid in both calendars 1733 if ( inL ) { // maybe conflict - same uid in both calendars
1734 if ( hasCalId ) 1734
1735 qDebug("KO: Cal id %d conflict detected: %s ", hasCalId, inL->summary().latin1());
1736 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1735 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1737 //qDebug("take %d %s ", take, inL->summary().latin1()); 1736 //qDebug("take %d %s ", take, inL->summary().latin1());
1738 if ( take == 3 ) 1737 if ( take == 3 )
1739 return false; 1738 return false;
1740 if ( take == 1 ) {// take local ********************** 1739 if ( take == 1 ) {// take local **********************
1741 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1740 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1742 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1741 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1743 else 1742 else
1744 idS = inR->IDStr(); 1743 idS = inR->IDStr();
1745 int calID = inR->calID(); 1744 int calID = inR->calID();
1746 remote->deleteIncidence( inR ); 1745 remote->deleteIncidence( inR );
1747 inR = inL->clone(); 1746 if ( !hasCalId ) {
1748 inR->setCalID_block( calID ); 1747 inR = inL->clone();
1749 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1748 inR->setCalID_block( calID );
1750 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1749 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1751 inR->setIDStr( idS ); 1750 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1752 remote->addIncidence( inR ); 1751 inR->setIDStr( idS );
1753 if ( mSyncManager->syncWithDesktop() ) 1752 remote->addIncidence( inR );
1754 inR->setPilotId( 2 ); 1753 if ( mSyncManager->syncWithDesktop() )
1755 ++changedRemote; 1754 inR->setPilotId( 2 );
1755 ++changedRemote;
1756 } else
1757 ++deletedEventR;
1756 } else {// take remote ********************** 1758 } else {// take remote **********************
1757 if ( !inL->isReadOnly() ) { 1759 if ( !inL->isReadOnly() ) {
1758 idS = inL->IDStr(); 1760 idS = inL->IDStr();
1759 int pid = inL->pilotId(); 1761 int pid = inL->pilotId();
1760 int calID = inL->calID(); 1762 int calID = inL->calID();
1761 if ( hasCalId ) 1763 if ( hasCalId )
1762 calID = hasCalId; 1764 calID = 0;// add to default calendar
1763 local->deleteIncidence( inL ); 1765 local->deleteIncidence( inL );
1764 inL = inR->clone(); 1766 inL = inR->clone();
1765 inL->setCalID_block( calID ); 1767 inL->setCalID_block( calID );
1766 if ( mSyncManager->syncWithDesktop() ) 1768 if ( mSyncManager->syncWithDesktop() )
1767 inL->setPilotId( pid ); 1769 inL->setPilotId( pid );
1768 inL->setIDStr( idS ); 1770 inL->setIDStr( idS );
1769 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1771 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1770 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1772 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1771 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1773 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1772 } 1774 }
1773 local->addIncidence( inL ); 1775 local->addIncidence( inL );
1774 ++changedLocal; 1776 ++changedLocal;
1775 } 1777 }
1776 } 1778 }
1777 } else { 1779 } else {
1778 // take == 0; events equal 1780 // take == 0; events equal
1779 if ( hasCalId ) 1781 if ( hasCalId ) {
1780 qDebug("EV EQUALLLL **************************** "); 1782 qDebug("KO: Changing Cal id %d to %d for : %s ", hasCalId, local->defaultCalendar(),inL->summary().latin1());
1783 inL->setCalID( local->defaultCalendar() );
1784 }
1781 1785
1782 } 1786 }
1787
1788
1783 } else { // no conflict ********** add or delete remote 1789 } else { // no conflict ********** add or delete remote
1784 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1790 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1785 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1791 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1786 QString des = eventLSync->description(); 1792 QString des = eventLSync->description();
1787 QString pref = "e"; 1793 QString pref = "e";
1788 if ( inR->typeID() == todoID ) 1794 if ( inR->typeID() == todoID )
1789 pref = "t"; 1795 pref = "t";
1790 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1796 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1791 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1797 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1792 //remote->deleteIncidence( inR ); 1798 //remote->deleteIncidence( inR );
1793 ++deletedEventR; 1799 ++deletedEventR;
1794 } else { 1800 } else {
1795 inR->setLastModified( modifiedCalendar ); 1801 inR->setLastModified( modifiedCalendar );
1796 inL = inR->clone(); 1802 inL = inR->clone();
1797 inL->setIDStr( ":" ); 1803 inL->setIDStr( ":" );
1798 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1804 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1799 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1805 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1800 1806
1801 inL->setCalID_block( 0 );// add to default cal 1807 inL->setCalID_block( 0 );// add to default cal
1802 local->addIncidence( inL ); 1808 local->addIncidence( inL );
1803 ++addedEvent; 1809 ++addedEvent;
1804 1810
1805 } 1811 }
1806 } else { 1812 } else {
1807 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1813 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1808 inR->setLastModified( modifiedCalendar ); 1814 inR->setLastModified( modifiedCalendar );
1809 inL = inR->clone(); 1815 inL = inR->clone();
1810 inL->setIDStr( ":" ); 1816 inL->setIDStr( ":" );
1811 inL->setCalID_block( 0 );// add to default cal 1817 inL->setCalID_block( 0 );// add to default cal
1812 local->addIncidence( inL ); 1818 local->addIncidence( inL );
1813 ++addedEvent; 1819 ++addedEvent;
1814 1820
1815 } else { 1821 } else {
1816 checkExternSyncEvent(eventRSyncSharp, inR); 1822 checkExternSyncEvent(eventRSyncSharp, inR);
1817 remote->deleteIncidence( inR ); 1823 remote->deleteIncidence( inR );
1818 ++deletedEventR; 1824 ++deletedEventR;
1819 } 1825 }
1820 } 1826 }
1821 } else { 1827 } else {
1822 ++filteredIN; 1828 ++filteredIN;
1823 } 1829 }
1824 } 1830 }
1825 } 1831 }
1826 inR = er.next(); 1832 inR = er.next();
1827 } 1833 }
1828 QPtrList<Incidence> el = local->rawIncidences(); 1834 QPtrList<Incidence> el = local->rawIncidences();
1829 inL = el.first(); 1835 inL = el.first();
1830 modulo = (el.count()/10)+1; 1836 modulo = (el.count()/10)+1;
@@ -2437,106 +2443,102 @@ bool CalendarView::openCalendar(QString filename, bool merge)
2437 return true; 2443 return true;
2438 } else { 2444 } else {
2439 // while failing to load, the calendar object could 2445 // while failing to load, the calendar object could
2440 // have become partially populated. Clear it out. 2446 // have become partially populated. Clear it out.
2441 if ( !merge ) { 2447 if ( !merge ) {
2442 mCalendar->close(); 2448 mCalendar->close();
2443 mViewManager->setDocumentId( filename ); 2449 mViewManager->setDocumentId( filename );
2444 mDialogManager->setDocumentId( filename ); 2450 mDialogManager->setDocumentId( filename );
2445 mTodoList->setDocumentId( filename ); 2451 mTodoList->setDocumentId( filename );
2446 } 2452 }
2447 2453
2448 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2454 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2449 2455
2450 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2456 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2451 globalFlagBlockAgenda = 2; 2457 globalFlagBlockAgenda = 2;
2452 mCalendar->reInitAlarmSettings(); 2458 mCalendar->reInitAlarmSettings();
2453 setSyncEventsReadOnly(); 2459 setSyncEventsReadOnly();
2454 updateUnmanagedViews(); 2460 updateUnmanagedViews();
2455 updateView(); 2461 updateView();
2456 } 2462 }
2457 return false; 2463 return false;
2458} 2464}
2459void CalendarView::mergeFile( QString fn ) 2465void CalendarView::mergeFile( QString fn )
2460{ 2466{
2461 clearAllViews(); 2467 clearAllViews();
2462 mCalendar->mergeCalendarFile( fn ); 2468 mCalendar->mergeCalendarFile( fn );
2463 mCalendar->reInitAlarmSettings(); 2469 mCalendar->reInitAlarmSettings();
2464 setSyncEventsReadOnly(); 2470 setSyncEventsReadOnly();
2465 updateUnmanagedViews(); 2471 updateUnmanagedViews();
2466 updateView(); 2472 updateView();
2467} 2473}
2468void CalendarView::mergeFileResource( QString fn ,QString resource ) 2474void CalendarView::mergeFileResource( QString fn ,QString resource )
2469{ 2475{
2470 2476
2471 if ( resource == "ALL" ) { 2477 if ( resource == "ALL" ) {
2472 mCalendar->setAllCalendarEnabled( true ); 2478 mCalendar->setAllCalendarEnabled( true );
2473 mergeFile( fn ); 2479 mergeFile( fn );
2474 restoreCalendarSettings(); 2480 restoreCalendarSettings();
2475 return; 2481 return;
2476 } 2482 }
2477 2483
2478 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2484 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2479 if ( !exclusiveResource ) { 2485 if ( !exclusiveResource ) {
2480 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() ); 2486 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() );
2481 return; 2487 return;
2482 } 2488 }
2483 clearAllViews(); 2489 clearAllViews();
2484 mCalendar->setCalendarRemove( exclusiveResource ); 2490 mCalendar->setCalendarRemove( exclusiveResource );
2485 int def = mCalendar->defaultCalendar();
2486 mCalendar->setDefaultCalendar(exclusiveResource); 2491 mCalendar->setDefaultCalendar(exclusiveResource);
2492 mCalendar->setAllCalendarEnabled( true );
2487 if ( !mCalendar->addCalendarFile( fn, exclusiveResource )) { 2493 if ( !mCalendar->addCalendarFile( fn, exclusiveResource )) {
2488 qDebug("KO: CalendarView::mergeFileResource: error adding file %s", fn.latin1() ); 2494 qDebug("KO: CalendarView::mergeFileResource: error adding file %s", fn.latin1() );
2489 } 2495 }
2490 mCalendar->setDefaultCalendar( def ); 2496 restoreCalendarSettings();
2491 mCalendar->reInitAlarmSettings();
2492 setSyncEventsReadOnly();
2493 updateUnmanagedViews();
2494 updateView();
2495} 2497}
2496void CalendarView::showOpenError() 2498void CalendarView::showOpenError()
2497{ 2499{
2498 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2500 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2499} 2501}
2500void CalendarView::setLoadedFileVersion(QDateTime dt) 2502void CalendarView::setLoadedFileVersion(QDateTime dt)
2501{ 2503{
2502 loadedFileVersion = dt; 2504 loadedFileVersion = dt;
2503} 2505}
2504bool CalendarView::checkFileChanged(QString fn) 2506bool CalendarView::checkFileChanged(QString fn)
2505{ 2507{
2506 QFileInfo finf ( fn ); 2508 QFileInfo finf ( fn );
2507 if ( !finf.exists() ) 2509 if ( !finf.exists() )
2508 return true; 2510 return true;
2509 QDateTime dt = finf.lastModified (); 2511 QDateTime dt = finf.lastModified ();
2510 if ( dt <= loadedFileVersion ) 2512 if ( dt <= loadedFileVersion )
2511 return false; 2513 return false;
2512 return true; 2514 return true;
2513 2515
2514} 2516}
2515void CalendarView::watchSavedFile() 2517void CalendarView::watchSavedFile()
2516{ 2518{
2517 QFileInfo finf ( MainWindow::defaultFileName()); 2519 QFileInfo finf ( MainWindow::defaultFileName());
2518 if ( !finf.exists() ) 2520 if ( !finf.exists() )
2519 return; 2521 return;
2520 QDateTime dt = finf.lastModified (); 2522 QDateTime dt = finf.lastModified ();
2521 if ( dt < loadedFileVersion ) { 2523 if ( dt < loadedFileVersion ) {
2522 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2524 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2523 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2525 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2524 return; 2526 return;
2525 } 2527 }
2526 loadedFileVersion = dt; 2528 loadedFileVersion = dt;
2527} 2529}
2528bool CalendarView::checkAllFileVersions() 2530bool CalendarView::checkAllFileVersions()
2529{ 2531{
2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2532 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2531 KopiCalendarFile * cal = calendars.first(); 2533 KopiCalendarFile * cal = calendars.first();
2532 mCalendar->setDefaultCalendar( 1 ); 2534 mCalendar->setDefaultCalendar( 1 );
2533 mCalendar->setDefaultCalendarEnabledOnly(); 2535 mCalendar->setDefaultCalendarEnabledOnly();
2534 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2536 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2535 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2537 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2536 restoreCalendarSettings(); 2538 restoreCalendarSettings();
2537 return false; 2539 return false;
2538 } 2540 }
2539 } 2541 }
2540 cal = calendars.next(); 2542 cal = calendars.next();
2541 QDateTime storeTemp = loadedFileVersion; 2543 QDateTime storeTemp = loadedFileVersion;
2542 while ( cal ) { 2544 while ( cal ) {
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 980663f..8a5a76f 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -214,144 +214,153 @@ bool CalendarLocal::mergeCalendar( Calendar* remote )
214 } 214 }
215 } else { 215 } else {
216 inL = inR->clone(); 216 inL = inR->clone();
217 inL->setCalID_block( 0 );// add to default cal 217 inL->setCalID_block( 0 );// add to default cal
218 addIncidence( inL ); 218 addIncidence( inL );
219 } 219 }
220 inR = er.next(); 220 inR = er.next();
221 } 221 }
222 return true; 222 return true;
223} 223}
224 224
225 225
226bool CalendarLocal::addCalendarFile( QString name, int id ) 226bool CalendarLocal::addCalendarFile( QString name, int id )
227{ 227{
228 CalendarLocal calendar( timeZoneId() ); 228 CalendarLocal calendar( timeZoneId() );
229 calendar.setDefaultCalendar( id ); 229 calendar.setDefaultCalendar( id );
230 if ( calendar.load( name ) ) { 230 if ( calendar.load( name ) ) {
231 addCalendar( &calendar ); 231 addCalendar( &calendar );
232 return true; 232 return true;
233 } 233 }
234 return false; 234 return false;
235} 235}
236void CalendarLocal::setSyncEventsEnabled() 236void CalendarLocal::setSyncEventsEnabled()
237{ 237{
238 Event * ev; 238 Event * ev;
239 ev = mEventList.first(); 239 ev = mEventList.first();
240 while ( ev ) { 240 while ( ev ) {
241 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 241 if ( ev->uid().left(15) == QString("last-syncEvent-") )
242 ev->setCalEnabled( true ); 242 ev->setCalEnabled( true );
243 ev = mEventList.next(); 243 ev = mEventList.next();
244 } 244 }
245} 245}
246void CalendarLocal::setSyncEventsReadOnly() 246void CalendarLocal::setSyncEventsReadOnly()
247{ 247{
248 Event * ev; 248 Event * ev;
249 ev = mEventList.first(); 249 ev = mEventList.first();
250 while ( ev ) { 250 while ( ev ) {
251 if ( ev->uid().left(15) == QString("last-syncEvent-") ) { 251 if ( ev->uid().left(15) == QString("last-syncEvent-") ) {
252 ev->setReadOnly( true ); 252 ev->setReadOnly( true );
253 } 253 }
254 ev = mEventList.next(); 254 ev = mEventList.next();
255 } 255 }
256} 256}
257 257
258void CalendarLocal::addCalendar( Calendar* cal ) 258void CalendarLocal::addCalendar( Calendar* cal )
259{ 259{
260 cal->setDontDeleteIncidencesOnClose(); 260 cal->setDontDeleteIncidencesOnClose();
261 setSyncEventsEnabled(); 261 setSyncEventsEnabled();
262 QPtrList<Incidence> incList;
262 { 263 {
263 QPtrList<Event> EventList = cal->rawEvents(); 264 QPtrList<Event> EventList = cal->rawEvents();
264 QPtrList<Event> el;
265 Event * ev = EventList.first(); 265 Event * ev = EventList.first();
266 while ( ev ) { 266 while ( ev ) {
267 if ( ev->uid().left( 15 ) == QString("last-syncEvent-") ) { 267 if ( ev->uid().left( 15 ) == QString("last-syncEvent-") ) {
268 Event * se = event( ev->uid() );
269 if ( se )
270 el.append( se );
271 ev->setCalID_block( 1 ); 268 ev->setCalID_block( 1 );
272 } 269 }
270 Event * se = event( ev->uid() );
271 if ( se )
272 incList.append( se );
273 ev->unRegisterObserver( cal ); 273 ev->unRegisterObserver( cal );
274 ev->registerObserver( this ); 274 ev->registerObserver( this );
275 mEventList.append( ev ); 275 mEventList.append( ev );
276 ev = EventList.next(); 276 ev = EventList.next();
277 } 277 }
278 for ( ev = el.first(); ev; ev = el.next() ) { 278
279 deleteIncidence ( ev );
280 }
281 } 279 }
282 { 280 {
283 281
284 QPtrList<Todo> TodoList = cal->rawTodos(); 282 QPtrList<Todo> TodoList = cal->rawTodos();
285 Todo * ev = TodoList.first(); 283 Todo * ev = TodoList.first();
286 while ( ev ) { 284 while ( ev ) {
287 ev->resetRelatedTo(); 285 ev->resetRelatedTo();
288 ev = TodoList.next(); 286 ev = TodoList.next();
289 } 287 }
290 //TodoList = cal->rawTodos(); 288 //TodoList = cal->rawTodos();
291 ev = TodoList.first(); 289 ev = TodoList.first();
292 while ( ev ) { 290 while ( ev ) {
291 Todo * se = todo( ev->uid() );
292 if ( se )
293 incList.append( se );
293 ev->unRegisterObserver( cal ); 294 ev->unRegisterObserver( cal );
294 ev->registerObserver( this ); 295 ev->registerObserver( this );
295 mTodoList.append( ev ); 296 mTodoList.append( ev );
296 setupRelations( ev ); 297 setupRelations( ev );
297 ev = TodoList.next(); 298 ev = TodoList.next();
298 } 299 }
299 } 300 }
300 { 301 {
301 QPtrList<Journal> JournalList = cal->journals(); 302 QPtrList<Journal> JournalList = cal->journals();
302 Journal * ev = JournalList.first(); 303 Journal * ev = JournalList.first();
303 while ( ev ) { 304 while ( ev ) {
305 Journal * se = journal( ev->uid() );
306 if ( se )
307 incList.append( se );
304 ev->unRegisterObserver( cal ); 308 ev->unRegisterObserver( cal );
305 ev->registerObserver( this ); 309 ev->registerObserver( this );
306 mJournalList.append( ev ); 310 mJournalList.append( ev );
307 ev = JournalList.next(); 311 ev = JournalList.next();
308 } 312 }
309 } 313 }
314 {
315 for (Incidence * ev = incList.first(); ev; ev = incList.next() ) {
316 deleteIncidence ( ev );
317 }
318 }
310 setModified( true ); 319 setModified( true );
311} 320}
312bool CalendarLocal::load( const QString &fileName ) 321bool CalendarLocal::load( const QString &fileName )
313{ 322{
314 FileStorage storage( this, fileName ); 323 FileStorage storage( this, fileName );
315 return storage.load(); 324 return storage.load();
316} 325}
317 326
318bool CalendarLocal::save( const QString &fileName, CalFormat *format ) 327bool CalendarLocal::save( const QString &fileName, CalFormat *format )
319{ 328{
320 FileStorage storage( this, fileName, format ); 329 FileStorage storage( this, fileName, format );
321 return storage.save(); 330 return storage.save();
322} 331}
323 332
324void CalendarLocal::stopAllTodos() 333void CalendarLocal::stopAllTodos()
325{ 334{
326 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 335 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
327 it->setRunning( false ); 336 it->setRunning( false );
328 337
329} 338}
330void CalendarLocal::close() 339void CalendarLocal::close()
331{ 340{
332 341
333 Todo * i; 342 Todo * i;
334 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false); 343 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false);
335 344
336 mEventList.setAutoDelete( true ); 345 mEventList.setAutoDelete( true );
337 mTodoList.setAutoDelete( true ); 346 mTodoList.setAutoDelete( true );
338 mJournalList.setAutoDelete( true ); 347 mJournalList.setAutoDelete( true );
339 348
340 mEventList.clear(); 349 mEventList.clear();
341 mTodoList.clear(); 350 mTodoList.clear();
342 mJournalList.clear(); 351 mJournalList.clear();
343 352
344 mEventList.setAutoDelete( false ); 353 mEventList.setAutoDelete( false );
345 mTodoList.setAutoDelete( false ); 354 mTodoList.setAutoDelete( false );
346 mJournalList.setAutoDelete( false ); 355 mJournalList.setAutoDelete( false );
347 356
348 setModified( false ); 357 setModified( false );
349} 358}
350 359
351bool CalendarLocal::addAnniversaryNoDup( Event *event ) 360bool CalendarLocal::addAnniversaryNoDup( Event *event )
352{ 361{
353 QString cat; 362 QString cat;
354 bool isBirthday = true; 363 bool isBirthday = true;
355 if( event->categoriesStr() == i18n( "Anniversary" ) ) { 364 if( event->categoriesStr() == i18n( "Anniversary" ) ) {
356 isBirthday = false; 365 isBirthday = false;
357 cat = i18n( "Anniversary" ); 366 cat = i18n( "Anniversary" );