summaryrefslogtreecommitdiffabout
path: root/libkcal/todo.cpp
authorzautrix <zautrix>2005-02-13 17:05:02 (UTC)
committer zautrix <zautrix>2005-02-13 17:05:02 (UTC)
commit293271fe9e6a9061da329183f8f488d79580f7da (patch) (unidiff)
tree3a0234eabdf58440a484e960b5eef912a63d0056 /libkcal/todo.cpp
parent0a33f91e166747406ca2ccb5819881feeecfdb40 (diff)
downloadkdepimpi-293271fe9e6a9061da329183f8f488d79580f7da.zip
kdepimpi-293271fe9e6a9061da329183f8f488d79580f7da.tar.gz
kdepimpi-293271fe9e6a9061da329183f8f488d79580f7da.tar.bz2
todo rec fixes
Diffstat (limited to 'libkcal/todo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/todo.cpp51
1 files changed, 47 insertions, 4 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index 9c04a7e..1f54c2f 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -266,149 +266,192 @@ void Todo::setStatus(const QString &statStr)
266} 266}
267 267
268void Todo::setStatus(int status) 268void Todo::setStatus(int status)
269{ 269{
270 if (mReadOnly) return; 270 if (mReadOnly) return;
271 mStatus = status; 271 mStatus = status;
272 updated(); 272 updated();
273} 273}
274 274
275int Todo::status() const 275int Todo::status() const
276{ 276{
277 return mStatus; 277 return mStatus;
278} 278}
279 279
280QString Todo::statusStr() const 280QString Todo::statusStr() const
281{ 281{
282 switch(mStatus) { 282 switch(mStatus) {
283 case NEEDS_ACTION: 283 case NEEDS_ACTION:
284 return QString("NEEDS ACTION"); 284 return QString("NEEDS ACTION");
285 break; 285 break;
286 case ACCEPTED: 286 case ACCEPTED:
287 return QString("ACCEPTED"); 287 return QString("ACCEPTED");
288 break; 288 break;
289 case SENT: 289 case SENT:
290 return QString("SENT"); 290 return QString("SENT");
291 break; 291 break;
292 case TENTATIVE: 292 case TENTATIVE:
293 return QString("TENTATIVE"); 293 return QString("TENTATIVE");
294 break; 294 break;
295 case CONFIRMED: 295 case CONFIRMED:
296 return QString("CONFIRMED"); 296 return QString("CONFIRMED");
297 break; 297 break;
298 case DECLINED: 298 case DECLINED:
299 return QString("DECLINED"); 299 return QString("DECLINED");
300 break; 300 break;
301 case COMPLETED: 301 case COMPLETED:
302 return QString("COMPLETED"); 302 return QString("COMPLETED");
303 break; 303 break;
304 case DELEGATED: 304 case DELEGATED:
305 return QString("DELEGATED"); 305 return QString("DELEGATED");
306 break; 306 break;
307 } 307 }
308 return QString(""); 308 return QString("");
309} 309}
310#endif 310#endif
311 311
312bool Todo::isCompleted() const 312bool Todo::isCompleted() const
313{ 313{
314 if (mPercentComplete == 100) return true; 314 if (mPercentComplete == 100) {
315 else return false; 315 return true;
316 }
317 else return false;
316} 318}
317 319
318void Todo::setCompleted(bool completed) 320void Todo::setCompleted(bool completed)
319{ 321{
322 if ( mHasRecurrenceID && completed && mPercentComplete != 100 ) {
323 if ( !setRecurDates() )
324 completed = false;
325 }
320 if (completed) mPercentComplete = 100; 326 if (completed) mPercentComplete = 100;
321 else { 327 else {
322 mPercentComplete = 0; 328 mPercentComplete = 0;
323 mHasCompletedDate = false; 329 mHasCompletedDate = false;
324 } 330 }
325 updated(); 331 updated();
326} 332}
327 333
328QDateTime Todo::completed() const 334QDateTime Todo::completed() const
329{ 335{
330 return mCompleted; 336 return mCompleted;
331} 337}
332 338
333QString Todo::completedStr( bool shortF ) const 339QString Todo::completedStr( bool shortF ) const
334{ 340{
335 return KGlobal::locale()->formatDateTime(mCompleted, shortF); 341 return KGlobal::locale()->formatDateTime(mCompleted, shortF);
336} 342}
337 343
338void Todo::setCompleted(const QDateTime &completed) 344void Todo::setCompleted(const QDateTime &completed)
339{ 345{
340 //qDebug("Todo::setCompleted "); 346 //qDebug("Todo::setCompleted ");
341 if ( mHasCompletedDate ) { 347 if ( mHasCompletedDate ) {
342 // qDebug("has completed data - return "); 348 // qDebug("has completed data - return ");
343 return; 349 return;
344 } 350 }
345 mHasCompletedDate = true; 351 mHasCompletedDate = true;
346 mPercentComplete = 100; 352 mPercentComplete = 100;
347 mCompleted = getEvenTime(completed); 353 mCompleted = getEvenTime(completed);
348 updated(); 354 updated();
349} 355}
350 356
351bool Todo::hasCompletedDate() const 357bool Todo::hasCompletedDate() const
352{ 358{
353 return mHasCompletedDate; 359 return mHasCompletedDate;
354} 360}
355 361
356int Todo::percentComplete() const 362int Todo::percentComplete() const
357{ 363{
358 return mPercentComplete; 364 return mPercentComplete;
359} 365}
360 366bool Todo::setRecurDates()
361void Todo::setPercentComplete(int v)
362{ 367{
368 if ( !mHasRecurrenceID )
369 return true;
370 int secs = mDtStart.secsTo( dtDue() );
371 bool ok;
372 qDebug("--------------------setRecurDates() ");
373 //qDebug("%s %s %s ",mDtStart.toString().latin1(), dtDue().toString().latin1(),mRecurrenceID.toString().latin1() );
374 QDateTime next = getNextOccurence( mRecurrenceID, &ok );
375 if ( ok ) {
376 mRecurrenceID = next;
377 mDtStart = next;
378 setDtDue( next.addSecs( secs ) );
379 if ( QDateTime::currentDateTime() > next)
380 return false;
381 } else {
382 setHasRecurrenceID( false );
383 recurrence()->unsetRecurs();
384 }
385 return true;
386}
387void Todo::setPercentComplete(int v)
388{
389 if ( mHasRecurrenceID && v == 100 && mPercentComplete != 100 ) {
390 if ( !setRecurDates() )
391 v = 0;
392 }
363 mPercentComplete = v; 393 mPercentComplete = v;
364 if ( v != 100 ) 394 if ( v != 100 )
365 mHasCompletedDate = false; 395 mHasCompletedDate = false;
366 updated(); 396 updated();
367} 397}
368QDateTime Todo::getNextAlarmDateTime( bool * ok, int * offset ) const 398QDateTime Todo::getNextAlarmDateTime( bool * ok, int * offset ) const
369{ 399{
370 if ( isCompleted() || ! hasDueDate() || cancelled() ) { 400 if ( isCompleted() || ! hasDueDate() || cancelled() ) {
371 *ok = false; 401 *ok = false;
372 return QDateTime (); 402 return QDateTime ();
373 } 403 }
374 QDateTime incidenceStart; 404 QDateTime incidenceStart;
375 incidenceStart = dtDue(); 405 incidenceStart = dtDue();
376 bool enabled = false; 406 bool enabled = false;
377 Alarm* alarm; 407 Alarm* alarm;
378 int off = 0; 408 int off = 0;
379 QDateTime alarmStart = QDateTime::currentDateTime().addDays( 3650 );; 409 QDateTime alarmStart = QDateTime::currentDateTime().addDays( 3650 );;
380 // if ( QDateTime::currentDateTime() > incidenceStart ){ 410 // if ( QDateTime::currentDateTime() > incidenceStart ){
381// *ok = false; 411// *ok = false;
382// return incidenceStart; 412// return incidenceStart;
383// } 413// }
384 for (QPtrListIterator<Alarm> it(mAlarms); (alarm = it.current()) != 0; ++it) { 414 for (QPtrListIterator<Alarm> it(mAlarms); (alarm = it.current()) != 0; ++it) {
385 if (alarm->enabled()) { 415 if (alarm->enabled()) {
386 if ( alarm->hasTime () ) { 416 if ( alarm->hasTime () ) {
387 if ( alarm->time() < alarmStart ) { 417 if ( alarm->time() < alarmStart ) {
388 alarmStart = alarm->time(); 418 alarmStart = alarm->time();
389 enabled = true; 419 enabled = true;
390 off = alarmStart.secsTo( incidenceStart ); 420 off = alarmStart.secsTo( incidenceStart );
391 } 421 }
392 422
393 } else { 423 } else {
394 int secs = alarm->startOffset().asSeconds(); 424 int secs = alarm->startOffset().asSeconds();
395 if ( incidenceStart.addSecs( secs ) < alarmStart ) { 425 if ( incidenceStart.addSecs( secs ) < alarmStart ) {
396 alarmStart = incidenceStart.addSecs( secs ); 426 alarmStart = incidenceStart.addSecs( secs );
397 enabled = true; 427 enabled = true;
398 off = -secs; 428 off = -secs;
399 } 429 }
400 } 430 }
401 } 431 }
402 } 432 }
403 if ( enabled ) { 433 if ( enabled ) {
404 if ( alarmStart > QDateTime::currentDateTime() ) { 434 if ( alarmStart > QDateTime::currentDateTime() ) {
405 *ok = true; 435 *ok = true;
406 * offset = off; 436 * offset = off;
407 return alarmStart; 437 return alarmStart;
408 } 438 }
409 } 439 }
410 *ok = false; 440 *ok = false;
411 return QDateTime (); 441 return QDateTime ();
412 442
413} 443}
414 444
445void Todo::checkSetCompletedFalse()
446{
447 if ( !hasRecurrenceID() ) {
448 qDebug("ERROR 1 in Todo::checkSetCompletedFalse");
449 }
450 // qDebug("Todo::checkSetCompletedFalse()");
451 //qDebug("%s %s %s ",mDtStart.toString().latin1(), dtDue().toString().latin1(),mRecurrenceID.toString().latin1() );
452 if ( mPercentComplete == 100 && mDtStart == mRecurrenceID && QDateTime::currentDateTime() > mDtStart) {
453 qDebug("%s %s %s ",mDtStart.toString().latin1(), dtDue().toString().latin1(),mRecurrenceID.toString().latin1() );
454 setCompleted( false );
455 qDebug("Todo::checkSetCompletedFalse++++++++++++++++++++++++++++ ");
456 }
457}