summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-03-07 18:08:51 (UTC)
committer zautrix <zautrix>2005-03-07 18:08:51 (UTC)
commit668f49ee87c1b3b51e103ed8bb570a035c96b546 (patch) (unidiff)
tree9310b2a5f19589641c7bab924e87599c021141a1
parent55c82dcc9b3c04c06b4eb73654d2b7f09a2e502c (diff)
downloadkdepimpi-668f49ee87c1b3b51e103ed8bb570a035c96b546.zip
kdepimpi-668f49ee87c1b3b51e103ed8bb570a035c96b546.tar.gz
kdepimpi-668f49ee87c1b3b51e103ed8bb570a035c96b546.tar.bz2
start datetime fix for float
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/incidencebase.cpp4
-rw-r--r--libkcal/todo.cpp4
2 files changed, 6 insertions, 2 deletions
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index 1e99082..b5fe2e6 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -79,257 +79,259 @@ IncidenceBase::~IncidenceBase()
79 79
80bool KCal::operator==( const IncidenceBase& i1, const IncidenceBase& i2 ) 80bool KCal::operator==( const IncidenceBase& i1, const IncidenceBase& i2 )
81{ 81{
82 // do not compare mSyncStatus and mExternalId 82 // do not compare mSyncStatus and mExternalId
83 if( i1.attendees().count() != i2.attendees().count() ) { 83 if( i1.attendees().count() != i2.attendees().count() ) {
84 return false; // no need to check further 84 return false; // no need to check further
85 } 85 }
86 if ( i1.attendees().count() > 0 ) { 86 if ( i1.attendees().count() > 0 ) {
87 Attendee * a1 = i1.attendees().first(), *a2 =i2.attendees().first() ; 87 Attendee * a1 = i1.attendees().first(), *a2 =i2.attendees().first() ;
88 while ( a1 ) { 88 while ( a1 ) {
89 if ( !( (*a1) == (*a2)) ) 89 if ( !( (*a1) == (*a2)) )
90 { 90 {
91 //qDebug("Attendee not equal "); 91 //qDebug("Attendee not equal ");
92 return false; 92 return false;
93 } 93 }
94 a1 = i1.attendees().next(); 94 a1 = i1.attendees().next();
95 a2 = i2.attendees().next(); 95 a2 = i2.attendees().next();
96 } 96 }
97 } 97 }
98 //if ( i1.dtStart() != i2.dtStart() ) 98 //if ( i1.dtStart() != i2.dtStart() )
99 // return false; 99 // return false;
100#if 0 100#if 0
101 qDebug("1 %d ",i1.doesFloat() == i2.doesFloat() ); 101 qDebug("1 %d ",i1.doesFloat() == i2.doesFloat() );
102 qDebug("1 %d ",i1.duration() == i2.duration() ); 102 qDebug("1 %d ",i1.duration() == i2.duration() );
103 qDebug("3 %d ",i1.hasDuration() == i2.hasDuration() ); 103 qDebug("3 %d ",i1.hasDuration() == i2.hasDuration() );
104 qDebug("1 %d ",i1.pilotId() == i2.pilotId() ); 104 qDebug("1 %d ",i1.pilotId() == i2.pilotId() );
105 qDebug("1 %d %d %d",i1.syncStatus() == i2.syncStatus() , i1.syncStatus(),i2.syncStatus() ); 105 qDebug("1 %d %d %d",i1.syncStatus() == i2.syncStatus() , i1.syncStatus(),i2.syncStatus() );
106 qDebug("6 %d ",i1.organizer() == i2.organizer() ); 106 qDebug("6 %d ",i1.organizer() == i2.organizer() );
107 107
108#endif 108#endif
109 if ( i1.hasDuration() == i2.hasDuration() ) { 109 if ( i1.hasDuration() == i2.hasDuration() ) {
110 if ( i1.hasDuration() ) { 110 if ( i1.hasDuration() ) {
111 if ( i1.duration() != i2.duration() ) 111 if ( i1.duration() != i2.duration() )
112 return false; 112 return false;
113 } 113 }
114 } else { 114 } else {
115 return false; 115 return false;
116 } 116 }
117 117
118 return ( i1.organizer() == i2.organizer() && 118 return ( i1.organizer() == i2.organizer() &&
119 // i1.uid() == i2.uid() && 119 // i1.uid() == i2.uid() &&
120 // Don't compare lastModified, otherwise the operator is not 120 // Don't compare lastModified, otherwise the operator is not
121 // of much use. We are not comparing for identity, after all. 121 // of much use. We are not comparing for identity, after all.
122 i1.doesFloat() == i2.doesFloat() && 122 i1.doesFloat() == i2.doesFloat() &&
123 i1.pilotId() == i2.pilotId() );// && i1.syncStatus() == i2.syncStatus() ); 123 i1.pilotId() == i2.pilotId() );// && i1.syncStatus() == i2.syncStatus() );
124 // no need to compare mObserver 124 // no need to compare mObserver
125} 125}
126 126
127 127
128QDateTime IncidenceBase::getEvenTime( QDateTime dt ) 128QDateTime IncidenceBase::getEvenTime( QDateTime dt )
129{ 129{
130 QTime t = dt.time(); 130 QTime t = dt.time();
131 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 131 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) );
132 return dt; 132 return dt;
133} 133}
134 134
135 135
136void IncidenceBase::setUid(const QString &uid) 136void IncidenceBase::setUid(const QString &uid)
137{ 137{
138 mUid = uid; 138 mUid = uid;
139 updated(); 139 updated();
140} 140}
141 141
142QString IncidenceBase::uid() const 142QString IncidenceBase::uid() const
143{ 143{
144 return mUid; 144 return mUid;
145} 145}
146 146
147void IncidenceBase::setLastModified(const QDateTime &lm) 147void IncidenceBase::setLastModified(const QDateTime &lm)
148{ 148{
149 // DON'T! updated() because we call this from 149 // DON'T! updated() because we call this from
150 // Calendar::updateEvent(). 150 // Calendar::updateEvent().
151 mLastModified = getEvenTime(lm); 151 mLastModified = getEvenTime(lm);
152 //qDebug("IncidenceBase::setLastModified %s ",lm.toString().latin1()); 152 //qDebug("IncidenceBase::setLastModified %s ",lm.toString().latin1());
153} 153}
154 154
155QDateTime IncidenceBase::lastModified() const 155QDateTime IncidenceBase::lastModified() const
156{ 156{
157 return mLastModified; 157 return mLastModified;
158} 158}
159 159
160void IncidenceBase::setOrganizer(const QString &o) 160void IncidenceBase::setOrganizer(const QString &o)
161{ 161{
162 // we don't check for readonly here, because it is 162 // we don't check for readonly here, because it is
163 // possible that by setting the organizer we are changing 163 // possible that by setting the organizer we are changing
164 // the event's readonly status... 164 // the event's readonly status...
165 mOrganizer = o; 165 mOrganizer = o;
166 if (mOrganizer.left(7).upper() == "MAILTO:") 166 if (mOrganizer.left(7).upper() == "MAILTO:")
167 mOrganizer = mOrganizer.remove(0,7); 167 mOrganizer = mOrganizer.remove(0,7);
168 168
169 updated(); 169 updated();
170} 170}
171 171
172QString IncidenceBase::organizer() const 172QString IncidenceBase::organizer() const
173{ 173{
174 return mOrganizer; 174 return mOrganizer;
175} 175}
176 176
177void IncidenceBase::setReadOnly( bool readOnly ) 177void IncidenceBase::setReadOnly( bool readOnly )
178{ 178{
179 mReadOnly = readOnly; 179 mReadOnly = readOnly;
180} 180}
181 181
182void IncidenceBase::setDtStart(const QDateTime &dtStart) 182void IncidenceBase::setDtStart(const QDateTime &dtStart)
183{ 183{
184// if (mReadOnly) return; 184// if (mReadOnly) return;
185 mDtStart = getEvenTime(dtStart); 185 mDtStart = getEvenTime(dtStart);
186 updated(); 186 updated();
187} 187}
188 188
189 189
190QDateTime IncidenceBase::dtStart() const 190QDateTime IncidenceBase::dtStart() const
191{ 191{
192 return mDtStart; 192 return mDtStart;
193} 193}
194 194
195QString IncidenceBase::dtStartTimeStr() const 195QString IncidenceBase::dtStartTimeStr() const
196{ 196{
197 return KGlobal::locale()->formatTime(dtStart().time()); 197 return KGlobal::locale()->formatTime(dtStart().time());
198} 198}
199 199
200QString IncidenceBase::dtStartDateStr(bool shortfmt) const 200QString IncidenceBase::dtStartDateStr(bool shortfmt) const
201{ 201{
202 return KGlobal::locale()->formatDate(dtStart().date(),shortfmt); 202 return KGlobal::locale()->formatDate(dtStart().date(),shortfmt);
203} 203}
204 204
205QString IncidenceBase::dtStartStr(bool shortfmt) const 205QString IncidenceBase::dtStartStr(bool shortfmt) const
206{ 206{
207 return KGlobal::locale()->formatDateTime(dtStart(), shortfmt); 207 if ( doesFloat() )
208 return KGlobal::locale()->formatDate(dtStart().date(),shortfmt);
209 return KGlobal::locale()->formatDateTime(dtStart(), shortfmt);
208} 210}
209 211
210 212
211bool IncidenceBase::doesFloat() const 213bool IncidenceBase::doesFloat() const
212{ 214{
213 return mFloats; 215 return mFloats;
214} 216}
215 217
216void IncidenceBase::setFloats(bool f) 218void IncidenceBase::setFloats(bool f)
217{ 219{
218 if (mReadOnly) return; 220 if (mReadOnly) return;
219 mFloats = f; 221 mFloats = f;
220 updated(); 222 updated();
221} 223}
222 224
223 225
224bool IncidenceBase::addAttendee(Attendee *a, bool doupdate) 226bool IncidenceBase::addAttendee(Attendee *a, bool doupdate)
225{ 227{
226 if (mReadOnly) return false; 228 if (mReadOnly) return false;
227 if (a->name().left(7).upper() == "MAILTO:") 229 if (a->name().left(7).upper() == "MAILTO:")
228 a->setName(a->name().remove(0,7)); 230 a->setName(a->name().remove(0,7));
229 231
230 QPtrListIterator<Attendee> qli(mAttendees); 232 QPtrListIterator<Attendee> qli(mAttendees);
231 233
232 qli.toFirst(); 234 qli.toFirst();
233 while (qli) { 235 while (qli) {
234 if (*qli.current() == *a) 236 if (*qli.current() == *a)
235 return false; 237 return false;
236 ++qli; 238 ++qli;
237 } 239 }
238 mAttendees.append(a); 240 mAttendees.append(a);
239 if (doupdate) updated(); 241 if (doupdate) updated();
240 return true; 242 return true;
241} 243}
242 244
243#if 0 245#if 0
244void IncidenceBase::removeAttendee(Attendee *a) 246void IncidenceBase::removeAttendee(Attendee *a)
245{ 247{
246 if (mReadOnly) return; 248 if (mReadOnly) return;
247 mAttendees.removeRef(a); 249 mAttendees.removeRef(a);
248 updated(); 250 updated();
249} 251}
250 252
251void IncidenceBase::removeAttendee(const char *n) 253void IncidenceBase::removeAttendee(const char *n)
252{ 254{
253 Attendee *a; 255 Attendee *a;
254 256
255 if (mReadOnly) return; 257 if (mReadOnly) return;
256 for (a = mAttendees.first(); a; a = mAttendees.next()) 258 for (a = mAttendees.first(); a; a = mAttendees.next())
257 if (a->getName() == n) { 259 if (a->getName() == n) {
258 mAttendees.remove(); 260 mAttendees.remove();
259 break; 261 break;
260 } 262 }
261} 263}
262#endif 264#endif
263 265
264void IncidenceBase::clearAttendees() 266void IncidenceBase::clearAttendees()
265{ 267{
266 if (mReadOnly) return; 268 if (mReadOnly) return;
267 mAttendees.clear(); 269 mAttendees.clear();
268} 270}
269 271
270#if 0 272#if 0
271Attendee *IncidenceBase::getAttendee(const char *n) const 273Attendee *IncidenceBase::getAttendee(const char *n) const
272{ 274{
273 QPtrListIterator<Attendee> qli(mAttendees); 275 QPtrListIterator<Attendee> qli(mAttendees);
274 276
275 qli.toFirst(); 277 qli.toFirst();
276 while (qli) { 278 while (qli) {
277 if (qli.current()->getName() == n) 279 if (qli.current()->getName() == n)
278 return qli.current(); 280 return qli.current();
279 ++qli; 281 ++qli;
280 } 282 }
281 return 0L; 283 return 0L;
282} 284}
283#endif 285#endif
284 286
285Attendee *IncidenceBase::attendeeByMail(const QString &email) 287Attendee *IncidenceBase::attendeeByMail(const QString &email)
286{ 288{
287 QPtrListIterator<Attendee> qli(mAttendees); 289 QPtrListIterator<Attendee> qli(mAttendees);
288 290
289 qli.toFirst(); 291 qli.toFirst();
290 while (qli) { 292 while (qli) {
291 if (qli.current()->email().lower() == email.lower()) 293 if (qli.current()->email().lower() == email.lower())
292 return qli.current(); 294 return qli.current();
293 ++qli; 295 ++qli;
294 } 296 }
295 return 0L; 297 return 0L;
296} 298}
297 299
298Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email) 300Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email)
299{ 301{
300 QPtrListIterator<Attendee> qli(mAttendees); 302 QPtrListIterator<Attendee> qli(mAttendees);
301 303
302 QStringList mails = emails; 304 QStringList mails = emails;
303 if (!email.isEmpty()) { 305 if (!email.isEmpty()) {
304 mails.append(email); 306 mails.append(email);
305 } 307 }
306 qli.toFirst(); 308 qli.toFirst();
307 while (qli) { 309 while (qli) {
308 for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) { 310 for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) {
309 if (qli.current()->email().lower() == (*it).lower()) 311 if (qli.current()->email().lower() == (*it).lower())
310 return qli.current(); 312 return qli.current();
311 } 313 }
312 314
313 ++qli; 315 ++qli;
314 } 316 }
315 return 0L; 317 return 0L;
316} 318}
317 319
318void IncidenceBase::setDuration(int seconds) 320void IncidenceBase::setDuration(int seconds)
319{ 321{
320 mDuration = seconds; 322 mDuration = seconds;
321 setHasDuration(true); 323 setHasDuration(true);
322} 324}
323 325
324int IncidenceBase::duration() const 326int IncidenceBase::duration() const
325{ 327{
326 return mDuration; 328 return mDuration;
327} 329}
328 330
329void IncidenceBase::setHasDuration(bool b) 331void IncidenceBase::setHasDuration(bool b)
330{ 332{
331 mHasDuration = b; 333 mHasDuration = b;
332} 334}
333 335
334bool IncidenceBase::hasDuration() const 336bool IncidenceBase::hasDuration() const
335{ 337{
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index 39d16b6..a496404 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -66,257 +66,259 @@ bool Todo::contains ( Todo* from )
66 if ( !hasStartDate() ) 66 if ( !hasStartDate() )
67 return false; 67 return false;
68 if ( from->dtStart() != dtStart()) 68 if ( from->dtStart() != dtStart())
69 return false; 69 return false;
70 } 70 }
71 if ( from->hasDueDate() ){ 71 if ( from->hasDueDate() ){
72 if ( !hasDueDate() ) 72 if ( !hasDueDate() )
73 return false; 73 return false;
74 if ( from->dtDue() != dtDue()) 74 if ( from->dtDue() != dtDue())
75 return false; 75 return false;
76 } 76 }
77 if ( !from->location().isEmpty() ) 77 if ( !from->location().isEmpty() )
78 if ( !location().startsWith( from->location() ) ) 78 if ( !location().startsWith( from->location() ) )
79 return false; 79 return false;
80 if ( !from->description().isEmpty() ) 80 if ( !from->description().isEmpty() )
81 if ( !description().startsWith( from->description() )) 81 if ( !description().startsWith( from->description() ))
82 return false; 82 return false;
83 if ( from->alarms().count() ) { 83 if ( from->alarms().count() ) {
84 Alarm *a = from->alarms().first(); 84 Alarm *a = from->alarms().first();
85 if ( a->enabled() ){ 85 if ( a->enabled() ){
86 if ( !alarms().count() ) 86 if ( !alarms().count() )
87 return false; 87 return false;
88 Alarm *b = alarms().first(); 88 Alarm *b = alarms().first();
89 if( ! b->enabled() ) 89 if( ! b->enabled() )
90 return false; 90 return false;
91 if ( ! (a->offset() == b->offset() )) 91 if ( ! (a->offset() == b->offset() ))
92 return false; 92 return false;
93 } 93 }
94 } 94 }
95 95
96 QStringList cat = categories(); 96 QStringList cat = categories();
97 QStringList catFrom = from->categories(); 97 QStringList catFrom = from->categories();
98 QString nCat; 98 QString nCat;
99 unsigned int iii; 99 unsigned int iii;
100 for ( iii = 0; iii < catFrom.count();++iii ) { 100 for ( iii = 0; iii < catFrom.count();++iii ) {
101 nCat = catFrom[iii]; 101 nCat = catFrom[iii];
102 if ( !nCat.isEmpty() ) 102 if ( !nCat.isEmpty() )
103 if ( !cat.contains( nCat )) { 103 if ( !cat.contains( nCat )) {
104 return false; 104 return false;
105 } 105 }
106 } 106 }
107 if ( from->isCompleted() ) { 107 if ( from->isCompleted() ) {
108 if ( !isCompleted() ) 108 if ( !isCompleted() )
109 return false; 109 return false;
110 } 110 }
111 if( priority() != from->priority() ) 111 if( priority() != from->priority() )
112 return false; 112 return false;
113 113
114 114
115 return true; 115 return true;
116 116
117} 117}
118bool KCal::operator==( const Todo& t1, const Todo& t2 ) 118bool KCal::operator==( const Todo& t1, const Todo& t2 )
119{ 119{
120 120
121 bool ret = operator==( (const Incidence&)t1, (const Incidence&)t2 ); 121 bool ret = operator==( (const Incidence&)t1, (const Incidence&)t2 );
122 if ( ! ret ) 122 if ( ! ret )
123 return false; 123 return false;
124 if ( t1.hasDueDate() == t2.hasDueDate() ) { 124 if ( t1.hasDueDate() == t2.hasDueDate() ) {
125 if ( t1.hasDueDate() ) { 125 if ( t1.hasDueDate() ) {
126 if ( t1.doesFloat() == t2.doesFloat() ) { 126 if ( t1.doesFloat() == t2.doesFloat() ) {
127 if ( t1.doesFloat() ) { 127 if ( t1.doesFloat() ) {
128 if ( t1.dtDue().date() != t2.dtDue().date() ) 128 if ( t1.dtDue().date() != t2.dtDue().date() )
129 return false; 129 return false;
130 } else 130 } else
131 if ( t1.dtDue() != t2.dtDue() ) 131 if ( t1.dtDue() != t2.dtDue() )
132 return false; 132 return false;
133 } else 133 } else
134 return false;// float != 134 return false;// float !=
135 } 135 }
136 136
137 } else 137 } else
138 return false; 138 return false;
139 if ( t1.percentComplete() != t2.percentComplete() ) 139 if ( t1.percentComplete() != t2.percentComplete() )
140 return false; 140 return false;
141 if ( t1.isCompleted() ) { 141 if ( t1.isCompleted() ) {
142 if ( t1.hasCompletedDate() == t2.hasCompletedDate() ) { 142 if ( t1.hasCompletedDate() == t2.hasCompletedDate() ) {
143 if ( t1.hasCompletedDate() ) { 143 if ( t1.hasCompletedDate() ) {
144 if ( t1.completed() != t2.completed() ) 144 if ( t1.completed() != t2.completed() )
145 return false; 145 return false;
146 } 146 }
147 147
148 } else 148 } else
149 return false; 149 return false;
150 } 150 }
151 return true; 151 return true;
152 152
153} 153}
154 154
155void Todo::setDtDue(const QDateTime &dtDue) 155void Todo::setDtDue(const QDateTime &dtDue)
156{ 156{
157 //int diffsecs = mDtDue.secsTo(dtDue); 157 //int diffsecs = mDtDue.secsTo(dtDue);
158 158
159 /*if (mReadOnly) return; 159 /*if (mReadOnly) return;
160 const QPtrList<Alarm>& alarms = alarms(); 160 const QPtrList<Alarm>& alarms = alarms();
161 for (Alarm* alarm = alarms.first(); alarm; alarm = alarms.next()) { 161 for (Alarm* alarm = alarms.first(); alarm; alarm = alarms.next()) {
162 if (alarm->enabled()) { 162 if (alarm->enabled()) {
163 alarm->setTime(alarm->time().addSecs(diffsecs)); 163 alarm->setTime(alarm->time().addSecs(diffsecs));
164 } 164 }
165 }*/ 165 }*/
166 mDtDue = getEvenTime(dtDue); 166 mDtDue = getEvenTime(dtDue);
167 167
168 //kdDebug(5800) << "setDtDue says date is " << mDtDue.toString() << endl; 168 //kdDebug(5800) << "setDtDue says date is " << mDtDue.toString() << endl;
169 169
170 /*const QPtrList<Alarm>& alarms = alarms(); 170 /*const QPtrList<Alarm>& alarms = alarms();
171 for (Alarm* alarm = alarms.first(); alarm; alarm = alarms.next()) 171 for (Alarm* alarm = alarms.first(); alarm; alarm = alarms.next())
172 alarm->setAlarmStart(mDtDue);*/ 172 alarm->setAlarmStart(mDtDue);*/
173 173
174 updated(); 174 updated();
175} 175}
176 176
177QDateTime Todo::dtDue() const 177QDateTime Todo::dtDue() const
178{ 178{
179 return mDtDue; 179 return mDtDue;
180} 180}
181 181
182QString Todo::dtDueTimeStr() const 182QString Todo::dtDueTimeStr() const
183{ 183{
184 return KGlobal::locale()->formatTime(mDtDue.time()); 184 return KGlobal::locale()->formatTime(mDtDue.time());
185} 185}
186 186
187QString Todo::dtDueDateStr(bool shortfmt) const 187QString Todo::dtDueDateStr(bool shortfmt) const
188{ 188{
189 return KGlobal::locale()->formatDate(mDtDue.date(),shortfmt); 189 return KGlobal::locale()->formatDate(mDtDue.date(),shortfmt);
190} 190}
191 191
192QString Todo::dtDueStr(bool shortfmt) const 192QString Todo::dtDueStr(bool shortfmt) const
193{ 193{
194 return KGlobal::locale()->formatDateTime(mDtDue, shortfmt); 194 if ( doesFloat() )
195 return KGlobal::locale()->formatDate(mDtDue.date(),shortfmt);
196 return KGlobal::locale()->formatDateTime(mDtDue, shortfmt);
195} 197}
196// retval 0 : no found 198// retval 0 : no found
197// 1 : due for date found 199// 1 : due for date found
198// 2 : overdue for date found 200// 2 : overdue for date found
199int Todo::hasDueSubTodoForDate( const QDate & date, bool checkSubtodos ) 201int Todo::hasDueSubTodoForDate( const QDate & date, bool checkSubtodos )
200{ 202{
201 int retval = 0; 203 int retval = 0;
202 if ( isCompleted() ) 204 if ( isCompleted() )
203 return 0; 205 return 0;
204 if ( hasDueDate() ) { 206 if ( hasDueDate() ) {
205 if ( dtDue().date() < date ) 207 if ( dtDue().date() < date )
206 return 2; 208 return 2;
207 // we do not return, because we may find an overdue sub todo 209 // we do not return, because we may find an overdue sub todo
208 if ( dtDue().date() == date ) 210 if ( dtDue().date() == date )
209 retval = 1; 211 retval = 1;
210 } 212 }
211 if ( checkSubtodos ) { 213 if ( checkSubtodos ) {
212 Incidence *aTodo; 214 Incidence *aTodo;
213 for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) { 215 for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) {
214 int ret = ((Todo*)aTodo)->hasDueSubTodoForDate( date ,checkSubtodos ); 216 int ret = ((Todo*)aTodo)->hasDueSubTodoForDate( date ,checkSubtodos );
215 if ( ret == 2 ) 217 if ( ret == 2 )
216 return 2; 218 return 2;
217 if ( ret == 1) 219 if ( ret == 1)
218 retval = 1; 220 retval = 1;
219 } 221 }
220 } 222 }
221 return retval; 223 return retval;
222} 224}
223int Todo::hasDueSubTodo( bool checkSubtodos ) //= true 225int Todo::hasDueSubTodo( bool checkSubtodos ) //= true
224{ 226{
225 return hasDueSubTodoForDate(QDate::currentDate(), checkSubtodos ); 227 return hasDueSubTodoForDate(QDate::currentDate(), checkSubtodos );
226} 228}
227bool Todo::hasDueDate() const 229bool Todo::hasDueDate() const
228{ 230{
229 return mHasDueDate; 231 return mHasDueDate;
230} 232}
231 233
232void Todo::setHasDueDate(bool f) 234void Todo::setHasDueDate(bool f)
233{ 235{
234 if (mReadOnly) return; 236 if (mReadOnly) return;
235 mHasDueDate = f; 237 mHasDueDate = f;
236 updated(); 238 updated();
237} 239}
238 240
239 241
240#if 0 242#if 0
241void Todo::setStatus(const QString &statStr) 243void Todo::setStatus(const QString &statStr)
242{ 244{
243 if (mReadOnly) return; 245 if (mReadOnly) return;
244 QString ss(statStr.upper()); 246 QString ss(statStr.upper());
245 247
246 if (ss == "X-ACTION") 248 if (ss == "X-ACTION")
247 mStatus = NEEDS_ACTION; 249 mStatus = NEEDS_ACTION;
248 else if (ss == "NEEDS ACTION") 250 else if (ss == "NEEDS ACTION")
249 mStatus = NEEDS_ACTION; 251 mStatus = NEEDS_ACTION;
250 else if (ss == "ACCEPTED") 252 else if (ss == "ACCEPTED")
251 mStatus = ACCEPTED; 253 mStatus = ACCEPTED;
252 else if (ss == "SENT") 254 else if (ss == "SENT")
253 mStatus = SENT; 255 mStatus = SENT;
254 else if (ss == "TENTATIVE") 256 else if (ss == "TENTATIVE")
255 mStatus = TENTATIVE; 257 mStatus = TENTATIVE;
256 else if (ss == "CONFIRMED") 258 else if (ss == "CONFIRMED")
257 mStatus = CONFIRMED; 259 mStatus = CONFIRMED;
258 else if (ss == "DECLINED") 260 else if (ss == "DECLINED")
259 mStatus = DECLINED; 261 mStatus = DECLINED;
260 else if (ss == "COMPLETED") 262 else if (ss == "COMPLETED")
261 mStatus = COMPLETED; 263 mStatus = COMPLETED;
262 else if (ss == "DELEGATED") 264 else if (ss == "DELEGATED")
263 mStatus = DELEGATED; 265 mStatus = DELEGATED;
264 266
265 updated(); 267 updated();
266} 268}
267 269
268void Todo::setStatus(int status) 270void Todo::setStatus(int status)
269{ 271{
270 if (mReadOnly) return; 272 if (mReadOnly) return;
271 mStatus = status; 273 mStatus = status;
272 updated(); 274 updated();
273} 275}
274 276
275int Todo::status() const 277int Todo::status() const
276{ 278{
277 return mStatus; 279 return mStatus;
278} 280}
279 281
280QString Todo::statusStr() const 282QString Todo::statusStr() const
281{ 283{
282 switch(mStatus) { 284 switch(mStatus) {
283 case NEEDS_ACTION: 285 case NEEDS_ACTION:
284 return QString("NEEDS ACTION"); 286 return QString("NEEDS ACTION");
285 break; 287 break;
286 case ACCEPTED: 288 case ACCEPTED:
287 return QString("ACCEPTED"); 289 return QString("ACCEPTED");
288 break; 290 break;
289 case SENT: 291 case SENT:
290 return QString("SENT"); 292 return QString("SENT");
291 break; 293 break;
292 case TENTATIVE: 294 case TENTATIVE:
293 return QString("TENTATIVE"); 295 return QString("TENTATIVE");
294 break; 296 break;
295 case CONFIRMED: 297 case CONFIRMED:
296 return QString("CONFIRMED"); 298 return QString("CONFIRMED");
297 break; 299 break;
298 case DECLINED: 300 case DECLINED:
299 return QString("DECLINED"); 301 return QString("DECLINED");
300 break; 302 break;
301 case COMPLETED: 303 case COMPLETED:
302 return QString("COMPLETED"); 304 return QString("COMPLETED");
303 break; 305 break;
304 case DELEGATED: 306 case DELEGATED:
305 return QString("DELEGATED"); 307 return QString("DELEGATED");
306 break; 308 break;
307 } 309 }
308 return QString(""); 310 return QString("");
309} 311}
310#endif 312#endif
311 313
312bool Todo::isCompleted() const 314bool Todo::isCompleted() const
313{ 315{
314 if (mPercentComplete == 100) { 316 if (mPercentComplete == 100) {
315 return true; 317 return true;
316 } 318 }
317 else return false; 319 else return false;
318} 320}
319 321
320void Todo::setCompleted(bool completed) 322void Todo::setCompleted(bool completed)
321{ 323{
322 if ( mHasRecurrenceID && completed && mPercentComplete != 100 ) { 324 if ( mHasRecurrenceID && completed && mPercentComplete != 100 ) {