author | zecke <zecke> | 2003-02-19 14:33:49 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-02-19 14:33:49 (UTC) |
commit | 5bf8efedcb7cdbf077591cb0a9a46cbe413ad8db (patch) (unidiff) | |
tree | 46fad390578dbfe31dbb09c74bec1a453214531c | |
parent | bd6e39ba0c38070d07c76b67a98d2e3ab3f84cb8 (diff) | |
download | opie-5bf8efedcb7cdbf077591cb0a9a46cbe413ad8db.zip opie-5bf8efedcb7cdbf077591cb0a9a46cbe413ad8db.tar.gz opie-5bf8efedcb7cdbf077591cb0a9a46cbe413ad8db.tar.bz2 |
time_t a long in our case may be < 0
This unfscks birthdays which occur in 1944 and other prior to starting of unix time
-rw-r--r-- | library/backend/event.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/library/backend/event.cpp b/library/backend/event.cpp index eb238a4..0003fe9 100644 --- a/library/backend/event.cpp +++ b/library/backend/event.cpp | |||
@@ -342,532 +342,532 @@ Event::Event( const QMap<int, QString> &map ) | |||
342 | setCategories( idsFromString( map[DatebookCategory] ) ); | 342 | setCategories( idsFromString( map[DatebookCategory] ) ); |
343 | setTimeZone( map[TimeZone] ); | 343 | setTimeZone( map[TimeZone] ); |
344 | setNotes( map[Note] ); | 344 | setNotes( map[Note] ); |
345 | setStart( TimeConversion::fromUTC( map[StartDateTime].toUInt() ) ); | 345 | setStart( TimeConversion::fromUTC( map[StartDateTime].toUInt() ) ); |
346 | setEnd( TimeConversion::fromUTC( map[EndDateTime].toUInt() ) ); | 346 | setEnd( TimeConversion::fromUTC( map[EndDateTime].toUInt() ) ); |
347 | setType( (Event::Type) map[DatebookType].toInt() ); | 347 | setType( (Event::Type) map[DatebookType].toInt() ); |
348 | setAlarm( ( map[HasAlarm] == "1" ? TRUE : FALSE ), map[AlarmTime].toInt(), (Event::SoundTypeChoice)map[SoundType].toInt() ); | 348 | setAlarm( ( map[HasAlarm] == "1" ? TRUE : FALSE ), map[AlarmTime].toInt(), (Event::SoundTypeChoice)map[SoundType].toInt() ); |
349 | Event::RepeatPattern p; | 349 | Event::RepeatPattern p; |
350 | p.type = (Event::RepeatType) map[ RepeatPatternType ].toInt(); | 350 | p.type = (Event::RepeatType) map[ RepeatPatternType ].toInt(); |
351 | p.frequency = map[ RepeatPatternFrequency ].toInt(); | 351 | p.frequency = map[ RepeatPatternFrequency ].toInt(); |
352 | p.position = map[ RepeatPatternPosition ].toInt(); | 352 | p.position = map[ RepeatPatternPosition ].toInt(); |
353 | p.days = map[ RepeatPatternDays ].toInt(); | 353 | p.days = map[ RepeatPatternDays ].toInt(); |
354 | p.hasEndDate = map[ RepeatPatternHasEndDate ].toInt(); | 354 | p.hasEndDate = map[ RepeatPatternHasEndDate ].toInt(); |
355 | p.endDateUTC = map[ RepeatPatternEndDate ].toUInt(); | 355 | p.endDateUTC = map[ RepeatPatternEndDate ].toUInt(); |
356 | setRepeat( p ); | 356 | setRepeat( p ); |
357 | 357 | ||
358 | setUid( map[ DatebookUid ].toInt() ); | 358 | setUid( map[ DatebookUid ].toInt() ); |
359 | } | 359 | } |
360 | 360 | ||
361 | /*! | 361 | /*! |
362 | Destroys an event. | 362 | Destroys an event. |
363 | */ | 363 | */ |
364 | Event::~Event() | 364 | Event::~Event() |
365 | { | 365 | { |
366 | } | 366 | } |
367 | 367 | ||
368 | /*! | 368 | /*! |
369 | \internal | 369 | \internal |
370 | */ | 370 | */ |
371 | int Event::week( const QDate& date ) | 371 | int Event::week( const QDate& date ) |
372 | { | 372 | { |
373 | // Calculates the week this date is in within that | 373 | // Calculates the week this date is in within that |
374 | // month. Equals the "row" is is in in the month view | 374 | // month. Equals the "row" is is in in the month view |
375 | int week = 1; | 375 | int week = 1; |
376 | QDate tmp( date.year(), date.month(), 1 ); | 376 | QDate tmp( date.year(), date.month(), 1 ); |
377 | 377 | ||
378 | if ( date.dayOfWeek() < tmp.dayOfWeek() ) | 378 | if ( date.dayOfWeek() < tmp.dayOfWeek() ) |
379 | ++week; | 379 | ++week; |
380 | 380 | ||
381 | week += ( date.day() - 1 ) / 7; | 381 | week += ( date.day() - 1 ) / 7; |
382 | return week; | 382 | return week; |
383 | } | 383 | } |
384 | 384 | ||
385 | /*! | 385 | /*! |
386 | \internal | 386 | \internal |
387 | */ | 387 | */ |
388 | int Event::occurrence( const QDate& date ) | 388 | int Event::occurrence( const QDate& date ) |
389 | { | 389 | { |
390 | // calculates the number of occurrances of this day of the | 390 | // calculates the number of occurrances of this day of the |
391 | // week till the given date (e.g 3rd Wednesday of the month) | 391 | // week till the given date (e.g 3rd Wednesday of the month) |
392 | return ( date.day() - 1 ) / 7 + 1; | 392 | return ( date.day() - 1 ) / 7 + 1; |
393 | } | 393 | } |
394 | 394 | ||
395 | /*! | 395 | /*! |
396 | \internal | 396 | \internal |
397 | */ | 397 | */ |
398 | int Event::dayOfWeek( char day ) | 398 | int Event::dayOfWeek( char day ) |
399 | { | 399 | { |
400 | int dayOfWeek = 1; | 400 | int dayOfWeek = 1; |
401 | char i = Event::MON; | 401 | char i = Event::MON; |
402 | while ( !( i & day ) && i <= Event::SUN ) { | 402 | while ( !( i & day ) && i <= Event::SUN ) { |
403 | i <<= 1; | 403 | i <<= 1; |
404 | ++dayOfWeek; | 404 | ++dayOfWeek; |
405 | } | 405 | } |
406 | return dayOfWeek; | 406 | return dayOfWeek; |
407 | } | 407 | } |
408 | 408 | ||
409 | /*! | 409 | /*! |
410 | \internal | 410 | \internal |
411 | */ | 411 | */ |
412 | int Event::monthDiff( const QDate& first, const QDate& second ) | 412 | int Event::monthDiff( const QDate& first, const QDate& second ) |
413 | { | 413 | { |
414 | return ( second.year() - first.year() ) * 12 + | 414 | return ( second.year() - first.year() ) * 12 + |
415 | second.month() - first.month(); | 415 | second.month() - first.month(); |
416 | } | 416 | } |
417 | 417 | ||
418 | /*! | 418 | /*! |
419 | \internal | 419 | \internal |
420 | */ | 420 | */ |
421 | QMap<int, QString> Event::toMap() const | 421 | QMap<int, QString> Event::toMap() const |
422 | { | 422 | { |
423 | QMap<int, QString> m; | 423 | QMap<int, QString> m; |
424 | 424 | ||
425 | if ( !description().isEmpty() ) | 425 | if ( !description().isEmpty() ) |
426 | m.insert( DatebookDescription, description() ); | 426 | m.insert( DatebookDescription, description() ); |
427 | if ( !location().isEmpty() ) | 427 | if ( !location().isEmpty() ) |
428 | m.insert ( Location, location() ); | 428 | m.insert ( Location, location() ); |
429 | if ( categories().count() ) | 429 | if ( categories().count() ) |
430 | m.insert ( DatebookCategory, idsToString( categories() ) ); | 430 | m.insert ( DatebookCategory, idsToString( categories() ) ); |
431 | if ( !timeZone().isEmpty() ) | 431 | if ( !timeZone().isEmpty() ) |
432 | m.insert ( TimeZone, timeZone() ); | 432 | m.insert ( TimeZone, timeZone() ); |
433 | if ( !notes().isEmpty() ) | 433 | if ( !notes().isEmpty() ) |
434 | m.insert ( Note, notes() ); | 434 | m.insert ( Note, notes() ); |
435 | 435 | ||
436 | m.insert ( StartDateTime, QString::number( TimeConversion::toUTC( start() ) ) ); | 436 | m.insert ( StartDateTime, QString::number( TimeConversion::toUTC( start() ) ) ); |
437 | m.insert ( EndDateTime, QString::number( TimeConversion::toUTC( end() ) ) ); | 437 | m.insert ( EndDateTime, QString::number( TimeConversion::toUTC( end() ) ) ); |
438 | m.insert ( DatebookType, QString::number( (int)type() ) ); | 438 | m.insert ( DatebookType, QString::number( (int)type() ) ); |
439 | m.insert ( HasAlarm, ( hasAlarm() ? "1" : "0" ) ); | 439 | m.insert ( HasAlarm, ( hasAlarm() ? "1" : "0" ) ); |
440 | m.insert ( SoundType, QString::number( (int)alarmSound() ) ); | 440 | m.insert ( SoundType, QString::number( (int)alarmSound() ) ); |
441 | m.insert ( AlarmTime, QString::number( alarmTime() ) ); | 441 | m.insert ( AlarmTime, QString::number( alarmTime() ) ); |
442 | m.insert ( RepeatPatternType, QString::number( static_cast<int>( repeatPattern().type ) ) ); | 442 | m.insert ( RepeatPatternType, QString::number( static_cast<int>( repeatPattern().type ) ) ); |
443 | m.insert ( RepeatPatternFrequency, QString::number( repeatPattern().frequency ) ); | 443 | m.insert ( RepeatPatternFrequency, QString::number( repeatPattern().frequency ) ); |
444 | m.insert ( RepeatPatternPosition, QString::number( repeatPattern().position ) ); | 444 | m.insert ( RepeatPatternPosition, QString::number( repeatPattern().position ) ); |
445 | m.insert ( RepeatPatternDays, QString::number( repeatPattern().days ) ); | 445 | m.insert ( RepeatPatternDays, QString::number( repeatPattern().days ) ); |
446 | m.insert ( RepeatPatternHasEndDate, QString::number( static_cast<int>( repeatPattern().hasEndDate ) ) ); | 446 | m.insert ( RepeatPatternHasEndDate, QString::number( static_cast<int>( repeatPattern().hasEndDate ) ) ); |
447 | m.insert ( RepeatPatternEndDate, QString::number( repeatPattern().endDateUTC ) ); | 447 | m.insert ( RepeatPatternEndDate, QString::number( repeatPattern().endDateUTC ) ); |
448 | 448 | ||
449 | m.insert( DatebookUid, QString::number( uid()) ); | 449 | m.insert( DatebookUid, QString::number( uid()) ); |
450 | 450 | ||
451 | return m; | 451 | return m; |
452 | } | 452 | } |
453 | 453 | ||
454 | /*! | 454 | /*! |
455 | \internal | 455 | \internal |
456 | */ | 456 | */ |
457 | void Event::setRepeat( const RepeatPattern &p ) | 457 | void Event::setRepeat( const RepeatPattern &p ) |
458 | { | 458 | { |
459 | setRepeat( p.type != NoRepeat, p ); | 459 | setRepeat( p.type != NoRepeat, p ); |
460 | } | 460 | } |
461 | 461 | ||
462 | /*! | 462 | /*! |
463 | Sets the description of the event to \a s. | 463 | Sets the description of the event to \a s. |
464 | */ | 464 | */ |
465 | void Event::setDescription( const QString &s ) | 465 | void Event::setDescription( const QString &s ) |
466 | { | 466 | { |
467 | descript = s; | 467 | descript = s; |
468 | } | 468 | } |
469 | 469 | ||
470 | /*! | 470 | /*! |
471 | Sets the location of the event to \a s. | 471 | Sets the location of the event to \a s. |
472 | */ | 472 | */ |
473 | void Event::setLocation( const QString &s ) | 473 | void Event::setLocation( const QString &s ) |
474 | { | 474 | { |
475 | locat = s; | 475 | locat = s; |
476 | } | 476 | } |
477 | 477 | ||
478 | // void Event::setCategory( const QString &s ) | 478 | // void Event::setCategory( const QString &s ) |
479 | // { | 479 | // { |
480 | // categ = s; | 480 | // categ = s; |
481 | // } | 481 | // } |
482 | 482 | ||
483 | /*! | 483 | /*! |
484 | \internal | 484 | \internal |
485 | */ | 485 | */ |
486 | void Event::setType( Type t ) | 486 | void Event::setType( Type t ) |
487 | { | 487 | { |
488 | typ = t; | 488 | typ = t; |
489 | } | 489 | } |
490 | 490 | ||
491 | /*! | 491 | /*! |
492 | Sets the start date and time of the first or only occurance of this event | 492 | Sets the start date and time of the first or only occurance of this event |
493 | to the date and time \a d. \a d should be in local time. | 493 | to the date and time \a d. \a d should be in local time. |
494 | */ | 494 | */ |
495 | void Event::setStart( const QDateTime &d ) | 495 | void Event::setStart( const QDateTime &d ) |
496 | { | 496 | { |
497 | startUTC = TimeConversion::toUTC( d ); | 497 | startUTC = TimeConversion::toUTC( d ); |
498 | } | 498 | } |
499 | 499 | ||
500 | /*! | 500 | /*! |
501 | \internal | 501 | \internal |
502 | */ | 502 | */ |
503 | void Event::setStart( time_t time ) | 503 | void Event::setStart( time_t time ) |
504 | { | 504 | { |
505 | startUTC = time; | 505 | startUTC = time; |
506 | } | 506 | } |
507 | 507 | ||
508 | /*! | 508 | /*! |
509 | Sets the end date and time of the first or only occurance of this event | 509 | Sets the end date and time of the first or only occurance of this event |
510 | to the date and time \a d. \a d should be in local time. | 510 | to the date and time \a d. \a d should be in local time. |
511 | */ | 511 | */ |
512 | void Event::setEnd( const QDateTime &d ) | 512 | void Event::setEnd( const QDateTime &d ) |
513 | { | 513 | { |
514 | endUTC = TimeConversion::toUTC( d ); | 514 | endUTC = TimeConversion::toUTC( d ); |
515 | } | 515 | } |
516 | 516 | ||
517 | /*! | 517 | /*! |
518 | \internal | 518 | \internal |
519 | */ | 519 | */ |
520 | void Event::setEnd( time_t time ) | 520 | void Event::setEnd( time_t time ) |
521 | { | 521 | { |
522 | endUTC = time; | 522 | endUTC = time; |
523 | } | 523 | } |
524 | 524 | ||
525 | /*! | 525 | /*! |
526 | \internal | 526 | \internal |
527 | */ | 527 | */ |
528 | void Event::setTimeZone( const QString &z ) | 528 | void Event::setTimeZone( const QString &z ) |
529 | { | 529 | { |
530 | tz = z; | 530 | tz = z; |
531 | } | 531 | } |
532 | 532 | ||
533 | /*! | 533 | /*! |
534 | \internal | 534 | \internal |
535 | */ | 535 | */ |
536 | void Event::setAlarm( bool b, int minutes, SoundTypeChoice s ) | 536 | void Event::setAlarm( bool b, int minutes, SoundTypeChoice s ) |
537 | { | 537 | { |
538 | hAlarm = b; | 538 | hAlarm = b; |
539 | aMinutes = minutes; | 539 | aMinutes = minutes; |
540 | aSound = s; | 540 | aSound = s; |
541 | } | 541 | } |
542 | 542 | ||
543 | /*! | 543 | /*! |
544 | \internal | 544 | \internal |
545 | */ | 545 | */ |
546 | void Event::setRepeat( bool b, const RepeatPattern &p ) | 546 | void Event::setRepeat( bool b, const RepeatPattern &p ) |
547 | { | 547 | { |
548 | hRepeat = b; | 548 | hRepeat = b; |
549 | pattern = p; | 549 | pattern = p; |
550 | } | 550 | } |
551 | 551 | ||
552 | /*! | 552 | /*! |
553 | Sets the notes for the event to \a n. | 553 | Sets the notes for the event to \a n. |
554 | */ | 554 | */ |
555 | void Event::setNotes( const QString &n ) | 555 | void Event::setNotes( const QString &n ) |
556 | { | 556 | { |
557 | note = n; | 557 | note = n; |
558 | } | 558 | } |
559 | 559 | ||
560 | /*! | 560 | /*! |
561 | Returns the description of the event. | 561 | Returns the description of the event. |
562 | */ | 562 | */ |
563 | const QString &Event::description() const | 563 | const QString &Event::description() const |
564 | { | 564 | { |
565 | return descript; | 565 | return descript; |
566 | } | 566 | } |
567 | 567 | ||
568 | /*! | 568 | /*! |
569 | Returns the location of the event. | 569 | Returns the location of the event. |
570 | */ | 570 | */ |
571 | const QString &Event::location() const | 571 | const QString &Event::location() const |
572 | { | 572 | { |
573 | return locat; | 573 | return locat; |
574 | } | 574 | } |
575 | 575 | ||
576 | // QString Event::category() const | 576 | // QString Event::category() const |
577 | // { | 577 | // { |
578 | // return categ; | 578 | // return categ; |
579 | // } | 579 | // } |
580 | 580 | ||
581 | /*! | 581 | /*! |
582 | \internal | 582 | \internal |
583 | */ | 583 | */ |
584 | Event::Type Event::type() const | 584 | Event::Type Event::type() const |
585 | { | 585 | { |
586 | return typ; | 586 | return typ; |
587 | } | 587 | } |
588 | /* | 588 | /* |
589 | QDateTime Event::start() const { | 589 | QDateTime Event::start() const { |
590 | return start( TRUE ); | 590 | return start( TRUE ); |
591 | } | 591 | } |
592 | */ | 592 | */ |
593 | /*! | 593 | /*! |
594 | \internal | 594 | \internal |
595 | */ | 595 | */ |
596 | QDateTime Event::start( bool actual ) const | 596 | QDateTime Event::start( bool actual ) const |
597 | { | 597 | { |
598 | QDateTime dt = (startUTC > 0) ? TimeConversion::fromUTC( startUTC ) : QDateTime::currentDateTime(); | 598 | QDateTime dt = TimeConversion::fromUTC( startUTC ); |
599 | 599 | ||
600 | if ( actual && typ == AllDay ) { | 600 | if ( actual && typ == AllDay ) { |
601 | QTime t = dt.time(); | 601 | QTime t = dt.time(); |
602 | t.setHMS( 0, 0, 0 ); | 602 | t.setHMS( 0, 0, 0 ); |
603 | dt.setTime( t ); | 603 | dt.setTime( t ); |
604 | } | 604 | } |
605 | return dt; | 605 | return dt; |
606 | } | 606 | } |
607 | /* | 607 | /* |
608 | QDateTime Event::end() const { | 608 | QDateTime Event::end() const { |
609 | return end( TRUE ); | 609 | return end( TRUE ); |
610 | } | 610 | } |
611 | */ | 611 | */ |
612 | /*! | 612 | /*! |
613 | \internal | 613 | \internal |
614 | */ | 614 | */ |
615 | QDateTime Event::end( bool actual ) const | 615 | QDateTime Event::end( bool actual ) const |
616 | { | 616 | { |
617 | QDateTime dt = (endUTC > 0) ? TimeConversion::fromUTC( endUTC ) : QDateTime::currentDateTime(); | 617 | QDateTime dt = TimeConversion::fromUTC( endUTC ); |
618 | 618 | ||
619 | if ( actual && typ == AllDay ) { | 619 | if ( actual && typ == AllDay ) { |
620 | QTime t = dt.time(); | 620 | QTime t = dt.time(); |
621 | t.setHMS( 23, 59, 59 ); | 621 | t.setHMS( 23, 59, 59 ); |
622 | dt.setTime( t ); | 622 | dt.setTime( t ); |
623 | } | 623 | } |
624 | return dt; | 624 | return dt; |
625 | } | 625 | } |
626 | 626 | ||
627 | /*! | 627 | /*! |
628 | \internal | 628 | \internal |
629 | */ | 629 | */ |
630 | const QString &Event::timeZone() const | 630 | const QString &Event::timeZone() const |
631 | { | 631 | { |
632 | return tz; | 632 | return tz; |
633 | } | 633 | } |
634 | 634 | ||
635 | /*! | 635 | /*! |
636 | \internal | 636 | \internal |
637 | */ | 637 | */ |
638 | bool Event::hasAlarm() const | 638 | bool Event::hasAlarm() const |
639 | { | 639 | { |
640 | return hAlarm; | 640 | return hAlarm; |
641 | } | 641 | } |
642 | 642 | ||
643 | /*! | 643 | /*! |
644 | \internal | 644 | \internal |
645 | */ | 645 | */ |
646 | int Event::alarmTime() const | 646 | int Event::alarmTime() const |
647 | { | 647 | { |
648 | return aMinutes; | 648 | return aMinutes; |
649 | } | 649 | } |
650 | 650 | ||
651 | /*! | 651 | /*! |
652 | Returns the sound type for the alarm of this event. | 652 | Returns the sound type for the alarm of this event. |
653 | */ | 653 | */ |
654 | Event::SoundTypeChoice Event::alarmSound() const | 654 | Event::SoundTypeChoice Event::alarmSound() const |
655 | { | 655 | { |
656 | return aSound; | 656 | return aSound; |
657 | } | 657 | } |
658 | 658 | ||
659 | /*! | 659 | /*! |
660 | \internal | 660 | \internal |
661 | */ | 661 | */ |
662 | bool Event::hasRepeat() const | 662 | bool Event::hasRepeat() const |
663 | { | 663 | { |
664 | return doRepeat(); | 664 | return doRepeat(); |
665 | } | 665 | } |
666 | 666 | ||
667 | /*! | 667 | /*! |
668 | \internal | 668 | \internal |
669 | */ | 669 | */ |
670 | const Event::RepeatPattern &Event::repeatPattern() const | 670 | const Event::RepeatPattern &Event::repeatPattern() const |
671 | { | 671 | { |
672 | return pattern; | 672 | return pattern; |
673 | } | 673 | } |
674 | 674 | ||
675 | /*! | 675 | /*! |
676 | \internal | 676 | \internal |
677 | */ | 677 | */ |
678 | Event::RepeatPattern &Event::repeatPattern() | 678 | Event::RepeatPattern &Event::repeatPattern() |
679 | { | 679 | { |
680 | return pattern; | 680 | return pattern; |
681 | } | 681 | } |
682 | 682 | ||
683 | /*! | 683 | /*! |
684 | Returns the notes for the event. | 684 | Returns the notes for the event. |
685 | */ | 685 | */ |
686 | const QString &Event::notes() const | 686 | const QString &Event::notes() const |
687 | { | 687 | { |
688 | return note; | 688 | return note; |
689 | } | 689 | } |
690 | 690 | ||
691 | /*! | 691 | /*! |
692 | \internal | 692 | \internal |
693 | */ | 693 | */ |
694 | bool Event::operator==( const Event &e ) const | 694 | bool Event::operator==( const Event &e ) const |
695 | { | 695 | { |
696 | if ( uid() && e.uid() == uid() ) | 696 | if ( uid() && e.uid() == uid() ) |
697 | return TRUE; | 697 | return TRUE; |
698 | return ( e.descript == descript && | 698 | return ( e.descript == descript && |
699 | e.locat == locat && | 699 | e.locat == locat && |
700 | e.categ == categ && | 700 | e.categ == categ && |
701 | e.typ == typ && | 701 | e.typ == typ && |
702 | e.startUTC == startUTC && | 702 | e.startUTC == startUTC && |
703 | e.endUTC == endUTC && | 703 | e.endUTC == endUTC && |
704 | e.tz == tz && | 704 | e.tz == tz && |
705 | e.hAlarm == hAlarm && | 705 | e.hAlarm == hAlarm && |
706 | e.aMinutes == aMinutes && | 706 | e.aMinutes == aMinutes && |
707 | e.aSound == aSound && | 707 | e.aSound == aSound && |
708 | e.hRepeat == hRepeat && | 708 | e.hRepeat == hRepeat && |
709 | e.pattern == pattern && | 709 | e.pattern == pattern && |
710 | e.note == note ); | 710 | e.note == note ); |
711 | } | 711 | } |
712 | 712 | ||
713 | /*! | 713 | /*! |
714 | \internal | 714 | \internal |
715 | Appends the contact information to \a buf. | 715 | Appends the contact information to \a buf. |
716 | */ | 716 | */ |
717 | void Event::save( QString& buf ) | 717 | void Event::save( QString& buf ) |
718 | { | 718 | { |
719 | buf += " description=\"" + Qtopia::escapeString(descript) + "\""; | 719 | buf += " description=\"" + Qtopia::escapeString(descript) + "\""; |
720 | if ( !locat.isEmpty() ) | 720 | if ( !locat.isEmpty() ) |
721 | buf += " location=\"" + Qtopia::escapeString(locat) + "\""; | 721 | buf += " location=\"" + Qtopia::escapeString(locat) + "\""; |
722 | // save the categoies differently.... | 722 | // save the categoies differently.... |
723 | QString strCats = idsToString( categories() ); | 723 | QString strCats = idsToString( categories() ); |
724 | buf += " categories=\"" + Qtopia::escapeString(strCats) + "\""; | 724 | buf += " categories=\"" + Qtopia::escapeString(strCats) + "\""; |
725 | buf += " uid=\"" + QString::number( uid() ) + "\""; | 725 | buf += " uid=\"" + QString::number( uid() ) + "\""; |
726 | if ( (Type)typ != Normal ) | 726 | if ( (Type)typ != Normal ) |
727 | buf += " type=\"AllDay\""; | 727 | buf += " type=\"AllDay\""; |
728 | if ( hAlarm ) { | 728 | if ( hAlarm ) { |
729 | buf += " alarm=\"" + QString::number( aMinutes ) + "\" sound=\""; | 729 | buf += " alarm=\"" + QString::number( aMinutes ) + "\" sound=\""; |
730 | if ( aSound == Event::Loud ) | 730 | if ( aSound == Event::Loud ) |
731 | buf += "loud"; | 731 | buf += "loud"; |
732 | else | 732 | else |
733 | buf += "silent"; | 733 | buf += "silent"; |
734 | buf += "\""; | 734 | buf += "\""; |
735 | } | 735 | } |
736 | if ( hRepeat ) | 736 | if ( hRepeat ) |
737 | write( buf, pattern ); | 737 | write( buf, pattern ); |
738 | 738 | ||
739 | buf += " start=\"" | 739 | buf += " start=\"" |
740 | + QString::number( startUTC ) | 740 | + QString::number( startUTC ) |
741 | + "\""; | 741 | + "\""; |
742 | 742 | ||
743 | buf += " end=\"" | 743 | buf += " end=\"" |
744 | + QString::number( endUTC ) | 744 | + QString::number( endUTC ) |
745 | + "\""; | 745 | + "\""; |
746 | 746 | ||
747 | if ( !note.isEmpty() ) | 747 | if ( !note.isEmpty() ) |
748 | buf += " note=\"" + Qtopia::escapeString( note ) + "\""; | 748 | buf += " note=\"" + Qtopia::escapeString( note ) + "\""; |
749 | buf += customToXml(); | 749 | buf += customToXml(); |
750 | } | 750 | } |
751 | 751 | ||
752 | /*! | 752 | /*! |
753 | \internal | 753 | \internal |
754 | */ | 754 | */ |
755 | bool Event::RepeatPattern::operator==( const Event::RepeatPattern &right ) const | 755 | bool Event::RepeatPattern::operator==( const Event::RepeatPattern &right ) const |
756 | { | 756 | { |
757 | // *sigh* | 757 | // *sigh* |
758 | return ( type == right.type | 758 | return ( type == right.type |
759 | && frequency == right.frequency | 759 | && frequency == right.frequency |
760 | && position == right.position | 760 | && position == right.position |
761 | && days == right.days | 761 | && days == right.days |
762 | && hasEndDate == right.hasEndDate | 762 | && hasEndDate == right.hasEndDate |
763 | && endDateUTC == right.endDateUTC | 763 | && endDateUTC == right.endDateUTC |
764 | && createTime == right.createTime ); | 764 | && createTime == right.createTime ); |
765 | } | 765 | } |
766 | 766 | ||
767 | /*! | 767 | /*! |
768 | \class EffectiveEvent | 768 | \class EffectiveEvent |
769 | \brief The EffectiveEvent class the data for a single occurance of an event. | 769 | \brief The EffectiveEvent class the data for a single occurance of an event. |
770 | 770 | ||
771 | This class describes the event for a single occurance of it. For example if | 771 | This class describes the event for a single occurance of it. For example if |
772 | an Event occurs every week, the effective event might represent the third | 772 | an Event occurs every week, the effective event might represent the third |
773 | occurance of this Event. | 773 | occurance of this Event. |
774 | 774 | ||
775 | \ingroup qtopiaemb | 775 | \ingroup qtopiaemb |
776 | \ingroup qtopiadesktop | 776 | \ingroup qtopiadesktop |
777 | \warning This class will be phased out in Qtopia 3.x | 777 | \warning This class will be phased out in Qtopia 3.x |
778 | */ | 778 | */ |
779 | 779 | ||
780 | /*! | 780 | /*! |
781 | \enum EffectiveEvent::Position | 781 | \enum EffectiveEvent::Position |
782 | \internal | 782 | \internal |
783 | */ | 783 | */ |
784 | 784 | ||
785 | /*! | 785 | /*! |
786 | \fn EffectiveEvent &EffectiveEvent::operator=(const EffectiveEvent &) | 786 | \fn EffectiveEvent &EffectiveEvent::operator=(const EffectiveEvent &) |
787 | \internal | 787 | \internal |
788 | */ | 788 | */ |
789 | 789 | ||
790 | class EffectiveEventPrivate | 790 | class EffectiveEventPrivate |
791 | { | 791 | { |
792 | public: | 792 | public: |
793 | //currently the existence of the d pointer means multi-day repeating, | 793 | //currently the existence of the d pointer means multi-day repeating, |
794 | //msut be changed if we use the d pointer for anything else. | 794 | //msut be changed if we use the d pointer for anything else. |
795 | QDate startDate; | 795 | QDate startDate; |
796 | QDate endDate; | 796 | QDate endDate; |
797 | }; | 797 | }; |
798 | 798 | ||
799 | /*! | 799 | /*! |
800 | \internal | 800 | \internal |
801 | */ | 801 | */ |
802 | EffectiveEvent::EffectiveEvent() | 802 | EffectiveEvent::EffectiveEvent() |
803 | { | 803 | { |
804 | mDate = QDate::currentDate(); | 804 | mDate = QDate::currentDate(); |
805 | mStart = mEnd = QTime::currentTime(); | 805 | mStart = mEnd = QTime::currentTime(); |
806 | d = 0; | 806 | d = 0; |
807 | } | 807 | } |
808 | 808 | ||
809 | /*! | 809 | /*! |
810 | \internal | 810 | \internal |
811 | */ | 811 | */ |
812 | EffectiveEvent::EffectiveEvent( const Event &e, const QDate &date, Position pos ) | 812 | EffectiveEvent::EffectiveEvent( const Event &e, const QDate &date, Position pos ) |
813 | { | 813 | { |
814 | mEvent = e; | 814 | mEvent = e; |
815 | mDate = date; | 815 | mDate = date; |
816 | if ( pos & Start ) | 816 | if ( pos & Start ) |
817 | mStart = e.start( TRUE ).time(); | 817 | mStart = e.start( TRUE ).time(); |
818 | else | 818 | else |
819 | mStart = QTime( 0, 0, 0 ); | 819 | mStart = QTime( 0, 0, 0 ); |
820 | 820 | ||
821 | if ( pos & End ) | 821 | if ( pos & End ) |
822 | mEnd = e.end( TRUE ).time(); | 822 | mEnd = e.end( TRUE ).time(); |
823 | else | 823 | else |
824 | mEnd = QTime( 23, 59, 59 ); | 824 | mEnd = QTime( 23, 59, 59 ); |
825 | d = 0; | 825 | d = 0; |
826 | } | 826 | } |
827 | 827 | ||
828 | /*! | 828 | /*! |
829 | \internal | 829 | \internal |
830 | */ | 830 | */ |
831 | EffectiveEvent::~EffectiveEvent() | 831 | EffectiveEvent::~EffectiveEvent() |
832 | { | 832 | { |
833 | delete d; | 833 | delete d; |
834 | } | 834 | } |
835 | 835 | ||
836 | /*! | 836 | /*! |
837 | \internal | 837 | \internal |
838 | */ | 838 | */ |
839 | EffectiveEvent::EffectiveEvent( const EffectiveEvent &e ) | 839 | EffectiveEvent::EffectiveEvent( const EffectiveEvent &e ) |
840 | { | 840 | { |
841 | d = 0; | 841 | d = 0; |
842 | *this = e; | 842 | *this = e; |
843 | } | 843 | } |
844 | 844 | ||
845 | EffectiveEvent& EffectiveEvent::operator=( const EffectiveEvent & e ) | 845 | EffectiveEvent& EffectiveEvent::operator=( const EffectiveEvent & e ) |
846 | { | 846 | { |
847 | if ( &e == this ) | 847 | if ( &e == this ) |
848 | return *this; | 848 | return *this; |
849 | delete d; | 849 | delete d; |
850 | if ( e.d ) { | 850 | if ( e.d ) { |
851 | d = new EffectiveEventPrivate; | 851 | d = new EffectiveEventPrivate; |
852 | d->startDate = e.d->startDate; | 852 | d->startDate = e.d->startDate; |
853 | d->endDate = e.d->endDate; | 853 | d->endDate = e.d->endDate; |
854 | } else { | 854 | } else { |
855 | d = 0; | 855 | d = 0; |
856 | } | 856 | } |
857 | mEvent = e.mEvent; | 857 | mEvent = e.mEvent; |
858 | mDate = e.mDate; | 858 | mDate = e.mDate; |
859 | mStart = e.mStart; | 859 | mStart = e.mStart; |
860 | mEnd = e.mEnd; | 860 | mEnd = e.mEnd; |
861 | 861 | ||
862 | return *this; | 862 | return *this; |
863 | 863 | ||
864 | } | 864 | } |
865 | 865 | ||
866 | // QString EffectiveEvent::category() const | 866 | // QString EffectiveEvent::category() const |
867 | // { | 867 | // { |
868 | // return mEvent.category(); | 868 | // return mEvent.category(); |
869 | // } | 869 | // } |
870 | 870 | ||
871 | /*! | 871 | /*! |
872 | Returns the description of the event for this effective event. | 872 | Returns the description of the event for this effective event. |
873 | */ | 873 | */ |