summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/opimnotifymanager.cpp4
-rw-r--r--libopie/pim/otodo.cpp8
-rw-r--r--libopie/pim/otodo.h8
-rw-r--r--libopie2/opiepim/core/opimnotifymanager.cpp4
-rw-r--r--libopie2/opiepim/otodo.cpp8
-rw-r--r--libopie2/opiepim/otodo.h8
6 files changed, 34 insertions, 6 deletions
diff --git a/libopie/pim/opimnotifymanager.cpp b/libopie/pim/opimnotifymanager.cpp
index 49af757..06b5987 100644
--- a/libopie/pim/opimnotifymanager.cpp
+++ b/libopie/pim/opimnotifymanager.cpp
@@ -1,72 +1,74 @@
1#include "opimnotifymanager.h" 1#include "opimnotifymanager.h"
2 2
3OPimNotifyManager::OPimNotifyManager( const Reminders& rem, const Alarms& al) 3OPimNotifyManager::OPimNotifyManager( const Reminders& rem, const Alarms& al)
4 : m_rem( rem ), m_al( al ) 4 : m_rem( rem ), m_al( al )
5{} 5{}
6OPimNotifyManager::~OPimNotifyManager() { 6OPimNotifyManager::~OPimNotifyManager() {
7} 7}
8/* use static_cast and type instead of dynamic... */ 8/* use static_cast and type instead of dynamic... */
9void OPimNotifyManager::add( const OPimNotify& noti) { 9void OPimNotifyManager::add( const OPimNotify& noti) {
10 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 10 if ( noti.type() == QString::fromLatin1("OPimReminder") ) {
11 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 11 const OPimReminder& rem = static_cast<const OPimReminder&>(noti);
12 m_rem.append( rem ); 12 m_rem.append( rem );
13 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { 13 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) {
14 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 14 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti);
15 m_al.append( al ); 15 m_al.append( al );
16 } 16 }
17} 17}
18void OPimNotifyManager::remove( const OPimNotify& noti) { 18void OPimNotifyManager::remove( const OPimNotify& noti) {
19 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 19 if ( noti.type() == QString::fromLatin1("OPimReminder") ) {
20 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 20 const OPimReminder& rem = static_cast<const OPimReminder&>(noti);
21 m_rem.remove( rem ); 21 m_rem.remove( rem );
22 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { 22 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) {
23 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 23 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti);
24 m_al.remove( al ); 24 m_al.remove( al );
25 } 25 }
26} 26}
27void OPimNotifyManager::replace( const OPimNotify& noti) { 27void OPimNotifyManager::replace( const OPimNotify& noti) {
28 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 28 if ( noti.type() == QString::fromLatin1("OPimReminder") ) {
29 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 29 const OPimReminder& rem = static_cast<const OPimReminder&>(noti);
30 m_rem.remove( rem ); 30 m_rem.remove( rem );
31 m_rem.append( rem ); 31 m_rem.append( rem );
32 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { 32 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) {
33 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 33 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti);
34 m_al.remove( al ); 34 m_al.remove( al );
35 m_al.append( al ); 35 m_al.append( al );
36 } 36 }
37} 37}
38OPimNotifyManager::Reminders OPimNotifyManager::reminders()const { 38OPimNotifyManager::Reminders OPimNotifyManager::reminders()const {
39 return m_rem; 39 return m_rem;
40} 40}
41OPimNotifyManager::Alarms OPimNotifyManager::alarms()const { 41OPimNotifyManager::Alarms OPimNotifyManager::alarms()const {
42 return m_al; 42 return m_al;
43} 43}
44void OPimNotifyManager::setAlarms( const Alarms& al) { 44void OPimNotifyManager::setAlarms( const Alarms& al) {
45 m_al = al; 45 m_al = al;
46} 46}
47void OPimNotifyManager::setReminders( const Reminders& rem) { 47void OPimNotifyManager::setReminders( const Reminders& rem) {
48 m_rem = rem; 48 m_rem = rem;
49} 49}
50/* FIXME!!! */ 50/* FIXME!!! */
51/** 51/**
52 * The idea is to check if the provider for our service 52 * The idea is to check if the provider for our service
53 * is online 53 * is online
54 * if it is we will use QCOP 54 * if it is we will use QCOP
55 * if not the Factory to get the backend... 55 * if not the Factory to get the backend...
56 * Qtopia1.6 services would be kewl to have here.... 56 * Qtopia1.6 services would be kewl to have here....
57 */ 57 */
58void OPimNotifyManager::registerNotify( const OPimNotify& ) { 58void OPimNotifyManager::registerNotify( const OPimNotify& ) {
59 59
60} 60}
61/* FIXME!!! */ 61/* FIXME!!! */
62/** 62/**
63 * same as above... 63 * same as above...
64 * Also implement Url model 64 * Also implement Url model
65 * have a MainWindow.... 65 * have a MainWindow....
66 */ 66 */
67void OPimNotifyManager::deregister( const OPimNotify& ) { 67void OPimNotifyManager::deregister( const OPimNotify& ) {
68 68
69} 69}
70bool OPimNotifyManager::isEmpty()const { 70bool OPimNotifyManager::isEmpty()const {
71 return ( m_rem.isEmpty() && m_al.isEmpty() ); 71 qWarning("is Empty called on OPimNotifyManager %d %d", m_rem.count(), m_al.count() );
72 if ( m_rem.isEmpty() && m_al.isEmpty() ) return true;
73 else return false;
72} 74}
diff --git a/libopie/pim/otodo.cpp b/libopie/pim/otodo.cpp
index f3df119..a29d88e 100644
--- a/libopie/pim/otodo.cpp
+++ b/libopie/pim/otodo.cpp
@@ -205,199 +205,205 @@ void OTodo::setDescription(const QString &desc )
205void OTodo::setSummary( const QString& sum ) 205void OTodo::setSummary( const QString& sum )
206{ 206{
207 changeOrModify(); 207 changeOrModify();
208 data->sum = sum; 208 data->sum = sum;
209} 209}
210void OTodo::setPriority(int prio ) 210void OTodo::setPriority(int prio )
211{ 211{
212 changeOrModify(); 212 changeOrModify();
213 data->priority = prio; 213 data->priority = prio;
214} 214}
215void OTodo::setDueDate( const QDate& date ) 215void OTodo::setDueDate( const QDate& date )
216{ 216{
217 changeOrModify(); 217 changeOrModify();
218 data->date = date; 218 data->date = date;
219} 219}
220void OTodo::setStartDate( const QDate& date ) { 220void OTodo::setStartDate( const QDate& date ) {
221 changeOrModify(); 221 changeOrModify();
222 data->start = date; 222 data->start = date;
223} 223}
224void OTodo::setCompletedDate( const QDate& date ) { 224void OTodo::setCompletedDate( const QDate& date ) {
225 changeOrModify(); 225 changeOrModify();
226 data->completed = date; 226 data->completed = date;
227} 227}
228void OTodo::setState( const OPimState& state ) { 228void OTodo::setState( const OPimState& state ) {
229 changeOrModify(); 229 changeOrModify();
230 if (data->state ) 230 if (data->state )
231 (*data->state) = state; 231 (*data->state) = state;
232 else 232 else
233 data->state = new OPimState( state ); 233 data->state = new OPimState( state );
234} 234}
235void OTodo::setRecurrence( const ORecur& rec) { 235void OTodo::setRecurrence( const ORecur& rec) {
236 changeOrModify(); 236 changeOrModify();
237 if (data->recur ) 237 if (data->recur )
238 (*data->recur) = rec; 238 (*data->recur) = rec;
239 else 239 else
240 data->recur = new ORecur( rec ); 240 data->recur = new ORecur( rec );
241} 241}
242void OTodo::setMaintainer( const OPimMaintainer& pim ) { 242void OTodo::setMaintainer( const OPimMaintainer& pim ) {
243 changeOrModify(); 243 changeOrModify();
244 244
245 if (data->maintainer ) 245 if (data->maintainer )
246 (*data->maintainer) = pim; 246 (*data->maintainer) = pim;
247 else 247 else
248 data->maintainer = new OPimMaintainer( pim ); 248 data->maintainer = new OPimMaintainer( pim );
249} 249}
250bool OTodo::isOverdue( ) 250bool OTodo::isOverdue( )
251{ 251{
252 if( data->hasDate && !data->isCompleted) 252 if( data->hasDate && !data->isCompleted)
253 return QDate::currentDate() > data->date; 253 return QDate::currentDate() > data->date;
254 return false; 254 return false;
255} 255}
256void OTodo::setProgress(ushort progress ) 256void OTodo::setProgress(ushort progress )
257{ 257{
258 changeOrModify(); 258 changeOrModify();
259 data->prog = progress; 259 data->prog = progress;
260} 260}
261QString OTodo::toShortText() const { 261QString OTodo::toShortText() const {
262 return summary(); 262 return summary();
263} 263}
264/*! 264/*!
265 Returns a richt text string 265 Returns a richt text string
266*/ 266*/
267QString OTodo::toRichText() const 267QString OTodo::toRichText() const
268{ 268{
269 QString text; 269 QString text;
270 QStringList catlist; 270 QStringList catlist;
271 271
272 // Description of the todo 272 // Description of the todo
273 if ( !summary().isEmpty() ) { 273 if ( !summary().isEmpty() ) {
274 text += "<b>" + QObject::tr( "Summary:") + "</b><br>"; 274 text += "<b>" + QObject::tr( "Summary:") + "</b><br>";
275 text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; 275 text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>";
276 } 276 }
277 if( !description().isEmpty() ){ 277 if( !description().isEmpty() ){
278 text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; 278 text += "<b>" + QObject::tr( "Description:" ) + "</b><br>";
279 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) ; 279 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) ;
280 } 280 }
281 text += "<br><br><br>"; 281 text += "<br><br><br>";
282 282
283 text += "<b>" + QObject::tr( "Priority:") +" </b>" 283 text += "<b>" + QObject::tr( "Priority:") +" </b>"
284 + QString::number( priority() ) + " <br>"; 284 + QString::number( priority() ) + " <br>";
285 text += "<b>" + QObject::tr( "Progress:") + " </b>" 285 text += "<b>" + QObject::tr( "Progress:") + " </b>"
286 + QString::number( progress() ) + " %<br>"; 286 + QString::number( progress() ) + " %<br>";
287 if (hasDueDate() ){ 287 if (hasDueDate() ){
288 text += "<b>" + QObject::tr( "Deadline:") + " </b>"; 288 text += "<b>" + QObject::tr( "Deadline:") + " </b>";
289 text += dueDate().toString(); 289 text += dueDate().toString();
290 text += "<br>"; 290 text += "<br>";
291 } 291 }
292 292
293 text += "<b>" + QObject::tr( "Category:") + "</b> "; 293 text += "<b>" + QObject::tr( "Category:") + "</b> ";
294 text += categoryNames( "Todo List" ).join(", "); 294 text += categoryNames( "Todo List" ).join(", ");
295 text += "<br>"; 295 text += "<br>";
296 296
297 return text; 297 return text;
298} 298}
299bool OTodo::hasNotifiers()const { 299bool OTodo::hasNotifiers()const {
300 if (!data->notifiers) return false; 300 if (!data->notifiers) return false;
301 return data->notifiers->isEmpty(); 301 return !data->notifiers->isEmpty();
302} 302}
303OPimNotifyManager& OTodo::notifiers() { 303OPimNotifyManager& OTodo::notifiers() {
304 if (!data->notifiers ) 304 if (!data->notifiers )
305 data->notifiers = new OPimNotifyManager; 305 data->notifiers = new OPimNotifyManager;
306 return (*data->notifiers); 306 return (*data->notifiers);
307} 307}
308const OPimNotifyManager& OTodo::notifiers()const{
309 if (!data->notifiers )
310 data->notifiers = new OPimNotifyManager;
311
312 return (*data->notifiers);
313}
308 314
309bool OTodo::operator<( const OTodo &toDoEvent )const{ 315bool OTodo::operator<( const OTodo &toDoEvent )const{
310 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 316 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
311 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 317 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
312 if( hasDueDate() && toDoEvent.hasDueDate() ){ 318 if( hasDueDate() && toDoEvent.hasDueDate() ){
313 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 319 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide
314 return priority() < toDoEvent.priority(); 320 return priority() < toDoEvent.priority();
315 }else{ 321 }else{
316 return dueDate() < toDoEvent.dueDate(); 322 return dueDate() < toDoEvent.dueDate();
317 } 323 }
318 } 324 }
319 return false; 325 return false;
320} 326}
321bool OTodo::operator<=(const OTodo &toDoEvent )const 327bool OTodo::operator<=(const OTodo &toDoEvent )const
322{ 328{
323 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 329 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
324 if( !hasDueDate() && toDoEvent.hasDueDate() ) return true; 330 if( !hasDueDate() && toDoEvent.hasDueDate() ) return true;
325 if( hasDueDate() && toDoEvent.hasDueDate() ){ 331 if( hasDueDate() && toDoEvent.hasDueDate() ){
326 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 332 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide
327 return priority() <= toDoEvent.priority(); 333 return priority() <= toDoEvent.priority();
328 }else{ 334 }else{
329 return dueDate() <= toDoEvent.dueDate(); 335 return dueDate() <= toDoEvent.dueDate();
330 } 336 }
331 } 337 }
332 return true; 338 return true;
333} 339}
334bool OTodo::operator>(const OTodo &toDoEvent )const 340bool OTodo::operator>(const OTodo &toDoEvent )const
335{ 341{
336 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return false; 342 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return false;
337 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 343 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
338 if( hasDueDate() && toDoEvent.hasDueDate() ){ 344 if( hasDueDate() && toDoEvent.hasDueDate() ){
339 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 345 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide
340 return priority() > toDoEvent.priority(); 346 return priority() > toDoEvent.priority();
341 }else{ 347 }else{
342 return dueDate() > toDoEvent.dueDate(); 348 return dueDate() > toDoEvent.dueDate();
343 } 349 }
344 } 350 }
345 return false; 351 return false;
346} 352}
347bool OTodo::operator>=(const OTodo &toDoEvent )const 353bool OTodo::operator>=(const OTodo &toDoEvent )const
348{ 354{
349 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 355 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
350 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 356 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
351 if( hasDueDate() && toDoEvent.hasDueDate() ){ 357 if( hasDueDate() && toDoEvent.hasDueDate() ){
352 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 358 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide
353 return priority() > toDoEvent.priority(); 359 return priority() > toDoEvent.priority();
354 }else{ 360 }else{
355 return dueDate() > toDoEvent.dueDate(); 361 return dueDate() > toDoEvent.dueDate();
356 } 362 }
357 } 363 }
358 return true; 364 return true;
359} 365}
360bool OTodo::operator==(const OTodo &toDoEvent )const 366bool OTodo::operator==(const OTodo &toDoEvent )const
361{ 367{
362 if ( data->priority != toDoEvent.data->priority ) return false; 368 if ( data->priority != toDoEvent.data->priority ) return false;
363 if ( data->priority != toDoEvent.data->prog ) return false; 369 if ( data->priority != toDoEvent.data->prog ) return false;
364 if ( data->isCompleted != toDoEvent.data->isCompleted ) return false; 370 if ( data->isCompleted != toDoEvent.data->isCompleted ) return false;
365 if ( data->hasDate != toDoEvent.data->hasDate ) return false; 371 if ( data->hasDate != toDoEvent.data->hasDate ) return false;
366 if ( data->date != toDoEvent.data->date ) return false; 372 if ( data->date != toDoEvent.data->date ) return false;
367 if ( data->sum != toDoEvent.data->sum ) return false; 373 if ( data->sum != toDoEvent.data->sum ) return false;
368 if ( data->desc != toDoEvent.data->desc ) return false; 374 if ( data->desc != toDoEvent.data->desc ) return false;
369 if ( data->maintainer != toDoEvent.data->maintainer ) 375 if ( data->maintainer != toDoEvent.data->maintainer )
370 return false; 376 return false;
371 377
372 return OPimRecord::operator==( toDoEvent ); 378 return OPimRecord::operator==( toDoEvent );
373} 379}
374void OTodo::deref() { 380void OTodo::deref() {
375 381
376// qWarning("deref in ToDoEvent"); 382// qWarning("deref in ToDoEvent");
377 if ( data->deref() ) { 383 if ( data->deref() ) {
378// qWarning("deleting"); 384// qWarning("deleting");
379 delete data; 385 delete data;
380 data= 0; 386 data= 0;
381 } 387 }
382} 388}
383OTodo &OTodo::operator=(const OTodo &item ) 389OTodo &OTodo::operator=(const OTodo &item )
384{ 390{
385 if ( this == &item ) return *this; 391 if ( this == &item ) return *this;
386 392
387 OPimRecord::operator=( item ); 393 OPimRecord::operator=( item );
388 //qWarning("operator= ref "); 394 //qWarning("operator= ref ");
389 item.data->ref(); 395 item.data->ref();
390 deref(); 396 deref();
391 data = item.data; 397 data = item.data;
392 398
393 return *this; 399 return *this;
394} 400}
395 401
396QMap<int, QString> OTodo::toMap() const { 402QMap<int, QString> OTodo::toMap() const {
397 QMap<int, QString> map; 403 QMap<int, QString> map;
398 404
399 map.insert( Uid, QString::number( uid() ) ); 405 map.insert( Uid, QString::number( uid() ) );
400 map.insert( Category, idsToString( categories() ) ); 406 map.insert( Category, idsToString( categories() ) );
401 map.insert( HasDate, QString::number( data->hasDate ) ); 407 map.insert( HasDate, QString::number( data->hasDate ) );
402 map.insert( Completed, QString::number( data->isCompleted ) ); 408 map.insert( Completed, QString::number( data->isCompleted ) );
403 map.insert( Description, data->desc ); 409 map.insert( Description, data->desc );
diff --git a/libopie/pim/otodo.h b/libopie/pim/otodo.h
index 0e7c73f..4d5ee36 100644
--- a/libopie/pim/otodo.h
+++ b/libopie/pim/otodo.h
@@ -82,200 +82,206 @@ public:
82 82
83 /** 83 /**
84 *destructor 84 *destructor
85 */ 85 */
86 ~OTodo(); 86 ~OTodo();
87 87
88 /** 88 /**
89 * Is this event completed? 89 * Is this event completed?
90 */ 90 */
91 bool isCompleted() const; 91 bool isCompleted() const;
92 92
93 /** 93 /**
94 * Does this Event have a deadline 94 * Does this Event have a deadline
95 */ 95 */
96 bool hasDueDate() const; 96 bool hasDueDate() const;
97 bool hasStartDate()const; 97 bool hasStartDate()const;
98 bool hasCompletedDate()const; 98 bool hasCompletedDate()const;
99 99
100 /** 100 /**
101 * Does this Event has an alarm time ? 101 * Does this Event has an alarm time ?
102 */ 102 */
103 bool hasAlarmDateTime() const; 103 bool hasAlarmDateTime() const;
104 104
105 /** 105 /**
106 * What is the priority? 106 * What is the priority?
107 */ 107 */
108 int priority()const ; 108 int priority()const ;
109 109
110 /** 110 /**
111 * progress as ushort 0, 20, 40, 60, 80 or 100% 111 * progress as ushort 0, 20, 40, 60, 80 or 100%
112 */ 112 */
113 ushort progress() const; 113 ushort progress() const;
114 114
115 /** 115 /**
116 * The due Date 116 * The due Date
117 */ 117 */
118 QDate dueDate()const; 118 QDate dueDate()const;
119 119
120 /** 120 /**
121 * When did it start? 121 * When did it start?
122 */ 122 */
123 QDate startDate()const; 123 QDate startDate()const;
124 124
125 /** 125 /**
126 * When was it completed? 126 * When was it completed?
127 */ 127 */
128 QDate completedDate()const; 128 QDate completedDate()const;
129 129
130 /** 130 /**
131 * does it have a state? 131 * does it have a state?
132 */ 132 */
133 bool hasState()const; 133 bool hasState()const;
134 134
135 /** 135 /**
136 * What is the state of this OTodo? 136 * What is the state of this OTodo?
137 */ 137 */
138 OPimState state()const; 138 OPimState state()const;
139 139
140 /** 140 /**
141 * has recurrence? 141 * has recurrence?
142 */ 142 */
143 bool hasRecurrence()const; 143 bool hasRecurrence()const;
144 144
145 /** 145 /**
146 * the recurrance of this 146 * the recurrance of this
147 */ 147 */
148 ORecur recurrence()const; 148 ORecur recurrence()const;
149 149
150 /** 150 /**
151 * does this OTodo have a maintainer? 151 * does this OTodo have a maintainer?
152 */ 152 */
153 bool hasMaintainer()const; 153 bool hasMaintainer()const;
154 154
155 /** 155 /**
156 * the Maintainer of this OTodo 156 * the Maintainer of this OTodo
157 */ 157 */
158 OPimMaintainer maintainer()const; 158 OPimMaintainer maintainer()const;
159 159
160 /** 160 /**
161 * The description of the todo 161 * The description of the todo
162 */ 162 */
163 QString description()const; 163 QString description()const;
164 164
165 /** 165 /**
166 * A small summary of the todo 166 * A small summary of the todo
167 */ 167 */
168 QString summary() const; 168 QString summary() const;
169 169
170 /** 170 /**
171 * @reimplemented 171 * @reimplemented
172 * Return this todoevent in a RichText formatted QString 172 * Return this todoevent in a RichText formatted QString
173 */ 173 */
174 QString toRichText() const; 174 QString toRichText() const;
175 175
176 bool hasNotifiers()const; 176 bool hasNotifiers()const;
177 /* 177 /*
178 * check if the sharing is still fine!! -zecke 178 * FIXME check if the sharing is still fine!! -zecke
179 * ### CHECK If API is fine
179 */ 180 */
180 /** 181 /**
181 * return a reference to our notifiers... 182 * return a reference to our notifiers...
182 */ 183 */
183 OPimNotifyManager &notifiers(); 184 OPimNotifyManager &notifiers();
184 185
185 /** 186 /**
187 *
188 */
189 const OPimNotifyManager &notifiers()const;
190
191 /**
186 * reimplementations 192 * reimplementations
187 */ 193 */
188 QString type()const; 194 QString type()const;
189 QString toShortText()const; 195 QString toShortText()const;
190 QMap<QString, QString> toExtraMap()const; 196 QMap<QString, QString> toExtraMap()const;
191 QString recordField(int id )const; 197 QString recordField(int id )const;
192 198
193 /** 199 /**
194 * toMap puts all data into the map. int relates 200 * toMap puts all data into the map. int relates
195 * to ToDoEvent RecordFields enum 201 * to ToDoEvent RecordFields enum
196 */ 202 */
197 QMap<int, QString> toMap()const; 203 QMap<int, QString> toMap()const;
198 204
199 /** 205 /**
200 * Set if this Todo is completed 206 * Set if this Todo is completed
201 */ 207 */
202 void setCompleted(bool completed ); 208 void setCompleted(bool completed );
203 209
204 /** 210 /**
205 * set if this todo got an end data 211 * set if this todo got an end data
206 */ 212 */
207 void setHasDueDate( bool hasDate ); 213 void setHasDueDate( bool hasDate );
208 // FIXME we do not have these for start, completed 214 // FIXME we do not have these for start, completed
209 // cause we'll use the isNull() of QDate for figuring 215 // cause we'll use the isNull() of QDate for figuring
210 // out if it's has a date... 216 // out if it's has a date...
211 // decide what to do here? -zecke 217 // decide what to do here? -zecke
212 218
213 /** 219 /**
214 * Set the priority of the Todo 220 * Set the priority of the Todo
215 */ 221 */
216 void setPriority(int priority ); 222 void setPriority(int priority );
217 223
218 /** 224 /**
219 * Set the progress. 225 * Set the progress.
220 */ 226 */
221 void setProgress( ushort progress ); 227 void setProgress( ushort progress );
222 228
223 /** 229 /**
224 * set the end date 230 * set the end date
225 */ 231 */
226 void setDueDate( const QDate& date ); 232 void setDueDate( const QDate& date );
227 233
228 /** 234 /**
229 * set the start date 235 * set the start date
230 */ 236 */
231 void setStartDate( const QDate& date ); 237 void setStartDate( const QDate& date );
232 238
233 /** 239 /**
234 * set the completed date 240 * set the completed date
235 */ 241 */
236 void setCompletedDate( const QDate& date ); 242 void setCompletedDate( const QDate& date );
237 243
238 void setRecurrence( const ORecur& ); 244 void setRecurrence( const ORecur& );
239 /** 245 /**
240 * set the alarm time 246 * set the alarm time
241 */ 247 */
242 void setAlarmDateTime ( const QDateTime& alarm ); 248 void setAlarmDateTime ( const QDateTime& alarm );
243 249
244 void setDescription(const QString& ); 250 void setDescription(const QString& );
245 void setSummary(const QString& ); 251 void setSummary(const QString& );
246 252
247 /** 253 /**
248 * set the state of a Todo 254 * set the state of a Todo
249 * @param state State what the todo should take 255 * @param state State what the todo should take
250 */ 256 */
251 void setState( const OPimState& state); 257 void setState( const OPimState& state);
252 258
253 /** 259 /**
254 * set the Maintainer Mode 260 * set the Maintainer Mode
255 */ 261 */
256 void setMaintainer( const OPimMaintainer& ); 262 void setMaintainer( const OPimMaintainer& );
257 263
258 bool isOverdue(); 264 bool isOverdue();
259 265
260 266
261 virtual bool match( const QRegExp &r )const; 267 virtual bool match( const QRegExp &r )const;
262 268
263 bool operator<(const OTodo &toDoEvent )const; 269 bool operator<(const OTodo &toDoEvent )const;
264 bool operator<=(const OTodo &toDoEvent )const; 270 bool operator<=(const OTodo &toDoEvent )const;
265 bool operator!=(const OTodo &toDoEvent )const; 271 bool operator!=(const OTodo &toDoEvent )const;
266 bool operator>(const OTodo &toDoEvent )const; 272 bool operator>(const OTodo &toDoEvent )const;
267 bool operator>=(const OTodo &toDoEvent)const; 273 bool operator>=(const OTodo &toDoEvent)const;
268 bool operator==(const OTodo &toDoEvent )const; 274 bool operator==(const OTodo &toDoEvent )const;
269 OTodo &operator=(const OTodo &toDoEvent ); 275 OTodo &operator=(const OTodo &toDoEvent );
270 276
271 static int rtti(); 277 static int rtti();
272 278
273 private: 279 private:
274 class OTodoPrivate; 280 class OTodoPrivate;
275 struct OTodoData; 281 struct OTodoData;
276 282
277 void deref(); 283 void deref();
278 inline void changeOrModify(); 284 inline void changeOrModify();
279 void copy( OTodoData* src, OTodoData* dest ); 285 void copy( OTodoData* src, OTodoData* dest );
280 OTodoPrivate *d; 286 OTodoPrivate *d;
281 OTodoData *data; 287 OTodoData *data;
diff --git a/libopie2/opiepim/core/opimnotifymanager.cpp b/libopie2/opiepim/core/opimnotifymanager.cpp
index 49af757..06b5987 100644
--- a/libopie2/opiepim/core/opimnotifymanager.cpp
+++ b/libopie2/opiepim/core/opimnotifymanager.cpp
@@ -1,72 +1,74 @@
1#include "opimnotifymanager.h" 1#include "opimnotifymanager.h"
2 2
3OPimNotifyManager::OPimNotifyManager( const Reminders& rem, const Alarms& al) 3OPimNotifyManager::OPimNotifyManager( const Reminders& rem, const Alarms& al)
4 : m_rem( rem ), m_al( al ) 4 : m_rem( rem ), m_al( al )
5{} 5{}
6OPimNotifyManager::~OPimNotifyManager() { 6OPimNotifyManager::~OPimNotifyManager() {
7} 7}
8/* use static_cast and type instead of dynamic... */ 8/* use static_cast and type instead of dynamic... */
9void OPimNotifyManager::add( const OPimNotify& noti) { 9void OPimNotifyManager::add( const OPimNotify& noti) {
10 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 10 if ( noti.type() == QString::fromLatin1("OPimReminder") ) {
11 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 11 const OPimReminder& rem = static_cast<const OPimReminder&>(noti);
12 m_rem.append( rem ); 12 m_rem.append( rem );
13 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { 13 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) {
14 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 14 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti);
15 m_al.append( al ); 15 m_al.append( al );
16 } 16 }
17} 17}
18void OPimNotifyManager::remove( const OPimNotify& noti) { 18void OPimNotifyManager::remove( const OPimNotify& noti) {
19 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 19 if ( noti.type() == QString::fromLatin1("OPimReminder") ) {
20 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 20 const OPimReminder& rem = static_cast<const OPimReminder&>(noti);
21 m_rem.remove( rem ); 21 m_rem.remove( rem );
22 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { 22 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) {
23 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 23 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti);
24 m_al.remove( al ); 24 m_al.remove( al );
25 } 25 }
26} 26}
27void OPimNotifyManager::replace( const OPimNotify& noti) { 27void OPimNotifyManager::replace( const OPimNotify& noti) {
28 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 28 if ( noti.type() == QString::fromLatin1("OPimReminder") ) {
29 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 29 const OPimReminder& rem = static_cast<const OPimReminder&>(noti);
30 m_rem.remove( rem ); 30 m_rem.remove( rem );
31 m_rem.append( rem ); 31 m_rem.append( rem );
32 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { 32 }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) {
33 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 33 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti);
34 m_al.remove( al ); 34 m_al.remove( al );
35 m_al.append( al ); 35 m_al.append( al );
36 } 36 }
37} 37}
38OPimNotifyManager::Reminders OPimNotifyManager::reminders()const { 38OPimNotifyManager::Reminders OPimNotifyManager::reminders()const {
39 return m_rem; 39 return m_rem;
40} 40}
41OPimNotifyManager::Alarms OPimNotifyManager::alarms()const { 41OPimNotifyManager::Alarms OPimNotifyManager::alarms()const {
42 return m_al; 42 return m_al;
43} 43}
44void OPimNotifyManager::setAlarms( const Alarms& al) { 44void OPimNotifyManager::setAlarms( const Alarms& al) {
45 m_al = al; 45 m_al = al;
46} 46}
47void OPimNotifyManager::setReminders( const Reminders& rem) { 47void OPimNotifyManager::setReminders( const Reminders& rem) {
48 m_rem = rem; 48 m_rem = rem;
49} 49}
50/* FIXME!!! */ 50/* FIXME!!! */
51/** 51/**
52 * The idea is to check if the provider for our service 52 * The idea is to check if the provider for our service
53 * is online 53 * is online
54 * if it is we will use QCOP 54 * if it is we will use QCOP
55 * if not the Factory to get the backend... 55 * if not the Factory to get the backend...
56 * Qtopia1.6 services would be kewl to have here.... 56 * Qtopia1.6 services would be kewl to have here....
57 */ 57 */
58void OPimNotifyManager::registerNotify( const OPimNotify& ) { 58void OPimNotifyManager::registerNotify( const OPimNotify& ) {
59 59
60} 60}
61/* FIXME!!! */ 61/* FIXME!!! */
62/** 62/**
63 * same as above... 63 * same as above...
64 * Also implement Url model 64 * Also implement Url model
65 * have a MainWindow.... 65 * have a MainWindow....
66 */ 66 */
67void OPimNotifyManager::deregister( const OPimNotify& ) { 67void OPimNotifyManager::deregister( const OPimNotify& ) {
68 68
69} 69}
70bool OPimNotifyManager::isEmpty()const { 70bool OPimNotifyManager::isEmpty()const {
71 return ( m_rem.isEmpty() && m_al.isEmpty() ); 71 qWarning("is Empty called on OPimNotifyManager %d %d", m_rem.count(), m_al.count() );
72 if ( m_rem.isEmpty() && m_al.isEmpty() ) return true;
73 else return false;
72} 74}
diff --git a/libopie2/opiepim/otodo.cpp b/libopie2/opiepim/otodo.cpp
index f3df119..a29d88e 100644
--- a/libopie2/opiepim/otodo.cpp
+++ b/libopie2/opiepim/otodo.cpp
@@ -205,199 +205,205 @@ void OTodo::setDescription(const QString &desc )
205void OTodo::setSummary( const QString& sum ) 205void OTodo::setSummary( const QString& sum )
206{ 206{
207 changeOrModify(); 207 changeOrModify();
208 data->sum = sum; 208 data->sum = sum;
209} 209}
210void OTodo::setPriority(int prio ) 210void OTodo::setPriority(int prio )
211{ 211{
212 changeOrModify(); 212 changeOrModify();
213 data->priority = prio; 213 data->priority = prio;
214} 214}
215void OTodo::setDueDate( const QDate& date ) 215void OTodo::setDueDate( const QDate& date )
216{ 216{
217 changeOrModify(); 217 changeOrModify();
218 data->date = date; 218 data->date = date;
219} 219}
220void OTodo::setStartDate( const QDate& date ) { 220void OTodo::setStartDate( const QDate& date ) {
221 changeOrModify(); 221 changeOrModify();
222 data->start = date; 222 data->start = date;
223} 223}
224void OTodo::setCompletedDate( const QDate& date ) { 224void OTodo::setCompletedDate( const QDate& date ) {
225 changeOrModify(); 225 changeOrModify();
226 data->completed = date; 226 data->completed = date;
227} 227}
228void OTodo::setState( const OPimState& state ) { 228void OTodo::setState( const OPimState& state ) {
229 changeOrModify(); 229 changeOrModify();
230 if (data->state ) 230 if (data->state )
231 (*data->state) = state; 231 (*data->state) = state;
232 else 232 else
233 data->state = new OPimState( state ); 233 data->state = new OPimState( state );
234} 234}
235void OTodo::setRecurrence( const ORecur& rec) { 235void OTodo::setRecurrence( const ORecur& rec) {
236 changeOrModify(); 236 changeOrModify();
237 if (data->recur ) 237 if (data->recur )
238 (*data->recur) = rec; 238 (*data->recur) = rec;
239 else 239 else
240 data->recur = new ORecur( rec ); 240 data->recur = new ORecur( rec );
241} 241}
242void OTodo::setMaintainer( const OPimMaintainer& pim ) { 242void OTodo::setMaintainer( const OPimMaintainer& pim ) {
243 changeOrModify(); 243 changeOrModify();
244 244
245 if (data->maintainer ) 245 if (data->maintainer )
246 (*data->maintainer) = pim; 246 (*data->maintainer) = pim;
247 else 247 else
248 data->maintainer = new OPimMaintainer( pim ); 248 data->maintainer = new OPimMaintainer( pim );
249} 249}
250bool OTodo::isOverdue( ) 250bool OTodo::isOverdue( )
251{ 251{
252 if( data->hasDate && !data->isCompleted) 252 if( data->hasDate && !data->isCompleted)
253 return QDate::currentDate() > data->date; 253 return QDate::currentDate() > data->date;
254 return false; 254 return false;
255} 255}
256void OTodo::setProgress(ushort progress ) 256void OTodo::setProgress(ushort progress )
257{ 257{
258 changeOrModify(); 258 changeOrModify();
259 data->prog = progress; 259 data->prog = progress;
260} 260}
261QString OTodo::toShortText() const { 261QString OTodo::toShortText() const {
262 return summary(); 262 return summary();
263} 263}
264/*! 264/*!
265 Returns a richt text string 265 Returns a richt text string
266*/ 266*/
267QString OTodo::toRichText() const 267QString OTodo::toRichText() const
268{ 268{
269 QString text; 269 QString text;
270 QStringList catlist; 270 QStringList catlist;
271 271
272 // Description of the todo 272 // Description of the todo
273 if ( !summary().isEmpty() ) { 273 if ( !summary().isEmpty() ) {
274 text += "<b>" + QObject::tr( "Summary:") + "</b><br>"; 274 text += "<b>" + QObject::tr( "Summary:") + "</b><br>";
275 text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; 275 text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>";
276 } 276 }
277 if( !description().isEmpty() ){ 277 if( !description().isEmpty() ){
278 text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; 278 text += "<b>" + QObject::tr( "Description:" ) + "</b><br>";
279 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) ; 279 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) ;
280 } 280 }
281 text += "<br><br><br>"; 281 text += "<br><br><br>";
282 282
283 text += "<b>" + QObject::tr( "Priority:") +" </b>" 283 text += "<b>" + QObject::tr( "Priority:") +" </b>"
284 + QString::number( priority() ) + " <br>"; 284 + QString::number( priority() ) + " <br>";
285 text += "<b>" + QObject::tr( "Progress:") + " </b>" 285 text += "<b>" + QObject::tr( "Progress:") + " </b>"
286 + QString::number( progress() ) + " %<br>"; 286 + QString::number( progress() ) + " %<br>";
287 if (hasDueDate() ){ 287 if (hasDueDate() ){
288 text += "<b>" + QObject::tr( "Deadline:") + " </b>"; 288 text += "<b>" + QObject::tr( "Deadline:") + " </b>";
289 text += dueDate().toString(); 289 text += dueDate().toString();
290 text += "<br>"; 290 text += "<br>";
291 } 291 }
292 292
293 text += "<b>" + QObject::tr( "Category:") + "</b> "; 293 text += "<b>" + QObject::tr( "Category:") + "</b> ";
294 text += categoryNames( "Todo List" ).join(", "); 294 text += categoryNames( "Todo List" ).join(", ");
295 text += "<br>"; 295 text += "<br>";
296 296
297 return text; 297 return text;
298} 298}
299bool OTodo::hasNotifiers()const { 299bool OTodo::hasNotifiers()const {
300 if (!data->notifiers) return false; 300 if (!data->notifiers) return false;
301 return data->notifiers->isEmpty(); 301 return !data->notifiers->isEmpty();
302} 302}
303OPimNotifyManager& OTodo::notifiers() { 303OPimNotifyManager& OTodo::notifiers() {
304 if (!data->notifiers ) 304 if (!data->notifiers )
305 data->notifiers = new OPimNotifyManager; 305 data->notifiers = new OPimNotifyManager;
306 return (*data->notifiers); 306 return (*data->notifiers);
307} 307}
308const OPimNotifyManager& OTodo::notifiers()const{
309 if (!data->notifiers )
310 data->notifiers = new OPimNotifyManager;
311
312 return (*data->notifiers);
313}
308 314
309bool OTodo::operator<( const OTodo &toDoEvent )const{ 315bool OTodo::operator<( const OTodo &toDoEvent )const{
310 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 316 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
311 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 317 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
312 if( hasDueDate() && toDoEvent.hasDueDate() ){ 318 if( hasDueDate() && toDoEvent.hasDueDate() ){
313 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 319 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide
314 return priority() < toDoEvent.priority(); 320 return priority() < toDoEvent.priority();
315 }else{ 321 }else{
316 return dueDate() < toDoEvent.dueDate(); 322 return dueDate() < toDoEvent.dueDate();
317 } 323 }
318 } 324 }
319 return false; 325 return false;
320} 326}
321bool OTodo::operator<=(const OTodo &toDoEvent )const 327bool OTodo::operator<=(const OTodo &toDoEvent )const
322{ 328{
323 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 329 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
324 if( !hasDueDate() && toDoEvent.hasDueDate() ) return true; 330 if( !hasDueDate() && toDoEvent.hasDueDate() ) return true;
325 if( hasDueDate() && toDoEvent.hasDueDate() ){ 331 if( hasDueDate() && toDoEvent.hasDueDate() ){
326 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 332 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide
327 return priority() <= toDoEvent.priority(); 333 return priority() <= toDoEvent.priority();
328 }else{ 334 }else{
329 return dueDate() <= toDoEvent.dueDate(); 335 return dueDate() <= toDoEvent.dueDate();
330 } 336 }
331 } 337 }
332 return true; 338 return true;
333} 339}
334bool OTodo::operator>(const OTodo &toDoEvent )const 340bool OTodo::operator>(const OTodo &toDoEvent )const
335{ 341{
336 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return false; 342 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return false;
337 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 343 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
338 if( hasDueDate() && toDoEvent.hasDueDate() ){ 344 if( hasDueDate() && toDoEvent.hasDueDate() ){
339 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 345 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide
340 return priority() > toDoEvent.priority(); 346 return priority() > toDoEvent.priority();
341 }else{ 347 }else{
342 return dueDate() > toDoEvent.dueDate(); 348 return dueDate() > toDoEvent.dueDate();
343 } 349 }
344 } 350 }
345 return false; 351 return false;
346} 352}
347bool OTodo::operator>=(const OTodo &toDoEvent )const 353bool OTodo::operator>=(const OTodo &toDoEvent )const
348{ 354{
349 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 355 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
350 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 356 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
351 if( hasDueDate() && toDoEvent.hasDueDate() ){ 357 if( hasDueDate() && toDoEvent.hasDueDate() ){
352 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 358 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide
353 return priority() > toDoEvent.priority(); 359 return priority() > toDoEvent.priority();
354 }else{ 360 }else{
355 return dueDate() > toDoEvent.dueDate(); 361 return dueDate() > toDoEvent.dueDate();
356 } 362 }
357 } 363 }
358 return true; 364 return true;
359} 365}
360bool OTodo::operator==(const OTodo &toDoEvent )const 366bool OTodo::operator==(const OTodo &toDoEvent )const
361{ 367{
362 if ( data->priority != toDoEvent.data->priority ) return false; 368 if ( data->priority != toDoEvent.data->priority ) return false;
363 if ( data->priority != toDoEvent.data->prog ) return false; 369 if ( data->priority != toDoEvent.data->prog ) return false;
364 if ( data->isCompleted != toDoEvent.data->isCompleted ) return false; 370 if ( data->isCompleted != toDoEvent.data->isCompleted ) return false;
365 if ( data->hasDate != toDoEvent.data->hasDate ) return false; 371 if ( data->hasDate != toDoEvent.data->hasDate ) return false;
366 if ( data->date != toDoEvent.data->date ) return false; 372 if ( data->date != toDoEvent.data->date ) return false;
367 if ( data->sum != toDoEvent.data->sum ) return false; 373 if ( data->sum != toDoEvent.data->sum ) return false;
368 if ( data->desc != toDoEvent.data->desc ) return false; 374 if ( data->desc != toDoEvent.data->desc ) return false;
369 if ( data->maintainer != toDoEvent.data->maintainer ) 375 if ( data->maintainer != toDoEvent.data->maintainer )
370 return false; 376 return false;
371 377
372 return OPimRecord::operator==( toDoEvent ); 378 return OPimRecord::operator==( toDoEvent );
373} 379}
374void OTodo::deref() { 380void OTodo::deref() {
375 381
376// qWarning("deref in ToDoEvent"); 382// qWarning("deref in ToDoEvent");
377 if ( data->deref() ) { 383 if ( data->deref() ) {
378// qWarning("deleting"); 384// qWarning("deleting");
379 delete data; 385 delete data;
380 data= 0; 386 data= 0;
381 } 387 }
382} 388}
383OTodo &OTodo::operator=(const OTodo &item ) 389OTodo &OTodo::operator=(const OTodo &item )
384{ 390{
385 if ( this == &item ) return *this; 391 if ( this == &item ) return *this;
386 392
387 OPimRecord::operator=( item ); 393 OPimRecord::operator=( item );
388 //qWarning("operator= ref "); 394 //qWarning("operator= ref ");
389 item.data->ref(); 395 item.data->ref();
390 deref(); 396 deref();
391 data = item.data; 397 data = item.data;
392 398
393 return *this; 399 return *this;
394} 400}
395 401
396QMap<int, QString> OTodo::toMap() const { 402QMap<int, QString> OTodo::toMap() const {
397 QMap<int, QString> map; 403 QMap<int, QString> map;
398 404
399 map.insert( Uid, QString::number( uid() ) ); 405 map.insert( Uid, QString::number( uid() ) );
400 map.insert( Category, idsToString( categories() ) ); 406 map.insert( Category, idsToString( categories() ) );
401 map.insert( HasDate, QString::number( data->hasDate ) ); 407 map.insert( HasDate, QString::number( data->hasDate ) );
402 map.insert( Completed, QString::number( data->isCompleted ) ); 408 map.insert( Completed, QString::number( data->isCompleted ) );
403 map.insert( Description, data->desc ); 409 map.insert( Description, data->desc );
diff --git a/libopie2/opiepim/otodo.h b/libopie2/opiepim/otodo.h
index 0e7c73f..4d5ee36 100644
--- a/libopie2/opiepim/otodo.h
+++ b/libopie2/opiepim/otodo.h
@@ -82,200 +82,206 @@ public:
82 82
83 /** 83 /**
84 *destructor 84 *destructor
85 */ 85 */
86 ~OTodo(); 86 ~OTodo();
87 87
88 /** 88 /**
89 * Is this event completed? 89 * Is this event completed?
90 */ 90 */
91 bool isCompleted() const; 91 bool isCompleted() const;
92 92
93 /** 93 /**
94 * Does this Event have a deadline 94 * Does this Event have a deadline
95 */ 95 */
96 bool hasDueDate() const; 96 bool hasDueDate() const;
97 bool hasStartDate()const; 97 bool hasStartDate()const;
98 bool hasCompletedDate()const; 98 bool hasCompletedDate()const;
99 99
100 /** 100 /**
101 * Does this Event has an alarm time ? 101 * Does this Event has an alarm time ?
102 */ 102 */
103 bool hasAlarmDateTime() const; 103 bool hasAlarmDateTime() const;
104 104
105 /** 105 /**
106 * What is the priority? 106 * What is the priority?
107 */ 107 */
108 int priority()const ; 108 int priority()const ;
109 109
110 /** 110 /**
111 * progress as ushort 0, 20, 40, 60, 80 or 100% 111 * progress as ushort 0, 20, 40, 60, 80 or 100%
112 */ 112 */
113 ushort progress() const; 113 ushort progress() const;
114 114
115 /** 115 /**
116 * The due Date 116 * The due Date
117 */ 117 */
118 QDate dueDate()const; 118 QDate dueDate()const;
119 119
120 /** 120 /**
121 * When did it start? 121 * When did it start?
122 */ 122 */
123 QDate startDate()const; 123 QDate startDate()const;
124 124
125 /** 125 /**
126 * When was it completed? 126 * When was it completed?
127 */ 127 */
128 QDate completedDate()const; 128 QDate completedDate()const;
129 129
130 /** 130 /**
131 * does it have a state? 131 * does it have a state?
132 */ 132 */
133 bool hasState()const; 133 bool hasState()const;
134 134
135 /** 135 /**
136 * What is the state of this OTodo? 136 * What is the state of this OTodo?
137 */ 137 */
138 OPimState state()const; 138 OPimState state()const;
139 139
140 /** 140 /**
141 * has recurrence? 141 * has recurrence?
142 */ 142 */
143 bool hasRecurrence()const; 143 bool hasRecurrence()const;
144 144
145 /** 145 /**
146 * the recurrance of this 146 * the recurrance of this
147 */ 147 */
148 ORecur recurrence()const; 148 ORecur recurrence()const;
149 149
150 /** 150 /**
151 * does this OTodo have a maintainer? 151 * does this OTodo have a maintainer?
152 */ 152 */
153 bool hasMaintainer()const; 153 bool hasMaintainer()const;
154 154
155 /** 155 /**
156 * the Maintainer of this OTodo 156 * the Maintainer of this OTodo
157 */ 157 */
158 OPimMaintainer maintainer()const; 158 OPimMaintainer maintainer()const;
159 159
160 /** 160 /**
161 * The description of the todo 161 * The description of the todo
162 */ 162 */
163 QString description()const; 163 QString description()const;
164 164
165 /** 165 /**
166 * A small summary of the todo 166 * A small summary of the todo
167 */ 167 */
168 QString summary() const; 168 QString summary() const;
169 169
170 /** 170 /**
171 * @reimplemented 171 * @reimplemented
172 * Return this todoevent in a RichText formatted QString 172 * Return this todoevent in a RichText formatted QString
173 */ 173 */
174 QString toRichText() const; 174 QString toRichText() const;
175 175
176 bool hasNotifiers()const; 176 bool hasNotifiers()const;
177 /* 177 /*
178 * check if the sharing is still fine!! -zecke 178 * FIXME check if the sharing is still fine!! -zecke
179 * ### CHECK If API is fine
179 */ 180 */
180 /** 181 /**
181 * return a reference to our notifiers... 182 * return a reference to our notifiers...
182 */ 183 */
183 OPimNotifyManager &notifiers(); 184 OPimNotifyManager &notifiers();
184 185
185 /** 186 /**
187 *
188 */
189 const OPimNotifyManager &notifiers()const;
190
191 /**
186 * reimplementations 192 * reimplementations
187 */ 193 */
188 QString type()const; 194 QString type()const;
189 QString toShortText()const; 195 QString toShortText()const;
190 QMap<QString, QString> toExtraMap()const; 196 QMap<QString, QString> toExtraMap()const;
191 QString recordField(int id )const; 197 QString recordField(int id )const;
192 198
193 /** 199 /**
194 * toMap puts all data into the map. int relates 200 * toMap puts all data into the map. int relates
195 * to ToDoEvent RecordFields enum 201 * to ToDoEvent RecordFields enum
196 */ 202 */
197 QMap<int, QString> toMap()const; 203 QMap<int, QString> toMap()const;
198 204
199 /** 205 /**
200 * Set if this Todo is completed 206 * Set if this Todo is completed
201 */ 207 */
202 void setCompleted(bool completed ); 208 void setCompleted(bool completed );
203 209
204 /** 210 /**
205 * set if this todo got an end data 211 * set if this todo got an end data
206 */ 212 */
207 void setHasDueDate( bool hasDate ); 213 void setHasDueDate( bool hasDate );
208 // FIXME we do not have these for start, completed 214 // FIXME we do not have these for start, completed
209 // cause we'll use the isNull() of QDate for figuring 215 // cause we'll use the isNull() of QDate for figuring
210 // out if it's has a date... 216 // out if it's has a date...
211 // decide what to do here? -zecke 217 // decide what to do here? -zecke
212 218
213 /** 219 /**
214 * Set the priority of the Todo 220 * Set the priority of the Todo
215 */ 221 */
216 void setPriority(int priority ); 222 void setPriority(int priority );
217 223
218 /** 224 /**
219 * Set the progress. 225 * Set the progress.
220 */ 226 */
221 void setProgress( ushort progress ); 227 void setProgress( ushort progress );
222 228
223 /** 229 /**
224 * set the end date 230 * set the end date
225 */ 231 */
226 void setDueDate( const QDate& date ); 232 void setDueDate( const QDate& date );
227 233
228 /** 234 /**
229 * set the start date 235 * set the start date
230 */ 236 */
231 void setStartDate( const QDate& date ); 237 void setStartDate( const QDate& date );
232 238
233 /** 239 /**
234 * set the completed date 240 * set the completed date
235 */ 241 */
236 void setCompletedDate( const QDate& date ); 242 void setCompletedDate( const QDate& date );
237 243
238 void setRecurrence( const ORecur& ); 244 void setRecurrence( const ORecur& );
239 /** 245 /**
240 * set the alarm time 246 * set the alarm time
241 */ 247 */
242 void setAlarmDateTime ( const QDateTime& alarm ); 248 void setAlarmDateTime ( const QDateTime& alarm );
243 249
244 void setDescription(const QString& ); 250 void setDescription(const QString& );
245 void setSummary(const QString& ); 251 void setSummary(const QString& );
246 252
247 /** 253 /**
248 * set the state of a Todo 254 * set the state of a Todo
249 * @param state State what the todo should take 255 * @param state State what the todo should take
250 */ 256 */
251 void setState( const OPimState& state); 257 void setState( const OPimState& state);
252 258
253 /** 259 /**
254 * set the Maintainer Mode 260 * set the Maintainer Mode
255 */ 261 */
256 void setMaintainer( const OPimMaintainer& ); 262 void setMaintainer( const OPimMaintainer& );
257 263
258 bool isOverdue(); 264 bool isOverdue();
259 265
260 266
261 virtual bool match( const QRegExp &r )const; 267 virtual bool match( const QRegExp &r )const;
262 268
263 bool operator<(const OTodo &toDoEvent )const; 269 bool operator<(const OTodo &toDoEvent )const;
264 bool operator<=(const OTodo &toDoEvent )const; 270 bool operator<=(const OTodo &toDoEvent )const;
265 bool operator!=(const OTodo &toDoEvent )const; 271 bool operator!=(const OTodo &toDoEvent )const;
266 bool operator>(const OTodo &toDoEvent )const; 272 bool operator>(const OTodo &toDoEvent )const;
267 bool operator>=(const OTodo &toDoEvent)const; 273 bool operator>=(const OTodo &toDoEvent)const;
268 bool operator==(const OTodo &toDoEvent )const; 274 bool operator==(const OTodo &toDoEvent )const;
269 OTodo &operator=(const OTodo &toDoEvent ); 275 OTodo &operator=(const OTodo &toDoEvent );
270 276
271 static int rtti(); 277 static int rtti();
272 278
273 private: 279 private:
274 class OTodoPrivate; 280 class OTodoPrivate;
275 struct OTodoData; 281 struct OTodoData;
276 282
277 void deref(); 283 void deref();
278 inline void changeOrModify(); 284 inline void changeOrModify();
279 void copy( OTodoData* src, OTodoData* dest ); 285 void copy( OTodoData* src, OTodoData* dest );
280 OTodoPrivate *d; 286 OTodoPrivate *d;
281 OTodoData *data; 287 OTodoData *data;