summaryrefslogtreecommitdiff
path: root/libopie/pim/otodo.cpp
Unidiff
Diffstat (limited to 'libopie/pim/otodo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/otodo.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/libopie/pim/otodo.cpp b/libopie/pim/otodo.cpp
index b3c14e6..cc46b21 100644
--- a/libopie/pim/otodo.cpp
+++ b/libopie/pim/otodo.cpp
@@ -15,95 +15,96 @@
15 15
16#include "otodo.h" 16#include "otodo.h"
17 17
18 18
19struct OTodo::OTodoData : public QShared { 19struct OTodo::OTodoData : public QShared {
20 OTodoData() : QShared() { 20 OTodoData() : QShared() {
21 }; 21 };
22 22
23 QDate date; 23 QDate date;
24 bool isCompleted:1; 24 bool isCompleted:1;
25 bool hasDate:1; 25 bool hasDate:1;
26 int priority; 26 int priority;
27 QString desc; 27 QString desc;
28 QString sum; 28 QString sum;
29 QMap<QString, QString> extra; 29 QMap<QString, QString> extra;
30 ushort prog; 30 ushort prog;
31 bool hasAlarmDateTime :1; 31 bool hasAlarmDateTime :1;
32 QDateTime alarmDateTime; 32 QDateTime alarmDateTime;
33}; 33};
34 34
35OTodo::OTodo(const OTodo &event ) 35OTodo::OTodo(const OTodo &event )
36 : OPimRecord( event ), data( event.data ) 36 : OPimRecord( event ), data( event.data )
37{ 37{
38 data->ref(); 38 data->ref();
39 qWarning("ref up"); 39// qWarning("ref up");
40} 40}
41OTodo::~OTodo() { 41OTodo::~OTodo() {
42 qWarning("~OTodo " + data->sum ); 42
43// qWarning("~OTodo " );
43 if ( data->deref() ) { 44 if ( data->deref() ) {
44 qWarning("OTodo::dereffing"); 45// qWarning("OTodo::dereffing");
45 delete data; 46 delete data;
46 data = 0l; 47 data = 0l;
47 } 48 }
48} 49}
49OTodo::OTodo(bool completed, int priority, 50OTodo::OTodo(bool completed, int priority,
50 const QArray<int> &category, 51 const QArray<int> &category,
51 const QString& summary, 52 const QString& summary,
52 const QString &description, 53 const QString &description,
53 ushort progress, 54 ushort progress,
54 bool hasDate, QDate date, int uid ) 55 bool hasDate, QDate date, int uid )
55 : OPimRecord( uid ) 56 : OPimRecord( uid )
56{ 57{
57 qWarning("OTodoData " + summary); 58// qWarning("OTodoData " + summary);
58 setCategories( category ); 59 setCategories( category );
59 60
60 data = new OTodoData; 61 data = new OTodoData;
61 62
62 data->date = date; 63 data->date = date;
63 data->isCompleted = completed; 64 data->isCompleted = completed;
64 data->hasDate = hasDate; 65 data->hasDate = hasDate;
65 data->priority = priority; 66 data->priority = priority;
66 data->sum = summary; 67 data->sum = summary;
67 data->prog = progress; 68 data->prog = progress;
68 data->desc = Qtopia::simplifyMultiLineSpace(description ); 69 data->desc = Qtopia::simplifyMultiLineSpace(description );
69 data->hasAlarmDateTime = false; 70 data->hasAlarmDateTime = false;
70 71
71} 72}
72OTodo::OTodo(bool completed, int priority, 73OTodo::OTodo(bool completed, int priority,
73 const QStringList &category, 74 const QStringList &category,
74 const QString& summary, 75 const QString& summary,
75 const QString &description, 76 const QString &description,
76 ushort progress, 77 ushort progress,
77 bool hasDate, QDate date, int uid ) 78 bool hasDate, QDate date, int uid )
78 : OPimRecord( uid ) 79 : OPimRecord( uid )
79{ 80{
80 qWarning("OTodoData" + summary); 81// qWarning("OTodoData" + summary);
81 setCategories( idsFromString( category.join(";") ) ); 82 setCategories( idsFromString( category.join(";") ) );
82 83
83 data = new OTodoData; 84 data = new OTodoData;
84 data->date = date;
85 85
86 data->date = date;
86 data->isCompleted = completed; 87 data->isCompleted = completed;
87 data->hasDate = hasDate; 88 data->hasDate = hasDate;
88 data->priority = priority; 89 data->priority = priority;
89 data->sum = summary; 90 data->sum = summary;
90 data->prog = progress; 91 data->prog = progress;
91 data->desc = Qtopia::simplifyMultiLineSpace(description ); 92 data->desc = Qtopia::simplifyMultiLineSpace(description );
92 data->hasAlarmDateTime = false; 93 data->hasAlarmDateTime = false;
93 94
94} 95}
95bool OTodo::match( const QRegExp &regExp )const 96bool OTodo::match( const QRegExp &regExp )const
96{ 97{
97 if( QString::number( data->priority ).find( regExp ) != -1 ){ 98 if( QString::number( data->priority ).find( regExp ) != -1 ){
98 return true; 99 return true;
99 }else if( data->hasDate && data->date.toString().find( regExp) != -1 ){ 100 }else if( data->hasDate && data->date.toString().find( regExp) != -1 ){
100 return true; 101 return true;
101 }else if(data->desc.find( regExp ) != -1 ){ 102 }else if(data->desc.find( regExp ) != -1 ){
102 return true; 103 return true;
103 }else if(data->sum.find( regExp ) != -1 ) { 104 }else if(data->sum.find( regExp ) != -1 ) {
104 return true; 105 return true;
105 } 106 }
106 return false; 107 return false;
107} 108}
108bool OTodo::isCompleted() const 109bool OTodo::isCompleted() const
109{ 110{
@@ -139,48 +140,49 @@ QDateTime OTodo::alarmDateTime() const
139 return data->alarmDateTime; 140 return data->alarmDateTime;
140} 141}
141 142
142QString OTodo::description()const 143QString OTodo::description()const
143{ 144{
144 return data->desc; 145 return data->desc;
145} 146}
146void OTodo::setCompleted( bool completed ) 147void OTodo::setCompleted( bool completed )
147{ 148{
148 changeOrModify(); 149 changeOrModify();
149 data->isCompleted = completed; 150 data->isCompleted = completed;
150} 151}
151void OTodo::setHasDueDate( bool hasDate ) 152void OTodo::setHasDueDate( bool hasDate )
152{ 153{
153 changeOrModify(); 154 changeOrModify();
154 data->hasDate = hasDate; 155 data->hasDate = hasDate;
155} 156}
156void OTodo::setHasAlarmDateTime( bool hasAlarmDateTime ) 157void OTodo::setHasAlarmDateTime( bool hasAlarmDateTime )
157{ 158{
158 changeOrModify(); 159 changeOrModify();
159 data->hasAlarmDateTime = hasAlarmDateTime; 160 data->hasAlarmDateTime = hasAlarmDateTime;
160} 161}
161void OTodo::setDescription(const QString &desc ) 162void OTodo::setDescription(const QString &desc )
162{ 163{
164 qWarning( "desc " + desc );
163 changeOrModify(); 165 changeOrModify();
164 data->desc = Qtopia::simplifyMultiLineSpace(desc ); 166 data->desc = Qtopia::simplifyMultiLineSpace(desc );
165} 167}
166void OTodo::setSummary( const QString& sum ) 168void OTodo::setSummary( const QString& sum )
167{ 169{
168 changeOrModify(); 170 changeOrModify();
169 data->sum = sum; 171 data->sum = sum;
170} 172}
171void OTodo::setPriority(int prio ) 173void OTodo::setPriority(int prio )
172{ 174{
173 changeOrModify(); 175 changeOrModify();
174 data->priority = prio; 176 data->priority = prio;
175} 177}
176void OTodo::setDueDate( QDate date ) 178void OTodo::setDueDate( QDate date )
177{ 179{
178 changeOrModify(); 180 changeOrModify();
179 data->date = date; 181 data->date = date;
180} 182}
181void OTodo::setAlarmDateTime( const QDateTime& alarm ) 183void OTodo::setAlarmDateTime( const QDateTime& alarm )
182{ 184{
183 changeOrModify(); 185 changeOrModify();
184 data->alarmDateTime = alarm; 186 data->alarmDateTime = alarm;
185} 187}
186bool OTodo::isOverdue( ) 188bool OTodo::isOverdue( )
@@ -286,97 +288,98 @@ bool OTodo::operator>=(const OTodo &toDoEvent )const
286 }else{ 288 }else{
287 return dueDate() > toDoEvent.dueDate(); 289 return dueDate() > toDoEvent.dueDate();
288 } 290 }
289 } 291 }
290 return true; 292 return true;
291} 293}
292bool OTodo::operator==(const OTodo &toDoEvent )const 294bool OTodo::operator==(const OTodo &toDoEvent )const
293{ 295{
294 if ( data->priority != toDoEvent.data->priority ) return false; 296 if ( data->priority != toDoEvent.data->priority ) return false;
295 if ( data->priority != toDoEvent.data->prog ) return false; 297 if ( data->priority != toDoEvent.data->prog ) return false;
296 if ( data->isCompleted != toDoEvent.data->isCompleted ) return false; 298 if ( data->isCompleted != toDoEvent.data->isCompleted ) return false;
297 if ( data->hasDate != toDoEvent.data->hasDate ) return false; 299 if ( data->hasDate != toDoEvent.data->hasDate ) return false;
298 if ( data->date != toDoEvent.data->date ) return false; 300 if ( data->date != toDoEvent.data->date ) return false;
299 if ( data->sum != toDoEvent.data->sum ) return false; 301 if ( data->sum != toDoEvent.data->sum ) return false;
300 if ( data->desc != toDoEvent.data->desc ) return false; 302 if ( data->desc != toDoEvent.data->desc ) return false;
301 if ( data->hasAlarmDateTime != toDoEvent.data->hasAlarmDateTime ) 303 if ( data->hasAlarmDateTime != toDoEvent.data->hasAlarmDateTime )
302 return false; 304 return false;
303 if ( data->alarmDateTime != toDoEvent.data->alarmDateTime ) 305 if ( data->alarmDateTime != toDoEvent.data->alarmDateTime )
304 return false; 306 return false;
305 307
306 return OPimRecord::operator==( toDoEvent ); 308 return OPimRecord::operator==( toDoEvent );
307} 309}
308void OTodo::deref() { 310void OTodo::deref() {
309 311
310 //qWarning("deref in ToDoEvent"); 312// qWarning("deref in ToDoEvent");
311 if ( data->deref() ) { 313 if ( data->deref() ) {
312 //qWarning("deleting"); 314// qWarning("deleting");
313 delete data; 315 delete data;
314 d= 0; 316 data= 0;
315 } 317 }
316} 318}
317OTodo &OTodo::operator=(const OTodo &item ) 319OTodo &OTodo::operator=(const OTodo &item )
318{ 320{
319 OPimRecord::operator=( item ); 321// OPimRecord::operator=( item );
320 //qWarning("operator= ref "); 322 //qWarning("operator= ref ");
321 item.data->ref(); 323 item.data->ref();
322 deref(); 324 deref();
325 data = item.data;
323 326
324 return *this; 327 return *this;
325} 328}
326 329
327QMap<int, QString> OTodo::toMap() const { 330QMap<int, QString> OTodo::toMap() const {
328 QMap<int, QString> map; 331 QMap<int, QString> map;
329 332
330 map.insert( Uid, QString::number( uid() ) ); 333 map.insert( Uid, QString::number( uid() ) );
331 map.insert( Category, idsToString( categories() ) ); 334 map.insert( Category, idsToString( categories() ) );
332 map.insert( HasDate, QString::number( data->hasDate ) ); 335 map.insert( HasDate, QString::number( data->hasDate ) );
333 map.insert( Completed, QString::number( data->isCompleted ) ); 336 map.insert( Completed, QString::number( data->isCompleted ) );
334 map.insert( Description, data->desc ); 337 map.insert( Description, data->desc );
335 map.insert( Summary, data->sum ); 338 map.insert( Summary, data->sum );
336 map.insert( Priority, QString::number( data->priority ) ); 339 map.insert( Priority, QString::number( data->priority ) );
337 map.insert( DateDay, QString::number( data->date.day() ) ); 340 map.insert( DateDay, QString::number( data->date.day() ) );
338 map.insert( DateMonth, QString::number( data->date.month() ) ); 341 map.insert( DateMonth, QString::number( data->date.month() ) );
339 map.insert( DateYear, QString::number( data->date.year() ) ); 342 map.insert( DateYear, QString::number( data->date.year() ) );
340 map.insert( Progress, QString::number( data->prog ) ); 343 map.insert( Progress, QString::number( data->prog ) );
341 map.insert( CrossReference, crossToString() ); 344 map.insert( CrossReference, crossToString() );
342 map.insert( HasAlarmDateTime, QString::number( data->hasAlarmDateTime ) ); 345 map.insert( HasAlarmDateTime, QString::number( data->hasAlarmDateTime ) );
343 map.insert( AlarmDateTime, data->alarmDateTime.toString() ); 346 map.insert( AlarmDateTime, data->alarmDateTime.toString() );
344 347
345 return map; 348 return map;
346} 349}
347 350
348QMap<QString, QString> OTodo::toExtraMap()const { 351QMap<QString, QString> OTodo::toExtraMap()const {
349 return data->extra; 352 return data->extra;
350} 353}
351/** 354/**
352 * change or modify looks at the ref count and either 355 * change or modify looks at the ref count and either
353 * creates a new QShared Object or it can modify it 356 * creates a new QShared Object or it can modify it
354 * right in place 357 * right in place
355 */ 358 */
356void OTodo::changeOrModify() { 359void OTodo::changeOrModify() {
357 if ( data->count != 1 ) { 360 if ( data->count != 1 ) {
358 qWarning("changeOrModify"); 361// qWarning("changeOrModify");
359 data->deref(); 362 data->deref();
360 OTodoData* d2 = new OTodoData(); 363 OTodoData* d2 = new OTodoData();
361 copy(data, d2 ); 364 copy(data, d2 );
362 data = d2; 365 data = d2;
363 } 366 }
364} 367}
365void OTodo::copy( OTodoData* src, OTodoData* dest ) { 368void OTodo::copy( OTodoData* src, OTodoData* dest ) {
366 dest->date = src->date; 369 dest->date = src->date;
367 dest->isCompleted = src->isCompleted; 370 dest->isCompleted = src->isCompleted;
368 dest->hasDate = src->hasDate; 371 dest->hasDate = src->hasDate;
369 dest->priority = src->priority; 372 dest->priority = src->priority;
370 dest->desc = src->desc; 373 dest->desc = src->desc;
371 dest->sum = src->sum; 374 dest->sum = src->sum;
372 dest->extra = src->extra; 375 dest->extra = src->extra;
373 dest->prog = src->prog; 376 dest->prog = src->prog;
374 dest->hasAlarmDateTime = src->hasAlarmDateTime; 377 dest->hasAlarmDateTime = src->hasAlarmDateTime;
375 dest->alarmDateTime = src->alarmDateTime; 378 dest->alarmDateTime = src->alarmDateTime;
376} 379}
377QString OTodo::type() const { 380QString OTodo::type() const {
378 return QString::fromLatin1("OTodo"); 381 return QString::fromLatin1("OTodo");
379} 382}
380QString OTodo::recordField(int id )const { 383QString OTodo::recordField(int id )const {
381 return QString::null; 384 return QString::null;
382} 385}