summaryrefslogtreecommitdiffabout
path: root/libkcal/phoneformat.cpp
Unidiff
Diffstat (limited to 'libkcal/phoneformat.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libkcal/phoneformat.cpp79
1 files changed, 42 insertions, 37 deletions
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp
index f78730d..fa18683 100644
--- a/libkcal/phoneformat.cpp
+++ b/libkcal/phoneformat.cpp
@@ -56,16 +56,16 @@ using namespace KCal;
56// 15 REND 0 = no end/ 1 = end 56// 15 REND 0 = no end/ 1 = end
57// 16 REDT rec end dt 57// 16 REDT rec end dt
58//ALSD 58//ALSD
59//ALED 59//ALED
60//MDAY 60//MDAY
61 61
62class SharpParser : public QObject 62class PhoneParser : public QObject
63{ 63{
64 public: 64 public:
65 SharpParser( Calendar *calendar ) : mCalendar( calendar ) { 65 PhoneParser( Calendar *calendar ) : mCalendar( calendar ) {
66 oldCategories = 0; 66 oldCategories = 0;
67 } 67 }
68 68
69 bool startElement( Calendar *existingCalendar, const QStringList & attList, QString qName ) 69 bool startElement( Calendar *existingCalendar, const QStringList & attList, QString qName )
70 { 70 {
71 int i = 1; 71 int i = 1;
@@ -77,24 +77,24 @@ class SharpParser : public QObject
77 break; 77 break;
78 } 78 }
79 ++i ; 79 ++i ;
80 } 80 }
81 if ( skip ) 81 if ( skip )
82 return false; 82 return false;
83 ulong cSum = SharpFormat::getCsum(attList ); 83 ulong cSum = PhoneFormat::getCsum(attList );
84 84
85 if ( qName == "Event" ) { 85 if ( qName == "Event" ) {
86 Event *event; 86 Event *event;
87 event = existingCalendar->event( attList[0].toInt() ); 87 event = existingCalendar->event( attList[0] );
88 if ( event ) 88 if ( event )
89 event = (Event*)event->clone(); 89 event = (Event*)event->clone();
90 else 90 else
91 event = new Event; 91 event = new Event;
92 event->setZaurusId( attList[0].toInt() ); 92 // event->setZaurusId( attList[0].toInt() );
93 event->setZaurusUid( cSum ); 93 //event->setZaurusUid( cSum );
94 event->setZaurusStat( -2 ); 94 //event->setZaurusStat( -2 );
95 95
96 event->setSummary( attList[2] ); 96 event->setSummary( attList[2] );
97 event->setLocation( attList[3] ); 97 event->setLocation( attList[3] );
98 event->setDescription( attList[4] ); 98 event->setDescription( attList[4] );
99 if ( attList[7] == "1" ) { 99 if ( attList[7] == "1" ) {
100 event->setDtStart( QDateTime(fromString( attList[17]+"T000000", false ).date(),QTime(0,0,0 ) )); 100 event->setDtStart( QDateTime(fromString( attList[17]+"T000000", false ).date(),QTime(0,0,0 ) ));
@@ -185,27 +185,27 @@ class SharpParser : public QObject
185 } 185 }
186 186
187 mCalendar->addEvent( event); 187 mCalendar->addEvent( event);
188 } else if ( qName == "Todo" ) { 188 } else if ( qName == "Todo" ) {
189 Todo *todo; 189 Todo *todo;
190 190
191 todo = existingCalendar->todo( attList[0].toInt() ); 191 todo = existingCalendar->todo( attList[0] );
192 if (todo ) 192 if (todo )
193 todo = (Todo*)todo->clone(); 193 todo = (Todo*)todo->clone();
194 else 194 else
195 todo = new Todo; 195 todo = new Todo;
196 196
197//CARDID,CATEGORY,ETDY,LTDY,FNDY,MARK,PRTY,TITL,MEM1 197//CARDID,CATEGORY,ETDY,LTDY,FNDY,MARK,PRTY,TITL,MEM1
198// 0 1 2 3 4 5 6 7 8 198// 0 1 2 3 4 5 6 7 8
199//1,,,,,1,4,Loch zumachen,"" 199//1,,,,,1,4,Loch zumachen,""
200//3,Privat,20040317T000000,20040318T000000,20040319T000000,0,5,Call bbb,"notes123 bbb gggg ""bb "" " 200//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 201//2,"Familie,Freunde,Holiday",20040318T000000,20040324T000000,20040317T000000,1,2,tod2,notes
202 202
203 todo->setZaurusId( attList[0].toInt() ); 203 //todo->setZaurusId( attList[0] );
204 todo->setZaurusUid( cSum ); 204 //todo->setZaurusUid( cSum );
205 todo->setZaurusStat( -2 ); 205 //todo->setZaurusStat( -2 );
206 206
207 todo->setSummary( attList[7] ); 207 todo->setSummary( attList[7] );
208 todo->setDescription( attList[8]); 208 todo->setDescription( attList[8]);
209 209
210 int priority = attList[6].toInt(); 210 int priority = attList[6].toInt();
211 if ( priority == 0 ) priority = 3; 211 if ( priority == 0 ) priority = 3;
@@ -320,23 +320,23 @@ class SharpParser : public QObject
320 mCategoriesMap.insert( id, name ); 320 mCategoriesMap.insert( id, name );
321 } 321 }
322 322
323 static QMap<QString,QString> mCategoriesMap; 323 static QMap<QString,QString> mCategoriesMap;
324}; 324};
325 325
326QMap<QString,QString> SharpParser::mCategoriesMap; 326QMap<QString,QString> PhoneParser::mCategoriesMap;
327 327
328SharpFormat::SharpFormat() 328PhoneFormat::PhoneFormat()
329{ 329{
330 mCategories = 0; 330 mCategories = 0;
331} 331}
332 332
333SharpFormat::~SharpFormat() 333PhoneFormat::~PhoneFormat()
334{ 334{
335} 335}
336ulong SharpFormat::getCsum( const QStringList & attList) 336ulong PhoneFormat::getCsum( const QStringList & attList)
337{ 337{
338 int max = attList.count() -1; 338 int max = attList.count() -1;
339 ulong cSum = 0; 339 ulong cSum = 0;
340 int j,k,i; 340 int j,k,i;
341 int add; 341 int add;
342 for ( i = 1; i < max ; ++i ) { 342 for ( i = 1; i < max ; ++i ) {
@@ -356,13 +356,13 @@ ulong SharpFormat::getCsum( const QStringList & attList)
356 return cSum; 356 return cSum;
357 357
358} 358}
359//extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); 359//extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum);
360#include <stdlib.h> 360#include <stdlib.h>
361#define DEBUGMODE false 361#define DEBUGMODE false
362bool SharpFormat::load( Calendar *calendar, Calendar *existngCal ) 362bool PhoneFormat::load( Calendar *calendar, Calendar *existngCal )
363{ 363{
364 364
365 GSM_StateMachines; 365 GSM_StateMachines;
366 qDebug(" load "); 366 qDebug(" load ");
367 s.opened = false; 367 s.opened = false;
368 s.msg = NULL; 368 s.msg = NULL;
@@ -485,13 +485,13 @@ static char *cp;
485 status.raise(); 485 status.raise();
486 qApp->processEvents(); 486 qApp->processEvents();
487 fromString2Cal( calendar, existngCal, text, "Todo" ); 487 fromString2Cal( calendar, existngCal, text, "Todo" );
488#endif 488#endif
489 return true; 489 return true;
490} 490}
491int SharpFormat::getNumFromRecord( QString answer, Incidence* inc ) 491int PhoneFormat::getNumFromRecord( QString answer, Incidence* inc )
492{ 492{
493 int retval = -1; 493 int retval = -1;
494 QStringList templist; 494 QStringList templist;
495 QString tempString; 495 QString tempString;
496 int start = 0; 496 int start = 0;
497 int len = answer.length(); 497 int len = answer.length();
@@ -526,22 +526,22 @@ int SharpFormat::getNumFromRecord( QString answer, Incidence* inc )
526 if ( ccc == 2 && loopCount < 25 ) { 526 if ( ccc == 2 && loopCount < 25 ) {
527 start = 0; 527 start = 0;
528 bool ok; 528 bool ok;
529 int newnum = templist[0].toInt( &ok ); 529 int newnum = templist[0].toInt( &ok );
530 if ( ok && newnum > 0) { 530 if ( ok && newnum > 0) {
531 retval = newnum; 531 retval = newnum;
532 inc->setZaurusId( newnum ); 532 //inc->setZaurusId( newnum );
533 inc->setZaurusUid( getCsum( templist ) ); 533 //inc->setZaurusUid( getCsum( templist ) );
534 inc->setZaurusStat( -4 ); 534 //inc->setZaurusStat( -4 );
535 } 535 }
536 } 536 }
537 } 537 }
538 //qDebug("getNumFromRecord returning : %d ", retval); 538 //qDebug("getNumFromRecord returning : %d ", retval);
539 return retval; 539 return retval;
540} 540}
541bool SharpFormat::save( Calendar *calendar) 541bool PhoneFormat::save( Calendar *calendar)
542{ 542{
543 543
544 QLabel status ( i18n("Processing/adding events ..."), 0 ); 544 QLabel status ( i18n("Processing/adding events ..."), 0 );
545 int w = status.sizeHint().width()+20 ; 545 int w = status.sizeHint().width()+20 ;
546 if ( w < 200 ) w = 200; 546 if ( w < 200 ) w = 200;
547 int h = status.sizeHint().height()+20 ; 547 int h = status.sizeHint().height()+20 ;
@@ -567,26 +567,26 @@ bool SharpFormat::save( Calendar *calendar)
567 bool deleteEnt = false; 567 bool deleteEnt = false;
568 bool changeEnt = false; 568 bool changeEnt = false;
569 QString message = i18n("Processing event # "); 569 QString message = i18n("Processing event # ");
570 int procCount = 0; 570 int procCount = 0;
571 while ( ev ) { 571 while ( ev ) {
572 //qDebug("i %d ", ++i); 572 //qDebug("i %d ", ++i);
573 if ( ev->zaurusStat() != -2 ) { 573 if ( true /*ev->zaurusStat() != -2*/ ) {
574 status.setText ( message + QString::number ( ++procCount ) ); 574 status.setText ( message + QString::number ( ++procCount ) );
575 qApp->processEvents(); 575 qApp->processEvents();
576 QString eString = getEventString( ev ); 576 QString eString = getEventString( ev );
577 if ( ev->zaurusStat() == -3 ) { // delete 577 if (/* ev->zaurusStat() == -3 */ true) { // delete
578 // deleting empty strings does not work. 578 // deleting empty strings does not work.
579 // we write first and x and then delete the record with the x 579 // we write first and x and then delete the record with the x
580 eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); 580 eString = eString.replace( QRegExp(",\"\""),",\"x\"" );
581 changeString += eString + "\n"; 581 changeString += eString + "\n";
582 deleteString += eString + "\n"; 582 deleteString += eString + "\n";
583 deleteEnt = true; 583 deleteEnt = true;
584 changeEnt = true; 584 changeEnt = true;
585 } 585 }
586 else if ( ev->zaurusId() == -1 ) { // add new 586 else if ( /*ev->zaurusId() == -1*/true ) { // add new
587 command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName; 587 command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName;
588 system ( command.utf8() ); 588 system ( command.utf8() );
589 QFile file( fileName ); 589 QFile file( fileName );
590 if (!file.open( IO_ReadOnly ) ) { 590 if (!file.open( IO_ReadOnly ) ) {
591 return false; 591 return false;
592 592
@@ -653,26 +653,26 @@ bool SharpFormat::save( Calendar *calendar)
653 QPtrList<Todo> tl = calendar->rawTodos(); 653 QPtrList<Todo> tl = calendar->rawTodos();
654 Todo* to = tl.first(); 654 Todo* to = tl.first();
655 i = 0; 655 i = 0;
656 message = i18n("Processing todo # "); 656 message = i18n("Processing todo # ");
657 procCount = 0; 657 procCount = 0;
658 while ( to ) { 658 while ( to ) {
659 if ( to->zaurusStat() != -2 ) { 659 if ( true /*to->zaurusStat() != -2 */) {
660 status.setText ( message + QString::number ( ++procCount ) ); 660 status.setText ( message + QString::number ( ++procCount ) );
661 qApp->processEvents(); 661 qApp->processEvents();
662 QString eString = getTodoString( to ); 662 QString eString = getTodoString( to );
663 if ( to->zaurusStat() == -3 ) { // delete 663 if ( /*to->zaurusStat() == -3*/true ) { // delete
664 // deleting empty strings does not work. 664 // deleting empty strings does not work.
665 // we write first and x and then delete the record with the x 665 // we write first and x and then delete the record with the x
666 eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); 666 eString = eString.replace( QRegExp(",\"\""),",\"x\"" );
667 changeString += eString + "\n"; 667 changeString += eString + "\n";
668 deleteString += eString + "\n"; 668 deleteString += eString + "\n";
669 deleteEnt = true; 669 deleteEnt = true;
670 changeEnt = true; 670 changeEnt = true;
671 } 671 }
672 else if ( to->zaurusId() == -1 ) { // add new 672 else if ( true /*to->zaurusId() == -1*/ ) { // add new
673 command = "(echo \"" + tPrefix + eString + "\" ) | db2file todo -w -g -c " + codec+ " > "+ fileName; 673 command = "(echo \"" + tPrefix + eString + "\" ) | db2file todo -w -g -c " + codec+ " > "+ fileName;
674 system ( command.utf8() ); 674 system ( command.utf8() );
675 QFile file( fileName ); 675 QFile file( fileName );
676 if (!file.open( IO_ReadOnly ) ) { 676 if (!file.open( IO_ReadOnly ) ) {
677 return false; 677 return false;
678 678
@@ -731,13 +731,13 @@ bool SharpFormat::save( Calendar *calendar)
731 system ( command.latin1() ); 731 system ( command.latin1() );
732 // qDebug("command %s file :\n%s ", command.latin1(), deleteString.latin1()); 732 // qDebug("command %s file :\n%s ", command.latin1(), deleteString.latin1());
733 } 733 }
734 734
735 return true; 735 return true;
736} 736}
737QString SharpFormat::dtToString( const QDateTime& dti, bool useTZ ) 737QString PhoneFormat::dtToString( const QDateTime& dti, bool useTZ )
738{ 738{
739 QString datestr; 739 QString datestr;
740 QString timestr; 740 QString timestr;
741 int offset = KGlobal::locale()->localTimeOffset( dti ); 741 int offset = KGlobal::locale()->localTimeOffset( dti );
742 QDateTime dt; 742 QDateTime dt;
743 if (useTZ) 743 if (useTZ)
@@ -753,14 +753,15 @@ QString SharpFormat::dtToString( const QDateTime& dti, bool useTZ )
753 const QTime& time = dt.time(); 753 const QTime& time = dt.time();
754 timestr.sprintf("T%02d%02d%02d", 754 timestr.sprintf("T%02d%02d%02d",
755 time.hour(), time.minute(), time.second()); 755 time.hour(), time.minute(), time.second());
756 } 756 }
757 return datestr + timestr; 757 return datestr + timestr;
758} 758}
759QString SharpFormat::getEventString( Event* event ) 759QString PhoneFormat::getEventString( Event* event )
760{ 760{
761#if 0
761 QStringList list; 762 QStringList list;
762 list.append( QString::number(event->zaurusId() ) ); 763 list.append( QString::number(event->zaurusId() ) );
763 list.append( event->categories().join(",") ); 764 list.append( event->categories().join(",") );
764 if ( !event->summary().isEmpty() ) 765 if ( !event->summary().isEmpty() )
765 list.append( event->summary() ); 766 list.append( event->summary() );
766 else 767 else
@@ -914,17 +915,19 @@ QString SharpFormat::getEventString( Event* event )
914 s.append('\"'); 915 s.append('\"');
915 } else if(s.isEmpty() && !s.isNull()){ 916 } else if(s.isEmpty() && !s.isNull()){
916 s = "\"\""; 917 s = "\"\"";
917 } 918 }
918 } 919 }
919 return list.join(","); 920 return list.join(",");
920 921#endif
922 return QString();
921 923
922} 924}
923QString SharpFormat::getTodoString( Todo* todo ) 925QString PhoneFormat::getTodoString( Todo* todo )
924{ 926{
927#if 0
925 QStringList list; 928 QStringList list;
926 list.append( QString::number( todo->zaurusId() ) ); 929 list.append( QString::number( todo->zaurusId() ) );
927 list.append( todo->categories().join(",") ); 930 list.append( todo->categories().join(",") );
928 931
929 if ( todo->hasStartDate() ) { 932 if ( todo->hasStartDate() ) {
930 list.append( dtToString( todo->dtStart()) ); 933 list.append( dtToString( todo->dtStart()) );
@@ -966,14 +969,16 @@ QString SharpFormat::getTodoString( Todo* todo )
966 s.append('\"'); 969 s.append('\"');
967 } else if(s.isEmpty() && !s.isNull()){ 970 } else if(s.isEmpty() && !s.isNull()){
968 s = "\"\""; 971 s = "\"\"";
969 } 972 }
970 } 973 }
971 return list.join(","); 974 return list.join(",");
975#endif
976 return QString();
972} 977}
973QString SharpFormat::getPart( const QString & text, bool &ok, int &start ) 978QString PhoneFormat::getPart( const QString & text, bool &ok, int &start )
974{ 979{
975 //qDebug("start %d ", start); 980 //qDebug("start %d ", start);
976 981
977 QString retval =""; 982 QString retval ="";
978 if ( text.at(start) == '"' ) { 983 if ( text.at(start) == '"' ) {
979 if ( text.mid( start,2) == "\"\"" && !( text.mid( start+2,1) == "\"")) { 984 if ( text.mid( start,2) == "\"\"" && !( text.mid( start+2,1) == "\"")) {
@@ -1025,27 +1030,27 @@ QString SharpFormat::getPart( const QString & text, bool &ok, int &start )
1025 ok = false; 1030 ok = false;
1026 start = nl+1; 1031 start = nl+1;
1027 return retval; 1032 return retval;
1028 } 1033 }
1029 } 1034 }
1030} 1035}
1031bool SharpFormat::fromString( Calendar *calendar, const QString & text) 1036bool PhoneFormat::fromString( Calendar *calendar, const QString & text)
1032{ 1037{
1033 return false; 1038 return false;
1034} 1039}
1035 bool SharpFormat::fromString2Cal( Calendar *calendar,Calendar *existingCalendar, GSM_StateMachine*s, const QString & type) 1040 bool PhoneFormat::fromString2Cal( Calendar *calendar,Calendar *existingCalendar, GSM_StateMachine*s, const QString & type)
1036{ 1041{
1037 GSM_Phone_Functions*Phone; 1042 GSM_Phone_Functions*Phone;
1038 1043
1039 GSM_CalendarEntrynote; 1044 GSM_CalendarEntrynote;
1040 GSM_CalendarEntry*Note; 1045 GSM_CalendarEntry*Note;
1041 bool refresh= true; 1046 bool refresh= true;
1042 1047
1043 Phone=s->Phone.Functions; 1048 Phone=s->Phone.Functions;
1044 bool gshutdown = false; 1049 bool gshutdown = false;
1045 SharpParser handler( calendar ); 1050 PhoneParser handler( calendar );
1046 //handler.setCategoriesList( mCategories ); 1051 //handler.setCategoriesList( mCategories );
1047 QStringList templist; 1052 QStringList templist;
1048 QString tempString; 1053 QString tempString;
1049 int start = 0; 1054 int start = 0;
1050 int error; 1055 int error;
1051 int ccc = 0; 1056 int ccc = 0;
@@ -1327,13 +1332,13 @@ typedef struct {
1327 QString tempString; 1332 QString tempString;
1328 int start = 0; 1333 int start = 0;
1329 int len = text.length(); 1334 int len = text.length();
1330 int end = text.find ("\n",start)+1; 1335 int end = text.find ("\n",start)+1;
1331 bool ok = true; 1336 bool ok = true;
1332 start = end; 1337 start = end;
1333 SharpParser handler( calendar ); 1338 PhoneParser handler( calendar );
1334 handler.setCategoriesList( mCategories ); 1339 handler.setCategoriesList( mCategories );
1335 while ( start > 0 ) { 1340 while ( start > 0 ) {
1336 templist.clear(); 1341 templist.clear();
1337 ok = true; 1342 ok = true;
1338 while ( ok ) { 1343 while ( ok ) {
1339 tempString = getPart( text, ok, start ); 1344 tempString = getPart( text, ok, start );
@@ -1350,10 +1355,10 @@ typedef struct {
1350 handler.startElement( existingCalendar, templist, type ); 1355 handler.startElement( existingCalendar, templist, type );
1351 } 1356 }
1352#endif 1357#endif
1353 return false; 1358 return false;
1354} 1359}
1355 1360
1356QString SharpFormat::toString( Calendar * ) 1361QString PhoneFormat::toString( Calendar * )
1357{ 1362{
1358 return QString::null; 1363 return QString::null;
1359} 1364}