summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-09-12 15:24:11 (UTC)
committer zautrix <zautrix>2004-09-12 15:24:11 (UTC)
commita222c2f7369eeefd19454c973c0cc48300f72bec (patch) (unidiff)
tree6f01a5922ea622add6960f3fad703e8e8f099caa
parentb2dede5d5735e2b4ab5afd51cf6a2c46d9be9b26 (diff)
downloadkdepimpi-a222c2f7369eeefd19454c973c0cc48300f72bec.zip
kdepimpi-a222c2f7369eeefd19454c973c0cc48300f72bec.tar.gz
kdepimpi-a222c2f7369eeefd19454c973c0cc48300f72bec.tar.bz2
many phone sync fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/common/service/gsmcal.c4
-rw-r--r--gammu/emb/gammu/gammu.c6
-rw-r--r--libkcal/phoneformat.cpp42
3 files changed, 36 insertions, 16 deletions
diff --git a/gammu/emb/common/service/gsmcal.c b/gammu/emb/common/service/gsmcal.c
index ddf9790..0ea8e06 100644
--- a/gammu/emb/common/service/gsmcal.c
+++ b/gammu/emb/common/service/gsmcal.c
@@ -445,68 +445,68 @@ GSM_Error GSM_DecodeVCALENDAR_VTODO(unsigned char *Buffer, int *Pos, GSM_Calenda
445 Calendar->Entries[Calendar->EntriesNum].EntryType = CAL_ALARM_DATETIME; 445 Calendar->Entries[Calendar->EntriesNum].EntryType = CAL_ALARM_DATETIME;
446 ReadVCALDateTime(DecodeUnicodeString(Buff), &Calendar->Entries[Calendar->EntriesNum].Date); 446 ReadVCALDateTime(DecodeUnicodeString(Buff), &Calendar->Entries[Calendar->EntriesNum].Date);
447 Calendar->EntriesNum++; 447 Calendar->EntriesNum++;
448 } 448 }
449 break; 449 break;
450 case 2: /* ToDo note */ 450 case 2: /* ToDo note */
451 if (strstr(Line,"END:VTODO")) { 451 if (strstr(Line,"END:VTODO")) {
452 if (ToDo->EntriesNum == 0) return ERR_EMPTY; 452 if (ToDo->EntriesNum == 0) return ERR_EMPTY;
453 return ERR_NONE; 453 return ERR_NONE;
454 } 454 }
455 if (ReadVCALText(Line, "DUE", Buff)) { 455 if (ReadVCALText(Line, "DUE", Buff)) {
456 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_END_DATETIME; 456 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_END_DATETIME;
457 ReadVCALDateTime(DecodeUnicodeString(Buff), &ToDo->Entries[ToDo->EntriesNum].Date); 457 ReadVCALDateTime(DecodeUnicodeString(Buff), &ToDo->Entries[ToDo->EntriesNum].Date);
458 ToDo->EntriesNum++; 458 ToDo->EntriesNum++;
459 } 459 }
460 if (ReadVCALText(Line, "DALARM", Buff)) { 460 if (ReadVCALText(Line, "DALARM", Buff)) {
461 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_SILENT_ALARM_DATETIME; 461 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_SILENT_ALARM_DATETIME;
462 ReadVCALDateTime(DecodeUnicodeString(Buff), &ToDo->Entries[ToDo->EntriesNum].Date); 462 ReadVCALDateTime(DecodeUnicodeString(Buff), &ToDo->Entries[ToDo->EntriesNum].Date);
463 ToDo->EntriesNum++; 463 ToDo->EntriesNum++;
464 } 464 }
465 if (ReadVCALText(Line, "AALARM", Buff)) { 465 if (ReadVCALText(Line, "AALARM", Buff)) {
466 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_ALARM_DATETIME; 466 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_ALARM_DATETIME;
467 ReadVCALDateTime(DecodeUnicodeString(Buff), &ToDo->Entries[ToDo->EntriesNum].Date); 467 ReadVCALDateTime(DecodeUnicodeString(Buff), &ToDo->Entries[ToDo->EntriesNum].Date);
468 ToDo->EntriesNum++; 468 ToDo->EntriesNum++;
469 } 469 }
470 if (ReadVCALText(Line, "SUMMARY", Buff)) { 470 if (ReadVCALText(Line, "SUMMARY", Buff)) {
471 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_TEXT; 471 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_TEXT;
472 CopyUnicodeString(ToDo->Entries[ToDo->EntriesNum].Text,Buff); 472 CopyUnicodeString(ToDo->Entries[ToDo->EntriesNum].Text,Buff);
473 ToDo->EntriesNum++; 473 ToDo->EntriesNum++;
474 } 474 }
475 if (ReadVCALText(Line, "PRIORITY", Buff)) { 475 if (ReadVCALText(Line, "PRIORITY", Buff)) {
476 if (ToDoVer == SonyEricsson_VToDo) { 476 if (ToDoVer == SonyEricsson_VToDo) {
477 ToDo->Priority = GSM_Priority_Low; 477 ToDo->Priority = GSM_Priority_Medium;
478 if (atoi(DecodeUnicodeString(Buff))>3) ToDo->Priority = GSM_Priority_Low; 478 if (atoi(DecodeUnicodeString(Buff))>3) ToDo->Priority = GSM_Priority_Low;
479 if (atoi(DecodeUnicodeString(Buff))<3) ToDo->Priority = GSM_Priority_High; 479 if (atoi(DecodeUnicodeString(Buff))<3) ToDo->Priority = GSM_Priority_High;
480 dbgprintf("atoi is %i %s\n",atoi(DecodeUnicodeString(Buff)),DecodeUnicodeString(Buff)); 480 dbgprintf("atoi is %i %s\n",atoi(DecodeUnicodeString(Buff)),DecodeUnicodeString(Buff));
481 } else if (ToDoVer == Nokia_VToDo) { 481 } else if (ToDoVer == Nokia_VToDo) {
482 ToDo->Priority = GSM_Priority_Low; 482 ToDo->Priority = GSM_Priority_Medium;
483 if (atoi(DecodeUnicodeString(Buff))>3) ToDo->Priority = GSM_Priority_Low; 483 if (atoi(DecodeUnicodeString(Buff))>3) ToDo->Priority = GSM_Priority_Low;
484 if (atoi(DecodeUnicodeString(Buff))<3) ToDo->Priority = GSM_Priority_High; 484 if (atoi(DecodeUnicodeString(Buff))<3) ToDo->Priority = GSM_Priority_High;
485 } 485 }
486 } 486 }
487 if (strstr(Line,"PERCENT-COMPLETE:100")) { 487 if (strstr(Line,"PERCENT-COMPLETE:100")) {
488 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_COMPLETED; 488 ToDo->Entries[ToDo->EntriesNum].EntryType = TODO_COMPLETED;
489 ToDo->Entries[ToDo->EntriesNum].Number = 1; 489 ToDo->Entries[ToDo->EntriesNum].Number = 1;
490 ToDo->EntriesNum++; 490 ToDo->EntriesNum++;
491 } 491 }
492 break; 492 break;
493 } 493 }
494 } 494 }
495 495
496 if (Calendar->EntriesNum == 0 && ToDo->EntriesNum == 0) return ERR_EMPTY; 496 if (Calendar->EntriesNum == 0 && ToDo->EntriesNum == 0) return ERR_EMPTY;
497 return ERR_NONE; 497 return ERR_NONE;
498} 498}
499 499
500GSM_Error GSM_EncodeVNTFile(unsigned char *Buffer, int *Length, GSM_NoteEntry *Note) 500GSM_Error GSM_EncodeVNTFile(unsigned char *Buffer, int *Length, GSM_NoteEntry *Note)
501{ 501{
502 *Length+=sprintf(Buffer+(*Length), "BEGIN:VNOTE%c%c",13,10); 502 *Length+=sprintf(Buffer+(*Length), "BEGIN:VNOTE%c%c",13,10);
503 *Length+=sprintf(Buffer+(*Length), "VERSION:1.1%c%c",13,10); 503 *Length+=sprintf(Buffer+(*Length), "VERSION:1.1%c%c",13,10);
504 SaveVCALText(Buffer, Length, Note->Text, "BODY"); 504 SaveVCALText(Buffer, Length, Note->Text, "BODY");
505 *Length+=sprintf(Buffer+(*Length), "END:VNOTE%c%c",13,10); 505 *Length+=sprintf(Buffer+(*Length), "END:VNOTE%c%c",13,10);
506 506
507 return ERR_NONE; 507 return ERR_NONE;
508} 508}
509 509
510/* How should editor hadle tabs in this file? Add editor commands here. 510/* How should editor hadle tabs in this file? Add editor commands here.
511 * vim: noexpandtab sw=8 ts=8 sts=8: 511 * vim: noexpandtab sw=8 ts=8 sts=8:
512 */ 512 */
diff --git a/gammu/emb/gammu/gammu.c b/gammu/emb/gammu/gammu.c
index a3b93a8..997485a 100644
--- a/gammu/emb/gammu/gammu.c
+++ b/gammu/emb/gammu/gammu.c
@@ -4598,125 +4598,130 @@ static void Restore(int argc, char *argv[])
4598 Bitmap.Type = GSM_CallerGroupLogo; 4598 Bitmap.Type = GSM_CallerGroupLogo;
4599 Bitmap.Location = 1; 4599 Bitmap.Location = 1;
4600 error=Phone->GetBitmap(&s,&Bitmap); 4600 error=Phone->GetBitmap(&s,&Bitmap);
4601 if (error == ERR_NONE) { 4601 if (error == ERR_NONE) {
4602 if (answer_yes("Restore caller groups and logos")) DoRestore = true; 4602 if (answer_yes("Restore caller groups and logos")) DoRestore = true;
4603 } 4603 }
4604 } 4604 }
4605 if (DoRestore) { 4605 if (DoRestore) {
4606 max = 0; 4606 max = 0;
4607 while (Backup.CallerLogos[max]!=NULL) max++; 4607 while (Backup.CallerLogos[max]!=NULL) max++;
4608 for (i=0;i<max;i++) { 4608 for (i=0;i<max;i++) {
4609 error=Phone->SetBitmap(&s,Backup.CallerLogos[i]); 4609 error=Phone->SetBitmap(&s,Backup.CallerLogos[i]);
4610 Print_Error(error); 4610 Print_Error(error);
4611 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4611 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4612 if (gshutdown) { 4612 if (gshutdown) {
4613 GSM_Terminate(); 4613 GSM_Terminate();
4614 exit(0); 4614 exit(0);
4615 } 4615 }
4616 } 4616 }
4617 printmsgerr("\n"); 4617 printmsgerr("\n");
4618 } 4618 }
4619 4619
4620 if (!mystrncasecmp(s.CurrentConfig->SyncTime,"yes",0)) { 4620 if (!mystrncasecmp(s.CurrentConfig->SyncTime,"yes",0)) {
4621 if (/*answer_yes("Do you want to set date/time in phone (NOTE: in some phones it's required to correctly restore calendar notes and other items)")*/ true ) { 4621 if (/*answer_yes("Do you want to set date/time in phone (NOTE: in some phones it's required to correctly restore calendar notes and other items)")*/ true ) {
4622 GSM_GetCurrentDateTime(&date_time); 4622 GSM_GetCurrentDateTime(&date_time);
4623 4623
4624 error=Phone->SetDateTime(&s, &date_time); 4624 error=Phone->SetDateTime(&s, &date_time);
4625 Print_Error(error); 4625 Print_Error(error);
4626 } 4626 }
4627 } 4627 }
4628 DoRestore = false; 4628 DoRestore = false;
4629 if (Backup.Calendar[0] != NULL) { 4629 if (Backup.Calendar[0] != NULL) {
4630 DoRestore = true;
4630 /* N6110 doesn't support getting calendar status */ 4631 /* N6110 doesn't support getting calendar status */
4631 error = Phone->GetNextCalendar(&s,&Calendar,true); 4632 error = Phone->GetNextCalendar(&s,&Calendar,true);
4632 if (error == ERR_NONE || error == ERR_INVALIDLOCATION || error == ERR_EMPTY) { 4633 if (error == ERR_NONE || error == ERR_INVALIDLOCATION || error == ERR_EMPTY) {
4633 max = 0; 4634 max = 0;
4634 while (Backup.Calendar[max] != NULL) max++; 4635 while (Backup.Calendar[max] != NULL) max++;
4635 printmsgerr("%i entries in backup file\n",max); 4636 printmsgerr("%i entries in backup file\n",max);
4636 DoRestore = true; 4637 DoRestore = true;
4637 /* 4638 /*
4638 if (answer_yes("Restore calendar notes")) { 4639 if (answer_yes("Restore calendar notes")) {
4639 Past = answer_yes("Restore notes from the past"); 4640 Past = answer_yes("Restore notes from the past");
4640 DoRestore = true; 4641 DoRestore = true;
4641 } 4642 }
4642 */ 4643 */
4643 } 4644 }
4644 } 4645 }
4645 if (DoRestore) { 4646 if (DoRestore) {
4646 printmsgerr("Deleting old notes: "); 4647 printmsgerr("Deleting old notes: ");
4647 error = Phone->DeleteAllCalendar(&s); 4648 error = Phone->DeleteAllCalendar(&s);
4648 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) { 4649 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) {
4649 while (1) { 4650 while (1) {
4650 error = Phone->GetNextCalendar(&s,&Calendar,true); 4651 error = Phone->GetNextCalendar(&s,&Calendar,true);
4651 if (error != ERR_NONE) break; 4652 if (error != ERR_NONE) break;
4652 error = Phone->DeleteCalendar(&s,&Calendar); 4653 error = Phone->DeleteCalendar(&s,&Calendar);
4653 Print_Error(error); 4654 Print_Error(error);
4654 printmsgerr("*"); 4655 printmsgerr("*");
4655 } 4656 }
4656 printmsgerr("\n"); 4657 printmsgerr("\n");
4657 } else { 4658 } else {
4658 printmsgerr("Done\n"); 4659 printmsgerr("Done\n");
4659 Print_Error(error); 4660 Print_Error(error);
4660 } 4661 }
4661 4662
4662 for (i=0;i<max;i++) { 4663 for (i=0;i<max;i++) {
4663 if (!Past && IsCalendarNoteFromThePast(Backup.Calendar[i])) continue; 4664 if (!Past && IsCalendarNoteFromThePast(Backup.Calendar[i])) continue;
4664 4665
4665 Calendar = *Backup.Calendar[i]; 4666 Calendar = *Backup.Calendar[i];
4666 error=Phone->AddCalendar(&s,&Calendar); 4667 error=Phone->AddCalendar(&s,&Calendar);
4667 Print_Error(error); 4668 Print_Error(error);
4668 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4669 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4669 if (gshutdown) { 4670 if (gshutdown) {
4670 GSM_Terminate(); 4671 GSM_Terminate();
4671 exit(0); 4672 exit(0);
4672 } 4673 }
4673 } 4674 }
4674 printmsgerr("\n"); 4675 printmsgerr("\n");
4675 } 4676 }
4676 4677
4677 DoRestore = false; 4678 DoRestore = false;
4678 if (Backup.ToDo[0] != NULL) { 4679 if (Backup.ToDo[0] != NULL) {
4679 error = Phone->GetToDoStatus(&s,&ToDoStatus); 4680 error = Phone->GetToDoStatus(&s,&ToDoStatus);
4680 if (error == ERR_NONE) { 4681 if (error == ERR_NONE) {
4682 error == ERR_NOTSUPPORTED;
4683 DoRestore = true;
4681 max = 0; 4684 max = 0;
4682 while (Backup.ToDo[max]!=NULL) max++; 4685 while (Backup.ToDo[max]!=NULL) max++;
4683 printmsgerr("%i entries in backup file\n",max); 4686 printmsgerr("%i entries in backup file\n",max);
4684 4687
4685 /*if (answer_yes("Restore ToDo")) */DoRestore = true; 4688 /*if (answer_yes("Restore ToDo")) */DoRestore = true;
4686 } 4689 }
4687 } 4690 }
4688 if (DoRestore) { 4691 if (DoRestore) {
4692 if ( max > 0 ) {
4689 ToDo = *Backup.ToDo[0]; 4693 ToDo = *Backup.ToDo[0];
4690 error = Phone->SetToDo(&s,&ToDo); 4694 error = Phone->SetToDo(&s,&ToDo);
4695 }
4691 } 4696 }
4692 if (DoRestore && (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED)) { 4697 if (DoRestore && (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED)) {
4693 printmsgerr("Deleting old ToDo: "); 4698 printmsgerr("Deleting old ToDo: ");
4694 error=Phone->DeleteAllToDo(&s); 4699 error=Phone->DeleteAllToDo(&s);
4695 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) { 4700 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) {
4696 while (1) { 4701 while (1) {
4697 error = Phone->GetNextToDo(&s,&ToDo,true); 4702 error = Phone->GetNextToDo(&s,&ToDo,true);
4698 if (error != ERR_NONE) break; 4703 if (error != ERR_NONE) break;
4699 error = Phone->DeleteToDo(&s,&ToDo); 4704 error = Phone->DeleteToDo(&s,&ToDo);
4700 Print_Error(error); 4705 Print_Error(error);
4701 printmsgerr("*"); 4706 printmsgerr("*");
4702 } 4707 }
4703 printmsgerr("\n"); 4708 printmsgerr("\n");
4704 } else { 4709 } else {
4705 printmsgerr("Done\n"); 4710 printmsgerr("Done\n");
4706 Print_Error(error); 4711 Print_Error(error);
4707 } 4712 }
4708 4713
4709 for (i=0;i<max;i++) { 4714 for (i=0;i<max;i++) {
4710 ToDo = *Backup.ToDo[i]; 4715 ToDo = *Backup.ToDo[i];
4711 ToDo.Location = 0; 4716 ToDo.Location = 0;
4712 error=Phone->AddToDo(&s,&ToDo); 4717 error=Phone->AddToDo(&s,&ToDo);
4713 Print_Error(error); 4718 Print_Error(error);
4714 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4719 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4715 if (gshutdown) { 4720 if (gshutdown) {
4716 GSM_Terminate(); 4721 GSM_Terminate();
4717 exit(0); 4722 exit(0);
4718 } 4723 }
4719 } 4724 }
4720 printmsgerr("\n"); 4725 printmsgerr("\n");
4721 } else if (DoRestore) { 4726 } else if (DoRestore) {
4722 /* At first delete entries, that were deleted */ 4727 /* At first delete entries, that were deleted */
@@ -8345,65 +8350,64 @@ int main(int argc, char *argv[])
8345 GSM_SetDebugLevel(s.Config[i].DebugLevel, &di); 8350 GSM_SetDebugLevel(s.Config[i].DebugLevel, &di);
8346 } 8351 }
8347 /* If user gave debug file in gammurc, we will use it */ 8352 /* If user gave debug file in gammurc, we will use it */
8348 error=GSM_SetDebugFile(s.Config[i].DebugFile, &di); 8353 error=GSM_SetDebugFile(s.Config[i].DebugFile, &di);
8349 Print_Error(error); 8354 Print_Error(error);
8350 } 8355 }
8351 8356
8352 /* We wanted to read just user specified configuration. */ 8357 /* We wanted to read just user specified configuration. */
8353 if (only_config != -1) {break;} 8358 if (only_config != -1) {break;}
8354 } 8359 }
8355#if 0 8360#if 0
8356 GSM_Config *con = &s.Config[0]; 8361 GSM_Config *con = &s.Config[0];
8357 8362
8358 char* tempC; 8363 char* tempC;
8359 tempC = argv[argc-1]+2; 8364 tempC = argv[argc-1]+2;
8360 if ( *tempC != 0 ) { 8365 if ( *tempC != 0 ) {
8361 fprintf(stderr,"Using model %s \n",tempC); 8366 fprintf(stderr,"Using model %s \n",tempC);
8362 strcpy(con->Model,tempC ); 8367 strcpy(con->Model,tempC );
8363 } 8368 }
8364 tempC = argv[argc-2]+2; 8369 tempC = argv[argc-2]+2;
8365 if ( *tempC != 0 ) { 8370 if ( *tempC != 0 ) {
8366 fprintf(stderr,"Using device %s \n",tempC); 8371 fprintf(stderr,"Using device %s \n",tempC);
8367 con->Device = strdup(tempC); 8372 con->Device = strdup(tempC);
8368 con->DefaultDevice = false; 8373 con->DefaultDevice = false;
8369 } 8374 }
8370 tempC = argv[argc-3]+2; 8375 tempC = argv[argc-3]+2;
8371 if ( *tempC != 0 ) { 8376 if ( *tempC != 0 ) {
8372 fprintf(stderr,"Using connection %s \n",tempC); 8377 fprintf(stderr,"Using connection %s \n",tempC);
8373 con->Connection = strdup(tempC); 8378 con->Connection = strdup(tempC);
8374 con->DefaultConnection = false; 8379 con->DefaultConnection = false;
8375 } 8380 }
8376#endif 8381#endif
8377 argc = argc-3;
8378 8382
8379 8383
8380 /* Do we have enough parameters? */ 8384 /* Do we have enough parameters? */
8381 if (argc == 1 + start) { 8385 if (argc == 1 + start) {
8382 HelpGeneral(); 8386 HelpGeneral();
8383 printmsg("Too few parameters!\n"); 8387 printmsg("Too few parameters!\n");
8384 exit(-2); 8388 exit(-2);
8385 } 8389 }
8386 8390
8387 /* Check used version vs. compiled */ 8391 /* Check used version vs. compiled */
8388 if (!mystrncasecmp(GetGammuVersion(),VERSION,0)) { 8392 if (!mystrncasecmp(GetGammuVersion(),VERSION,0)) {
8389 printmsg("ERROR: version of installed libGammu.so (%s) is different to version of Gammu (%s)\n", 8393 printmsg("ERROR: version of installed libGammu.so (%s) is different to version of Gammu (%s)\n",
8390 GetGammuVersion(),VERSION); 8394 GetGammuVersion(),VERSION);
8391 exit(-1); 8395 exit(-1);
8392 } 8396 }
8393 8397
8394 /* Check parameters */ 8398 /* Check parameters */
8395 while (Parameters[z].Function != NULL) { 8399 while (Parameters[z].Function != NULL) {
8396 if (mystrncasecmp(Parameters[z].parameter,argv[1+start], 0)) { 8400 if (mystrncasecmp(Parameters[z].parameter,argv[1+start], 0)) {
8397 if (argc-2-start >= Parameters[z].min_arg && argc-2-start <= Parameters[z].max_arg) { 8401 if (argc-2-start >= Parameters[z].min_arg && argc-2-start <= Parameters[z].max_arg) {
8398 fprintf(stderr,"Executing \n"); 8402 fprintf(stderr,"Executing \n");
8399 Parameters[z].Function(argc - start, argv + start); 8403 Parameters[z].Function(argc - start, argv + start);
8400 break; 8404 break;
8401 } else { 8405 } else {
8402 count_failed = true; 8406 count_failed = true;
8403 } 8407 }
8404 } 8408 }
8405 z++; 8409 z++;
8406 } 8410 }
8407 8411
8408 /* Tell user when we did nothing */ 8412 /* Tell user when we did nothing */
8409 if (Parameters[z].Function == NULL) { 8413 if (Parameters[z].Function == NULL) {
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp
index 6df639f..ef69bce 100644
--- a/libkcal/phoneformat.cpp
+++ b/libkcal/phoneformat.cpp
@@ -100,65 +100,68 @@ int PhoneFormat::initDevice(GSM_StateMachine *s)
100 GSM_Config *cfg = &s->Config[0]; 100 GSM_Config *cfg = &s->Config[0];
101 if ( ! mConnection.isEmpty() ) { 101 if ( ! mConnection.isEmpty() ) {
102 cfg->Connection = strdup(mConnection.latin1()); 102 cfg->Connection = strdup(mConnection.latin1());
103 cfg->DefaultConnection = false; 103 cfg->DefaultConnection = false;
104 qDebug("Connection set %s ", cfg->Connection ); 104 qDebug("Connection set %s ", cfg->Connection );
105 105
106 } 106 }
107 if ( ! mDevice.isEmpty() ) { 107 if ( ! mDevice.isEmpty() ) {
108 cfg->Device = strdup(mDevice.latin1()); 108 cfg->Device = strdup(mDevice.latin1());
109 cfg->DefaultDevice = false; 109 cfg->DefaultDevice = false;
110 qDebug("Device set %s ", cfg->Device); 110 qDebug("Device set %s ", cfg->Device);
111 111
112 } 112 }
113 if ( ! mModel.isEmpty() ) { 113 if ( ! mModel.isEmpty() ) {
114 strcpy(cfg->Model,mModel.latin1() ); 114 strcpy(cfg->Model,mModel.latin1() );
115 cfg->DefaultModel = false; 115 cfg->DefaultModel = false;
116 qDebug("Model set %s ",cfg->Model ); 116 qDebug("Model set %s ",cfg->Model );
117 } 117 }
118 int error=GSM_InitConnection(s,3); 118 int error=GSM_InitConnection(s,3);
119 return error; 119 return error;
120} 120}
121#endif 121#endif
122ulong PhoneFormat::getCsumTodo( Todo* todo ) 122ulong PhoneFormat::getCsumTodo( Todo* todo )
123{ 123{
124 QStringList attList; 124 QStringList attList;
125 if ( todo->hasDueDate() ) 125 if ( todo->hasDueDate() )
126 attList << PhoneParser::dtToString ( todo->dtDue() ); 126 attList << PhoneParser::dtToString ( todo->dtDue() );
127 attList << todo->summary(); 127 attList << todo->summary();
128 QString completedString = "no"; 128 QString completedString = "no";
129 if ( todo->isCompleted() ) 129 if ( todo->isCompleted() )
130 completedString = "yes"; 130 completedString = "yes";
131 attList << completedString; 131 attList << completedString;
132 attList << QString::number( todo->priority() ); 132 int prio = todo->priority();
133 if( prio == 2 ) prio = 1;
134 if (prio == 4 ) prio = 5 ;
135 attList << QString::number( prio );
133 QString alarmString = "na"; 136 QString alarmString = "na";
134 Alarm *alarm; 137 Alarm *alarm;
135 if ( todo->alarms().count() > 0 ) { 138 if ( todo->alarms().count() > 0 ) {
136 alarm = todo->alarms().first(); 139 alarm = todo->alarms().first();
137 if ( alarm->enabled() ) { 140 if ( alarm->enabled() ) {
138 alarmString = QString::number(alarm->startOffset().asSeconds() ); 141 alarmString = QString::number(alarm->startOffset().asSeconds() );
139 } 142 }
140 } 143 }
141 attList << alarmString; 144 attList << alarmString;
142 attList << todo->categoriesStr(); 145 attList << todo->categoriesStr();
143 attList << todo->secrecyStr(); 146 attList << todo->secrecyStr();
144 return PhoneFormat::getCsum(attList ); 147 return PhoneFormat::getCsum(attList );
145 148
146} 149}
147ulong PhoneFormat::getCsumEvent( Event* event ) 150ulong PhoneFormat::getCsumEvent( Event* event )
148{ 151{
149 QStringList attList; 152 QStringList attList;
150 attList << PhoneParser::dtToString ( event->dtStart() ); 153 attList << PhoneParser::dtToString ( event->dtStart() );
151 attList << PhoneParser::dtToString ( event->dtEnd() ); 154 attList << PhoneParser::dtToString ( event->dtEnd() );
152 attList << event->summary(); 155 attList << event->summary();
153 attList << event->location(); 156 attList << event->location();
154 QString alarmString = "na"; 157 QString alarmString = "na";
155 Alarm *alarm; 158 Alarm *alarm;
156 if ( event->alarms().count() > 0 ) { 159 if ( event->alarms().count() > 0 ) {
157 alarm = event->alarms().first(); 160 alarm = event->alarms().first();
158 if ( alarm->enabled() ) { 161 if ( alarm->enabled() ) {
159 alarmString = QString::number( alarm->startOffset().asSeconds() ); 162 alarmString = QString::number( alarm->startOffset().asSeconds() );
160 } 163 }
161 } 164 }
162 attList << alarmString; 165 attList << alarmString;
163 Recurrence* rec = event->recurrence(); 166 Recurrence* rec = event->recurrence();
164 QStringList list; 167 QStringList list;
@@ -225,318 +228,331 @@ ulong PhoneFormat::getCsumEvent( Event* event )
225 writeEndDate = true; 228 writeEndDate = true;
226 break; 229 break;
227 230
228 default: 231 default:
229 list.append( "255" ); 232 list.append( "255" );
230 list.append( QString() ); 233 list.append( QString() );
231 list.append( "0" ); 234 list.append( "0" );
232 list.append( QString() ); 235 list.append( QString() );
233 list.append( "0" ); 236 list.append( "0" );
234 list.append( "20991231T000000" ); 237 list.append( "20991231T000000" );
235 break; 238 break;
236 } 239 }
237 if ( writeEndDate ) { 240 if ( writeEndDate ) {
238 241
239 if ( rec->endDate().isValid() ) { // 15 + 16 242 if ( rec->endDate().isValid() ) { // 15 + 16
240 list.append( "1" ); 243 list.append( "1" );
241 list.append( PhoneParser::dtToString( rec->endDate()) ); 244 list.append( PhoneParser::dtToString( rec->endDate()) );
242 } else { 245 } else {
243 list.append( "0" ); 246 list.append( "0" );
244 list.append( "20991231T000000" ); 247 list.append( "20991231T000000" );
245 } 248 }
246 249
247 } 250 }
248 attList << list.join(""); 251 attList << list.join("");
249 attList << event->categoriesStr(); 252 attList << event->categoriesStr();
250 //qDebug("csum cat %s", event->categoriesStr().latin1()); 253 //qDebug("csum cat %s", event->categoriesStr().latin1());
251 254
252 attList << event->secrecyStr(); 255 attList << event->secrecyStr();
253 return PhoneFormat::getCsum(attList ); 256 return PhoneFormat::getCsum(attList );
254} 257}
255ulong PhoneFormat::getCsum( const QStringList & attList) 258ulong PhoneFormat::getCsum( const QStringList & attList)
256{ 259{
257 int max = attList.count() -1; 260 int max = attList.count();
258 ulong cSum = 0; 261 ulong cSum = 0;
259 int j,k,i; 262 int j,k,i;
260 int add; 263 int add;
261 for ( i = 1; i < max ; ++i ) { 264 for ( i = 0; i < max ; ++i ) {
262 QString s = attList[i]; 265 QString s = attList[i];
263 if ( ! s.isEmpty() ){ 266 if ( ! s.isEmpty() ){
264 j = s.length(); 267 j = s.length();
265 for ( k = 0; k < j; ++k ) { 268 for ( k = 0; k < j; ++k ) {
266 int mul = k +1; 269 int mul = k +1;
267 add = s[k].unicode (); 270 add = s[k].unicode ();
268 if ( k < 16 ) 271 if ( k < 16 )
269 mul = mul * mul; 272 mul = mul * mul;
270 add = add * mul *i*i*i; 273 int ii = i+1;
274 add = add * mul *ii*ii*ii;
271 cSum += add; 275 cSum += add;
272 } 276 }
273 } 277 }
278 if ( i == 0 )
279 qDebug("csum: i == 0 %d ", cSum);
280
274 } 281 }
275 //QString dump = attList.join(","); 282 QString dump = attList.join(",");
276 //qDebug("csum: %s", dump.latin1()); 283 qDebug("csum: %d %s", cSum,dump.latin1());
277 284
278 return cSum; 285 return cSum;
279 286
280} 287}
281//extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); 288//extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum);
282#include <stdlib.h> 289#include <stdlib.h>
283#define DEBUGMODE false 290#define DEBUGMODE false
284bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) 291bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal)
285{ 292{
286 293
287 QString fileName; 294 QString fileName;
288#ifdef _WIN32_ 295#ifdef _WIN32_
289 fileName = locateLocal("data", "korganizer") + "\\tempfile.vcs"; 296 fileName = locateLocal("data", "korganizer") + "\\tempfile.vcs";
290#else 297#else
291 fileName = "/tmp/kdepimtemp.vcs"; 298 fileName = "/tmp/kdepimtemp.vcs";
292#endif 299#endif
293 QString command ="./kammu --backup " + fileName + " -yes -C" + 300 QString command ="./kammu --backup " + fileName + " -yes" ;
294 mConnection +" -D" + mDevice +" -M" + mModel;
295 int ret = system ( command.latin1() ); 301 int ret = system ( command.latin1() );
296 if ( ret != 0 ) { 302 if ( ret != 0 ) {
297 qDebug("Error::command returned %d", ret); 303 qDebug("Error::command returned %d", ret);
298 return false; 304 return false;
299 } 305 }
300 qDebug("Command returned %d", ret); 306 qDebug("Command returned %d", ret);
301 VCalFormat vfload; 307 VCalFormat vfload;
302 vfload.setLocalTime ( true ); 308 vfload.setLocalTime ( true );
303 qDebug("loading file ..."); 309 qDebug("loading file ...");
304 310
305 if ( ! vfload.load( calendar, fileName ) ) 311 if ( ! vfload.load( calendar, fileName ) )
306 return false; 312 return false;
307 QPtrList<Event> er = calendar->rawEvents(); 313 QPtrList<Event> er = calendar->rawEvents();
308 Event* ev = er.first(); 314 Event* ev = er.first();
309 qDebug("reading events... "); 315 qDebug("reading events... ");
310 while ( ev ) { 316 while ( ev ) {
311 QStringList cat = ev->categories(); 317 QStringList cat = ev->categories();
312 if ( cat.contains( "MeetingDEF" )) { 318 if ( cat.contains( "MeetingDEF" )) {
313 ev->setCategories( QStringList() ); 319 ev->setCategories( QStringList() );
314 } 320 }
315 int id = ev->pilotId(); 321 int id = ev->pilotId();
316 Event *event; 322 Event *event;
317 event = existingCal->event( mProfileName ,QString::number( id ) ); 323 event = existingCal->event( mProfileName ,QString::number( id ) );
318 if ( event ) { 324 if ( event ) {
319 event = (Event*)event->clone(); 325 event = (Event*)event->clone();
320 copyEvent( event, ev ); 326 copyEvent( event, ev );
321 calendar->deleteEvent( ev ); 327 calendar->deleteEvent( ev );
322 calendar->addEvent( event); 328 calendar->addEvent( event);
323 } 329 }
324 else 330 else
325 event = ev; 331 event = ev;
326 uint cSum; 332 uint cSum;
327 cSum = PhoneFormat::getCsumEvent( event ); 333 cSum = PhoneFormat::getCsumEvent( event );
328 event->setCsum( mProfileName, QString::number( cSum )); 334 event->setCsum( mProfileName, QString::number( cSum ));
329 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); 335 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
330 event->setID( mProfileName,QString::number( id ) ); 336 event->setID( mProfileName,QString::number( id ) );
331 ev = er.next(); 337 ev = er.next();
332 } 338 }
333 { 339 {
334 qDebug("reading todos... "); 340 qDebug("reading todos... ");
335 QPtrList<Todo> tr = calendar->rawTodos(); 341 QPtrList<Todo> tr = calendar->rawTodos();
336 Todo* ev = tr.first(); 342 Todo* ev = tr.first();
337 while ( ev ) { 343 while ( ev ) {
338 344
339 QStringList cat = ev->categories(); 345 QStringList cat = ev->categories();
340 if ( cat.contains( "MeetingDEF" )) { 346 if ( cat.contains( "MeetingDEF" )) {
341 ev->setCategories( QStringList() ); 347 ev->setCategories( QStringList() );
342 } 348 }
343 int id = ev->pilotId(); 349 int id = ev->pilotId();
344 Todo *event; 350 Todo *event;
345 event = existingCal->todo( mProfileName ,QString::number( id ) ); 351 event = existingCal->todo( mProfileName ,QString::number( id ) );
346 if ( event ) { 352 if ( event ) {
353 qDebug("copy todo %s ", event->summary().latin1());
354
347 event = (Todo*)event->clone(); 355 event = (Todo*)event->clone();
348 copyTodo( event, ev ); 356 copyTodo( event, ev );
349 calendar->deleteTodo( ev ); 357 calendar->deleteTodo( ev );
350 calendar->addTodo( event); 358 calendar->addTodo( event);
351 } 359 }
352 else 360 else
353 event = ev; 361 event = ev;
354 uint cSum; 362 uint cSum;
355 cSum = PhoneFormat::getCsumTodo( event ); 363 cSum = PhoneFormat::getCsumTodo( event );
356 event->setCsum( mProfileName, QString::number( cSum )); 364 event->setCsum( mProfileName, QString::number( cSum ));
357 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); 365 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
358 event->setID( mProfileName,QString::number( id ) ); 366 event->setID( mProfileName,QString::number( id ) );
359 ev = tr.next(); 367 ev = tr.next();
360 } 368 }
361 } 369 }
362 return true; 370 return true;
363} 371}
364void PhoneFormat::copyEvent( Event* to, Event* from ) 372void PhoneFormat::copyEvent( Event* to, Event* from )
365{ 373{
366 if ( from->dtStart().isValid() ) 374 if ( from->dtStart().isValid() )
367 to->setDtStart( from->dtStart() ); 375 to->setDtStart( from->dtStart() );
368 if ( from->dtEnd().isValid() ) 376 if ( from->dtEnd().isValid() )
369 to->setDtEnd( from->dtEnd() ); 377 to->setDtEnd( from->dtEnd() );
370 if ( !from->location().isEmpty() ) 378 if ( !from->location().isEmpty() )
371 to->setLocation( from->location() ); 379 to->setLocation( from->location() );
372 if ( !from->description().isEmpty() ) 380 if ( !from->description().isEmpty() )
373 to->setDescription( from->description() ); 381 to->setDescription( from->description() );
374 if ( !from->summary().isEmpty() ) 382 if ( !from->summary().isEmpty() )
375 to->setSummary( from->summary() ); 383 to->setSummary( from->summary() );
376 384
377 QPtrListIterator<Alarm> it( from->alarms() ); 385 QPtrListIterator<Alarm> it( from->alarms() );
378 to->clearAlarms(); 386 if ( it.current() )
387 to->clearAlarms();
379 const Alarm *a; 388 const Alarm *a;
380 while( (a = it.current()) ) { 389 while( (a = it.current()) ) {
381 Alarm *b = new Alarm( *a ); 390 Alarm *b = new Alarm( *a );
382 b->setParent( to ); 391 b->setParent( to );
383 to->addAlarm( b ); 392 to->addAlarm( b );
384 ++it; 393 ++it;
385 } 394 }
386 QStringList cat = to->categories(); 395 QStringList cat = to->categories();
387 QStringList catFrom = from->categories(); 396 QStringList catFrom = from->categories();
388 QString nCat; 397 QString nCat;
389 int iii; 398 int iii;
390 for ( iii = 0; iii < catFrom.count();++iii ) { 399 for ( iii = 0; iii < catFrom.count();++iii ) {
391 nCat = catFrom[iii]; 400 nCat = catFrom[iii];
392 if ( !nCat.isEmpty() ) 401 if ( !nCat.isEmpty() )
393 if ( !cat.contains( nCat )) { 402 if ( !cat.contains( nCat )) {
394 cat << nCat; 403 cat << nCat;
395 } 404 }
396 } 405 }
397 to->setCategories( cat ); 406 to->setCategories( cat );
398 Recurrence * r = new Recurrence( *from->recurrence(),to); 407 Recurrence * r = new Recurrence( *from->recurrence(),to);
399 to->setRecurrence( r ) ; 408 to->setRecurrence( r ) ;
400 409
401 410
402} 411}
403void PhoneFormat::copyTodo( Todo* to, Todo* from ) 412void PhoneFormat::copyTodo( Todo* to, Todo* from )
404{ 413{
405 if ( from->dtStart().isValid() ) 414 if ( from->dtStart().isValid() )
406 to->setDtStart( from->dtStart() ); 415 to->setDtStart( from->dtStart() );
407 if ( from->dtDue().isValid() ) 416 if ( from->dtDue().isValid() )
408 to->setDtDue( from->dtDue() ); 417 to->setDtDue( from->dtDue() );
409 if ( !from->location().isEmpty() ) 418 if ( !from->location().isEmpty() )
410 to->setLocation( from->location() ); 419 to->setLocation( from->location() );
411 if ( !from->description().isEmpty() ) 420 if ( !from->description().isEmpty() )
412 to->setDescription( from->description() ); 421 to->setDescription( from->description() );
413 if ( !from->summary().isEmpty() ) 422 if ( !from->summary().isEmpty() )
414 to->setSummary( from->summary() ); 423 to->setSummary( from->summary() );
415 424
416 QPtrListIterator<Alarm> it( from->alarms() ); 425 QPtrListIterator<Alarm> it( from->alarms() );
417 to->clearAlarms(); 426 if ( it.current() )
427 to->clearAlarms();
418 const Alarm *a; 428 const Alarm *a;
419 while( (a = it.current()) ) { 429 while( (a = it.current()) ) {
420 Alarm *b = new Alarm( *a ); 430 Alarm *b = new Alarm( *a );
421 b->setParent( to ); 431 b->setParent( to );
422 to->addAlarm( b ); 432 to->addAlarm( b );
423 ++it; 433 ++it;
424 } 434 }
425 QStringList cat = to->categories(); 435 QStringList cat = to->categories();
426 QStringList catFrom = from->categories(); 436 QStringList catFrom = from->categories();
427 QString nCat; 437 QString nCat;
428 int iii; 438 int iii;
429 for ( iii = 0; iii < catFrom.count();++iii ) { 439 for ( iii = 0; iii < catFrom.count();++iii ) {
430 nCat = catFrom[iii]; 440 nCat = catFrom[iii];
431 if ( !nCat.isEmpty() ) 441 if ( !nCat.isEmpty() )
432 if ( !cat.contains( nCat )) { 442 if ( !cat.contains( nCat )) {
433 cat << nCat; 443 cat << nCat;
434 } 444 }
435 } 445 }
436 to->setCategories( cat ); 446 to->setCategories( cat );
437 if ( from->isCompleted() ) { 447 if ( from->isCompleted() ) {
438 to->setCompleted( true ); 448 to->setCompleted( true );
439 if( from->completed().isValid() ) 449 if( from->completed().isValid() )
440 to->setCompleted( from->completed() ); 450 to->setCompleted( from->completed() );
441 } else { 451 } else {
442 // set percentcomplete only, if to->isCompleted() 452 // set percentcomplete only, if to->isCompleted()
443 if ( to->isCompleted() ) 453 if ( to->isCompleted() )
444 to->setPercentComplete(from->percentComplete()); 454 to->setPercentComplete(from->percentComplete());
445 } 455 }
446 to->setPriority(from->priority()); 456 if( to->priority() == 2 && from->priority() == 1 )
457 ; //skip
458 else if (to->priority() == 4 && from->priority() == 5 )
459 ;
460 else
461 to->setPriority(from->priority());
447 462
448} 463}
449#include <qcstring.h> 464#include <qcstring.h>
450 465
451void PhoneFormat::afterSave( Incidence* inc) 466void PhoneFormat::afterSave( Incidence* inc)
452{ 467{
453 uint csum; 468 uint csum;
454 inc->removeID( mProfileName ); 469 inc->removeID( mProfileName );
470#if 0
455 if ( inc->type() == "Event") 471 if ( inc->type() == "Event")
456 csum = PhoneFormat::getCsumEvent( (Event*) inc ); 472 csum = PhoneFormat::getCsumEvent( (Event*) inc );
457 else 473 else
458 csum = PhoneFormat::getCsumTodo( (Todo*) inc ); 474 csum = PhoneFormat::getCsumTodo( (Todo*) inc );
459 inc->setCsum( mProfileName, QString::number( csum )); 475 inc->setCsum( mProfileName, QString::number( csum ));
476#endif
460 inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 477 inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
461 478
462} 479}
463bool PhoneFormat::save( Calendar *calendar) 480bool PhoneFormat::save( Calendar *calendar)
464{ 481{
465 QLabel status ( i18n(" Opening device ..."), 0 ); 482 QLabel status ( i18n(" Opening device ..."), 0 );
466 int w = status.sizeHint().width()+20 ; 483 int w = status.sizeHint().width()+20 ;
467 if ( w < 200 ) w = 230; 484 if ( w < 200 ) w = 230;
468 int h = status.sizeHint().height()+20 ; 485 int h = status.sizeHint().height()+20 ;
469 int dw = QApplication::desktop()->width(); 486 int dw = QApplication::desktop()->width();
470 int dh = QApplication::desktop()->height(); 487 int dh = QApplication::desktop()->height();
471 status.setCaption(i18n("Writing to phone...") ); 488 status.setCaption(i18n("Writing to phone...") );
472 status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 489 status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
473 status.show(); 490 status.show();
474 status.raise(); 491 status.raise();
475 qApp->processEvents(); 492 qApp->processEvents();
476 QString message; 493 QString message;
477#ifdef _WIN32_ 494#ifdef _WIN32_
478 QString fileName = locateLocal("data", "korganizer") + "\\tempfile.vcs"; 495 QString fileName = locateLocal("data", "korganizer") + "\\tempfile.vcs";
479#else 496#else
480 QString fileName = "/tmp/kdepimtemp.vcs"; 497 QString fileName = "/tmp/kdepimtemp.vcs";
481#endif 498#endif
482 499
483 // 1 remove events which should be deleted 500 // 1 remove events which should be deleted
484 QPtrList<Event> er = calendar->rawEvents(); 501 QPtrList<Event> er = calendar->rawEvents();
485 Event* ev = er.first(); 502 Event* ev = er.first();
486 while ( ev ) { 503 while ( ev ) {
487 if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 504 if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
488 calendar->deleteEvent( ev ); 505 calendar->deleteEvent( ev );
489 } else { 506 } else {
490 507
491 } 508 }
492 ev = er.next(); 509 ev = er.next();
493 } 510 }
494 // 2 remove todos which should be deleted 511 // 2 remove todos which should be deleted
495 QPtrList<Todo> tl = calendar->rawTodos(); 512 QPtrList<Todo> tl = calendar->rawTodos();
496 Todo* to = tl.first(); 513 Todo* to = tl.first();
497 while ( to ) { 514 while ( to ) {
498 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 515 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
499 calendar->deleteTodo( to ); 516 calendar->deleteTodo( to );
500 } 517 }
501 to = tl.next(); 518 to = tl.next();
502 } 519 }
503 // 3 save file 520 // 3 save file
504 VCalFormat vfsave; 521 VCalFormat vfsave;
505 vfsave.setLocalTime ( true ); 522 vfsave.setLocalTime ( true );
506 if ( ! vfsave.save( calendar, fileName ) ) 523 if ( ! vfsave.save( calendar, fileName ) )
507 return false; 524 return false;
508 // 4 call kammu 525 // 4 call kammu
509 QString command ="./kammu --restore " + fileName + " -C" + 526 QString command ="./kammu --restore " + fileName ;
510 mConnection +" -D" + mDevice +" -M" + mModel;
511 int ret; 527 int ret;
512 while ( (ret = system ( command.latin1())) != 0 ) { 528 while ( (ret = system ( command.latin1())) != 0 ) {
513 qDebug("Error S::command returned %d. asking users", ret); 529 qDebug("Error S::command returned %d. asking users", ret);
514 int retval = KMessageBox::warningContinueCancel(0, 530 int retval = KMessageBox::warningContinueCancel(0,
515 i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone sync"),i18n("Retry"),i18n("Cancel")); 531 i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone sync"),i18n("Retry"),i18n("Cancel"));
516 if ( retval != KMessageBox::Continue ) 532 if ( retval != KMessageBox::Continue )
517 return false; 533 return false;
518 } 534 }
519 if ( ret != 0 ) { 535 if ( ret != 0 ) {
520 qDebug("Error S::command returned %d", ret); 536 qDebug("Error S::command returned %d", ret);
521 return false; 537 return false;
522 } 538 }
523 // 5 reread data 539 // 5 reread data
524 message = i18n(" Rereading all data ... "); 540 message = i18n(" Rereading all data ... ");
525 status.setText ( message ); 541 status.setText ( message );
526 qApp->processEvents(); 542 qApp->processEvents();
527 CalendarLocal* calendarTemp = new CalendarLocal(); 543 CalendarLocal* calendarTemp = new CalendarLocal();
528 calendarTemp->setTimeZoneId( calendar->timeZoneId()); 544 calendarTemp->setTimeZoneId( calendar->timeZoneId());
529 if ( ! load( calendarTemp,calendar) ){ 545 if ( ! load( calendarTemp,calendar) ){
530 qDebug("error reloading calendar "); 546 qDebug("error reloading calendar ");
531 delete calendarTemp; 547 delete calendarTemp;
532 return false; 548 return false;
533 } 549 }
534 // 6 compare data 550 // 6 compare data
535 551
536//algo 6 compare event 552//algo 6 compare event
537 er = calendar->rawEvents(); 553 er = calendar->rawEvents();
538 ev = er.first(); 554 ev = er.first();
539 message = i18n(" Comparing event # "); 555 message = i18n(" Comparing event # ");
540 QPtrList<Event> er1 = calendarTemp->rawEvents(); 556 QPtrList<Event> er1 = calendarTemp->rawEvents();
541 Event* ev1; 557 Event* ev1;
542 int procCount = 0; 558 int procCount = 0;