-rw-r--r-- | libopie2/opiepim/core/opimevent.cpp | 263 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimevent.h | 65 |
2 files changed, 0 insertions, 328 deletions
diff --git a/libopie2/opiepim/core/opimevent.cpp b/libopie2/opiepim/core/opimevent.cpp index 1b553d8..cc84426 100644 --- a/libopie2/opiepim/core/opimevent.cpp +++ b/libopie2/opiepim/core/opimevent.cpp | |||
@@ -528,520 +528,257 @@ void OPimEvent::changeOrModify() | |||
528 | data->deref(); | 528 | data->deref(); |
529 | Data* d2 = new Data; | 529 | Data* d2 = new Data; |
530 | d2->description = data->description; | 530 | d2->description = data->description; |
531 | d2->location = data->location; | 531 | d2->location = data->location; |
532 | 532 | ||
533 | if ( data->manager ) | 533 | if ( data->manager ) |
534 | d2->manager = new OPimNotifyManager( *data->manager ); | 534 | d2->manager = new OPimNotifyManager( *data->manager ); |
535 | 535 | ||
536 | if ( data->recur ) | 536 | if ( data->recur ) |
537 | d2->recur = new OPimRecurrence( *data->recur ); | 537 | d2->recur = new OPimRecurrence( *data->recur ); |
538 | 538 | ||
539 | d2->note = data->note; | 539 | d2->note = data->note; |
540 | d2->created = data->created; | 540 | d2->created = data->created; |
541 | d2->start = data->start; | 541 | d2->start = data->start; |
542 | d2->end = data->end; | 542 | d2->end = data->end; |
543 | d2->isAllDay = data->isAllDay; | 543 | d2->isAllDay = data->isAllDay; |
544 | d2->timezone = data->timezone; | 544 | d2->timezone = data->timezone; |
545 | d2->parent = data->parent; | 545 | d2->parent = data->parent; |
546 | 546 | ||
547 | if ( data->child ) | 547 | if ( data->child ) |
548 | { | 548 | { |
549 | d2->child = new QArray<int>( *data->child ); | 549 | d2->child = new QArray<int>( *data->child ); |
550 | d2->child->detach(); | 550 | d2->child->detach(); |
551 | } | 551 | } |
552 | 552 | ||
553 | data = d2; | 553 | data = d2; |
554 | } | 554 | } |
555 | } | 555 | } |
556 | 556 | ||
557 | 557 | ||
558 | void OPimEvent::deref() | 558 | void OPimEvent::deref() |
559 | { | 559 | { |
560 | if ( data->deref() ) | 560 | if ( data->deref() ) |
561 | { | 561 | { |
562 | delete data; | 562 | delete data; |
563 | data = 0; | 563 | data = 0; |
564 | } | 564 | } |
565 | } | 565 | } |
566 | // Exporting Event data to map. Using the same | 566 | // Exporting Event data to map. Using the same |
567 | // encoding as ODateBookAccessBackend_xml does.. | 567 | // encoding as ODateBookAccessBackend_xml does.. |
568 | // Thus, we could remove the stuff there and use this | 568 | // Thus, we could remove the stuff there and use this |
569 | // for it and for all other places.. | 569 | // for it and for all other places.. |
570 | // Encoding should happen at one place, only ! (eilers) | 570 | // Encoding should happen at one place, only ! (eilers) |
571 | QMap<int, QString> OPimEvent::toMap() const | 571 | QMap<int, QString> OPimEvent::toMap() const |
572 | { | 572 | { |
573 | QMap<int, QString> retMap; | 573 | QMap<int, QString> retMap; |
574 | 574 | ||
575 | retMap.insert( OPimEvent::FUid, QString::number( uid() ) ); | 575 | retMap.insert( OPimEvent::FUid, QString::number( uid() ) ); |
576 | retMap.insert( OPimEvent::FCategories, Qtopia::escapeString( Qtopia::Record::idsToString( categories() ) ) ); | 576 | retMap.insert( OPimEvent::FCategories, Qtopia::escapeString( Qtopia::Record::idsToString( categories() ) ) ); |
577 | retMap.insert( OPimEvent::FDescription, Qtopia::escapeString( description() ) ); | 577 | retMap.insert( OPimEvent::FDescription, Qtopia::escapeString( description() ) ); |
578 | retMap.insert( OPimEvent::FLocation, Qtopia::escapeString( location() ) ); | 578 | retMap.insert( OPimEvent::FLocation, Qtopia::escapeString( location() ) ); |
579 | retMap.insert( OPimEvent::FType, isAllDay() ? "AllDay" : "" ); | 579 | retMap.insert( OPimEvent::FType, isAllDay() ? "AllDay" : "" ); |
580 | if ( notifiers().alarms().count() ){ | 580 | if ( notifiers().alarms().count() ){ |
581 | // Currently we just support one alarm.. (eilers) | 581 | // Currently we just support one alarm.. (eilers) |
582 | OPimAlarm alarm = notifiers().alarms() [ 0 ]; | 582 | OPimAlarm alarm = notifiers().alarms() [ 0 ]; |
583 | retMap.insert( OPimEvent::FAlarm, QString::number( alarm.dateTime().secsTo( startDateTime() ) / 60 ) ); | 583 | retMap.insert( OPimEvent::FAlarm, QString::number( alarm.dateTime().secsTo( startDateTime() ) / 60 ) ); |
584 | retMap.insert( OPimEvent::FSound, ( alarm.sound() == OPimAlarm::Loud ) ? "loud" : "silent" ); | 584 | retMap.insert( OPimEvent::FSound, ( alarm.sound() == OPimAlarm::Loud ) ? "loud" : "silent" ); |
585 | } | 585 | } |
586 | 586 | ||
587 | /* either use UTC timeZone or current() if there is was a timezone set */ | 587 | /* either use UTC timeZone or current() if there is was a timezone set */ |
588 | OPimTimeZone zone( (timeZone().isEmpty()||isAllDay()) ? OPimTimeZone::utc() : OPimTimeZone::current() ); | 588 | OPimTimeZone zone( (timeZone().isEmpty()||isAllDay()) ? OPimTimeZone::utc() : OPimTimeZone::current() ); |
589 | retMap.insert( OPimEvent::FStart, QString::number( zone.fromDateTime( startDateTime()))); | 589 | retMap.insert( OPimEvent::FStart, QString::number( zone.fromDateTime( startDateTime()))); |
590 | retMap.insert( OPimEvent::FEnd, QString::number( zone.fromDateTime( endDateTime() ))); | 590 | retMap.insert( OPimEvent::FEnd, QString::number( zone.fromDateTime( endDateTime() ))); |
591 | retMap.insert( OPimEvent::FNote, Qtopia::escapeString( note() ) ); | 591 | retMap.insert( OPimEvent::FNote, Qtopia::escapeString( note() ) ); |
592 | retMap.insert( OPimEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() ); | 592 | retMap.insert( OPimEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() ); |
593 | if ( parent() ) | 593 | if ( parent() ) |
594 | retMap.insert( OPimEvent::FRecParent, QString::number( parent() ) ); | 594 | retMap.insert( OPimEvent::FRecParent, QString::number( parent() ) ); |
595 | if ( children().count() ) | 595 | if ( children().count() ) |
596 | { | 596 | { |
597 | QArray<int> childr = children(); | 597 | QArray<int> childr = children(); |
598 | QString buf; | 598 | QString buf; |
599 | for ( uint i = 0; i < childr.count(); i++ ) | 599 | for ( uint i = 0; i < childr.count(); i++ ) |
600 | { | 600 | { |
601 | if ( i != 0 ) buf += " "; | 601 | if ( i != 0 ) buf += " "; |
602 | buf += QString::number( childr[ i ] ); | 602 | buf += QString::number( childr[ i ] ); |
603 | } | 603 | } |
604 | retMap.insert( OPimEvent::FRecChildren, buf ); | 604 | retMap.insert( OPimEvent::FRecChildren, buf ); |
605 | } | 605 | } |
606 | 606 | ||
607 | // Add recurrence stuff | 607 | // Add recurrence stuff |
608 | if ( hasRecurrence() ) | 608 | if ( hasRecurrence() ) |
609 | { | 609 | { |
610 | OPimRecurrence recur = recurrence(); | 610 | OPimRecurrence recur = recurrence(); |
611 | QMap<int, QString> recFields = recur.toMap(); | 611 | QMap<int, QString> recFields = recur.toMap(); |
612 | retMap.insert( OPimEvent::FRType, recFields[ OPimRecurrence::RType ] ); | 612 | retMap.insert( OPimEvent::FRType, recFields[ OPimRecurrence::RType ] ); |
613 | retMap.insert( OPimEvent::FRWeekdays, recFields[ OPimRecurrence::RWeekdays ] ); | 613 | retMap.insert( OPimEvent::FRWeekdays, recFields[ OPimRecurrence::RWeekdays ] ); |
614 | retMap.insert( OPimEvent::FRPosition, recFields[ OPimRecurrence::RPosition ] ); | 614 | retMap.insert( OPimEvent::FRPosition, recFields[ OPimRecurrence::RPosition ] ); |
615 | retMap.insert( OPimEvent::FRFreq, recFields[ OPimRecurrence::RFreq ] ); | 615 | retMap.insert( OPimEvent::FRFreq, recFields[ OPimRecurrence::RFreq ] ); |
616 | retMap.insert( OPimEvent::FRHasEndDate, recFields[ OPimRecurrence::RHasEndDate ] ); | 616 | retMap.insert( OPimEvent::FRHasEndDate, recFields[ OPimRecurrence::RHasEndDate ] ); |
617 | retMap.insert( OPimEvent::FREndDate, recFields[ OPimRecurrence::EndDate ] ); | 617 | retMap.insert( OPimEvent::FREndDate, recFields[ OPimRecurrence::EndDate ] ); |
618 | retMap.insert( OPimEvent::FRCreated, recFields[ OPimRecurrence::Created ] ); | 618 | retMap.insert( OPimEvent::FRCreated, recFields[ OPimRecurrence::Created ] ); |
619 | retMap.insert( OPimEvent::FRExceptions, recFields[ OPimRecurrence::Exceptions ] ); | 619 | retMap.insert( OPimEvent::FRExceptions, recFields[ OPimRecurrence::Exceptions ] ); |
620 | } | 620 | } |
621 | else | 621 | else |
622 | { | 622 | { |
623 | OPimRecurrence recur = recurrence(); | 623 | OPimRecurrence recur = recurrence(); |
624 | QMap<int, QString> recFields = recur.toMap(); | 624 | QMap<int, QString> recFields = recur.toMap(); |
625 | retMap.insert( OPimEvent::FRType, recFields[ OPimRecurrence::RType ] ); | 625 | retMap.insert( OPimEvent::FRType, recFields[ OPimRecurrence::RType ] ); |
626 | } | 626 | } |
627 | 627 | ||
628 | return retMap; | 628 | return retMap; |
629 | } | 629 | } |
630 | 630 | ||
631 | 631 | ||
632 | void OPimEvent::fromMap( const QMap<int, QString>& map ) | 632 | void OPimEvent::fromMap( const QMap<int, QString>& map ) |
633 | { | 633 | { |
634 | 634 | ||
635 | // We just want to set the UID if it is really stored. | 635 | // We just want to set the UID if it is really stored. |
636 | if ( !map[ OPimEvent::FUid ].isEmpty() ) | 636 | if ( !map[ OPimEvent::FUid ].isEmpty() ) |
637 | setUid( map[ OPimEvent::FUid ].toInt() ); | 637 | setUid( map[ OPimEvent::FUid ].toInt() ); |
638 | 638 | ||
639 | setCategories( idsFromString( map[ OPimEvent::FCategories ] ) ); | 639 | setCategories( idsFromString( map[ OPimEvent::FCategories ] ) ); |
640 | setDescription( map[ OPimEvent::FDescription ] ); | 640 | setDescription( map[ OPimEvent::FDescription ] ); |
641 | setLocation( map[ OPimEvent::FLocation ] ); | 641 | setLocation( map[ OPimEvent::FLocation ] ); |
642 | 642 | ||
643 | if ( map[ OPimEvent::FType ] == "AllDay" ) | 643 | if ( map[ OPimEvent::FType ] == "AllDay" ) |
644 | setAllDay( true ); | 644 | setAllDay( true ); |
645 | else | 645 | else |
646 | setAllDay( false ); | 646 | setAllDay( false ); |
647 | 647 | ||
648 | if ( !map[ OPimEvent::FTimeZone ].isEmpty() && ( map[ OPimEvent::FTimeZone ] != "None" ) ) | 648 | if ( !map[ OPimEvent::FTimeZone ].isEmpty() && ( map[ OPimEvent::FTimeZone ] != "None" ) ) |
649 | { | 649 | { |
650 | setTimeZone( map[ OPimEvent::FTimeZone ] ); | 650 | setTimeZone( map[ OPimEvent::FTimeZone ] ); |
651 | } | 651 | } |
652 | 652 | ||
653 | time_t start = ( time_t ) map[ OPimEvent::FStart ].toLong(); | 653 | time_t start = ( time_t ) map[ OPimEvent::FStart ].toLong(); |
654 | time_t end = ( time_t ) map[ OPimEvent::FEnd ].toLong(); | 654 | time_t end = ( time_t ) map[ OPimEvent::FEnd ].toLong(); |
655 | 655 | ||
656 | /* AllDay is always in UTC */ | 656 | /* AllDay is always in UTC */ |
657 | if ( isAllDay() ) | 657 | if ( isAllDay() ) |
658 | { | 658 | { |
659 | OPimTimeZone utc = OPimTimeZone::utc(); | 659 | OPimTimeZone utc = OPimTimeZone::utc(); |
660 | setStartDateTime(utc.toDateTime( start ) ); | 660 | setStartDateTime(utc.toDateTime( start ) ); |
661 | setEndDateTime ( utc.toDateTime( end ) ); | 661 | setEndDateTime ( utc.toDateTime( end ) ); |
662 | } | 662 | } |
663 | else { | 663 | else { |
664 | /* to current date time */ | 664 | /* to current date time */ |
665 | OPimTimeZone to_zone( timeZone().isEmpty() ? OPimTimeZone::utc() : OPimTimeZone::current() ); | 665 | OPimTimeZone to_zone( timeZone().isEmpty() ? OPimTimeZone::utc() : OPimTimeZone::current() ); |
666 | 666 | ||
667 | setStartDateTime(to_zone.toDateTime( start)); | 667 | setStartDateTime(to_zone.toDateTime( start)); |
668 | setEndDateTime (to_zone.toDateTime( end)); | 668 | setEndDateTime (to_zone.toDateTime( end)); |
669 | } | 669 | } |
670 | 670 | ||
671 | int alarmTime = -1; | 671 | int alarmTime = -1; |
672 | if ( !map[ OPimEvent::FAlarm ].isEmpty() ) | 672 | if ( !map[ OPimEvent::FAlarm ].isEmpty() ) |
673 | alarmTime = map[ OPimEvent::FAlarm ].toInt(); | 673 | alarmTime = map[ OPimEvent::FAlarm ].toInt(); |
674 | 674 | ||
675 | int sound = ( ( map[ OPimEvent::FSound ] == "loud" ) ? OPimAlarm::Loud : OPimAlarm::Silent ); | 675 | int sound = ( ( map[ OPimEvent::FSound ] == "loud" ) ? OPimAlarm::Loud : OPimAlarm::Silent ); |
676 | if ( ( alarmTime != -1 ) ) | 676 | if ( ( alarmTime != -1 ) ) |
677 | { | 677 | { |
678 | QDateTime dt = startDateTime().addSecs( -1 * alarmTime * 60 ); | 678 | QDateTime dt = startDateTime().addSecs( -1 * alarmTime * 60 ); |
679 | OPimAlarm al( sound , dt ); | 679 | OPimAlarm al( sound , dt ); |
680 | notifiers().add( al ); | 680 | notifiers().add( al ); |
681 | } | 681 | } |
682 | 682 | ||
683 | 683 | ||
684 | if ( !map[ OPimEvent::FNote ].isEmpty() ) | 684 | if ( !map[ OPimEvent::FNote ].isEmpty() ) |
685 | setNote( map[ OPimEvent::FNote ] ); | 685 | setNote( map[ OPimEvent::FNote ] ); |
686 | 686 | ||
687 | if ( !map[ OPimEvent::FRecParent ].isEmpty() ) | 687 | if ( !map[ OPimEvent::FRecParent ].isEmpty() ) |
688 | setParent( map[ OPimEvent::FRecParent ].toInt() ); | 688 | setParent( map[ OPimEvent::FRecParent ].toInt() ); |
689 | 689 | ||
690 | if ( !map[ OPimEvent::FRecChildren ].isEmpty() ) | 690 | if ( !map[ OPimEvent::FRecChildren ].isEmpty() ) |
691 | { | 691 | { |
692 | QStringList list = QStringList::split( ' ', map[ OPimEvent::FRecChildren ] ); | 692 | QStringList list = QStringList::split( ' ', map[ OPimEvent::FRecChildren ] ); |
693 | for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) | 693 | for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) |
694 | { | 694 | { |
695 | addChild( ( *it ).toInt() ); | 695 | addChild( ( *it ).toInt() ); |
696 | } | 696 | } |
697 | } | 697 | } |
698 | 698 | ||
699 | // Fill recurrence stuff and put it directly into the OPimRecurrence-Object using fromMap.. | 699 | // Fill recurrence stuff and put it directly into the OPimRecurrence-Object using fromMap.. |
700 | if ( !map[ OPimEvent::FRType ].isEmpty() ) | 700 | if ( !map[ OPimEvent::FRType ].isEmpty() ) |
701 | { | 701 | { |
702 | QMap<int, QString> recFields; | 702 | QMap<int, QString> recFields; |
703 | recFields.insert( OPimRecurrence::RType, map[ OPimEvent::FRType ] ); | 703 | recFields.insert( OPimRecurrence::RType, map[ OPimEvent::FRType ] ); |
704 | recFields.insert( OPimRecurrence::RWeekdays, map[ OPimEvent::FRWeekdays ] ); | 704 | recFields.insert( OPimRecurrence::RWeekdays, map[ OPimEvent::FRWeekdays ] ); |
705 | recFields.insert( OPimRecurrence::RPosition, map[ OPimEvent::FRPosition ] ); | 705 | recFields.insert( OPimRecurrence::RPosition, map[ OPimEvent::FRPosition ] ); |
706 | recFields.insert( OPimRecurrence::RFreq, map[ OPimEvent::FRFreq ] ); | 706 | recFields.insert( OPimRecurrence::RFreq, map[ OPimEvent::FRFreq ] ); |
707 | recFields.insert( OPimRecurrence::RHasEndDate, map[ OPimEvent::FRHasEndDate ] ); | 707 | recFields.insert( OPimRecurrence::RHasEndDate, map[ OPimEvent::FRHasEndDate ] ); |
708 | recFields.insert( OPimRecurrence::EndDate, map[ OPimEvent::FREndDate ] ); | 708 | recFields.insert( OPimRecurrence::EndDate, map[ OPimEvent::FREndDate ] ); |
709 | recFields.insert( OPimRecurrence::Created, map[ OPimEvent::FRCreated ] ); | 709 | recFields.insert( OPimRecurrence::Created, map[ OPimEvent::FRCreated ] ); |
710 | recFields.insert( OPimRecurrence::Exceptions, map[ OPimEvent::FRExceptions ] ); | 710 | recFields.insert( OPimRecurrence::Exceptions, map[ OPimEvent::FRExceptions ] ); |
711 | OPimRecurrence recur( recFields ); | 711 | OPimRecurrence recur( recFields ); |
712 | setRecurrence( recur ); | 712 | setRecurrence( recur ); |
713 | } | 713 | } |
714 | 714 | ||
715 | } | 715 | } |
716 | 716 | ||
717 | 717 | ||
718 | int OPimEvent::parent() const | 718 | int OPimEvent::parent() const |
719 | { | 719 | { |
720 | return data->parent; | 720 | return data->parent; |
721 | } | 721 | } |
722 | 722 | ||
723 | 723 | ||
724 | void OPimEvent::setParent( int uid ) | 724 | void OPimEvent::setParent( int uid ) |
725 | { | 725 | { |
726 | changeOrModify(); | 726 | changeOrModify(); |
727 | data->parent = uid; | 727 | data->parent = uid; |
728 | } | 728 | } |
729 | 729 | ||
730 | 730 | ||
731 | QArray<int> OPimEvent::children() const | 731 | QArray<int> OPimEvent::children() const |
732 | { | 732 | { |
733 | if ( !data->child ) return QArray<int>(); | 733 | if ( !data->child ) return QArray<int>(); |
734 | else | 734 | else |
735 | return data->child->copy(); | 735 | return data->child->copy(); |
736 | } | 736 | } |
737 | 737 | ||
738 | 738 | ||
739 | void OPimEvent::setChildren( const QArray<int>& arr ) | 739 | void OPimEvent::setChildren( const QArray<int>& arr ) |
740 | { | 740 | { |
741 | changeOrModify(); | 741 | changeOrModify(); |
742 | if ( data->child ) delete data->child; | 742 | if ( data->child ) delete data->child; |
743 | 743 | ||
744 | data->child = new QArray<int>( arr ); | 744 | data->child = new QArray<int>( arr ); |
745 | data->child->detach(); | 745 | data->child->detach(); |
746 | } | 746 | } |
747 | 747 | ||
748 | 748 | ||
749 | void OPimEvent::addChild( int uid ) | 749 | void OPimEvent::addChild( int uid ) |
750 | { | 750 | { |
751 | changeOrModify(); | 751 | changeOrModify(); |
752 | if ( !data->child ) | 752 | if ( !data->child ) |
753 | { | 753 | { |
754 | data->child = new QArray<int>( 1 ); | 754 | data->child = new QArray<int>( 1 ); |
755 | ( *data->child ) [ 0 ] = uid; | 755 | ( *data->child ) [ 0 ] = uid; |
756 | } | 756 | } |
757 | else | 757 | else |
758 | { | 758 | { |
759 | int count = data->child->count(); | 759 | int count = data->child->count(); |
760 | data->child->resize( count + 1 ); | 760 | data->child->resize( count + 1 ); |
761 | ( *data->child ) [ count ] = uid; | 761 | ( *data->child ) [ count ] = uid; |
762 | } | 762 | } |
763 | } | 763 | } |
764 | 764 | ||
765 | 765 | ||
766 | void OPimEvent::removeChild( int uid ) | 766 | void OPimEvent::removeChild( int uid ) |
767 | { | 767 | { |
768 | if ( !data->child || !data->child->contains( uid ) ) return ; | 768 | if ( !data->child || !data->child->contains( uid ) ) return ; |
769 | changeOrModify(); | 769 | changeOrModify(); |
770 | QArray<int> newAr( data->child->count() - 1 ); | 770 | QArray<int> newAr( data->child->count() - 1 ); |
771 | int j = 0; | 771 | int j = 0; |
772 | uint count = data->child->count(); | 772 | uint count = data->child->count(); |
773 | for ( uint i = 0; i < count; i++ ) | 773 | for ( uint i = 0; i < count; i++ ) |
774 | { | 774 | { |
775 | if ( ( *data->child ) [ i ] != uid ) | 775 | if ( ( *data->child ) [ i ] != uid ) |
776 | { | 776 | { |
777 | newAr[ j ] = ( *data->child ) [ i ]; | 777 | newAr[ j ] = ( *data->child ) [ i ]; |
778 | j++; | 778 | j++; |
779 | } | 779 | } |
780 | } | 780 | } |
781 | ( *data->child ) = newAr; | 781 | ( *data->child ) = newAr; |
782 | } | 782 | } |
783 | 783 | ||
784 | |||
785 | struct OEffectiveEvent::Data : public QShared | ||
786 | { | ||
787 | Data() : QShared() | ||
788 | {} | ||
789 | OPimEvent event; | ||
790 | QDate date; | ||
791 | QTime start, end; | ||
792 | QDate startDate, endDate; | ||
793 | bool dates : 1; | ||
794 | }; | ||
795 | |||
796 | |||
797 | OEffectiveEvent::OEffectiveEvent() | ||
798 | { | ||
799 | data = new Data; | ||
800 | data->date = QDate::currentDate(); | ||
801 | data->start = data->end = QTime::currentTime(); | ||
802 | data->dates = false; | ||
803 | } | ||
804 | |||
805 | |||
806 | OEffectiveEvent::OEffectiveEvent( const OPimEvent& ev, const QDate& startDate, | ||
807 | Position pos ) | ||
808 | { | ||
809 | data = new Data; | ||
810 | data->event = ev; | ||
811 | data->date = startDate; | ||
812 | if ( pos & Start ) | ||
813 | data->start = ev.startDateTime().time(); | ||
814 | else | ||
815 | data->start = QTime( 0, 0, 0 ); | ||
816 | |||
817 | if ( pos & End ) | ||
818 | data->end = ev.endDateTime().time(); | ||
819 | else | ||
820 | data->end = QTime( 23, 59, 59 ); | ||
821 | |||
822 | data->dates = false; | ||
823 | } | ||
824 | |||
825 | |||
826 | OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev ) | ||
827 | { | ||
828 | data = ev.data; | ||
829 | data->ref(); | ||
830 | } | ||
831 | |||
832 | |||
833 | OEffectiveEvent::~OEffectiveEvent() | ||
834 | { | ||
835 | if ( data->deref() ) | ||
836 | { | ||
837 | delete data; | ||
838 | data = 0; | ||
839 | } | ||
840 | } | ||
841 | |||
842 | |||
843 | OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev ) | ||
844 | { | ||
845 | if ( *this == ev ) return * this; | ||
846 | |||
847 | ev.data->ref(); | ||
848 | deref(); | ||
849 | data = ev.data; | ||
850 | |||
851 | return *this; | ||
852 | } | ||
853 | |||
854 | |||
855 | void OEffectiveEvent::setStartTime( const QTime& ti ) | ||
856 | { | ||
857 | changeOrModify(); | ||
858 | data->start = ti; | ||
859 | } | ||
860 | |||
861 | |||
862 | void OEffectiveEvent::setEndTime( const QTime& en ) | ||
863 | { | ||
864 | changeOrModify(); | ||
865 | data->end = en; | ||
866 | } | ||
867 | |||
868 | |||
869 | void OEffectiveEvent::setEvent( const OPimEvent& ev ) | ||
870 | { | ||
871 | changeOrModify(); | ||
872 | data->event = ev; | ||
873 | } | ||
874 | |||
875 | |||
876 | void OEffectiveEvent::setDate( const QDate& da ) | ||
877 | { | ||
878 | changeOrModify(); | ||
879 | data->date = da; | ||
880 | } | ||
881 | |||
882 | |||
883 | void OEffectiveEvent::setEffectiveDates( const QDate& from, | ||
884 | const QDate& to ) | ||
885 | { | ||
886 | if ( !from.isValid() ) | ||
887 | { | ||
888 | data->dates = false; | ||
889 | return ; | ||
890 | } | ||
891 | |||
892 | data->startDate = from; | ||
893 | data->endDate = to; | ||
894 | } | ||
895 | |||
896 | |||
897 | QString OEffectiveEvent::description() const | ||
898 | { | ||
899 | return data->event.description(); | ||
900 | } | ||
901 | |||
902 | |||
903 | QString OEffectiveEvent::location() const | ||
904 | { | ||
905 | return data->event.location(); | ||
906 | } | ||
907 | |||
908 | |||
909 | QString OEffectiveEvent::note() const | ||
910 | { | ||
911 | return data->event.note(); | ||
912 | } | ||
913 | |||
914 | |||
915 | OPimEvent OEffectiveEvent::event() const | ||
916 | { | ||
917 | return data->event; | ||
918 | } | ||
919 | |||
920 | |||
921 | QTime OEffectiveEvent::startTime() const | ||
922 | { | ||
923 | return data->start; | ||
924 | } | ||
925 | |||
926 | |||
927 | QTime OEffectiveEvent::endTime() const | ||
928 | { | ||
929 | return data->end; | ||
930 | } | ||
931 | |||
932 | |||
933 | QDate OEffectiveEvent::date() const | ||
934 | { | ||
935 | return data->date; | ||
936 | } | ||
937 | |||
938 | |||
939 | int OEffectiveEvent::length() const | ||
940 | { | ||
941 | return ( data->end.hour() * 60 - data->start.hour() * 60 ) | ||
942 | + QABS( data->start.minute() - data->end.minute() ); | ||
943 | } | ||
944 | |||
945 | |||
946 | int OEffectiveEvent::size() const | ||
947 | { | ||
948 | return ( data->end.hour() - data->start.hour() ) * 3600 | ||
949 | + ( data->end.minute() - data->start.minute() * 60 | ||
950 | + data->end.second() - data->start.second() ); | ||
951 | } | ||
952 | |||
953 | |||
954 | QDate OEffectiveEvent::startDate() const | ||
955 | { | ||
956 | if ( data->dates ) | ||
957 | return data->startDate; | ||
958 | else if ( data->event.hasRecurrence() ) // single day, since multi-day should have a d pointer | ||
959 | return data->date; | ||
960 | else | ||
961 | return data->event.startDateTime().date(); | ||
962 | } | ||
963 | |||
964 | |||
965 | QDate OEffectiveEvent::endDate() const | ||
966 | { | ||
967 | if ( data->dates ) | ||
968 | return data->endDate; | ||
969 | else if ( data->event.hasRecurrence() ) | ||
970 | return data->date; | ||
971 | else | ||
972 | return data->event.endDateTime().date(); | ||
973 | } | ||
974 | |||
975 | |||
976 | void OEffectiveEvent::deref() | ||
977 | { | ||
978 | if ( data->deref() ) | ||
979 | { | ||
980 | delete data; | ||
981 | data = 0; | ||
982 | } | ||
983 | } | ||
984 | |||
985 | |||
986 | void OEffectiveEvent::changeOrModify() | ||
987 | { | ||
988 | if ( data->count != 1 ) | ||
989 | { | ||
990 | data->deref(); | ||
991 | Data* d2 = new Data; | ||
992 | d2->event = data->event; | ||
993 | d2->date = data->date; | ||
994 | d2->start = data->start; | ||
995 | d2->end = data->end; | ||
996 | d2->startDate = data->startDate; | ||
997 | d2->endDate = data->endDate; | ||
998 | d2->dates = data->dates; | ||
999 | data = d2; | ||
1000 | } | ||
1001 | } | ||
1002 | |||
1003 | |||
1004 | bool OEffectiveEvent::operator<( const OEffectiveEvent &e ) const | ||
1005 | { | ||
1006 | if ( data->date < e.date() ) | ||
1007 | return TRUE; | ||
1008 | if ( data->date == e.date() ) | ||
1009 | return ( startTime() < e.startTime() ); | ||
1010 | else | ||
1011 | return FALSE; | ||
1012 | } | ||
1013 | |||
1014 | |||
1015 | bool OEffectiveEvent::operator<=( const OEffectiveEvent &e ) const | ||
1016 | { | ||
1017 | return ( data->date <= e.date() ); | ||
1018 | } | ||
1019 | |||
1020 | |||
1021 | bool OEffectiveEvent::operator==( const OEffectiveEvent &e ) const | ||
1022 | { | ||
1023 | return ( date() == e.date() | ||
1024 | && startTime() == e.startTime() | ||
1025 | && endTime() == e.endTime() | ||
1026 | && event() == e.event() ); | ||
1027 | } | ||
1028 | |||
1029 | |||
1030 | bool OEffectiveEvent::operator!=( const OEffectiveEvent &e ) const | ||
1031 | { | ||
1032 | return !( *this == e ); | ||
1033 | } | ||
1034 | |||
1035 | |||
1036 | bool OEffectiveEvent::operator>( const OEffectiveEvent &e ) const | ||
1037 | { | ||
1038 | return !( *this <= e ); | ||
1039 | } | ||
1040 | |||
1041 | |||
1042 | bool OEffectiveEvent::operator>= ( const OEffectiveEvent &e ) const | ||
1043 | { | ||
1044 | return !( *this < e ); | ||
1045 | } | ||
1046 | |||
1047 | } | 784 | } |
diff --git a/libopie2/opiepim/core/opimevent.h b/libopie2/opiepim/core/opimevent.h index 32f648f..1d12530 100644 --- a/libopie2/opiepim/core/opimevent.h +++ b/libopie2/opiepim/core/opimevent.h | |||
@@ -1,289 +1,224 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) Stefan Eilers <Eilers.Stefan@epost.de> | 3 | Copyright (C) Stefan Eilers <Eilers.Stefan@epost.de> |
4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> | 4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | // CONTAINS GPLed code of TT | 29 | // CONTAINS GPLed code of TT |
30 | 30 | ||
31 | #ifndef OEVENT_H | 31 | #ifndef OEVENT_H |
32 | #define OEVENT_H | 32 | #define OEVENT_H |
33 | 33 | ||
34 | /* OPIE */ | 34 | /* OPIE */ |
35 | #include <opie2/opimtimezone.h> | 35 | #include <opie2/opimtimezone.h> |
36 | #include <opie2/opimrecord.h> | 36 | #include <opie2/opimrecord.h> |
37 | #include <qpe/recordfields.h> | 37 | #include <qpe/recordfields.h> |
38 | #include <qpe/palmtopuidgen.h> | 38 | #include <qpe/palmtopuidgen.h> |
39 | 39 | ||
40 | /* QT */ | 40 | /* QT */ |
41 | #include <qstring.h> | 41 | #include <qstring.h> |
42 | #include <qdatetime.h> | 42 | #include <qdatetime.h> |
43 | #include <qvaluelist.h> | 43 | #include <qvaluelist.h> |
44 | 44 | ||
45 | namespace Opie | 45 | namespace Opie |
46 | { | 46 | { |
47 | struct OCalendarHelper | 47 | struct OCalendarHelper |
48 | { | 48 | { |
49 | /** calculate the week number of the date */ | 49 | /** calculate the week number of the date */ |
50 | static int week( const QDate& ); | 50 | static int week( const QDate& ); |
51 | /** calculate the occurence of week days since the start of the month */ | 51 | /** calculate the occurence of week days since the start of the month */ |
52 | static int ocurrence( const QDate& ); | 52 | static int ocurrence( const QDate& ); |
53 | 53 | ||
54 | // returns the dayOfWeek for the *first* day it finds (ignores | 54 | // returns the dayOfWeek for the *first* day it finds (ignores |
55 | // any further days!). Returns 1 (Monday) if there isn't any day found | 55 | // any further days!). Returns 1 (Monday) if there isn't any day found |
56 | static int dayOfWeek( char day ); | 56 | static int dayOfWeek( char day ); |
57 | 57 | ||
58 | /** returns the diff of month */ | 58 | /** returns the diff of month */ |
59 | static int monthDiff( const QDate& first, const QDate& second ); | 59 | static int monthDiff( const QDate& first, const QDate& second ); |
60 | 60 | ||
61 | }; | 61 | }; |
62 | 62 | ||
63 | class OPimNotifyManager; | 63 | class OPimNotifyManager; |
64 | class OPimRecurrence; | 64 | class OPimRecurrence; |
65 | 65 | ||
66 | /** | 66 | /** |
67 | * This is the container for all Events. It encapsules all | 67 | * This is the container for all Events. It encapsules all |
68 | * available information for a single Event | 68 | * available information for a single Event |
69 | * @short container for events. | 69 | * @short container for events. |
70 | */ | 70 | */ |
71 | class OPimEvent : public OPimRecord | 71 | class OPimEvent : public OPimRecord |
72 | { | 72 | { |
73 | public: | 73 | public: |
74 | typedef QValueList<OPimEvent> ValueList; | 74 | typedef QValueList<OPimEvent> ValueList; |
75 | /** | 75 | /** |
76 | * RecordFields contain possible attributes | 76 | * RecordFields contain possible attributes |
77 | * used in the Results of toMap().. | 77 | * used in the Results of toMap().. |
78 | */ | 78 | */ |
79 | enum RecordFields { | 79 | enum RecordFields { |
80 | FUid = Qtopia::UID_ID, | 80 | FUid = Qtopia::UID_ID, |
81 | FCategories = Qtopia::CATEGORY_ID, | 81 | FCategories = Qtopia::CATEGORY_ID, |
82 | FDescription /* = 0 Why this ? (eilers) */, | 82 | FDescription /* = 0 Why this ? (eilers) */, |
83 | FLocation, | 83 | FLocation, |
84 | FType, | 84 | FType, |
85 | FAlarm, | 85 | FAlarm, |
86 | FSound, | 86 | FSound, |
87 | FRType, | 87 | FRType, |
88 | FRWeekdays, | 88 | FRWeekdays, |
89 | FRPosition, | 89 | FRPosition, |
90 | FRFreq, | 90 | FRFreq, |
91 | FRHasEndDate, | 91 | FRHasEndDate, |
92 | FREndDate, | 92 | FREndDate, |
93 | FRCreated, | 93 | FRCreated, |
94 | FRExceptions, | 94 | FRExceptions, |
95 | FStart, | 95 | FStart, |
96 | FEnd, | 96 | FEnd, |
97 | FNote, | 97 | FNote, |
98 | FTimeZone, | 98 | FTimeZone, |
99 | FRecParent, | 99 | FRecParent, |
100 | FRecChildren, | 100 | FRecChildren, |
101 | }; | 101 | }; |
102 | 102 | ||
103 | /** | 103 | /** |
104 | * Start with an Empty OPimEvent. UID == 0 means that it is empty | 104 | * Start with an Empty OPimEvent. UID == 0 means that it is empty |
105 | */ | 105 | */ |
106 | OPimEvent( int uid = 0 ); | 106 | OPimEvent( int uid = 0 ); |
107 | 107 | ||
108 | /** | 108 | /** |
109 | * copy c'tor | 109 | * copy c'tor |
110 | */ | 110 | */ |
111 | OPimEvent( const OPimEvent& ); | 111 | OPimEvent( const OPimEvent& ); |
112 | 112 | ||
113 | /** | 113 | /** |
114 | * Create OPimEvent, initialized by map | 114 | * Create OPimEvent, initialized by map |
115 | * @see enum RecordFields | 115 | * @see enum RecordFields |
116 | */ | 116 | */ |
117 | OPimEvent( const QMap<int, QString> map ); | 117 | OPimEvent( const QMap<int, QString> map ); |
118 | ~OPimEvent(); | 118 | ~OPimEvent(); |
119 | OPimEvent &operator=( const OPimEvent& ); | 119 | OPimEvent &operator=( const OPimEvent& ); |
120 | 120 | ||
121 | //@{ | 121 | //@{ |
122 | QString description() const; | 122 | QString description() const; |
123 | void setDescription( const QString& description ); | 123 | void setDescription( const QString& description ); |
124 | 124 | ||
125 | QString location() const; | 125 | QString location() const; |
126 | void setLocation( const QString& loc ); | 126 | void setLocation( const QString& loc ); |
127 | //@} | 127 | //@} |
128 | 128 | ||
129 | //@{ | 129 | //@{ |
130 | bool hasNotifiers() const; | 130 | bool hasNotifiers() const; |
131 | OPimNotifyManager ¬ifiers() const; | 131 | OPimNotifyManager ¬ifiers() const; |
132 | //@} | 132 | //@} |
133 | 133 | ||
134 | //@{ | 134 | //@{ |
135 | OPimRecurrence recurrence() const; | 135 | OPimRecurrence recurrence() const; |
136 | void setRecurrence( const OPimRecurrence& ); | 136 | void setRecurrence( const OPimRecurrence& ); |
137 | bool hasRecurrence() const; | 137 | bool hasRecurrence() const; |
138 | //@} | 138 | //@} |
139 | 139 | ||
140 | //@{ | 140 | //@{ |
141 | QString note() const; | 141 | QString note() const; |
142 | void setNote( const QString& note ); | 142 | void setNote( const QString& note ); |
143 | //@} | 143 | //@} |
144 | 144 | ||
145 | 145 | ||
146 | QDateTime createdDateTime() const; | 146 | QDateTime createdDateTime() const; |
147 | void setCreatedDateTime( const QDateTime& dt ); | 147 | void setCreatedDateTime( const QDateTime& dt ); |
148 | 148 | ||
149 | /** set the date to dt. dt is the QDateTime in localtime */ | 149 | /** set the date to dt. dt is the QDateTime in localtime */ |
150 | void setStartDateTime( const QDateTime& ); | 150 | void setStartDateTime( const QDateTime& ); |
151 | /** returns the datetime in the local timeZone */ | 151 | /** returns the datetime in the local timeZone */ |
152 | QDateTime startDateTime() const; | 152 | QDateTime startDateTime() const; |
153 | 153 | ||
154 | /** returns the start datetime in the current zone */ | 154 | /** returns the start datetime in the current zone */ |
155 | QDateTime startDateTimeInZone() const; | 155 | QDateTime startDateTimeInZone() const; |
156 | 156 | ||
157 | /** in current timezone */ | 157 | /** in current timezone */ |
158 | void setEndDateTime( const QDateTime& ); | 158 | void setEndDateTime( const QDateTime& ); |
159 | /** in current timezone */ | 159 | /** in current timezone */ |
160 | QDateTime endDateTime() const; | 160 | QDateTime endDateTime() const; |
161 | QDateTime endDateTimeInZone() const; | 161 | QDateTime endDateTimeInZone() const; |
162 | 162 | ||
163 | bool isMultipleDay() const; | 163 | bool isMultipleDay() const; |
164 | bool isAllDay() const; | 164 | bool isAllDay() const; |
165 | void setAllDay( bool isAllDay ); | 165 | void setAllDay( bool isAllDay ); |
166 | 166 | ||
167 | /* pin this event to a timezone! FIXME */ | 167 | /* pin this event to a timezone! FIXME */ |
168 | void setTimeZone( const QString& timeZone ); | 168 | void setTimeZone( const QString& timeZone ); |
169 | QString timeZone() const; | 169 | QString timeZone() const; |
170 | 170 | ||
171 | 171 | ||
172 | //@{ | 172 | //@{ |
173 | /** For exception to recurrence here is a list of children... */ | 173 | /** For exception to recurrence here is a list of children... */ |
174 | QArray<int> children() const; | 174 | QArray<int> children() const; |
175 | void setChildren( const QArray<int>& ); | 175 | void setChildren( const QArray<int>& ); |
176 | void addChild( int uid ); | 176 | void addChild( int uid ); |
177 | void removeChild( int uid ); | 177 | void removeChild( int uid ); |
178 | //@} | 178 | //@} |
179 | 179 | ||
180 | /** return the parent OPimEvent */ | 180 | /** return the parent OPimEvent */ |
181 | int parent() const; | 181 | int parent() const; |
182 | void setParent( int uid ); | 182 | void setParent( int uid ); |
183 | 183 | ||
184 | 184 | ||
185 | /* needed reimp */ | 185 | /* needed reimp */ |
186 | //@{ Reimplementations | 186 | //@{ Reimplementations |
187 | virtual bool match( const QRegExp& ) const; | 187 | virtual bool match( const QRegExp& ) const; |
188 | QString toRichText() const; | 188 | QString toRichText() const; |
189 | QString toShortText() const; | 189 | QString toShortText() const; |
190 | QString type() const; | 190 | QString type() const; |
191 | 191 | ||
192 | QMap<int, QString> toMap() const; | 192 | QMap<int, QString> toMap() const; |
193 | void fromMap( const QMap<int, QString>& map ); | 193 | void fromMap( const QMap<int, QString>& map ); |
194 | QString recordField( int ) const; | 194 | QString recordField( int ) const; |
195 | 195 | ||
196 | bool loadFromStream( QDataStream& ); | 196 | bool loadFromStream( QDataStream& ); |
197 | bool saveToStream( QDataStream& ) const; | 197 | bool saveToStream( QDataStream& ) const; |
198 | //@} | 198 | //@} |
199 | 199 | ||
200 | //@{ | 200 | //@{ |
201 | int rtti() const; | 201 | int rtti() const; |
202 | static OPimEvent* safeCast( const OPimRecord* ); | 202 | static OPimEvent* safeCast( const OPimRecord* ); |
203 | //@} | 203 | //@} |
204 | 204 | ||
205 | /* bool operator==( const OPimEvent& ); | 205 | /* bool operator==( const OPimEvent& ); |
206 | bool operator!=( const OPimEvent& ); | 206 | bool operator!=( const OPimEvent& ); |
207 | bool operator<( const OPimEvent& ); | 207 | bool operator<( const OPimEvent& ); |
208 | bool operator<=( const OPimEvent& ); | 208 | bool operator<=( const OPimEvent& ); |
209 | bool operator>( const OPimEvent& ); | 209 | bool operator>( const OPimEvent& ); |
210 | bool operator>=(const OPimEvent& ); | 210 | bool operator>=(const OPimEvent& ); |
211 | */ | 211 | */ |
212 | 212 | ||
213 | private: | 213 | private: |
214 | inline void changeOrModify(); | 214 | inline void changeOrModify(); |
215 | void deref(); | 215 | void deref(); |
216 | struct Data; | 216 | struct Data; |
217 | Data* data; | 217 | Data* data; |
218 | class Private; | 218 | class Private; |
219 | Private* priv; | 219 | Private* priv; |
220 | 220 | ||
221 | }; | 221 | }; |
222 | |||
223 | /** | ||
224 | * AN Event can span through multiple days. We split up a multiday eve | ||
225 | */ | ||
226 | class OEffectiveEvent | ||
227 | { | ||
228 | |||
229 | public: | ||
230 | typedef QValueList<OEffectiveEvent> ValueList; | ||
231 | enum Position { MidWay, Start, End, StartEnd }; | ||
232 | // If we calculate the effective event of a multi-day event | ||
233 | // we have to figure out whether we are at the first day, | ||
234 | // at the end, or anywhere else ("middle"). This is important | ||
235 | // for the start/end times (00:00/23:59) | ||
236 | // MidWay: 00:00 -> 23:59, as we are "in the middle" of a multi- | ||
237 | // day event | ||
238 | // Start: start time -> 23:59 | ||
239 | // End: 00:00 -> end time | ||
240 | // Start | End == StartEnd: for single-day events (default) | ||
241 | // here we draw start time -> end time | ||
242 | OEffectiveEvent(); | ||
243 | OEffectiveEvent( const OPimEvent& event, const QDate& startDate, Position pos = StartEnd ); | ||
244 | OEffectiveEvent( const OEffectiveEvent& ); | ||
245 | OEffectiveEvent &operator=( const OEffectiveEvent& ); | ||
246 | ~OEffectiveEvent(); | ||
247 | |||
248 | void setStartTime( const QTime& ); | ||
249 | void setEndTime( const QTime& ); | ||
250 | void setEvent( const OPimEvent& ); | ||
251 | void setDate( const QDate& ); | ||
252 | |||
253 | void setEffectiveDates( const QDate& from, const QDate& to ); | ||
254 | |||
255 | QString description() const; | ||
256 | QString location() const; | ||
257 | QString note() const; | ||
258 | OPimEvent event() const; | ||
259 | QTime startTime() const; | ||
260 | QTime endTime() const; | ||
261 | QDate date() const; | ||
262 | |||
263 | /* return the length in hours */ | ||
264 | int length() const; | ||
265 | int size() const; | ||
266 | |||
267 | QDate startDate() const; | ||
268 | QDate endDate() const; | ||
269 | |||
270 | bool operator<( const OEffectiveEvent &e ) const; | ||
271 | bool operator<=( const OEffectiveEvent &e ) const; | ||
272 | bool operator==( const OEffectiveEvent &e ) const; | ||
273 | bool operator!=( const OEffectiveEvent &e ) const; | ||
274 | bool operator>( const OEffectiveEvent &e ) const; | ||
275 | bool operator>= ( const OEffectiveEvent &e ) const; | ||
276 | |||
277 | private: | ||
278 | void deref(); | ||
279 | inline void changeOrModify(); | ||
280 | class Private; | ||
281 | Private* priv; | ||
282 | struct Data; | ||
283 | Data* data; | ||
284 | |||
285 | }; | ||
286 | |||
287 | } | 222 | } |
288 | 223 | ||
289 | #endif | 224 | #endif |