author | zecke <zecke> | 2003-05-07 18:10:56 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-05-07 18:10:56 (UTC) |
commit | 3cee83b6e2931768fb0d0989b2235800914888a7 (patch) (unidiff) | |
tree | d99a7565fdb5be62cf739d82ec5de50c2bbf95e9 /libopie/pim/otodoaccessxml.cpp | |
parent | 94371938792c70a40cdb75e37c69020438d450c9 (diff) | |
download | opie-3cee83b6e2931768fb0d0989b2235800914888a7.zip opie-3cee83b6e2931768fb0d0989b2235800914888a7.tar.gz opie-3cee83b6e2931768fb0d0989b2235800914888a7.tar.bz2 |
save the state
Diffstat (limited to 'libopie/pim/otodoaccessxml.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | libopie/pim/otodoaccessxml.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libopie/pim/otodoaccessxml.cpp b/libopie/pim/otodoaccessxml.cpp index a8e1503..285d2b8 100644 --- a/libopie/pim/otodoaccessxml.cpp +++ b/libopie/pim/otodoaccessxml.cpp | |||
@@ -1,42 +1,43 @@ | |||
1 | #include <errno.h> | 1 | #include <errno.h> |
2 | #include <fcntl.h> | 2 | #include <fcntl.h> |
3 | 3 | ||
4 | #include <sys/mman.h> | 4 | #include <sys/mman.h> |
5 | #include <sys/stat.h> | 5 | #include <sys/stat.h> |
6 | #include <sys/types.h> | 6 | #include <sys/types.h> |
7 | 7 | ||
8 | #include <unistd.h> | 8 | #include <unistd.h> |
9 | 9 | ||
10 | 10 | ||
11 | #include <qfile.h> | 11 | #include <qfile.h> |
12 | #include <qvector.h> | 12 | #include <qvector.h> |
13 | 13 | ||
14 | #include <qpe/global.h> | 14 | #include <qpe/global.h> |
15 | #include <qpe/stringutil.h> | 15 | #include <qpe/stringutil.h> |
16 | #include <qpe/timeconversion.h> | 16 | #include <qpe/timeconversion.h> |
17 | 17 | ||
18 | #include "oconversion.h" | 18 | #include "oconversion.h" |
19 | #include "opimstate.h" | ||
19 | #include "otimezone.h" | 20 | #include "otimezone.h" |
20 | #include "orecur.h" | 21 | #include "orecur.h" |
21 | #include "otodoaccessxml.h" | 22 | #include "otodoaccessxml.h" |
22 | 23 | ||
23 | namespace { | 24 | namespace { |
24 | time_t rp_end; | 25 | time_t rp_end; |
25 | ORecur* rec; | 26 | ORecur* rec; |
26 | ORecur *recur() { | 27 | ORecur *recur() { |
27 | if (!rec ) rec = new ORecur; | 28 | if (!rec ) rec = new ORecur; |
28 | return rec; | 29 | return rec; |
29 | } | 30 | } |
30 | int snd; | 31 | int snd; |
31 | enum MoreAttributes { | 32 | enum MoreAttributes { |
32 | FRType = OTodo::CompletedDate + 2, | 33 | FRType = OTodo::CompletedDate + 2, |
33 | FRWeekdays, | 34 | FRWeekdays, |
34 | FRPosition, | 35 | FRPosition, |
35 | FRFreq, | 36 | FRFreq, |
36 | FRHasEndDate, | 37 | FRHasEndDate, |
37 | FREndDate, | 38 | FREndDate, |
38 | FRStart, | 39 | FRStart, |
39 | FREnd | 40 | FREnd |
40 | }; | 41 | }; |
41 | // FROM TT again | 42 | // FROM TT again |
42 | char *strstrlen(const char *haystack, int hLen, const char* needle, int nLen) | 43 | char *strstrlen(const char *haystack, int hLen, const char* needle, int nLen) |
@@ -401,48 +402,51 @@ void OTodoAccessXML::todo( QAsciiDict<int>* dict, OTodo& ev, | |||
401 | case OTodo::Summary: | 402 | case OTodo::Summary: |
402 | ev.setSummary( val ); | 403 | ev.setSummary( val ); |
403 | break; | 404 | break; |
404 | case OTodo::Priority: | 405 | case OTodo::Priority: |
405 | ev.setPriority( val.toInt() ); | 406 | ev.setPriority( val.toInt() ); |
406 | break; | 407 | break; |
407 | case OTodo::DateDay: | 408 | case OTodo::DateDay: |
408 | m_day = val.toInt(); | 409 | m_day = val.toInt(); |
409 | break; | 410 | break; |
410 | case OTodo::DateMonth: | 411 | case OTodo::DateMonth: |
411 | m_month = val.toInt(); | 412 | m_month = val.toInt(); |
412 | break; | 413 | break; |
413 | case OTodo::DateYear: | 414 | case OTodo::DateYear: |
414 | m_year = val.toInt(); | 415 | m_year = val.toInt(); |
415 | break; | 416 | break; |
416 | case OTodo::Progress: | 417 | case OTodo::Progress: |
417 | ev.setProgress( val.toInt() ); | 418 | ev.setProgress( val.toInt() ); |
418 | break; | 419 | break; |
419 | case OTodo::CompletedDate: | 420 | case OTodo::CompletedDate: |
420 | ev.setCompletedDate( OConversion::dateFromString( val ) ); | 421 | ev.setCompletedDate( OConversion::dateFromString( val ) ); |
421 | break; | 422 | break; |
422 | case OTodo::StartDate: | 423 | case OTodo::StartDate: |
423 | ev.setStartDate( OConversion::dateFromString( val ) ); | 424 | ev.setStartDate( OConversion::dateFromString( val ) ); |
424 | break; | 425 | break; |
426 | case OTodo::State: | ||
427 | ev.setState( val.toInt() ); | ||
428 | break; | ||
425 | case OTodo::CrossReference: | 429 | case OTodo::CrossReference: |
426 | { | 430 | { |
427 | /* | 431 | /* |
428 | * A cross refernce looks like | 432 | * A cross refernce looks like |
429 | * appname,id;appname,id | 433 | * appname,id;appname,id |
430 | * we need to split it up | 434 | * we need to split it up |
431 | */ | 435 | */ |
432 | QStringList refs = QStringList::split(';', val ); | 436 | QStringList refs = QStringList::split(';', val ); |
433 | QStringList::Iterator strIt; | 437 | QStringList::Iterator strIt; |
434 | for (strIt = refs.begin(); strIt != refs.end(); ++strIt ) { | 438 | for (strIt = refs.begin(); strIt != refs.end(); ++strIt ) { |
435 | int pos = (*strIt).find(','); | 439 | int pos = (*strIt).find(','); |
436 | if ( pos > -1 ) | 440 | if ( pos > -1 ) |
437 | ; // ev.addRelation( (*strIt).left(pos), (*strIt).mid(pos+1).toInt() ); | 441 | ; // ev.addRelation( (*strIt).left(pos), (*strIt).mid(pos+1).toInt() ); |
438 | 442 | ||
439 | } | 443 | } |
440 | break; | 444 | break; |
441 | } | 445 | } |
442 | /* Recurrence stuff below + post processing later */ | 446 | /* Recurrence stuff below + post processing later */ |
443 | case FRType: | 447 | case FRType: |
444 | if ( val == "Daily" ) | 448 | if ( val == "Daily" ) |
445 | recur()->setType( ORecur::Daily ); | 449 | recur()->setType( ORecur::Daily ); |
446 | else if ( val == "Weekly" ) | 450 | else if ( val == "Weekly" ) |
447 | recur()->setType( ORecur::Weekly); | 451 | recur()->setType( ORecur::Weekly); |
448 | else if ( val == "MonthlyDay" ) | 452 | else if ( val == "MonthlyDay" ) |
@@ -494,48 +498,50 @@ QString OTodoAccessXML::toString( const OTodo& ev )const { | |||
494 | // qWarning( "Uid %d", ev.uid() ); | 498 | // qWarning( "Uid %d", ev.uid() ); |
495 | str += "Uid=\"" + QString::number( ev.uid() ) + "\" "; | 499 | str += "Uid=\"" + QString::number( ev.uid() ) + "\" "; |
496 | 500 | ||
497 | // append the extra options | 501 | // append the extra options |
498 | /* FIXME Qtopia::Record this is currently not | 502 | /* FIXME Qtopia::Record this is currently not |
499 | * possible you can set custom fields | 503 | * possible you can set custom fields |
500 | * but don' iterate over the list | 504 | * but don' iterate over the list |
501 | * I may do #define private protected | 505 | * I may do #define private protected |
502 | * for this case - cough --zecke | 506 | * for this case - cough --zecke |
503 | */ | 507 | */ |
504 | /* | 508 | /* |
505 | QMap<QString, QString> extras = ev.extras(); | 509 | QMap<QString, QString> extras = ev.extras(); |
506 | QMap<QString, QString>::Iterator extIt; | 510 | QMap<QString, QString>::Iterator extIt; |
507 | for (extIt = extras.begin(); extIt != extras.end(); ++extIt ) | 511 | for (extIt = extras.begin(); extIt != extras.end(); ++extIt ) |
508 | str += extIt.key() + "=\"" + extIt.data() + "\" "; | 512 | str += extIt.key() + "=\"" + extIt.data() + "\" "; |
509 | */ | 513 | */ |
510 | // cross refernce | 514 | // cross refernce |
511 | if ( ev.hasRecurrence() ) { | 515 | if ( ev.hasRecurrence() ) { |
512 | str += ev.recurrence().toString(); | 516 | str += ev.recurrence().toString(); |
513 | } | 517 | } |
514 | if ( ev.hasStartDate() ) | 518 | if ( ev.hasStartDate() ) |
515 | str += "StartDate=\""+ OConversion::dateToString( ev.startDate() ) +"\" "; | 519 | str += "StartDate=\""+ OConversion::dateToString( ev.startDate() ) +"\" "; |
516 | if ( ev.hasCompletedDate() ) | 520 | if ( ev.hasCompletedDate() ) |
517 | str += "CompletedDate=\""+ OConversion::dateToString( ev.completedDate() ) +"\" "; | 521 | str += "CompletedDate=\""+ OConversion::dateToString( ev.completedDate() ) +"\" "; |
522 | if ( ev.hasState() ) | ||
523 | str += "State=\""+QString::number( ev.state().state() )+"\" "; | ||
518 | 524 | ||
519 | 525 | ||
520 | return str; | 526 | return str; |
521 | } | 527 | } |
522 | QString OTodoAccessXML::toString( const QArray<int>& ints ) const { | 528 | QString OTodoAccessXML::toString( const QArray<int>& ints ) const { |
523 | return Qtopia::Record::idsToString( ints ); | 529 | return Qtopia::Record::idsToString( ints ); |
524 | } | 530 | } |
525 | 531 | ||
526 | /* internal class for sorting | 532 | /* internal class for sorting |
527 | * | 533 | * |
528 | * Inspired by todoxmlio.cpp from TT | 534 | * Inspired by todoxmlio.cpp from TT |
529 | */ | 535 | */ |
530 | 536 | ||
531 | struct OTodoXMLContainer { | 537 | struct OTodoXMLContainer { |
532 | OTodo todo; | 538 | OTodo todo; |
533 | }; | 539 | }; |
534 | 540 | ||
535 | namespace { | 541 | namespace { |
536 | inline QString string( const OTodo& todo) { | 542 | inline QString string( const OTodo& todo) { |
537 | return todo.summary().isEmpty() ? | 543 | return todo.summary().isEmpty() ? |
538 | todo.description().left(20 ) : | 544 | todo.description().left(20 ) : |
539 | todo.summary(); | 545 | todo.summary(); |
540 | } | 546 | } |
541 | inline int completed( const OTodo& todo1, const OTodo& todo2) { | 547 | inline int completed( const OTodo& todo1, const OTodo& todo2) { |