-rw-r--r-- | bin/kdepim/WhatsNew.txt | 6 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 34 |
2 files changed, 23 insertions, 17 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 8fab725..2ce78c7 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -2,36 +2,40 @@ Info about the changes in new versions of KDE-Pim/Pi | |||
2 | 2 | ||
3 | ********** VERSION 2.1.14 ************ | 3 | ********** VERSION 2.1.14 ************ |
4 | 4 | ||
5 | Added some buttons to the KO/Pi Quick-todo line to make it possible to quickly access some todo view layout settings like display all flat/open/close and hide/show running/done. | 5 | Added some buttons to the KO/Pi Quick-todo line to make it possible to quickly access some todo view layout settings like display all flat/open/close and hide/show running/done. |
6 | Added a button to add a subtodo quickly. | 6 | Added a button to add a subtodo quickly. |
7 | 7 | ||
8 | Added a possibility to search for conflicting events. (In the Action menu. Keyboard shortcut "q", shift+q or ctrl +q ). | 8 | Added a possibility to search for conflicting events. (In the Action menu. Keyboard shortcut "q", shift+q or ctrl +q ). |
9 | Added an option to change the layout of the list week to column mode. | 9 | Added an option to change the layout of the list week to column mode. |
10 | 10 | ||
11 | Fixed some usability problems in pi-sync mode by adding some progress information about file transfer. | 11 | Fixed some usability problems in pi-sync mode by adding some progress information about file transfer. |
12 | 12 | ||
13 | Fixed pi-sync problems with the new multi calendar feature. | 13 | Fixed pi-sync problems with the new multi calendar feature. |
14 | Now pi-sync behaviour should be: | 14 | Now pi-sync behaviour should be: |
15 | 1) Local sends file request ( as usual ) | 15 | 1) Local sends file request ( as usual ) |
16 | 2) Remote sends file which contains data of all enabled ( the calendar where the "eye" column is checked ) calendars. | 16 | 2) Remote sends file which contains data of all enabled ( the calendar where the "eye" column is checked ) calendars. |
17 | 3) Local syncs with data, adds new entries to default calendar and sends file back ( as usual ). | 17 | 3) Local syncs with data, adds new entries to default calendar and sends file back ( as usual ). |
18 | If the data which local receives contains entries which are on disabled calendars on local this entries are updated and not added as duplicates to the default calendar. | ||
18 | 4) Remote updates the data and adds new entries to default calendar. Readonly entries are not changed on remote. | 19 | 4) Remote updates the data and adds new entries to default calendar. Readonly entries are not changed on remote. |
19 | If the data which remote receives contains entries which are on disabled calendars on remote this entries are updated and not added as duplicates to the default calendar. | 20 | If the data which remote receives contains entries which are on disabled calendars on remote this entries are updated and not added as duplicates to the default calendar. |
20 | 21 | ||
21 | Summary: If you have different calendars on remote and local and some of them disabled you may get some "strange" bahaviour. | 22 | Summary: |
23 | No new item ( new created after the last sync ) in a disabled calendar is propagated to the sync partner. Readonly items are synced and added/changed on the sync partner if it is not readonly on the sync partner. | ||
24 | If you have different calendars on remote and local and some of them disabled you may get some "strange" bahaviour. | ||
25 | Well, the syncing has become quite complicated ... you should have no problems if you enable all calendars. | ||
22 | 26 | ||
23 | ********** VERSION 2.1.13 ************ | 27 | ********** VERSION 2.1.13 ************ |
24 | 28 | ||
25 | Fixed a problem in KA/Pi search. | 29 | Fixed a problem in KA/Pi search. |
26 | Fixed some minor problems in KO/Pi. | 30 | Fixed some minor problems in KO/Pi. |
27 | Added calendar selection possibility to the todo view popup and to the event/todo/journal editor. | 31 | Added calendar selection possibility to the todo view popup and to the event/todo/journal editor. |
28 | 32 | ||
29 | Fixed memory usage problems in KA/Pi: | 33 | Fixed memory usage problems in KA/Pi: |
30 | When loading data KA/Pi did load the file data twice. | 34 | When loading data KA/Pi did load the file data twice. |
31 | Example: | 35 | Example: |
32 | A 600k file did consume 1200k memory during loading process. | 36 | A 600k file did consume 1200k memory during loading process. |
33 | This is fixed, it does now consume only 600k during loading process. | 37 | This is fixed, it does now consume only 600k during loading process. |
34 | When saving data KA/Pi did consume a lot of memory for the data parsing during the save process. | 38 | When saving data KA/Pi did consume a lot of memory for the data parsing during the save process. |
35 | This is fixed. | 39 | This is fixed. |
36 | Example: | 40 | Example: |
37 | Before saving a 600k file KA/Pi did consume 21.7 Meg of Ram. | 41 | Before saving a 600k file KA/Pi did consume 21.7 Meg of Ram. |
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index a350c3b..7044e90 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -1428,70 +1428,72 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1428 | bar.show(); | 1428 | bar.show(); |
1429 | int modulo = (er.count()/10)+1; | 1429 | int modulo = (er.count()/10)+1; |
1430 | int incCounter = 0; | 1430 | int incCounter = 0; |
1431 | while ( inR ) { | 1431 | while ( inR ) { |
1432 | if ( ! bar.isVisible() ) | 1432 | if ( ! bar.isVisible() ) |
1433 | return false; | 1433 | return false; |
1434 | if ( incCounter % modulo == 0 ) | 1434 | if ( incCounter % modulo == 0 ) |
1435 | bar.setProgress( incCounter ); | 1435 | bar.setProgress( incCounter ); |
1436 | ++incCounter; | 1436 | ++incCounter; |
1437 | uid = inR->uid(); | 1437 | uid = inR->uid(); |
1438 | bool skipIncidence = false; | 1438 | bool skipIncidence = false; |
1439 | if ( uid.left(15) == QString("last-syncEvent-") ) | 1439 | if ( uid.left(15) == QString("last-syncEvent-") ) |
1440 | skipIncidence = true; | 1440 | skipIncidence = true; |
1441 | QString idS; | 1441 | QString idS; |
1442 | qApp->processEvents(); | 1442 | qApp->processEvents(); |
1443 | if ( !skipIncidence ) { | 1443 | if ( !skipIncidence ) { |
1444 | inL = local->incidence( uid ); | 1444 | inL = local->incidenceForUid( uid , false ); |
1445 | if ( inL ) { // maybe conflict - same uid in both calendars | 1445 | if ( inL ) { // maybe conflict - same uid in both calendars |
1446 | if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { | 1446 | if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { |
1447 | //qDebug("take %d %s ", take, inL->summary().latin1()); | 1447 | //qDebug("take %d %s ", take, inL->summary().latin1()); |
1448 | if ( take == 3 ) | 1448 | if ( take == 3 ) |
1449 | return false; | 1449 | return false; |
1450 | if ( take == 1 ) {// take local ********************** | 1450 | if ( take == 1 ) {// take local ********************** |
1451 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) | 1451 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) |
1452 | inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); | 1452 | inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); |
1453 | else | 1453 | else |
1454 | idS = inR->IDStr(); | 1454 | idS = inR->IDStr(); |
1455 | int calID = inR->calID(); | 1455 | int calID = inR->calID(); |
1456 | remote->deleteIncidence( inR ); | 1456 | remote->deleteIncidence( inR ); |
1457 | inR = inL->clone(); | 1457 | inR = inL->clone(); |
1458 | inR->setCalID( calID ); | 1458 | inR->setCalID( calID ); |
1459 | inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); | 1459 | inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); |
1460 | if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) | 1460 | if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) |
1461 | inR->setIDStr( idS ); | 1461 | inR->setIDStr( idS ); |
1462 | remote->addIncidence( inR ); | 1462 | remote->addIncidence( inR ); |
1463 | if ( mSyncManager->syncWithDesktop() ) | 1463 | if ( mSyncManager->syncWithDesktop() ) |
1464 | inR->setPilotId( 2 ); | 1464 | inR->setPilotId( 2 ); |
1465 | ++changedRemote; | 1465 | ++changedRemote; |
1466 | } else {// take remote ********************** | 1466 | } else {// take remote ********************** |
1467 | idS = inL->IDStr(); | 1467 | if ( !inL->isReadOnly() ) { |
1468 | int pid = inL->pilotId(); | 1468 | idS = inL->IDStr(); |
1469 | int calID = inL->calID(); | 1469 | int pid = inL->pilotId(); |
1470 | local->deleteIncidence( inL ); | 1470 | int calID = inL->calID(); |
1471 | inL = inR->clone(); | 1471 | local->deleteIncidence( inL ); |
1472 | inL->setCalID( calID ); | 1472 | inL = inR->clone(); |
1473 | if ( mSyncManager->syncWithDesktop() ) | 1473 | inL->setCalID( calID ); |
1474 | inL->setPilotId( pid ); | 1474 | if ( mSyncManager->syncWithDesktop() ) |
1475 | inL->setIDStr( idS ); | 1475 | inL->setPilotId( pid ); |
1476 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 1476 | inL->setIDStr( idS ); |
1477 | inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); | 1477 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
1478 | inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); | 1478 | inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); |
1479 | inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); | ||
1480 | } | ||
1481 | local->addIncidence( inL ); | ||
1482 | ++changedLocal; | ||
1479 | } | 1483 | } |
1480 | local->addIncidence( inL ); | ||
1481 | ++changedLocal; | ||
1482 | } | 1484 | } |
1483 | } | 1485 | } |
1484 | } else { // no conflict ********** add or delete remote | 1486 | } else { // no conflict ********** add or delete remote |
1485 | if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ | 1487 | if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ |
1486 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 1488 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
1487 | QString des = eventLSync->description(); | 1489 | QString des = eventLSync->description(); |
1488 | QString pref = "e"; | 1490 | QString pref = "e"; |
1489 | if ( inR->typeID() == todoID ) | 1491 | if ( inR->typeID() == todoID ) |
1490 | pref = "t"; | 1492 | pref = "t"; |
1491 | if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it | 1493 | if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it |
1492 | inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); | 1494 | inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); |
1493 | //remote->deleteIncidence( inR ); | 1495 | //remote->deleteIncidence( inR ); |
1494 | ++deletedEventR; | 1496 | ++deletedEventR; |
1495 | } else { | 1497 | } else { |
1496 | inR->setLastModified( modifiedCalendar ); | 1498 | inR->setLastModified( modifiedCalendar ); |
1497 | inL = inR->clone(); | 1499 | inL = inR->clone(); |
@@ -1536,33 +1538,33 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1536 | 1538 | ||
1537 | while ( inL ) { | 1539 | while ( inL ) { |
1538 | 1540 | ||
1539 | qApp->processEvents(); | 1541 | qApp->processEvents(); |
1540 | if ( ! bar.isVisible() ) | 1542 | if ( ! bar.isVisible() ) |
1541 | return false; | 1543 | return false; |
1542 | if ( incCounter % modulo == 0 ) | 1544 | if ( incCounter % modulo == 0 ) |
1543 | bar.setProgress( incCounter ); | 1545 | bar.setProgress( incCounter ); |
1544 | ++incCounter; | 1546 | ++incCounter; |
1545 | uid = inL->uid(); | 1547 | uid = inL->uid(); |
1546 | bool skipIncidence = false; | 1548 | bool skipIncidence = false; |
1547 | if ( uid.left(15) == QString("last-syncEvent-") ) | 1549 | if ( uid.left(15) == QString("last-syncEvent-") ) |
1548 | skipIncidence = true; | 1550 | skipIncidence = true; |
1549 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) | 1551 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) |
1550 | skipIncidence = true; | 1552 | skipIncidence = true; |
1551 | if ( !skipIncidence ) { | 1553 | if ( !skipIncidence ) { |
1552 | inR = remote->incidence( uid ); | 1554 | inR = remote->incidenceForUid( uid , true ); |
1553 | if ( ! inR ) { | 1555 | if ( ! inR ) { |
1554 | if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ | 1556 | if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ |
1555 | // no conflict ********** add or delete local | 1557 | // no conflict ********** add or delete local |
1556 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 1558 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
1557 | if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { | 1559 | if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { |
1558 | checkExternSyncEvent(eventLSyncSharp, inL); | 1560 | checkExternSyncEvent(eventLSyncSharp, inL); |
1559 | local->deleteIncidence( inL ); | 1561 | local->deleteIncidence( inL ); |
1560 | ++deletedEventL; | 1562 | ++deletedEventL; |
1561 | } else { | 1563 | } else { |
1562 | if ( ! mSyncManager->mWriteBackExistingOnly ) { | 1564 | if ( ! mSyncManager->mWriteBackExistingOnly ) { |
1563 | inL->removeID(mCurrentSyncDevice ); | 1565 | inL->removeID(mCurrentSyncDevice ); |
1564 | ++addedEventR; | 1566 | ++addedEventR; |
1565 | //qDebug("remote added Incidence %s ", inL->summary().latin1()); | 1567 | //qDebug("remote added Incidence %s ", inL->summary().latin1()); |
1566 | inL->setLastModified( modifiedCalendar ); | 1568 | inL->setLastModified( modifiedCalendar ); |
1567 | inR = inL->clone(); | 1569 | inR = inL->clone(); |
1568 | inR->setIDStr( ":" ); | 1570 | inR->setIDStr( ":" ); |