summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-11-25 20:49:16 (UTC)
committer zautrix <zautrix>2005-11-25 20:49:16 (UTC)
commit2468bddcb380d8621d5bb49b69b3492d90562d93 (patch) (unidiff)
treec310f4fff5e476087e8406614e57a7f258f1b14f /korganizer
parent7a439999b9fa2bd7ad76e195cdf95bf5211952cb (diff)
downloadkdepimpi-2468bddcb380d8621d5bb49b69b3492d90562d93.zip
kdepimpi-2468bddcb380d8621d5bb49b69b3492d90562d93.tar.gz
kdepimpi-2468bddcb380d8621d5bb49b69b3492d90562d93.tar.bz2
sync
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 307027a..e45240a 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1403,513 +1403,513 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b
1403 QDateTime remoteMod = remote->lastModified(); 1403 QDateTime remoteMod = remote->lastModified();
1404 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1404 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1405 bool remCh, locCh; 1405 bool remCh, locCh;
1406 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 1406 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
1407 //if ( remCh ) 1407 //if ( remCh )
1408 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 1408 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
1409 locCh = ( localMod > mLastCalendarSync ); 1409 locCh = ( localMod > mLastCalendarSync );
1410 if ( !remCh && ! locCh ) { 1410 if ( !remCh && ! locCh ) {
1411 //qDebug("both not changed "); 1411 //qDebug("both not changed ");
1412 lastSync = localMod.addDays(1); 1412 lastSync = localMod.addDays(1);
1413 if ( mode <= SYNC_PREF_ASK ) 1413 if ( mode <= SYNC_PREF_ASK )
1414 return 0; 1414 return 0;
1415 } else { 1415 } else {
1416 if ( locCh ) { 1416 if ( locCh ) {
1417 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 1417 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
1418 lastSync = localMod.addDays( -1 ); 1418 lastSync = localMod.addDays( -1 );
1419 if ( !remCh ) 1419 if ( !remCh )
1420 remoteMod = ( lastSync.addDays( -1 ) ); 1420 remoteMod = ( lastSync.addDays( -1 ) );
1421 } else { 1421 } else {
1422 //qDebug(" not loc changed "); 1422 //qDebug(" not loc changed ");
1423 lastSync = localMod.addDays( 1 ); 1423 lastSync = localMod.addDays( 1 );
1424 if ( remCh ) 1424 if ( remCh )
1425 remoteMod =( lastSync.addDays( 1 ) ); 1425 remoteMod =( lastSync.addDays( 1 ) );
1426 1426
1427 } 1427 }
1428 } 1428 }
1429 full = true; 1429 full = true;
1430 if ( mode < SYNC_PREF_ASK ) 1430 if ( mode < SYNC_PREF_ASK )
1431 mode = SYNC_PREF_ASK; 1431 mode = SYNC_PREF_ASK;
1432 } else { 1432 } else {
1433 if ( localMod == remoteMod ) 1433 if ( localMod == remoteMod )
1434 // if ( local->revision() == remote->revision() ) 1434 // if ( local->revision() == remote->revision() )
1435 return 0; 1435 return 0;
1436 1436
1437 } 1437 }
1438 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 1438 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
1439 1439
1440 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 1440 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
1441 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 1441 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
1442 //full = true; //debug only 1442 //full = true; //debug only
1443 if ( full ) { 1443 if ( full ) {
1444 bool equ = false; 1444 bool equ = false;
1445 if ( local->typeID() == eventID ) { 1445 if ( local->typeID() == eventID ) {
1446 equ = (*((Event*) local) == *((Event*) remote)); 1446 equ = (*((Event*) local) == *((Event*) remote));
1447 } 1447 }
1448 else if ( local->typeID() == todoID ) 1448 else if ( local->typeID() == todoID )
1449 equ = (*((Todo*) local) == (*(Todo*) remote)); 1449 equ = (*((Todo*) local) == (*(Todo*) remote));
1450 else if ( local->typeID() == journalID ) 1450 else if ( local->typeID() == journalID )
1451 equ = (*((Journal*) local) == *((Journal*) remote)); 1451 equ = (*((Journal*) local) == *((Journal*) remote));
1452 if ( equ ) { 1452 if ( equ ) {
1453 //qDebug("equal "); 1453 //qDebug("equal ");
1454 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1454 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1455 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 1455 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
1456 } 1456 }
1457 if ( mode < SYNC_PREF_FORCE_LOCAL ) 1457 if ( mode < SYNC_PREF_FORCE_LOCAL )
1458 return 0; 1458 return 0;
1459 1459
1460 }//else //debug only 1460 }//else //debug only
1461 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 1461 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
1462 } 1462 }
1463 int result; 1463 int result;
1464 bool localIsNew; 1464 bool localIsNew;
1465 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 1465 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
1466 1466
1467 1467
1468 // ************************************************ 1468 // ************************************************
1469 // ************************************************ 1469 // ************************************************
1470 // ************************************************ 1470 // ************************************************
1471 // We may have that lastSync > remoteMod AND lastSync > localMod 1471 // We may have that lastSync > remoteMod AND lastSync > localMod
1472 // BUT remoteMod != localMod 1472 // BUT remoteMod != localMod
1473 1473
1474 1474
1475 if ( full && mode < SYNC_PREF_NEWEST ) 1475 if ( full && mode < SYNC_PREF_NEWEST )
1476 mode = SYNC_PREF_ASK; 1476 mode = SYNC_PREF_ASK;
1477 1477
1478 switch( mode ) { 1478 switch( mode ) {
1479 case SYNC_PREF_LOCAL: 1479 case SYNC_PREF_LOCAL:
1480 if ( lastSync > remoteMod ) 1480 if ( lastSync > remoteMod )
1481 return 1; 1481 return 1;
1482 if ( lastSync > localMod ) 1482 if ( lastSync > localMod )
1483 return 2; 1483 return 2;
1484 return 1; 1484 return 1;
1485 break; 1485 break;
1486 case SYNC_PREF_REMOTE: 1486 case SYNC_PREF_REMOTE:
1487 if ( lastSync > localMod ) 1487 if ( lastSync > localMod )
1488 return 2; 1488 return 2;
1489 if ( lastSync > remoteMod ) 1489 if ( lastSync > remoteMod )
1490 return 1; 1490 return 1;
1491 return 2; 1491 return 2;
1492 break; 1492 break;
1493 case SYNC_PREF_NEWEST: 1493 case SYNC_PREF_NEWEST:
1494 if ( localMod >= remoteMod ) 1494 if ( localMod >= remoteMod )
1495 return 1; 1495 return 1;
1496 else 1496 else
1497 return 2; 1497 return 2;
1498 break; 1498 break;
1499 case SYNC_PREF_ASK: 1499 case SYNC_PREF_ASK:
1500 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1500 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1501 if ( lastSync > remoteMod && lastSync > localMod) 1501 if ( lastSync > remoteMod && lastSync > localMod)
1502 return 0; 1502 return 0;
1503 if ( lastSync > remoteMod ) 1503 if ( lastSync > remoteMod )
1504 return 1; 1504 return 1;
1505 if ( lastSync > localMod ) 1505 if ( lastSync > localMod )
1506 return 2; 1506 return 2;
1507 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1507 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1508 localIsNew = localMod >= remoteMod; 1508 localIsNew = localMod >= remoteMod;
1509 if ( localIsNew ) 1509 if ( localIsNew )
1510 getEventViewerDialog()->setColorMode( 1 ); 1510 getEventViewerDialog()->setColorMode( 1 );
1511 else 1511 else
1512 getEventViewerDialog()->setColorMode( 2 ); 1512 getEventViewerDialog()->setColorMode( 2 );
1513 getEventViewerDialog()->setIncidence(local); 1513 getEventViewerDialog()->setIncidence(local);
1514 if ( localIsNew ) 1514 if ( localIsNew )
1515 getEventViewerDialog()->setColorMode( 2 ); 1515 getEventViewerDialog()->setColorMode( 2 );
1516 else 1516 else
1517 getEventViewerDialog()->setColorMode( 1 ); 1517 getEventViewerDialog()->setColorMode( 1 );
1518 getEventViewerDialog()->addIncidence(remote); 1518 getEventViewerDialog()->addIncidence(remote);
1519 getEventViewerDialog()->setColorMode( 0 ); 1519 getEventViewerDialog()->setColorMode( 0 );
1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1522 getEventViewerDialog()->showMe(); 1522 getEventViewerDialog()->showMe();
1523 result = getEventViewerDialog()->executeS( localIsNew ); 1523 result = getEventViewerDialog()->executeS( localIsNew );
1524 return result; 1524 return result;
1525 1525
1526 break; 1526 break;
1527 case SYNC_PREF_FORCE_LOCAL: 1527 case SYNC_PREF_FORCE_LOCAL:
1528 return 1; 1528 return 1;
1529 break; 1529 break;
1530 case SYNC_PREF_FORCE_REMOTE: 1530 case SYNC_PREF_FORCE_REMOTE:
1531 return 2; 1531 return 2;
1532 break; 1532 break;
1533 1533
1534 default: 1534 default:
1535 // SYNC_PREF_TAKE_BOTH not implemented 1535 // SYNC_PREF_TAKE_BOTH not implemented
1536 break; 1536 break;
1537 } 1537 }
1538 return 0; 1538 return 0;
1539} 1539}
1540Event* CalendarView::getLastSyncEvent() 1540Event* CalendarView::getLastSyncEvent()
1541{ 1541{
1542 Event* lse; 1542 Event* lse;
1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1544 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1544 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1545 if (!lse) { 1545 if (!lse) {
1546 lse = new Event(); 1546 lse = new Event();
1547 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1547 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1548 QString sum = ""; 1548 QString sum = "";
1549 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1549 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1550 sum = "E: "; 1550 sum = "E: ";
1551 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1551 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1552 lse->setDtStart( mLastCalendarSync ); 1552 lse->setDtStart( mLastCalendarSync );
1553 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1553 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1554 lse->setCategories( i18n("SyncEvent") ); 1554 lse->setCategories( i18n("SyncEvent") );
1555 lse->setReadOnly( true ); 1555 lse->setReadOnly( true );
1556 lse->setCalID( 1 ); 1556 lse->setCalID( 1 );
1557 mCalendar->addEvent( lse ); 1557 mCalendar->addEvent( lse );
1558 } 1558 }
1559 1559
1560 return lse; 1560 return lse;
1561 1561
1562} 1562}
1563 1563
1564// we check, if the to delete event has a id for a profile 1564// we check, if the to delete event has a id for a profile
1565// if yes, we set this id in the profile to delete 1565// if yes, we set this id in the profile to delete
1566void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1566void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1567{ 1567{
1568 if ( lastSync.count() == 0 ) { 1568 if ( lastSync.count() == 0 ) {
1569 //qDebug(" lastSync.count() == 0"); 1569 //qDebug(" lastSync.count() == 0");
1570 return; 1570 return;
1571 } 1571 }
1572 if ( toDelete->typeID() == journalID ) 1572 if ( toDelete->typeID() == journalID )
1573 return; 1573 return;
1574 1574
1575 Event* eve = lastSync.first(); 1575 Event* eve = lastSync.first();
1576 1576
1577 while ( eve ) { 1577 while ( eve ) {
1578 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1578 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1579 if ( !id.isEmpty() ) { 1579 if ( !id.isEmpty() ) {
1580 QString des = eve->description(); 1580 QString des = eve->description();
1581 QString pref = "e"; 1581 QString pref = "e";
1582 if ( toDelete->typeID() == todoID ) 1582 if ( toDelete->typeID() == todoID )
1583 pref = "t"; 1583 pref = "t";
1584 des += pref+ id + ","; 1584 des += pref+ id + ",";
1585 eve->setReadOnly( false ); 1585 eve->setReadOnly( false );
1586 eve->setDescription( des ); 1586 eve->setDescription( des );
1587 //qDebug("setdes %s ", des.latin1()); 1587 //qDebug("setdes %s ", des.latin1());
1588 eve->setReadOnly( true ); 1588 eve->setReadOnly( true );
1589 } 1589 }
1590 eve = lastSync.next(); 1590 eve = lastSync.next();
1591 } 1591 }
1592 1592
1593} 1593}
1594void CalendarView::checkExternalId( Incidence * inc ) 1594void CalendarView::checkExternalId( Incidence * inc )
1595{ 1595{
1596 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1596 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1597 checkExternSyncEvent( lastSync, inc ); 1597 checkExternSyncEvent( lastSync, inc );
1598 1598
1599} 1599}
1600bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1600bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1601{ 1601{
1602 bool syncOK = true; 1602 bool syncOK = true;
1603 int addedEvent = 0; 1603 int addedEvent = 0;
1604 int addedEventR = 0; 1604 int addedEventR = 0;
1605 int deletedEventR = 0; 1605 int deletedEventR = 0;
1606 int deletedEventL = 0; 1606 int deletedEventL = 0;
1607 int changedLocal = 0; 1607 int changedLocal = 0;
1608 int changedRemote = 0; 1608 int changedRemote = 0;
1609 int filteredIN = 0; 1609 int filteredIN = 0;
1610 int filteredOUT = 0; 1610 int filteredOUT = 0;
1611 //QPtrList<Event> el = local->rawEvents(); 1611 //QPtrList<Event> el = local->rawEvents();
1612 Event* eventR; 1612 Event* eventR;
1613 QString uid; 1613 QString uid;
1614 int take; 1614 int take;
1615 Event* eventRSync; 1615 Event* eventRSync;
1616 Event* eventLSync; 1616 Event* eventLSync;
1617 clearAllViews(); 1617 clearAllViews();
1618 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1618 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1619 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1619 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1620 bool fullDateRange = false; 1620 bool fullDateRange = false;
1621 local->resetTempSyncStat(); 1621 local->resetTempSyncStat();
1622 mLastCalendarSync = QDateTime::currentDateTime(); 1622 mLastCalendarSync = QDateTime::currentDateTime();
1623 if ( mSyncManager->syncWithDesktop() ) { 1623 if ( mSyncManager->syncWithDesktop() ) {
1624 remote->resetPilotStat(1); 1624 remote->resetPilotStat(1);
1625 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1625 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1626 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1626 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1627 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1627 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1628 } else { 1628 } else {
1629 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1629 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1630 } 1630 }
1631 } 1631 }
1632 QDateTime modifiedCalendar = mLastCalendarSync; 1632 QDateTime modifiedCalendar = mLastCalendarSync;
1633 eventLSync = getLastSyncEvent(); 1633 eventLSync = getLastSyncEvent();
1634 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1634 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1635 if ( eventR ) { 1635 if ( eventR ) {
1636 qDebug("last-syncEvent on remote found "); 1636 qDebug("last-syncEvent on remote found ");
1637 eventRSync = (Event*) eventR->clone(); 1637 eventRSync = (Event*) eventR->clone();
1638 remote->deleteEvent(eventR ); 1638 remote->deleteEvent(eventR );
1639 1639
1640 } else { 1640 } else {
1641 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1641 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1642 eventRSync = (Event*)eventLSync->clone(); 1642 eventRSync = (Event*)eventLSync->clone();
1643 } else { 1643 } else {
1644 fullDateRange = true; 1644 fullDateRange = true;
1645 eventRSync = new Event(); 1645 eventRSync = new Event();
1646 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1646 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1647 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1647 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1648 eventRSync->setDtStart( mLastCalendarSync ); 1648 eventRSync->setDtStart( mLastCalendarSync );
1649 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1649 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1650 eventRSync->setCategories( i18n("SyncEvent") ); 1650 eventRSync->setCategories( i18n("SyncEvent") );
1651 } 1651 }
1652 } 1652 }
1653 if ( eventLSync->dtStart() == mLastCalendarSync ) 1653 if ( eventLSync->dtStart() == mLastCalendarSync )
1654 fullDateRange = true; 1654 fullDateRange = true;
1655 1655
1656 if ( ! fullDateRange ) { 1656 if ( ! fullDateRange ) {
1657 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1657 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1658 1658
1659 qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1659 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1660 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1660 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1661 fullDateRange = true; 1661 fullDateRange = true;
1662 } 1662 }
1663 } 1663 }
1664 if ( mSyncManager->syncWithDesktop() ) { 1664 if ( mSyncManager->syncWithDesktop() ) {
1665 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1665 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1666 } 1666 }
1667 if ( fullDateRange ) 1667 if ( fullDateRange )
1668 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1668 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1669 else 1669 else
1670 mLastCalendarSync = eventLSync->dtStart(); 1670 mLastCalendarSync = eventLSync->dtStart();
1671 // for resyncing if own file has changed 1671 // for resyncing if own file has changed
1672 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1672 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1673 mLastCalendarSync = loadedFileVersion; 1673 mLastCalendarSync = loadedFileVersion;
1674 //qDebug("setting mLastCalendarSync "); 1674 //qDebug("setting mLastCalendarSync ");
1675 } 1675 }
1676 //qDebug("*************************** "); 1676 //qDebug("*************************** ");
1677 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1677 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1678 QPtrList<Incidence> er = remote->rawIncidences(); 1678 QPtrList<Incidence> er = remote->rawIncidences();
1679 Incidence* inR = er.first(); 1679 Incidence* inR = er.first();
1680 Incidence* inL; 1680 Incidence* inL;
1681 QProgressBar bar( er.count(),0 ); 1681 QProgressBar bar( er.count(),0 );
1682 bar.setCaption (i18n("Syncing - close to abort!") ); 1682 bar.setCaption (i18n("Syncing - close to abort!") );
1683 1683
1684 // ************** setting up filter ************* 1684 // ************** setting up filter *************
1685 CalFilter *filterIN = 0; 1685 CalFilter *filterIN = 0;
1686 CalFilter *filterOUT = 0; 1686 CalFilter *filterOUT = 0;
1687 CalFilter *filter = mFilters.first(); 1687 CalFilter *filter = mFilters.first();
1688 while(filter) { 1688 while(filter) {
1689 if ( filter->name() == mSyncManager->mFilterInCal ) 1689 if ( filter->name() == mSyncManager->mFilterInCal )
1690 filterIN = filter; 1690 filterIN = filter;
1691 if ( filter->name() == mSyncManager->mFilterOutCal ) 1691 if ( filter->name() == mSyncManager->mFilterOutCal )
1692 filterOUT = filter; 1692 filterOUT = filter;
1693 filter = mFilters.next(); 1693 filter = mFilters.next();
1694 } 1694 }
1695 int w = 300; 1695 int w = 300;
1696 if ( QApplication::desktop()->width() < 320 ) 1696 if ( QApplication::desktop()->width() < 320 )
1697 w = 220; 1697 w = 220;
1698 int h = bar.sizeHint().height() ; 1698 int h = bar.sizeHint().height() ;
1699 int dw = QApplication::desktop()->width(); 1699 int dw = QApplication::desktop()->width();
1700 int dh = QApplication::desktop()->height(); 1700 int dh = QApplication::desktop()->height();
1701 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1701 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1702 bar.show(); 1702 bar.show();
1703 int modulo = (er.count()/10)+1; 1703 int modulo = (er.count()/10)+1;
1704 int incCounter = 0; 1704 int incCounter = 0;
1705 while ( inR ) { 1705 while ( inR ) {
1706 if ( ! bar.isVisible() ) 1706 if ( ! bar.isVisible() )
1707 return false; 1707 return false;
1708 if ( incCounter % modulo == 0 ) 1708 if ( incCounter % modulo == 0 )
1709 bar.setProgress( incCounter ); 1709 bar.setProgress( incCounter );
1710 ++incCounter; 1710 ++incCounter;
1711 uid = inR->uid(); 1711 uid = inR->uid();
1712 bool skipIncidence = false; 1712 bool skipIncidence = false;
1713 if ( uid.left(15) == QString("last-syncEvent-") ) 1713 if ( uid.left(15) == QString("last-syncEvent-") )
1714 skipIncidence = true; 1714 skipIncidence = true;
1715 QString idS; 1715 QString idS;
1716 qApp->processEvents(); 1716 qApp->processEvents();
1717 if ( !skipIncidence ) { 1717 if ( !skipIncidence ) {
1718 inL = local->incidenceForUid( uid , false ); 1718 inL = local->incidenceForUid( uid , false );
1719 if ( inL ) { // maybe conflict - same uid in both calendars 1719 if ( inL ) { // maybe conflict - same uid in both calendars
1720 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1720 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1721 //qDebug("take %d %s ", take, inL->summary().latin1()); 1721 //qDebug("take %d %s ", take, inL->summary().latin1());
1722 if ( take == 3 ) 1722 if ( take == 3 )
1723 return false; 1723 return false;
1724 if ( take == 1 ) {// take local ********************** 1724 if ( take == 1 ) {// take local **********************
1725 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1725 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1726 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1726 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1727 else 1727 else
1728 idS = inR->IDStr(); 1728 idS = inR->IDStr();
1729 int calID = inR->calID(); 1729 int calID = inR->calID();
1730 remote->deleteIncidence( inR ); 1730 remote->deleteIncidence( inR );
1731 inR = inL->clone(); 1731 inR = inL->clone();
1732 inR->setCalID( calID ); 1732 inR->setCalID( calID );
1733 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1733 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1734 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1734 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1735 inR->setIDStr( idS ); 1735 inR->setIDStr( idS );
1736 remote->addIncidence( inR ); 1736 remote->addIncidence( inR );
1737 if ( mSyncManager->syncWithDesktop() ) 1737 if ( mSyncManager->syncWithDesktop() )
1738 inR->setPilotId( 2 ); 1738 inR->setPilotId( 2 );
1739 ++changedRemote; 1739 ++changedRemote;
1740 } else {// take remote ********************** 1740 } else {// take remote **********************
1741 if ( !inL->isReadOnly() ) { 1741 if ( !inL->isReadOnly() ) {
1742 idS = inL->IDStr(); 1742 idS = inL->IDStr();
1743 int pid = inL->pilotId(); 1743 int pid = inL->pilotId();
1744 int calID = inL->calID(); 1744 int calID = inL->calID();
1745 local->deleteIncidence( inL ); 1745 local->deleteIncidence( inL );
1746 inL = inR->clone(); 1746 inL = inR->clone();
1747 inL->setCalID( calID ); 1747 inL->setCalID( calID );
1748 if ( mSyncManager->syncWithDesktop() ) 1748 if ( mSyncManager->syncWithDesktop() )
1749 inL->setPilotId( pid ); 1749 inL->setPilotId( pid );
1750 inL->setIDStr( idS ); 1750 inL->setIDStr( idS );
1751 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1751 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1752 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1752 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1753 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1753 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1754 } 1754 }
1755 local->addIncidence( inL ); 1755 local->addIncidence( inL );
1756 ++changedLocal; 1756 ++changedLocal;
1757 } 1757 }
1758 } 1758 }
1759 } 1759 }
1760 } else { // no conflict ********** add or delete remote 1760 } else { // no conflict ********** add or delete remote
1761 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1761 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1762 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1762 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1763 QString des = eventLSync->description(); 1763 QString des = eventLSync->description();
1764 QString pref = "e"; 1764 QString pref = "e";
1765 if ( inR->typeID() == todoID ) 1765 if ( inR->typeID() == todoID )
1766 pref = "t"; 1766 pref = "t";
1767 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1767 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1768 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1768 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1769 //remote->deleteIncidence( inR ); 1769 //remote->deleteIncidence( inR );
1770 ++deletedEventR; 1770 ++deletedEventR;
1771 } else { 1771 } else {
1772 inR->setLastModified( modifiedCalendar ); 1772 inR->setLastModified( modifiedCalendar );
1773 inL = inR->clone(); 1773 inL = inR->clone();
1774 inL->setIDStr( ":" ); 1774 inL->setIDStr( ":" );
1775 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1775 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1776 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1776 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1777 1777
1778 inL->setCalID( 0 );// add to default cal 1778 inL->setCalID( 0 );// add to default cal
1779 local->addIncidence( inL ); 1779 local->addIncidence( inL );
1780 ++addedEvent; 1780 ++addedEvent;
1781 1781
1782 } 1782 }
1783 } else { 1783 } else {
1784 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1784 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1785 inR->setLastModified( modifiedCalendar ); 1785 inR->setLastModified( modifiedCalendar );
1786 inL = inR->clone(); 1786 inL = inR->clone();
1787 inL->setIDStr( ":" ); 1787 inL->setIDStr( ":" );
1788 inL->setCalID( 0 );// add to default cal 1788 inL->setCalID( 0 );// add to default cal
1789 local->addIncidence( inL ); 1789 local->addIncidence( inL );
1790 ++addedEvent; 1790 ++addedEvent;
1791 1791
1792 } else { 1792 } else {
1793 checkExternSyncEvent(eventRSyncSharp, inR); 1793 checkExternSyncEvent(eventRSyncSharp, inR);
1794 remote->deleteIncidence( inR ); 1794 remote->deleteIncidence( inR );
1795 ++deletedEventR; 1795 ++deletedEventR;
1796 } 1796 }
1797 } 1797 }
1798 } else { 1798 } else {
1799 ++filteredIN; 1799 ++filteredIN;
1800 } 1800 }
1801 } 1801 }
1802 } 1802 }
1803 inR = er.next(); 1803 inR = er.next();
1804 } 1804 }
1805 QPtrList<Incidence> el = local->rawIncidences(); 1805 QPtrList<Incidence> el = local->rawIncidences();
1806 inL = el.first(); 1806 inL = el.first();
1807 modulo = (el.count()/10)+1; 1807 modulo = (el.count()/10)+1;
1808 bar.setCaption (i18n("Add / remove events") ); 1808 bar.setCaption (i18n("Add / remove events") );
1809 bar.setTotalSteps ( el.count() ) ; 1809 bar.setTotalSteps ( el.count() ) ;
1810 bar.show(); 1810 bar.show();
1811 incCounter = 0; 1811 incCounter = 0;
1812 1812
1813 while ( inL ) { 1813 while ( inL ) {
1814 1814
1815 qApp->processEvents(); 1815 qApp->processEvents();
1816 if ( ! bar.isVisible() ) 1816 if ( ! bar.isVisible() )
1817 return false; 1817 return false;
1818 if ( incCounter % modulo == 0 ) 1818 if ( incCounter % modulo == 0 )
1819 bar.setProgress( incCounter ); 1819 bar.setProgress( incCounter );
1820 ++incCounter; 1820 ++incCounter;
1821 uid = inL->uid(); 1821 uid = inL->uid();
1822 bool skipIncidence = false; 1822 bool skipIncidence = false;
1823 if ( uid.left(15) == QString("last-syncEvent-") ) 1823 if ( uid.left(15) == QString("last-syncEvent-") )
1824 skipIncidence = true; 1824 skipIncidence = true;
1825 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1825 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1826 skipIncidence = true; 1826 skipIncidence = true;
1827 if ( !skipIncidence ) { 1827 if ( !skipIncidence ) {
1828 inR = remote->incidenceForUid( uid , true ); 1828 inR = remote->incidenceForUid( uid , true );
1829 if ( ! inR ) { 1829 if ( ! inR ) {
1830 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1830 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1831 // no conflict ********** add or delete local 1831 // no conflict ********** add or delete local
1832 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1832 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1833 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1833 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1834 checkExternSyncEvent(eventLSyncSharp, inL); 1834 checkExternSyncEvent(eventLSyncSharp, inL);
1835 local->deleteIncidence( inL ); 1835 local->deleteIncidence( inL );
1836 ++deletedEventL; 1836 ++deletedEventL;
1837 } else { 1837 } else {
1838 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1838 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1839 inL->removeID(mCurrentSyncDevice ); 1839 inL->removeID(mCurrentSyncDevice );
1840 ++addedEventR; 1840 ++addedEventR;
1841 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1841 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1842 inL->setLastModified( modifiedCalendar ); 1842 inL->setLastModified( modifiedCalendar );
1843 inR = inL->clone(); 1843 inR = inL->clone();
1844 inR->setIDStr( ":" ); 1844 inR->setIDStr( ":" );
1845 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1845 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1846 inR->setCalID( 0 );// add to default cal 1846 inR->setCalID( 0 );// add to default cal
1847 remote->addIncidence( inR ); 1847 remote->addIncidence( inR );
1848 } 1848 }
1849 } 1849 }
1850 } else { 1850 } else {
1851 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1851 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1852 checkExternSyncEvent(eventLSyncSharp, inL); 1852 checkExternSyncEvent(eventLSyncSharp, inL);
1853 local->deleteIncidence( inL ); 1853 local->deleteIncidence( inL );
1854 ++deletedEventL; 1854 ++deletedEventL;
1855 } else { 1855 } else {
1856 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1856 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1857 ++addedEventR; 1857 ++addedEventR;
1858 inL->setLastModified( modifiedCalendar ); 1858 inL->setLastModified( modifiedCalendar );
1859 inR = inL->clone(); 1859 inR = inL->clone();
1860 inR->setIDStr( ":" ); 1860 inR->setIDStr( ":" );
1861 inR->setCalID( 0 );// add to default cal 1861 inR->setCalID( 0 );// add to default cal
1862 remote->addIncidence( inR ); 1862 remote->addIncidence( inR );
1863 } 1863 }
1864 } 1864 }
1865 } 1865 }
1866 } else { 1866 } else {
1867 ++filteredOUT; 1867 ++filteredOUT;
1868 } 1868 }
1869 } 1869 }
1870 } 1870 }
1871 inL = el.next(); 1871 inL = el.next();
1872 } 1872 }
1873 int delFut = 0; 1873 int delFut = 0;
1874 int remRem = 0; 1874 int remRem = 0;
1875 if ( mSyncManager->mWriteBackInFuture ) { 1875 if ( mSyncManager->mWriteBackInFuture ) {
1876 er = remote->rawIncidences(); 1876 er = remote->rawIncidences();
1877 remRem = er.count(); 1877 remRem = er.count();
1878 inR = er.first(); 1878 inR = er.first();
1879 QDateTime dt; 1879 QDateTime dt;
1880 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1880 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1881 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1881 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1882 while ( inR ) { 1882 while ( inR ) {
1883 if ( inR->typeID() == todoID ) { 1883 if ( inR->typeID() == todoID ) {
1884 Todo * t = (Todo*)inR; 1884 Todo * t = (Todo*)inR;
1885 if ( t->hasDueDate() ) 1885 if ( t->hasDueDate() )
1886 dt = t->dtDue(); 1886 dt = t->dtDue();
1887 else 1887 else
1888 dt = cur.addSecs( 62 ); 1888 dt = cur.addSecs( 62 );
1889 } 1889 }
1890 else if (inR->typeID() == eventID ) { 1890 else if (inR->typeID() == eventID ) {
1891 bool ok; 1891 bool ok;
1892 dt = inR->getNextOccurence( cur, &ok ); 1892 dt = inR->getNextOccurence( cur, &ok );
1893 if ( !ok ) 1893 if ( !ok )
1894 dt = cur.addSecs( -62 ); 1894 dt = cur.addSecs( -62 );
1895 } 1895 }
1896 else 1896 else
1897 dt = inR->dtStart(); 1897 dt = inR->dtStart();
1898 if ( dt < cur || dt > end ) { 1898 if ( dt < cur || dt > end ) {
1899 remote->deleteIncidence( inR ); 1899 remote->deleteIncidence( inR );
1900 ++delFut; 1900 ++delFut;
1901 } 1901 }
1902 inR = er.next(); 1902 inR = er.next();
1903 } 1903 }
1904 } 1904 }
1905 bar.hide(); 1905 bar.hide();
1906 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1906 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1907 if ( mMultiResourceSync ) { 1907 if ( mMultiResourceSync ) {
1908 remote->removeSyncInfo( "" ); //all 1908 remote->removeSyncInfo( "" ); //all
1909 1909
1910 } else { 1910 } else {
1911 eventLSync->setReadOnly( false ); 1911 eventLSync->setReadOnly( false );
1912 eventLSync->setDtStart( mLastCalendarSync ); 1912 eventLSync->setDtStart( mLastCalendarSync );
1913 eventRSync->setDtStart( mLastCalendarSync ); 1913 eventRSync->setDtStart( mLastCalendarSync );
1914 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1914 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1915 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1915 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );