author | zautrix <zautrix> | 2004-08-20 23:53:07 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-08-20 23:53:07 (UTC) |
commit | ab07441b413dff6d478e2c3a39b823b4269931c5 (patch) (unidiff) | |
tree | 5de6576a6c0e20e4af2db7baa5019aa983e2195a | |
parent | bc33238f8038a03e04f25ea608c53e784616fee6 (diff) | |
download | kdepimpi-ab07441b413dff6d478e2c3a39b823b4269931c5.zip kdepimpi-ab07441b413dff6d478e2c3a39b823b4269931c5.tar.gz kdepimpi-ab07441b413dff6d478e2c3a39b823b4269931c5.tar.bz2 |
Sync fixes and fix of config loading bug
-rw-r--r-- | korganizer/koprefs.cpp | 118 | ||||
-rw-r--r-- | libkcal/phoneformat.cpp | 44 | ||||
-rw-r--r-- | libkcal/vcalformat.cpp | 19 | ||||
-rw-r--r-- | libkcal/vcalformat.h | 5 |
4 files changed, 115 insertions, 71 deletions
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp index 0db8e6d..dd978bf 100644 --- a/korganizer/koprefs.cpp +++ b/korganizer/koprefs.cpp | |||
@@ -377,104 +377,106 @@ QStringList KOPrefs::getDefaultList() | |||
377 | { | 377 | { |
378 | QStringList retval ; | 378 | QStringList retval ; |
379 | retval << i18n("Anniversary") << i18n("Appointment") << i18n("Birthday") << i18n("Business") << i18n("Business Travel") << i18n("Cinema") << i18n("Customer") | 379 | retval << i18n("Anniversary") << i18n("Appointment") << i18n("Birthday") << i18n("Business") << i18n("Business Travel") << i18n("Cinema") << i18n("Customer") |
380 | << i18n("Break")<< i18n("Breakfast")<< i18n("Competition")<< i18n("Dinner") | 380 | << i18n("Break")<< i18n("Breakfast")<< i18n("Competition")<< i18n("Dinner") |
381 | << i18n("Education")<< i18n("Family") << i18n("Favorites") << i18n("Festival")<< i18n("Fishing")<< i18n("Flight") << i18n("Gifts") | 381 | << i18n("Education")<< i18n("Family") << i18n("Favorites") << i18n("Festival")<< i18n("Fishing")<< i18n("Flight") << i18n("Gifts") |
382 | << i18n("Holiday") << i18n("Holiday Cards")<< i18n("Hot Contacts") << i18n("Hiking") << i18n("Hunting") << i18n("Key Customer") << i18n("Kids") | 382 | << i18n("Holiday") << i18n("Holiday Cards")<< i18n("Hot Contacts") << i18n("Hiking") << i18n("Hunting") << i18n("Key Customer") << i18n("Kids") |
383 | << i18n("Lunch") << i18n("Meeting") << i18n("Miscellaneous") << i18n("Partner")<< i18n("Party") << i18n("Personal") << i18n("Personal Travel") | 383 | << i18n("Lunch") << i18n("Meeting") << i18n("Miscellaneous") << i18n("Partner")<< i18n("Party") << i18n("Personal") << i18n("Personal Travel") |
384 | << i18n("PHB") << i18n("Phone Calls") << i18n("Projects") << i18n("Recurring") << i18n("School") << i18n("Shopping") | 384 | << i18n("PHB") << i18n("Phone Calls") << i18n("Projects") << i18n("Recurring") << i18n("School") << i18n("Shopping") |
385 | << i18n("Speach") << i18n("Special Occasion") << i18n("Sports") << i18n("Talk") << i18n("Travel") << i18n("TV")<< i18n("University") | 385 | << i18n("Speach") << i18n("Special Occasion") << i18n("Sports") << i18n("Talk") << i18n("Travel") << i18n("TV")<< i18n("University") |
386 | << i18n("Vacation") << i18n("VIP") << i18n("SyncEvent") ; | 386 | << i18n("Vacation") << i18n("VIP") << i18n("SyncEvent") ; |
387 | retval.sort(); | 387 | retval.sort(); |
388 | return retval; | 388 | return retval; |
389 | } | 389 | } |
390 | 390 | ||
391 | void KOPrefs::usrReadConfig() | 391 | void KOPrefs::usrReadConfig() |
392 | { | 392 | { |
393 | mLocaleDict = 0; | 393 | mLocaleDict = 0; |
394 | // pending LR fix translation | 394 | // pending LR fix translation |
395 | // qDebug("KOPrefs::usrReadConfig() fix translation "); | 395 | // qDebug("KOPrefs::usrReadConfig() fix translation "); |
396 | if ( mPreferredLanguage == 1 ) { | 396 | if ( mPreferredLanguage > 0 && mPreferredLanguage < 4 ) { |
397 | mLocaleDict = new QDict<QString>; | 397 | if ( mPreferredLanguage == 1 ) { |
398 | int i = 0; | ||
399 | QString fw ( germanwords[i] [0]); | ||
400 | while ( !fw.isEmpty() ) { | ||
401 | mLocaleDict->insert( fw, new QString (germanwords[i] [1] )); | ||
402 | ++i; | ||
403 | fw = germanwords[i] [0]; | ||
404 | } | ||
405 | |||
406 | setLocaleDict( mLocaleDict ); | ||
407 | } else { | ||
408 | QString fileName ; | ||
409 | if ( mPreferredLanguage == 3 ) | ||
410 | fileName = MainWindow::resourcePath()+"usertranslation.txt"; | ||
411 | else if ( mPreferredLanguage == 2 ) | ||
412 | fileName = MainWindow::resourcePath()+"frenchtranslation.txt"; | ||
413 | else return; | ||
414 | QFile file( fileName ); | ||
415 | if (file.open( IO_ReadOnly ) ) { | ||
416 | QTextStream ts( &file ); | ||
417 | ts.setCodec( QTextCodec::codecForLocale() ); | ||
418 | QString text = ts.read(); | ||
419 | file.close(); | ||
420 | text.replace( QRegExp("\\\\n"), "\n" ); | ||
421 | QString line; | ||
422 | QString we; | ||
423 | QString wt; | ||
424 | int br = 0; | ||
425 | int nbr; | ||
426 | nbr = text.find ( "},", br ); | ||
427 | line = text.mid( br, nbr - br ); | ||
428 | br = nbr+1; | ||
429 | int se, ee, st, et; | ||
430 | mLocaleDict = new QDict<QString>; | 398 | mLocaleDict = new QDict<QString>; |
431 | QString end = "{ \"\",\"\" }"; | 399 | int i = 0; |
432 | while ( (line != end) && (br > 1) ) { | 400 | QString fw ( germanwords[i] [0]); |
433 | //qDebug("%d *%s* ", br, line.latin1()); | 401 | while ( !fw.isEmpty() ) { |
434 | se = line.find("\"")+1; | 402 | mLocaleDict->insert( fw, new QString (germanwords[i] [1] )); |
435 | et = line.findRev("\"",-1); | 403 | ++i; |
436 | ee = line.find("\",\""); | 404 | fw = germanwords[i] [0]; |
437 | st = ee+3; | ||
438 | we = line.mid( se, ee-se ); | ||
439 | wt = line.mid( st, et-st ); | ||
440 | //qDebug("*%s* *%s* ", we.latin1(), wt.latin1()); | ||
441 | mLocaleDict->insert( we, new QString (wt) ); | ||
442 | nbr = text.find ( "}", br ); | ||
443 | line = text.mid( br, nbr - br ); | ||
444 | br = nbr+1; | ||
445 | } | 405 | } |
446 | //qDebug("end *%s* ", end.latin1()); | 406 | |
447 | |||
448 | setLocaleDict( mLocaleDict ); | 407 | setLocaleDict( mLocaleDict ); |
449 | } else { | 408 | } else { |
450 | qDebug("KO: Cannot find translation file %s",fileName.latin1() ); | 409 | QString fileName ; |
451 | } | 410 | if ( mPreferredLanguage == 3 ) |
411 | fileName = MainWindow::resourcePath()+"usertranslation.txt"; | ||
412 | else if ( mPreferredLanguage == 2 ) | ||
413 | fileName = MainWindow::resourcePath()+"frenchtranslation.txt"; | ||
414 | QFile file( fileName ); | ||
415 | if (file.open( IO_ReadOnly ) ) { | ||
416 | QTextStream ts( &file ); | ||
417 | ts.setEncoding( QTextStream::Latin1 ); | ||
418 | //ts.setCodec( QTextCodec::latin1 ); | ||
419 | QString text = ts.read(); | ||
420 | file.close(); | ||
421 | text.replace( QRegExp("\\\\n"), "\n" ); | ||
422 | QString line; | ||
423 | QString we; | ||
424 | QString wt; | ||
425 | int br = 0; | ||
426 | int nbr; | ||
427 | nbr = text.find ( "},", br ); | ||
428 | line = text.mid( br, nbr - br ); | ||
429 | br = nbr+1; | ||
430 | int se, ee, st, et; | ||
431 | mLocaleDict = new QDict<QString>; | ||
432 | QString end = "{ \"\",\"\" }"; | ||
433 | while ( (line != end) && (br > 1) ) { | ||
434 | //qDebug("%d *%s* ", br, line.latin1()); | ||
435 | se = line.find("\"")+1; | ||
436 | et = line.findRev("\"",-1); | ||
437 | ee = line.find("\",\""); | ||
438 | st = ee+3; | ||
439 | we = line.mid( se, ee-se ); | ||
440 | wt = line.mid( st, et-st ); | ||
441 | //qDebug("*%s* *%s* ", we.latin1(), wt.latin1()); | ||
442 | mLocaleDict->insert( we, new QString (wt) ); | ||
443 | nbr = text.find ( "}", br ); | ||
444 | line = text.mid( br, nbr - br ); | ||
445 | br = nbr+1; | ||
446 | } | ||
447 | //qDebug("end *%s* ", end.latin1()); | ||
448 | |||
449 | setLocaleDict( mLocaleDict ); | ||
450 | } else { | ||
451 | qDebug("KO: Cannot find translation file %s",fileName.latin1() ); | ||
452 | } | ||
452 | 453 | ||
453 | } | 454 | } |
455 | } | ||
454 | config()->setGroup("General"); | 456 | config()->setGroup("General"); |
455 | 457 | ||
456 | mCustomCategories = config()->readListEntry("Custom Categories"); | 458 | mCustomCategories = config()->readListEntry("Custom Categories"); |
457 | if ( KOPrefs::instance()->mLanguageChanged ) { | 459 | if ( KOPrefs::instance()->mLanguageChanged ) { |
458 | mLocationDefaults.clear(); | 460 | mLocationDefaults.clear(); |
459 | mEventSummaryUser.clear(); | 461 | mEventSummaryUser.clear(); |
460 | mTodoSummaryUser.clear(); | 462 | mTodoSummaryUser.clear(); |
461 | } | 463 | } |
462 | if (mLocationDefaults.isEmpty()) { | 464 | if (mLocationDefaults.isEmpty()) { |
463 | mLocationDefaults << i18n("Home") << i18n("Office") << i18n("Libary") << i18n("School") << i18n("Doctor") << i18n("Beach") | 465 | mLocationDefaults << i18n("Home") << i18n("Office") << i18n("Library") << i18n("School") << i18n("Doctor") << i18n("Beach") |
464 | << i18n("University") << i18n("Restaurant") << i18n("Bar") << i18n("Conference room") << i18n("Cinema") << i18n("Lake") << i18n("Kindergarden") | 466 | << i18n("University") << i18n("Restaurant") << i18n("Bar") << i18n("Conference room") << i18n("Cinema") << i18n("Lake") << i18n("Kindergarten") |
465 | << i18n("Germany") << i18n("Sweden") << i18n("Forest") << i18n("Desert") << i18n("Kitchen") ; | 467 | << i18n("Germany") << i18n("Sweden") << i18n("Forest") << i18n("Desert") << i18n("Kitchen") ; |
466 | // << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") | 468 | // << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") |
467 | mLocationDefaults.sort(); | 469 | mLocationDefaults.sort(); |
468 | } | 470 | } |
469 | 471 | ||
470 | if (mEventSummaryUser.isEmpty()) { | 472 | if (mEventSummaryUser.isEmpty()) { |
471 | mEventSummaryUser = getDefaultList() ; | 473 | mEventSummaryUser = getDefaultList() ; |
472 | } | 474 | } |
473 | if (mTodoSummaryUser.isEmpty()) { | 475 | if (mTodoSummaryUser.isEmpty()) { |
474 | mTodoSummaryUser = getDefaultList() ; | 476 | mTodoSummaryUser = getDefaultList() ; |
475 | } | 477 | } |
476 | 478 | ||
477 | if (mCustomCategories.isEmpty()) setCategoryDefaults(); | 479 | if (mCustomCategories.isEmpty()) setCategoryDefaults(); |
478 | 480 | ||
479 | config()->setGroup("Personal Settings"); | 481 | config()->setGroup("Personal Settings"); |
480 | mName = config()->readEntry("user_name",""); | 482 | mName = config()->readEntry("user_name",""); |
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp index 6276498..1769b37 100644 --- a/libkcal/phoneformat.cpp +++ b/libkcal/phoneformat.cpp | |||
@@ -433,36 +433,41 @@ public: | |||
433 | r->setMonthly( Recurrence::rMonthlyPos, freq, -1 ); | 433 | r->setMonthly( Recurrence::rMonthlyPos, freq, -1 ); |
434 | QBitArray days( 7 ); | 434 | QBitArray days( 7 ); |
435 | days.fill( false ); | 435 | days.fill( false ); |
436 | days.setBit( dayOfWeek - 1 ); | 436 | days.setBit( dayOfWeek - 1 ); |
437 | r->addMonthlyPos( pos, days ); | 437 | r->addMonthlyPos( pos, days ); |
438 | } else if ( rtype == 4 ) { | 438 | } else if ( rtype == 4 ) { |
439 | if ( hasEndDate ) | 439 | if ( hasEndDate ) |
440 | r->setYearly( Recurrence::rYearlyMonth, freq, endDate ); | 440 | r->setYearly( Recurrence::rYearlyMonth, freq, endDate ); |
441 | else | 441 | else |
442 | r->setYearly( Recurrence::rYearlyMonth, freq, -1 ); | 442 | r->setYearly( Recurrence::rYearlyMonth, freq, -1 ); |
443 | r->addYearlyNum( startDate.month() ); | 443 | r->addYearlyNum( startDate.month() ); |
444 | } | 444 | } |
445 | } else { | 445 | } else { |
446 | event->recurrence()->unsetRecurs(); | 446 | event->recurrence()->unsetRecurs(); |
447 | } | 447 | } |
448 | 448 | ||
449 | QStringList categoryList; | 449 | QStringList cat = event->categories(); |
450 | categoryList << getCategory( Note ); | 450 | QString nCat = getCategory( Note ); |
451 | event->setCategories( categoryList ); | 451 | |
452 | // strange 0 semms to mean: alarm enabled | 452 | if ( !nCat.isEmpty() ) |
453 | if ( !cat.contains( nCat )) { | ||
454 | cat << nCat; | ||
455 | event->setCategories( cat ); | ||
456 | } | ||
457 | |||
453 | if ( alarm ) { | 458 | if ( alarm ) { |
454 | Alarm *alarm; | 459 | Alarm *alarm; |
455 | if ( event->alarms().count() > 0 ) | 460 | if ( event->alarms().count() > 0 ) |
456 | alarm = event->alarms().first(); | 461 | alarm = event->alarms().first(); |
457 | else { | 462 | else { |
458 | alarm = new Alarm( event ); | 463 | alarm = new Alarm( event ); |
459 | event->addAlarm( alarm ); | 464 | event->addAlarm( alarm ); |
460 | } | 465 | } |
461 | alarm->setType( Alarm::Audio ); | 466 | alarm->setType( Alarm::Audio ); |
462 | alarm->setEnabled( true ); | 467 | alarm->setEnabled( true ); |
463 | int alarmOffset = alarmDt.secsTo( event->dtStart() ); | 468 | int alarmOffset = alarmDt.secsTo( event->dtStart() ); |
464 | alarm->setStartOffset( -alarmOffset ); | 469 | alarm->setStartOffset( -alarmOffset ); |
465 | } else { | 470 | } else { |
466 | Alarm *alarm; | 471 | Alarm *alarm; |
467 | if ( event->alarms().count() > 0 ) { | 472 | if ( event->alarms().count() > 0 ) { |
468 | alarm = event->alarms().first(); | 473 | alarm = event->alarms().first(); |
@@ -519,33 +524,33 @@ public: | |||
519 | if(dt.time().isValid()){ | 524 | if(dt.time().isValid()){ |
520 | const QTime& time = dt.time(); | 525 | const QTime& time = dt.time(); |
521 | timestr.sprintf("T%02d%02d%02d", | 526 | timestr.sprintf("T%02d%02d%02d", |
522 | time.hour(), time.minute(), time.second()); | 527 | time.hour(), time.minute(), time.second()); |
523 | } | 528 | } |
524 | return datestr + timestr; | 529 | return datestr + timestr; |
525 | } | 530 | } |
526 | QDate datefromGSM ( GSM_DateTime*dtp ) { | 531 | QDate datefromGSM ( GSM_DateTime*dtp ) { |
527 | return QDate ( dtp->Year, dtp->Month, dtp->Day ); | 532 | return QDate ( dtp->Year, dtp->Month, dtp->Day ); |
528 | } | 533 | } |
529 | QString getCategory( GSM_CalendarEntry*Note) | 534 | QString getCategory( GSM_CalendarEntry*Note) |
530 | { | 535 | { |
531 | QString CATEGORY; | 536 | QString CATEGORY; |
532 | switch (Note->Type) { | 537 | switch (Note->Type) { |
533 | case GSM_CAL_REMINDER : CATEGORY = QString("Reminder"); break; | 538 | case GSM_CAL_REMINDER : CATEGORY = QString("Reminder"); break; |
534 | case GSM_CAL_CALL : CATEGORY = QString("Call"); break; | 539 | case GSM_CAL_CALL : CATEGORY = QString("Call"); break; |
535 | case GSM_CAL_MEETING : CATEGORY = QString("Meeting"); break; | 540 | //case GSM_CAL_MEETING : CATEGORY = QString("Meeting"); break; |
536 | case GSM_CAL_BIRTHDAY : CATEGORY = QString("Birthday"); break; | 541 | case GSM_CAL_BIRTHDAY : CATEGORY = QString("Birthday"); break; |
537 | case GSM_CAL_MEMO : CATEGORY = QString("Memo"); break; | 542 | case GSM_CAL_MEMO : CATEGORY = QString("Memo"); break; |
538 | case GSM_CAL_TRAVEL : CATEGORY = QString("Travel"); break; | 543 | case GSM_CAL_TRAVEL : CATEGORY = QString("Travel"); break; |
539 | case GSM_CAL_VACATION : CATEGORY = QString("Vacation"); break; | 544 | case GSM_CAL_VACATION : CATEGORY = QString("Vacation"); break; |
540 | case GSM_CAL_ALARM : CATEGORY = QString("Alarm"); break; | 545 | case GSM_CAL_ALARM : CATEGORY = QString("Alarm"); break; |
541 | case GSM_CAL_DAILY_ALARM : CATEGORY = QString("Daily alarm"); break; | 546 | case GSM_CAL_DAILY_ALARM : CATEGORY = QString("Daily alarm"); break; |
542 | case GSM_CAL_T_ATHL : CATEGORY = QString("Training/Athletism"); break; | 547 | case GSM_CAL_T_ATHL : CATEGORY = QString("Training/Athletism"); break; |
543 | case GSM_CAL_T_BALL : CATEGORY = QString("Training/Ball Games"); break; | 548 | case GSM_CAL_T_BALL : CATEGORY = QString("Training/Ball Games"); break; |
544 | case GSM_CAL_T_CYCL : CATEGORY = QString("Training/Cycling"); break; | 549 | case GSM_CAL_T_CYCL : CATEGORY = QString("Training/Cycling"); break; |
545 | case GSM_CAL_T_BUDO : CATEGORY = QString("Training/Budo"); break; | 550 | case GSM_CAL_T_BUDO : CATEGORY = QString("Training/Budo"); break; |
546 | case GSM_CAL_T_DANC : CATEGORY = QString("Training/Dance"); break; | 551 | case GSM_CAL_T_DANC : CATEGORY = QString("Training/Dance"); break; |
547 | case GSM_CAL_T_EXTR : CATEGORY = QString("Training/Extreme Sports"); break; | 552 | case GSM_CAL_T_EXTR : CATEGORY = QString("Training/Extreme Sports"); break; |
548 | case GSM_CAL_T_FOOT : CATEGORY = QString("Training/Football"); break; | 553 | case GSM_CAL_T_FOOT : CATEGORY = QString("Training/Football"); break; |
549 | case GSM_CAL_T_GOLF : CATEGORY = QString("Training/Golf"); break; | 554 | case GSM_CAL_T_GOLF : CATEGORY = QString("Training/Golf"); break; |
550 | case GSM_CAL_T_GYM : CATEGORY = QString("Training/Gym"); break; | 555 | case GSM_CAL_T_GYM : CATEGORY = QString("Training/Gym"); break; |
551 | case GSM_CAL_T_HORS : CATEGORY = QString("Training/Horse Races"); break; | 556 | case GSM_CAL_T_HORS : CATEGORY = QString("Training/Horse Races"); break; |
@@ -1057,39 +1062,66 @@ bool PhoneFormat::save( Calendar *calendar) | |||
1057 | file.close(); | 1062 | file.close(); |
1058 | 1063 | ||
1059 | 1064 | ||
1060 | message = i18n(" Parsing temp file ... "); | 1065 | message = i18n(" Parsing temp file ... "); |
1061 | status.setText ( message ); | 1066 | status.setText ( message ); |
1062 | qApp->processEvents(); | 1067 | qApp->processEvents(); |
1063 | GSM_Backup Backup; | 1068 | GSM_Backup Backup; |
1064 | error=GSM_ReadBackupFile( (char*) fileName.latin1() ,&Backup); | 1069 | error=GSM_ReadBackupFile( (char*) fileName.latin1() ,&Backup); |
1065 | qDebug("Read file result %d ",error ); | 1070 | qDebug("Read file result %d ",error ); |
1066 | //algo 4 writing event | 1071 | //algo 4 writing event |
1067 | int max, i; | 1072 | int max, i; |
1068 | procCount = 0; | 1073 | procCount = 0; |
1069 | message = i18n(" Writing event # "); | 1074 | message = i18n(" Writing event # "); |
1070 | if (Backup.Calendar[0] != NULL) { | 1075 | if (Backup.Calendar[0] != NULL) { |
1071 | max = 0; | 1076 | max = 0; |
1072 | while (Backup.Calendar[max]!=NULL) max++; | 1077 | while (Backup.Calendar[max]!=NULL) max++; |
1078 | |||
1079 | GSM_DateTime*dtp; | ||
1080 | |||
1073 | for (i=0;i<max;i++) { | 1081 | for (i=0;i<max;i++) { |
1074 | status.setText ( message + QString::number ( ++procCount ) ); | 1082 | status.setText ( message + QString::number ( ++procCount ) ); |
1075 | qApp->processEvents(); | 1083 | qApp->processEvents(); |
1076 | Note = *Backup.Calendar[i]; | 1084 | Note = *Backup.Calendar[i]; |
1085 | |||
1086 | #if 0 | ||
1087 | int j; | ||
1088 | for (j=0;j<Note.EntriesNum;j++) { | ||
1089 | //qDebug(" for ev"); | ||
1090 | switch (Note.Entries[j].EntryType) { | ||
1091 | case CAL_START_DATETIME: | ||
1092 | //Note->Entries[i].Date.Hour = 5; | ||
1093 | dtp = &Note.Entries[j].Date; | ||
1094 | qDebug("start event %d %d %d - %d %d %d", dtp->Year, dtp->Month, dtp->Day, dtp->Hour, dtp->Minute, dtp->Second ); | ||
1095 | break; | ||
1096 | case CAL_END_DATETIME: | ||
1097 | dtp = &Note.Entries[j].Date; | ||
1098 | qDebug("end event %d %d %d - %d %d %d", dtp->Year, dtp->Month, dtp->Day, dtp->Hour, dtp->Minute, dtp->Second ); | ||
1099 | break; | ||
1100 | } | ||
1101 | } | ||
1102 | int type = Note.Type; | ||
1103 | qDebug(" event type %d - %d %d - %d %d %d",type, GSM_CAL_CALL , GSM_CAL_MEETING ,GSM_CAL_BIRTHDAY, GSM_CAL_MEMO ,GSM_CAL_ALARM ); | ||
1104 | #endif | ||
1105 | |||
1106 | Note.Type = GSM_CAL_MEETING; | ||
1107 | // pending: fix in gammu GSM_ReadBackupFile the type settings | ||
1108 | int loc = Note.Location; | ||
1077 | Note.Location = 0; | 1109 | Note.Location = 0; |
1078 | error=Phone->AddCalendar(&s,&Note); | 1110 | error=Phone->AddCalendar(&s,&Note); |
1079 | qDebug("add event %d %d", error, Note.Location ); | 1111 | qDebug("add event %d %d %d", error, Note.Location, loc ); |
1080 | } | 1112 | } |
1081 | } | 1113 | } |
1082 | //algo 4 writing todo | 1114 | //algo 4 writing todo |
1083 | procCount = 0; | 1115 | procCount = 0; |
1084 | message = i18n(" Writing todo # "); | 1116 | message = i18n(" Writing todo # "); |
1085 | if (Backup.ToDo[0] != NULL) { | 1117 | if (Backup.ToDo[0] != NULL) { |
1086 | max = 0; | 1118 | max = 0; |
1087 | while (Backup.ToDo[max]!=NULL) max++; | 1119 | while (Backup.ToDo[max]!=NULL) max++; |
1088 | for (i=0;i<max;i++) { | 1120 | for (i=0;i<max;i++) { |
1089 | status.setText ( message + QString::number ( ++procCount ) ); | 1121 | status.setText ( message + QString::number ( ++procCount ) ); |
1090 | qApp->processEvents(); | 1122 | qApp->processEvents(); |
1091 | ToDoEntry = *Backup.ToDo[i]; | 1123 | ToDoEntry = *Backup.ToDo[i]; |
1092 | error = Phone->AddToDo(&s,&ToDoEntry); | 1124 | error = Phone->AddToDo(&s,&ToDoEntry); |
1093 | qDebug("add todo %d ", error); | 1125 | qDebug("add todo %d ", error); |
1094 | } | 1126 | } |
1095 | } | 1127 | } |
diff --git a/libkcal/vcalformat.cpp b/libkcal/vcalformat.cpp index 9307f12..0ebd7d1 100644 --- a/libkcal/vcalformat.cpp +++ b/libkcal/vcalformat.cpp | |||
@@ -16,49 +16,51 @@ | |||
16 | You should have received a copy of the GNU Library General Public License | 16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to | 17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
19 | Boston, MA 02111-1307, USA. | 19 | Boston, MA 02111-1307, USA. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <qapplication.h> | 22 | #include <qapplication.h> |
23 | #include <qdatetime.h> | 23 | #include <qdatetime.h> |
24 | #include <qstring.h> | 24 | #include <qstring.h> |
25 | #include <qptrlist.h> | 25 | #include <qptrlist.h> |
26 | #include <qregexp.h> | 26 | #include <qregexp.h> |
27 | #include <qclipboard.h> | 27 | #include <qclipboard.h> |
28 | #include <qdialog.h> | 28 | #include <qdialog.h> |
29 | #include <qfile.h> | 29 | #include <qfile.h> |
30 | 30 | ||
31 | #include <kdebug.h> | 31 | #include <kdebug.h> |
32 | #include <kglobal.h> | ||
32 | #include <kmessagebox.h> | 33 | #include <kmessagebox.h> |
33 | #include <kiconloader.h> | 34 | #include <kiconloader.h> |
34 | #include <klocale.h> | 35 | #include <klocale.h> |
35 | 36 | ||
36 | #include "vcc.h" | 37 | #include "vcc.h" |
37 | #include "vobject.h" | 38 | #include "vobject.h" |
38 | 39 | ||
39 | #include "vcaldrag.h" | 40 | #include "vcaldrag.h" |
40 | #include "calendar.h" | 41 | #include "calendar.h" |
41 | 42 | ||
42 | #include "vcalformat.h" | 43 | #include "vcalformat.h" |
43 | 44 | ||
44 | using namespace KCal; | 45 | using namespace KCal; |
45 | 46 | ||
46 | VCalFormat::VCalFormat() | 47 | VCalFormat::VCalFormat() |
47 | { | 48 | { |
48 | mCalendar = 0; | 49 | mCalendar = 0; |
50 | useLocalTime = false; | ||
49 | } | 51 | } |
50 | 52 | ||
51 | VCalFormat::~VCalFormat() | 53 | VCalFormat::~VCalFormat() |
52 | { | 54 | { |
53 | } | 55 | } |
54 | 56 | ||
55 | bool VCalFormat::load(Calendar *calendar, const QString &fileName) | 57 | bool VCalFormat::load(Calendar *calendar, const QString &fileName) |
56 | { | 58 | { |
57 | mCalendar = calendar; | 59 | mCalendar = calendar; |
58 | 60 | ||
59 | clearException(); | 61 | clearException(); |
60 | 62 | ||
61 | kdDebug(5800) << "VCalFormat::load() " << fileName << endl; | 63 | kdDebug(5800) << "VCalFormat::load() " << fileName << endl; |
62 | 64 | ||
63 | VObject *vcal = 0; | 65 | VObject *vcal = 0; |
64 | 66 | ||
@@ -153,50 +155,58 @@ bool VCalFormat::fromString( Calendar *calendar, const QString &text ) | |||
153 | strcmp( vObjectName( curvo ), VCTodoProp ) ); | 155 | strcmp( vObjectName( curvo ), VCTodoProp ) ); |
154 | 156 | ||
155 | if ( strcmp( vObjectName( curvo ), VCEventProp ) == 0 ) { | 157 | if ( strcmp( vObjectName( curvo ), VCEventProp ) == 0 ) { |
156 | Event *event = VEventToEvent( curvo ); | 158 | Event *event = VEventToEvent( curvo ); |
157 | calendar->addEvent( event ); | 159 | calendar->addEvent( event ); |
158 | } else { | 160 | } else { |
159 | kdDebug(5800) << "VCalFormat::fromString(): Unknown object type." << endl; | 161 | kdDebug(5800) << "VCalFormat::fromString(): Unknown object type." << endl; |
160 | deleteVObject( vcal ); | 162 | deleteVObject( vcal ); |
161 | return false; | 163 | return false; |
162 | } | 164 | } |
163 | 165 | ||
164 | deleteVObject( vcal ); | 166 | deleteVObject( vcal ); |
165 | 167 | ||
166 | return true; | 168 | return true; |
167 | } | 169 | } |
168 | 170 | ||
169 | QString VCalFormat::eventToString( Event * event, Calendar *calendar) | 171 | QString VCalFormat::eventToString( Event * event, Calendar *calendar, bool useLocal) |
170 | { | 172 | { |
173 | |||
171 | if ( !event ) return QString::null; | 174 | if ( !event ) return QString::null; |
175 | bool useL = useLocalTime; | ||
176 | useLocalTime = useLocal; | ||
172 | mCalendar = calendar; | 177 | mCalendar = calendar; |
173 | VObject *vevent = eventToVEvent( event ); | 178 | VObject *vevent = eventToVEvent( event ); |
174 | char *buf = writeMemVObject( 0, 0, vevent ); | 179 | char *buf = writeMemVObject( 0, 0, vevent ); |
175 | QString result( buf ); | 180 | QString result( buf ); |
176 | cleanVObject( vevent ); | 181 | cleanVObject( vevent ); |
182 | useLocalTime = useL; | ||
177 | return result; | 183 | return result; |
178 | } | 184 | } |
179 | QString VCalFormat::todoToString( Todo * todo, Calendar *calendar ) | 185 | QString VCalFormat::todoToString( Todo * todo, Calendar *calendar, bool useLocal ) |
180 | { | 186 | { |
187 | |||
181 | if ( !todo ) return QString::null; | 188 | if ( !todo ) return QString::null; |
189 | bool useL = useLocalTime; | ||
190 | useLocalTime = useLocal; | ||
182 | mCalendar = calendar; | 191 | mCalendar = calendar; |
183 | VObject *vevent = eventToVTodo( todo ); | 192 | VObject *vevent = eventToVTodo( todo ); |
184 | char *buf = writeMemVObject( 0, 0, vevent ); | 193 | char *buf = writeMemVObject( 0, 0, vevent ); |
185 | QString result( buf ); | 194 | QString result( buf ); |
186 | cleanVObject( vevent ); | 195 | cleanVObject( vevent ); |
196 | useLocalTime = useL; | ||
187 | return result; | 197 | return result; |
188 | } | 198 | } |
189 | 199 | ||
190 | QString VCalFormat::toString( Calendar *calendar ) | 200 | QString VCalFormat::toString( Calendar *calendar ) |
191 | { | 201 | { |
192 | // TODO: Factor out VCalFormat::asString() | 202 | // TODO: Factor out VCalFormat::asString() |
193 | 203 | ||
194 | VObject *vcal = newVObject(VCCalProp); | 204 | VObject *vcal = newVObject(VCCalProp); |
195 | 205 | ||
196 | addPropValue( vcal, VCProdIdProp, CalFormat::productId() ); | 206 | addPropValue( vcal, VCProdIdProp, CalFormat::productId() ); |
197 | QString tmpStr = mCalendar->getTimeZoneStr(); | 207 | QString tmpStr = mCalendar->getTimeZoneStr(); |
198 | addPropValue( vcal, VCTimeZoneProp, tmpStr.local8Bit() ); | 208 | addPropValue( vcal, VCTimeZoneProp, tmpStr.local8Bit() ); |
199 | addPropValue( vcal, VCVersionProp, _VCAL_VERSION ); | 209 | addPropValue( vcal, VCVersionProp, _VCAL_VERSION ); |
200 | 210 | ||
201 | // TODO: Use all data. | 211 | // TODO: Use all data. |
202 | QPtrList<Event> events = calendar->events(); | 212 | QPtrList<Event> events = calendar->events(); |
@@ -1421,35 +1431,34 @@ QString VCalFormat::qDateToISO(const QDate &qd) | |||
1421 | QString tmpStr; | 1431 | QString tmpStr; |
1422 | 1432 | ||
1423 | ASSERT(qd.isValid()); | 1433 | ASSERT(qd.isValid()); |
1424 | 1434 | ||
1425 | tmpStr.sprintf("%.2d%.2d%.2d", | 1435 | tmpStr.sprintf("%.2d%.2d%.2d", |
1426 | qd.year(), qd.month(), qd.day()); | 1436 | qd.year(), qd.month(), qd.day()); |
1427 | return tmpStr; | 1437 | return tmpStr; |
1428 | 1438 | ||
1429 | } | 1439 | } |
1430 | 1440 | ||
1431 | QString VCalFormat::qDateTimeToISO(const QDateTime &qdt, bool zulu) | 1441 | QString VCalFormat::qDateTimeToISO(const QDateTime &qdt, bool zulu) |
1432 | { | 1442 | { |
1433 | QString tmpStr; | 1443 | QString tmpStr; |
1434 | 1444 | ||
1435 | ASSERT(qdt.date().isValid()); | 1445 | ASSERT(qdt.date().isValid()); |
1436 | ASSERT(qdt.time().isValid()); | 1446 | ASSERT(qdt.time().isValid()); |
1437 | if (zulu) { | 1447 | if (zulu && !useLocalTime ) { |
1438 | QDateTime tmpDT(qdt); | 1448 | QDateTime tmpDT = qdt.addSecs ( -KGlobal::locale()->localTimeOffset( qdt )*60); |
1439 | tmpDT = tmpDT.addSecs(60*(-mCalendar->getTimeZone())); // correct to GMT. | ||
1440 | tmpStr.sprintf("%.2d%.2d%.2dT%.2d%.2d%.2dZ", | 1449 | tmpStr.sprintf("%.2d%.2d%.2dT%.2d%.2d%.2dZ", |
1441 | tmpDT.date().year(), tmpDT.date().month(), | 1450 | tmpDT.date().year(), tmpDT.date().month(), |
1442 | tmpDT.date().day(), tmpDT.time().hour(), | 1451 | tmpDT.date().day(), tmpDT.time().hour(), |
1443 | tmpDT.time().minute(), tmpDT.time().second()); | 1452 | tmpDT.time().minute(), tmpDT.time().second()); |
1444 | } else { | 1453 | } else { |
1445 | tmpStr.sprintf("%.2d%.2d%.2dT%.2d%.2d%.2d", | 1454 | tmpStr.sprintf("%.2d%.2d%.2dT%.2d%.2d%.2d", |
1446 | qdt.date().year(), qdt.date().month(), | 1455 | qdt.date().year(), qdt.date().month(), |
1447 | qdt.date().day(), qdt.time().hour(), | 1456 | qdt.date().day(), qdt.time().hour(), |
1448 | qdt.time().minute(), qdt.time().second()); | 1457 | qdt.time().minute(), qdt.time().second()); |
1449 | } | 1458 | } |
1450 | return tmpStr; | 1459 | return tmpStr; |
1451 | } | 1460 | } |
1452 | 1461 | ||
1453 | QDateTime VCalFormat::ISOToQDateTime(const QString & dtStr) | 1462 | QDateTime VCalFormat::ISOToQDateTime(const QString & dtStr) |
1454 | { | 1463 | { |
1455 | QDate tmpDate; | 1464 | QDate tmpDate; |
diff --git a/libkcal/vcalformat.h b/libkcal/vcalformat.h index 7b9ca26..848be78 100644 --- a/libkcal/vcalformat.h +++ b/libkcal/vcalformat.h | |||
@@ -49,34 +49,34 @@ class VCalFormat : public CalFormat { | |||
49 | */ | 49 | */ |
50 | bool load(Calendar *,const QString &fileName); | 50 | bool load(Calendar *,const QString &fileName); |
51 | /** writes out the calendar to disk in vCalendar format. Returns true if | 51 | /** writes out the calendar to disk in vCalendar format. Returns true if |
52 | * successful and false on error. | 52 | * successful and false on error. |
53 | * @param fileName the name of the file | 53 | * @param fileName the name of the file |
54 | */ | 54 | */ |
55 | bool save(Calendar *,const QString &fileName); | 55 | bool save(Calendar *,const QString &fileName); |
56 | 56 | ||
57 | /** | 57 | /** |
58 | Parse string and populate calendar with that information. | 58 | Parse string and populate calendar with that information. |
59 | */ | 59 | */ |
60 | bool fromString( Calendar *, const QString & ); | 60 | bool fromString( Calendar *, const QString & ); |
61 | /** | 61 | /** |
62 | Return calendar information as string. | 62 | Return calendar information as string. |
63 | */ | 63 | */ |
64 | QString toString( Calendar * ); | 64 | QString toString( Calendar * ); |
65 | QString eventToString( Event *, Calendar *calendar ); | 65 | QString eventToString( Event *, Calendar *calendar, bool useLocalTime = true ); |
66 | QString todoToString( Todo * ,Calendar *calendar ); | 66 | QString todoToString( Todo * ,Calendar *calendar, bool useLocalTime = true ); |
67 | 67 | ||
68 | protected: | 68 | protected: |
69 | /** translates a VObject of the TODO type into a Event */ | 69 | /** translates a VObject of the TODO type into a Event */ |
70 | Todo *VTodoToEvent(VObject *vtodo); | 70 | Todo *VTodoToEvent(VObject *vtodo); |
71 | /** translates a VObject into a Event and returns a pointer to it. */ | 71 | /** translates a VObject into a Event and returns a pointer to it. */ |
72 | Event *VEventToEvent(VObject *vevent); | 72 | Event *VEventToEvent(VObject *vevent); |
73 | /** translate a Event into a VTodo-type VObject and return pointer */ | 73 | /** translate a Event into a VTodo-type VObject and return pointer */ |
74 | VObject *eventToVTodo(const Todo *anEvent); | 74 | VObject *eventToVTodo(const Todo *anEvent); |
75 | /** translate a Event into a VObject and returns a pointer to it. */ | 75 | /** translate a Event into a VObject and returns a pointer to it. */ |
76 | VObject* eventToVEvent(const Event *anEvent); | 76 | VObject* eventToVEvent(const Event *anEvent); |
77 | 77 | ||
78 | /** takes a QDate and returns a string in the format YYYYMMDDTHHMMSS */ | 78 | /** takes a QDate and returns a string in the format YYYYMMDDTHHMMSS */ |
79 | QString qDateToISO(const QDate &); | 79 | QString qDateToISO(const QDate &); |
80 | /** takes a QDateTime and returns a string in format YYYYMMDDTHHMMSS */ | 80 | /** takes a QDateTime and returns a string in format YYYYMMDDTHHMMSS */ |
81 | QString qDateTimeToISO(const QDateTime &, bool zulu=TRUE); | 81 | QString qDateTimeToISO(const QDateTime &, bool zulu=TRUE); |
82 | /** takes a string in the format YYYYMMDDTHHMMSS and returns a | 82 | /** takes a string in the format YYYYMMDDTHHMMSS and returns a |
@@ -87,24 +87,25 @@ class VCalFormat : public CalFormat { | |||
87 | QDate ISOToQDate(const QString & dtStr); | 87 | QDate ISOToQDate(const QString & dtStr); |
88 | /** takes a vCalendar tree of VObjects, and puts all of them that have | 88 | /** takes a vCalendar tree of VObjects, and puts all of them that have |
89 | * the "event" property into the dictionary, todos in the todo-list, etc. */ | 89 | * the "event" property into the dictionary, todos in the todo-list, etc. */ |
90 | void populate(VObject *vcal); | 90 | void populate(VObject *vcal); |
91 | 91 | ||
92 | /** takes a number 0 - 6 and returns the two letter string of that day, | 92 | /** takes a number 0 - 6 and returns the two letter string of that day, |
93 | * i.e. MO, TU, WE, etc. */ | 93 | * i.e. MO, TU, WE, etc. */ |
94 | const char *dayFromNum(int day); | 94 | const char *dayFromNum(int day); |
95 | /** the reverse of the above function. */ | 95 | /** the reverse of the above function. */ |
96 | int numFromDay(const QString &day); | 96 | int numFromDay(const QString &day); |
97 | 97 | ||
98 | Attendee::PartStat readStatus(const char *s) const; | 98 | Attendee::PartStat readStatus(const char *s) const; |
99 | QCString writeStatus(Attendee::PartStat status) const; | 99 | QCString writeStatus(Attendee::PartStat status) const; |
100 | 100 | ||
101 | private: | 101 | private: |
102 | Calendar *mCalendar; | 102 | Calendar *mCalendar; |
103 | bool useLocalTime; | ||
103 | 104 | ||
104 | QPtrList<Event> mEventsRelate; // events with relations | 105 | QPtrList<Event> mEventsRelate; // events with relations |
105 | QPtrList<Todo> mTodosRelate; // todos with relations | 106 | QPtrList<Todo> mTodosRelate; // todos with relations |
106 | }; | 107 | }; |
107 | 108 | ||
108 | } | 109 | } |
109 | 110 | ||
110 | #endif | 111 | #endif |