summaryrefslogtreecommitdiff
path: root/libopie/pim/otodoaccessxml.cpp
authorzecke <zecke>2003-05-07 18:10:56 (UTC)
committer zecke <zecke>2003-05-07 18:10:56 (UTC)
commit3cee83b6e2931768fb0d0989b2235800914888a7 (patch) (unidiff)
treed99a7565fdb5be62cf739d82ec5de50c2bbf95e9 /libopie/pim/otodoaccessxml.cpp
parent94371938792c70a40cdb75e37c69020438d450c9 (diff)
downloadopie-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.cpp6
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
23namespace { 24namespace {
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
42char *strstrlen(const char *haystack, int hLen, const char* needle, int nLen) 43char *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}
522QString OTodoAccessXML::toString( const QArray<int>& ints ) const { 528QString 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
531struct OTodoXMLContainer { 537struct OTodoXMLContainer {
532 OTodo todo; 538 OTodo todo;
533}; 539};
534 540
535namespace { 541namespace {
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) {