-rw-r--r-- | libkcal/sharpformat.cpp | 15 | ||||
-rw-r--r-- | libkcal/syncdefines.h | 22 |
2 files changed, 30 insertions, 7 deletions
diff --git a/libkcal/sharpformat.cpp b/libkcal/sharpformat.cpp index f83f72e..973f19d 100644 --- a/libkcal/sharpformat.cpp +++ b/libkcal/sharpformat.cpp | |||
@@ -33,24 +33,25 @@ | |||
33 | #include <qlabel.h> | 33 | #include <qlabel.h> |
34 | 34 | ||
35 | #include <kdebug.h> | 35 | #include <kdebug.h> |
36 | #include <klocale.h> | 36 | #include <klocale.h> |
37 | #include <kglobal.h> | 37 | #include <kglobal.h> |
38 | 38 | ||
39 | #include "calendar.h" | 39 | #include "calendar.h" |
40 | #include "alarm.h" | 40 | #include "alarm.h" |
41 | #include "recurrence.h" | 41 | #include "recurrence.h" |
42 | #include "calendarlocal.h" | 42 | #include "calendarlocal.h" |
43 | 43 | ||
44 | #include "sharpformat.h" | 44 | #include "sharpformat.h" |
45 | #include "syncdefines.h" | ||
45 | 46 | ||
46 | using namespace KCal; | 47 | using namespace KCal; |
47 | 48 | ||
48 | //CARDID,CATEGORY,DSRP,PLCE,MEM1,TIM1,TIM2,ADAY,ARON,ARMN,ARSD,RTYP,RFRQ,RPOS,RDYS,REND,REDT,ALSD,ALED,MDAY | 49 | //CARDID,CATEGORY,DSRP,PLCE,MEM1,TIM1,TIM2,ADAY,ARON,ARMN,ARSD,RTYP,RFRQ,RPOS,RDYS,REND,REDT,ALSD,ALED,MDAY |
49 | // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 50 | // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
50 | 51 | ||
51 | //ARSD silentalarm = 0 | 52 | //ARSD silentalarm = 0 |
52 | // 11 RTYP 225 no /0 dialy/ 1 weekly/ 3 month by date/ 2 month by day(pos)/ yearly | 53 | // 11 RTYP 225 no /0 dialy/ 1 weekly/ 3 month by date/ 2 month by day(pos)/ yearly |
53 | // 12 RFRQ | 54 | // 12 RFRQ |
54 | // 13 RPOS pos = 4. monday in month | 55 | // 13 RPOS pos = 4. monday in month |
55 | // 14 RDYS days: 1 mon/ 2 tue .. 64 sun | 56 | // 14 RDYS days: 1 mon/ 2 tue .. 64 sun |
56 | // 15 REND 0 = no end/ 1 = end | 57 | // 15 REND 0 = no end/ 1 = end |
@@ -82,25 +83,25 @@ class SharpParser : public QObject | |||
82 | return false; | 83 | return false; |
83 | ulong cSum = SharpFormat::getCsum(attList ); | 84 | ulong cSum = SharpFormat::getCsum(attList ); |
84 | 85 | ||
85 | if ( qName == "Event" ) { | 86 | if ( qName == "Event" ) { |
86 | Event *event; | 87 | Event *event; |
87 | event = existingCalendar->event( attList[0].toInt() ); | 88 | event = existingCalendar->event( attList[0].toInt() ); |
88 | if ( event ) | 89 | if ( event ) |
89 | event = (Event*)event->clone(); | 90 | event = (Event*)event->clone(); |
90 | else | 91 | else |
91 | event = new Event; | 92 | event = new Event; |
92 | event->setZaurusId( attList[0].toInt() ); | 93 | event->setZaurusId( attList[0].toInt() ); |
93 | event->setZaurusUid( cSum ); | 94 | event->setZaurusUid( cSum ); |
94 | event->setZaurusStat( -2 ); | 95 | event->setZaurusStat(SYNC_TEMPSTATE_NEW_EXTERNAL ); |
95 | 96 | ||
96 | event->setSummary( attList[2] ); | 97 | event->setSummary( attList[2] ); |
97 | event->setLocation( attList[3] ); | 98 | event->setLocation( attList[3] ); |
98 | event->setDescription( attList[4] ); | 99 | event->setDescription( attList[4] ); |
99 | if ( attList[7] == "1" ) { | 100 | if ( attList[7] == "1" ) { |
100 | event->setDtStart( QDateTime(fromString( attList[17]+"000000", false ).date(),QTime(0,0,0 ) )); | 101 | event->setDtStart( QDateTime(fromString( attList[17]+"000000", false ).date(),QTime(0,0,0 ) )); |
101 | event->setDtEnd( QDateTime(fromString( attList[18]+"000000", false ).date(),QTime(0,0,0 ))); | 102 | event->setDtEnd( QDateTime(fromString( attList[18]+"000000", false ).date(),QTime(0,0,0 ))); |
102 | event->setFloats( true ); | 103 | event->setFloats( true ); |
103 | } else { | 104 | } else { |
104 | event->setFloats( false ); | 105 | event->setFloats( false ); |
105 | event->setDtStart( fromString( attList[5] ) ); | 106 | event->setDtStart( fromString( attList[5] ) ); |
106 | event->setDtEnd( fromString( attList[6] )); | 107 | event->setDtEnd( fromString( attList[6] )); |
@@ -193,25 +194,25 @@ class SharpParser : public QObject | |||
193 | todo = (Todo*)todo->clone(); | 194 | todo = (Todo*)todo->clone(); |
194 | else | 195 | else |
195 | todo = new Todo; | 196 | todo = new Todo; |
196 | 197 | ||
197 | //CARDID,CATEGORY,ETDY,LTDY,FNDY,MARK,PRTY,TITL,MEM1 | 198 | //CARDID,CATEGORY,ETDY,LTDY,FNDY,MARK,PRTY,TITL,MEM1 |
198 | // 0 1 2 3 4 5 6 7 8 | 199 | // 0 1 2 3 4 5 6 7 8 |
199 | //1,,,,,1,4,Loch zumachen,"" | 200 | //1,,,,,1,4,Loch zumachen,"" |
200 | //3,Privat,20040317T000000,20040318T000000,20040319T000000,0,5,Call bbb,"notes123 bbb gggg ""bb "" " | 201 | //3,Privat,20040317T000000,20040318T000000,20040319T000000,0,5,Call bbb,"notes123 bbb gggg ""bb "" " |
201 | //2,"Familie,Freunde,Holiday",20040318T000000,20040324T000000,20040317T000000,1,2,tod2,notes | 202 | //2,"Familie,Freunde,Holiday",20040318T000000,20040324T000000,20040317T000000,1,2,tod2,notes |
202 | 203 | ||
203 | todo->setZaurusId( attList[0].toInt() ); | 204 | todo->setZaurusId( attList[0].toInt() ); |
204 | todo->setZaurusUid( cSum ); | 205 | todo->setZaurusUid( cSum ); |
205 | todo->setZaurusStat( -2 ); | 206 | todo->setZaurusStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); |
206 | 207 | ||
207 | todo->setSummary( attList[7] ); | 208 | todo->setSummary( attList[7] ); |
208 | todo->setDescription( attList[8]); | 209 | todo->setDescription( attList[8]); |
209 | 210 | ||
210 | int priority = attList[6].toInt(); | 211 | int priority = attList[6].toInt(); |
211 | if ( priority == 0 ) priority = 3; | 212 | if ( priority == 0 ) priority = 3; |
212 | todo->setPriority( priority ); | 213 | todo->setPriority( priority ); |
213 | 214 | ||
214 | QString categoryList = attList[1]; | 215 | QString categoryList = attList[1]; |
215 | todo->setCategories( lookupCategories( categoryList ) ); | 216 | todo->setCategories( lookupCategories( categoryList ) ); |
216 | 217 | ||
217 | 218 | ||
@@ -458,25 +459,25 @@ int SharpFormat::getNumFromRecord( QString answer, Incidence* inc ) | |||
458 | 459 | ||
459 | templist.append( tempString ); | 460 | templist.append( tempString ); |
460 | } | 461 | } |
461 | ++ccc; | 462 | ++ccc; |
462 | if ( ccc == 2 && loopCount < 25 ) { | 463 | if ( ccc == 2 && loopCount < 25 ) { |
463 | start = 0; | 464 | start = 0; |
464 | bool ok; | 465 | bool ok; |
465 | int newnum = templist[0].toInt( &ok ); | 466 | int newnum = templist[0].toInt( &ok ); |
466 | if ( ok && newnum > 0) { | 467 | if ( ok && newnum > 0) { |
467 | retval = newnum; | 468 | retval = newnum; |
468 | inc->setZaurusId( newnum ); | 469 | inc->setZaurusId( newnum ); |
469 | inc->setZaurusUid( getCsum( templist ) ); | 470 | inc->setZaurusUid( getCsum( templist ) ); |
470 | inc->setZaurusStat( -4 ); | 471 | inc->setZaurusStat( SYNC_TEMPSTATE_NEW_ID ); |
471 | } | 472 | } |
472 | } | 473 | } |
473 | } | 474 | } |
474 | //qDebug("getNumFromRecord returning : %d ", retval); | 475 | //qDebug("getNumFromRecord returning : %d ", retval); |
475 | return retval; | 476 | return retval; |
476 | } | 477 | } |
477 | bool SharpFormat::save( Calendar *calendar) | 478 | bool SharpFormat::save( Calendar *calendar) |
478 | { | 479 | { |
479 | 480 | ||
480 | QLabel status ( i18n("Processing/adding events ..."), 0 ); | 481 | QLabel status ( i18n("Processing/adding events ..."), 0 ); |
481 | int w = status.sizeHint().width()+20 ; | 482 | int w = status.sizeHint().width()+20 ; |
482 | if ( w < 200 ) w = 200; | 483 | if ( w < 200 ) w = 200; |
@@ -497,29 +498,29 @@ bool SharpFormat::save( Calendar *calendar) | |||
497 | QPtrList<Event> er = calendar->rawEvents(); | 498 | QPtrList<Event> er = calendar->rawEvents(); |
498 | Event* ev = er.first(); | 499 | Event* ev = er.first(); |
499 | QString fileName = "/tmp/kopitempout"; | 500 | QString fileName = "/tmp/kopitempout"; |
500 | int i = 0; | 501 | int i = 0; |
501 | QString changeString = ePrefix; | 502 | QString changeString = ePrefix; |
502 | QString deleteString = ePrefix; | 503 | QString deleteString = ePrefix; |
503 | bool deleteEnt = false; | 504 | bool deleteEnt = false; |
504 | bool changeEnt = false; | 505 | bool changeEnt = false; |
505 | QString message = i18n("Processing event # "); | 506 | QString message = i18n("Processing event # "); |
506 | int procCount = 0; | 507 | int procCount = 0; |
507 | while ( ev ) { | 508 | while ( ev ) { |
508 | //qDebug("i %d ", ++i); | 509 | //qDebug("i %d ", ++i); |
509 | if ( ev->zaurusStat() != -2 ) { | 510 | if ( ev->zaurusStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { |
510 | status.setText ( message + QString::number ( ++procCount ) ); | 511 | status.setText ( message + QString::number ( ++procCount ) ); |
511 | qApp->processEvents(); | 512 | qApp->processEvents(); |
512 | QString eString = getEventString( ev ); | 513 | QString eString = getEventString( ev ); |
513 | if ( ev->zaurusStat() == -3 ) { // delete | 514 | if ( ev->zaurusStat() == SYNC_TEMPSTATE_DELETE ) { // delete |
514 | // deleting empty strings does not work. | 515 | // deleting empty strings does not work. |
515 | // we write first and x and then delete the record with the x | 516 | // we write first and x and then delete the record with the x |
516 | eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); | 517 | eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); |
517 | changeString += eString + "\n"; | 518 | changeString += eString + "\n"; |
518 | deleteString += eString + "\n"; | 519 | deleteString += eString + "\n"; |
519 | deleteEnt = true; | 520 | deleteEnt = true; |
520 | changeEnt = true; | 521 | changeEnt = true; |
521 | } | 522 | } |
522 | else if ( ev->zaurusId() == -1 ) { // add new | 523 | else if ( ev->zaurusId() == -1 ) { // add new |
523 | command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName; | 524 | command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName; |
524 | system ( command.utf8() ); | 525 | system ( command.utf8() ); |
525 | QFile file( fileName ); | 526 | QFile file( fileName ); |
@@ -583,29 +584,29 @@ bool SharpFormat::save( Calendar *calendar) | |||
583 | 584 | ||
584 | 585 | ||
585 | changeString = tPrefix; | 586 | changeString = tPrefix; |
586 | deleteString = tPrefix; | 587 | deleteString = tPrefix; |
587 | status.setText ( i18n("Processing todos ...") ); | 588 | status.setText ( i18n("Processing todos ...") ); |
588 | qApp->processEvents(); | 589 | qApp->processEvents(); |
589 | QPtrList<Todo> tl = calendar->rawTodos(); | 590 | QPtrList<Todo> tl = calendar->rawTodos(); |
590 | Todo* to = tl.first(); | 591 | Todo* to = tl.first(); |
591 | i = 0; | 592 | i = 0; |
592 | message = i18n("Processing todo # "); | 593 | message = i18n("Processing todo # "); |
593 | procCount = 0; | 594 | procCount = 0; |
594 | while ( to ) { | 595 | while ( to ) { |
595 | if ( to->zaurusStat() != -2 ) { | 596 | if ( to->zaurusStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { |
596 | status.setText ( message + QString::number ( ++procCount ) ); | 597 | status.setText ( message + QString::number ( ++procCount ) ); |
597 | qApp->processEvents(); | 598 | qApp->processEvents(); |
598 | QString eString = getTodoString( to ); | 599 | QString eString = getTodoString( to ); |
599 | if ( to->zaurusStat() == -3 ) { // delete | 600 | if ( to->zaurusStat() == SYNC_TEMPSTATE_DELETE ) { // delete |
600 | // deleting empty strings does not work. | 601 | // deleting empty strings does not work. |
601 | // we write first and x and then delete the record with the x | 602 | // we write first and x and then delete the record with the x |
602 | eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); | 603 | eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); |
603 | changeString += eString + "\n"; | 604 | changeString += eString + "\n"; |
604 | deleteString += eString + "\n"; | 605 | deleteString += eString + "\n"; |
605 | deleteEnt = true; | 606 | deleteEnt = true; |
606 | changeEnt = true; | 607 | changeEnt = true; |
607 | } | 608 | } |
608 | else if ( to->zaurusId() == -1 ) { // add new | 609 | else if ( to->zaurusId() == -1 ) { // add new |
609 | command = "(echo \"" + tPrefix + eString + "\" ) | db2file todo -w -g -c " + codec+ " > "+ fileName; | 610 | command = "(echo \"" + tPrefix + eString + "\" ) | db2file todo -w -g -c " + codec+ " > "+ fileName; |
610 | system ( command.utf8() ); | 611 | system ( command.utf8() ); |
611 | QFile file( fileName ); | 612 | QFile file( fileName ); |
diff --git a/libkcal/syncdefines.h b/libkcal/syncdefines.h new file mode 100644 index 0000000..57642ec --- a/dev/null +++ b/libkcal/syncdefines.h | |||
@@ -0,0 +1,22 @@ | |||
1 | |||
2 | #ifndef _KSYNC_DEFINES_H_ | ||
3 | #define _KSYNC_DEFINES_H_ | ||
4 | |||
5 | #define SYNC_PREF_LOCAL 0 | ||
6 | #define SYNC_PREF_REMOTE 1 | ||
7 | #define SYNC_PREF_NEWEST 2 | ||
8 | #define SYNC_PREF_ASK 3 | ||
9 | #define SYNC_PREF_FORCE_LOCAL 4 | ||
10 | #define SYNC_PREF_FORCE_REMOTE 5 | ||
11 | #define SYNC_PREF_TAKE_BOTH 6 | ||
12 | |||
13 | #define SYNC_MODE_NORMAL 0 | ||
14 | #define SYNC_MODE_EXTERNAL 1 | ||
15 | |||
16 | #define SYNC_TEMPSTATE_INITIAL 0 | ||
17 | #define SYNC_TEMPSTATE_NEW_EXTERNAL -2 | ||
18 | #define SYNC_TEMPSTATE_DELETE -3 | ||
19 | #define SYNC_TEMPSTATE_NEW_ID -4 | ||
20 | |||
21 | |||
22 | #endif | ||