summaryrefslogtreecommitdiff
path: root/libopie/pim
Unidiff
Diffstat (limited to 'libopie/pim') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/odatebookaccessbackend_xml.cpp7
-rw-r--r--libopie/pim/opimmainwindow.h2
-rw-r--r--libopie/pim/test/oevent_test.cpp4
3 files changed, 10 insertions, 3 deletions
diff --git a/libopie/pim/odatebookaccessbackend_xml.cpp b/libopie/pim/odatebookaccessbackend_xml.cpp
index 24b69fe..4a6b7b8 100644
--- a/libopie/pim/odatebookaccessbackend_xml.cpp
+++ b/libopie/pim/odatebookaccessbackend_xml.cpp
@@ -75,24 +75,25 @@ namespace {
75 FRHasEndDate, 75 FRHasEndDate,
76 FREndDate, 76 FREndDate,
77 FRStart, 77 FRStart,
78 FREnd, 78 FREnd,
79 FNote, 79 FNote,
80 FCreated, 80 FCreated,
81 FTimeZone, 81 FTimeZone,
82 FRecParent, 82 FRecParent,
83 FRecChildren, 83 FRecChildren,
84 FExceptions 84 FExceptions
85 }; 85 };
86 inline void save( const OEvent& ev, QString& buf ) { 86 inline void save( const OEvent& ev, QString& buf ) {
87 qWarning("Saving %d %s", ev.uid(), ev.description().latin1() );
87 buf += " description=\"" + Qtopia::escapeString(ev.description() ) + "\""; 88 buf += " description=\"" + Qtopia::escapeString(ev.description() ) + "\"";
88 if (!ev.location().isEmpty() ) 89 if (!ev.location().isEmpty() )
89 buf += " location=\"" + Qtopia::escapeString(ev.location() ) + "\""; 90 buf += " location=\"" + Qtopia::escapeString(ev.location() ) + "\"";
90 91
91 buf += " categories=\""+ Qtopia::escapeString( Qtopia::Record::idsToString( ev.categories() ) ) + "\""; 92 buf += " categories=\""+ Qtopia::escapeString( Qtopia::Record::idsToString( ev.categories() ) ) + "\"";
92 buf += " uid=\"" + QString::number( ev.uid() ) + "\""; 93 buf += " uid=\"" + QString::number( ev.uid() ) + "\"";
93 94
94 if (ev.isAllDay() ) 95 if (ev.isAllDay() )
95 buf += " type=\"AllDay\""; 96 buf += " type=\"AllDay\"";
96 97
97 if (ev.hasNotifiers() ) { 98 if (ev.hasNotifiers() ) {
98 OPimAlarm alarm = ev.notifiers().alarms()[0]; // take only the first 99 OPimAlarm alarm = ev.notifiers().alarms()[0]; // take only the first
@@ -116,24 +117,25 @@ namespace {
116 OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() ); 117 OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() );
117 buf += " start=\"" + QString::number( zone.fromUTCDateTime( zone.toDateTime( ev.startDateTime(), OTimeZone::utc() ) ) ) + "\""; 118 buf += " start=\"" + QString::number( zone.fromUTCDateTime( zone.toDateTime( ev.startDateTime(), OTimeZone::utc() ) ) ) + "\"";
118 buf += " end=\"" + QString::number( zone.fromUTCDateTime( zone.toDateTime( ev.endDateTime() , OTimeZone::utc() ) ) ) + "\""; 119 buf += " end=\"" + QString::number( zone.fromUTCDateTime( zone.toDateTime( ev.endDateTime() , OTimeZone::utc() ) ) ) + "\"";
119 if (!ev.note().isEmpty() ) { 120 if (!ev.note().isEmpty() ) {
120 buf += " note=\"" + Qtopia::escapeString( ev.note() ) + "\""; 121 buf += " note=\"" + Qtopia::escapeString( ev.note() ) + "\"";
121 } 122 }
122 123
123 buf += " timezone=\""; 124 buf += " timezone=\"";
124 if ( ev.timeZone().isEmpty() ) 125 if ( ev.timeZone().isEmpty() )
125 buf += "None"; 126 buf += "None";
126 else 127 else
127 buf += ev.timeZone(); 128 buf += ev.timeZone();
129 buf += "\"";
128 130
129 if (ev.parent() != 0 ) { 131 if (ev.parent() != 0 ) {
130 buf += " recparent=\""+QString::number(ev.parent() )+"\""; 132 buf += " recparent=\""+QString::number(ev.parent() )+"\"";
131 } 133 }
132 134
133 if (ev.children().count() != 0 ) { 135 if (ev.children().count() != 0 ) {
134 QArray<int> children = ev.children(); 136 QArray<int> children = ev.children();
135 buf += " recchildren=\""; 137 buf += " recchildren=\"";
136 for ( uint i = 0; i < children.count(); i++ ) { 138 for ( uint i = 0; i < children.count(); i++ ) {
137 if ( i != 0 ) buf += " "; 139 if ( i != 0 ) buf += " ";
138 buf += QString::number( children[i] ); 140 buf += QString::number( children[i] );
139 } 141 }
@@ -425,65 +427,68 @@ bool ODateBookAccessBackend_XML::loadFile() {
425 /* 427 /*
426 * add key + value 428 * add key + value
427 */ 429 */
428 find = dict[attr.data()]; 430 find = dict[attr.data()];
429 if (!find) 431 if (!find)
430 ev.setCustomField( attr, value ); 432 ev.setCustomField( attr, value );
431 else { 433 else {
432 setField( ev, *find, value ); 434 setField( ev, *find, value );
433 } 435 }
434 } 436 }
435 /* time to finalize */ 437 /* time to finalize */
436 finalizeRecord( ev ); 438 finalizeRecord( ev );
437 add( ev );
438 delete rec; 439 delete rec;
439 } 440 }
440 ::munmap(map_addr, attribute.st_size ); 441 ::munmap(map_addr, attribute.st_size );
441 m_changed = false; // changed during add 442 m_changed = false; // changed during add
442 443
443 return true; 444 return true;
444} 445}
445void ODateBookAccessBackend_XML::finalizeRecord( OEvent& ev ) { 446void ODateBookAccessBackend_XML::finalizeRecord( OEvent& ev ) {
446 /* AllDay is alway in UTC */ 447 /* AllDay is alway in UTC */
447 if ( ev.isAllDay() ) { 448 if ( ev.isAllDay() ) {
448 OTimeZone utc = OTimeZone::utc(); 449 OTimeZone utc = OTimeZone::utc();
449 ev.setStartDateTime( utc.fromUTCDateTime( start ) ); 450 ev.setStartDateTime( utc.fromUTCDateTime( start ) );
450 ev.setEndDateTime ( utc.fromUTCDateTime( end ) ); 451 ev.setEndDateTime ( utc.fromUTCDateTime( end ) );
451 ev.setTimeZone( "UTC"); // make sure it is really utc 452 ev.setTimeZone( "UTC"); // make sure it is really utc
452 }else { 453 }else {
453 /* to current date time */ 454 /* to current date time */
455 qWarning(" Start is %d", start );
454 OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() ); 456 OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() );
455 QDateTime date = zone.toDateTime( start ); 457 QDateTime date = zone.toDateTime( start );
458 qWarning(" Start is %s", date.toString().latin1() );
456 ev.setStartDateTime( zone.toDateTime( date, OTimeZone::current() ) ); 459 ev.setStartDateTime( zone.toDateTime( date, OTimeZone::current() ) );
457 460
458 date = zone.toDateTime( end ); 461 date = zone.toDateTime( end );
459 ev.setEndDateTime ( zone.toDateTime( date, OTimeZone::current() ) ); 462 ev.setEndDateTime ( zone.toDateTime( date, OTimeZone::current() ) );
460 } 463 }
461 if ( rec && rec->doesRecur() ) { 464 if ( rec && rec->doesRecur() ) {
462 OTimeZone utc = OTimeZone::utc(); 465 OTimeZone utc = OTimeZone::utc();
463 ORecur recu( *rec ); // call copy c'tor; 466 ORecur recu( *rec ); // call copy c'tor;
464 recu.setEndDate ( utc.fromUTCDateTime( rp_end ).date() ); 467 recu.setEndDate ( utc.fromUTCDateTime( rp_end ).date() );
465 recu.setCreatedDateTime( utc.fromUTCDateTime( created ) ); 468 recu.setCreatedDateTime( utc.fromUTCDateTime( created ) );
466 recu.setStart( ev.startDateTime().date() ); 469 recu.setStart( ev.startDateTime().date() );
467 ev.setRecurrence( recu ); 470 ev.setRecurrence( recu );
468 } 471 }
469 472
470 if (alarmTime != -1 ) { 473 if (alarmTime != -1 ) {
471 QDateTime dt = ev.startDateTime().addSecs( -1*alarmTime*60 ); 474 QDateTime dt = ev.startDateTime().addSecs( -1*alarmTime*60 );
472 OPimAlarm al( snd , dt ); 475 OPimAlarm al( snd , dt );
473 ev.notifiers().add( al ); 476 ev.notifiers().add( al );
474 } 477 }
475 if ( m_raw.contains( ev.uid() ) || m_rep.contains( ev.uid() ) ) { 478 if ( m_raw.contains( ev.uid() ) || m_rep.contains( ev.uid() ) ) {
479 qWarning("already contains assign uid");
476 ev.setUid( 1 ); 480 ev.setUid( 1 );
477 } 481 }
482 qWarning("addind %d %s", ev.uid(), ev.description().latin1() );
478 if ( ev.hasRecurrence() ) 483 if ( ev.hasRecurrence() )
479 m_rep.insert( ev.uid(), ev ); 484 m_rep.insert( ev.uid(), ev );
480 else 485 else
481 m_raw.insert( ev.uid(), ev ); 486 m_raw.insert( ev.uid(), ev );
482 487
483} 488}
484void ODateBookAccessBackend_XML::setField( OEvent& e, int id, const QString& value) { 489void ODateBookAccessBackend_XML::setField( OEvent& e, int id, const QString& value) {
485// qWarning(" setting %s", value.latin1() ); 490// qWarning(" setting %s", value.latin1() );
486 switch( id ) { 491 switch( id ) {
487 case FDescription: 492 case FDescription:
488 e.setDescription( value ); 493 e.setDescription( value );
489 break; 494 break;
diff --git a/libopie/pim/opimmainwindow.h b/libopie/pim/opimmainwindow.h
index 34b8a71..dca3c82 100644
--- a/libopie/pim/opimmainwindow.h
+++ b/libopie/pim/opimmainwindow.h
@@ -37,25 +37,25 @@ protected slots:
37 * couldn't be handled by this window 37 * couldn't be handled by this window
38 */ 38 */
39 virtual void doSetDocument( const QString& ); 39 virtual void doSetDocument( const QString& );
40 /* for syncing */ 40 /* for syncing */
41 virtual void flush() = 0; 41 virtual void flush() = 0;
42 virtual void reload() = 0; 42 virtual void reload() = 0;
43 43
44 /** create a new Records and return the uid */ 44 /** create a new Records and return the uid */
45 virtual int create() = 0; 45 virtual int create() = 0;
46 /** remove a record with UID == uid */ 46 /** remove a record with UID == uid */
47 virtual bool remove( int uid ) = 0; 47 virtual bool remove( int uid ) = 0;
48 /** beam the record with UID = uid */ 48 /** beam the record with UID = uid */
49 virtual void beam( int uid , int transport = IrDa) = 0; 49 virtual void beam( int uid ) = 0;
50 50
51 /** show the record with UID == uid */ 51 /** show the record with UID == uid */
52 virtual void show( int uid ) = 0; 52 virtual void show( int uid ) = 0;
53 /** edit the record */ 53 /** edit the record */
54 virtual void edit( int uid ) = 0; 54 virtual void edit( int uid ) = 0;
55 55
56 /** make a copy of it! */ 56 /** make a copy of it! */
57 virtual void add( const OPimRecord& ) = 0; 57 virtual void add( const OPimRecord& ) = 0;
58 58
59 59
60 QCopChannel* channel(); 60 QCopChannel* channel();
61 61
diff --git a/libopie/pim/test/oevent_test.cpp b/libopie/pim/test/oevent_test.cpp
index d83ee0b..9f16911 100644
--- a/libopie/pim/test/oevent_test.cpp
+++ b/libopie/pim/test/oevent_test.cpp
@@ -5,29 +5,31 @@
5 5
6int main(int argc, char* argv ) { 6int main(int argc, char* argv ) {
7 ODateBookAccess acc; 7 ODateBookAccess acc;
8 if(!acc.load() ) qWarning("could not load"); 8 if(!acc.load() ) qWarning("could not load");
9 9
10 ODateBookAccess::List::Iterator it; 10 ODateBookAccess::List::Iterator it;
11 ODateBookAccess::List list = acc.allRecords(); 11 ODateBookAccess::List list = acc.allRecords();
12 12
13 for( it = list.begin(); it != list.end(); ++it ){ 13 for( it = list.begin(); it != list.end(); ++it ){
14 OEvent ev = (*it); 14 OEvent ev = (*it);
15 qWarning("Summary: %s",ev.description().latin1() ); 15 qWarning("Summary: %s",ev.description().latin1() );
16 qWarning("Start: %s End: %s",ev.startDateTime().toString().latin1(), ev.endDateTime().toString().latin1() ); 16 qWarning("Start: %s End: %s",ev.startDateTime().toString().latin1(), ev.endDateTime().toString().latin1() );
17 qWarning("All Day: %d",ev.isAllDay() ); 17 qWarning("All Day: %d Recurrence: %d",ev.isAllDay(), ev.hasRecurrence() );
18 qWarning("UID %d", ev.uid() );
18 19
19 } 20 }
20 QDate date1(2003,02,01 ); 21 QDate date1(2003,02,01 );
21 QDate date2(2003,03,01 ); 22 QDate date2(2003,03,01 );
22 23
23 OEffectiveEvent::ValueList effList = acc.effectiveEvents( date1,date2 ); 24 OEffectiveEvent::ValueList effList = acc.effectiveEvents( date1,date2 );
24 OEffectiveEvent::ValueList::Iterator effIt; 25 OEffectiveEvent::ValueList::Iterator effIt;
25 26
26 for( effIt = effList.begin(); effIt != effList.end(); ++effIt ){ 27 for( effIt = effList.begin(); effIt != effList.end(); ++effIt ){
27 OEffectiveEvent ef = (*effIt); 28 OEffectiveEvent ef = (*effIt);
28 qWarning("Summary: %s", ef.description().latin1() ); 29 qWarning("Summary: %s", ef.description().latin1() );
29 qWarning("Date: %s", ef.date().toString().latin1() ); 30 qWarning("Date: %s", ef.date().toString().latin1() );
30 } 31 }
32 acc.save();
31 33
32 return 0; 34 return 0;
33} 35}