summaryrefslogtreecommitdiff
path: root/core/pim/datebook/datebookday.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/datebookday.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/datebookday.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/core/pim/datebook/datebookday.cpp b/core/pim/datebook/datebookday.cpp
index 4d64099..751a1da 100644
--- a/core/pim/datebook/datebookday.cpp
+++ b/core/pim/datebook/datebookday.cpp
@@ -750,111 +750,113 @@ void DateBookDayWidget::paintEvent( QPaintEvent *e )
750 d = 20; 750 d = 20;
751 } 751 }
752 752
753 if ( ev.event().hasRepeat() ) { 753 if ( ev.event().hasRepeat() ) {
754 p.drawPixmap( width() - 16, y, Resource::loadPixmap( "repeat" ) ); 754 p.drawPixmap( width() - 16, y, Resource::loadPixmap( "repeat" ) );
755 d = 20; 755 d = 20;
756 y += 20; 756 y += 20;
757 } 757 }
758 758
759 QSimpleRichText rt( text, font() ); 759 QSimpleRichText rt( text, font() );
760 rt.setWidth( geom.width() - d - 6 ); 760 rt.setWidth( geom.width() - d - 6 );
761 rt.draw( &p, 7, 0, e->region(), colorGroup() ); 761 rt.draw( &p, 7, 0, e->region(), colorGroup() );
762} 762}
763 763
764/* 764/*
765 * we need to find the real start date for a uid 765 * we need to find the real start date for a uid
766 * we need to check from one day to another... 766 * we need to check from one day to another...
767 */ 767 */
768QDate DateBookDay::findRealStart( int uid, const QDate& isIncluded , DateBookDB* db) { 768QDate DateBookDay::findRealStart( int uid, const QDate& isIncluded , DateBookDB* db) {
769 QDate dt( isIncluded ); 769 QDate dt( isIncluded );
770 QDate fnd = dt; 770 QDate fnd = dt;
771 771
772 bool doAgain = true; 772 bool doAgain = true;
773 do{ 773 do{
774 dt = dt.addDays( -1 ); 774 dt = dt.addDays( -1 );
775 QValueList<EffectiveEvent> events = db->getEffectiveEvents( dt, dt ); 775 QValueList<EffectiveEvent> events = db->getEffectiveEvents( dt, dt );
776 for (QValueList<EffectiveEvent>::Iterator it = events.begin(); it != events.end(); ++it ) { 776 for (QValueList<EffectiveEvent>::Iterator it = events.begin(); it != events.end(); ++it ) {
777 EffectiveEvent ev = (*it); 777 EffectiveEvent ev = (*it);
778 if ( uid == ev.event().uid() && ev.start() != QTime(0, 0, 0 ) ) 778 if ( uid == ev.event().uid() && ev.start() != QTime(0, 0, 0 ) )
779 return ev.date(); 779 return ev.date();
780 } 780 }
781 }while (doAgain ); 781 }while (doAgain );
782 782
783 return fnd; 783 return fnd;
784} 784}
785 785
786void DateBookDayWidget::mousePressEvent( QMouseEvent *e ) 786void DateBookDayWidget::mousePressEvent( QMouseEvent *e )
787{ 787{
788 DateBookDayWidget *item; 788 DateBookDayWidget *item;
789 789
790 item = dateBook->getSelectedWidget(); 790 item = dateBook->getSelectedWidget();
791 if (item) 791 if (item)
792 item->update(); 792 item->update();
793 793
794 dateBook->setSelectedWidget(this); 794 dateBook->setSelectedWidget(this);
795 update(); 795 update();
796 dateBook->repaint(); 796 dateBook->repaint();
797 797
798 Event eve = ev.event();
799
798 QPopupMenu m; 800 QPopupMenu m;
799 m.insertItem( tr( "Edit" ), 1 ); 801 m.insertItem( tr( "Edit" ), 1 );
800 m.insertItem( tr( "Duplicate" ), 4 ); 802 m.insertItem( tr( "Duplicate" ), 4 );
801 m.insertItem( tr( "Delete" ), 2 ); 803 m.insertItem( tr( "Delete" ), 2 );
802 if(Ir::supported()) m.insertItem( tr( "Beam" ), 3 ); 804 if(Ir::supported()) m.insertItem( tr( "Beam" ), 3 );
803 if(Ir::supported() && ev.event().doRepeat() ) m.insertItem( tr( "Beam this occurence"), 5 ); 805 if(Ir::supported() && ev.event().doRepeat() ) m.insertItem( tr( "Beam this occurence"), 5 );
804 int r = m.exec( e->globalPos() ); 806 int r = m.exec( e->globalPos() );
805 if ( r == 1 ) { 807 if ( r == 1 ) {
806 emit editMe( ev.event() ); 808 emit editMe( eve );
807 } else if ( r == 2 ) { 809 } else if ( r == 2 ) {
808 emit deleteMe( ev.event() ); 810 emit deleteMe( eve );
809 } else if ( r == 3 ) { 811 } else if ( r == 3 ) {
810 emit beamMe( ev.event() ); 812 emit beamMe( eve );
811 } else if ( r == 4 ) { 813 } else if ( r == 4 ) {
812 emit duplicateMe( ev.event() ); 814 emit duplicateMe( eve );
813 } else if ( r == 5 ) { 815 } else if ( r == 5 ) {
814 // create an Event and beam it... 816 // create an Event and beam it...
815 /* 817 /*
816 * Start with the easy stuff. If start and end date is the same we can just use 818 * Start with the easy stuff. If start and end date is the same we can just use
817 * the values of effective events 819 * the values of effective events
818 * If it is a multi day event we need to find the real start and end date... 820 * If it is a multi day event we need to find the real start and end date...
819 */ 821 */
820 if ( ev.event().start().date() == ev.event().end().date() ) { 822 if ( ev.event().start().date() == ev.event().end().date() ) {
821 Event event( ev.event() ); 823 Event event( ev.event() );
822 824
823 QDateTime dt( ev.date(), ev.start() ); 825 QDateTime dt( ev.date(), ev.start() );
824 event.setStart( dt ); 826 event.setStart( dt );
825 827
826 dt.setTime( ev.end() ); 828 dt.setTime( ev.end() );
827 event.setEnd( dt ); 829 event.setEnd( dt );
828 emit beamMe( event ); 830 emit beamMe( event );
829 }else { 831 }else {
830 /* 832 /*
831 * at least the the Times are right now 833 * at least the the Times are right now
832 */ 834 */
833 QDateTime start( ev.event().start() ); 835 QDateTime start( ev.event().start() );
834 QDateTime end ( ev.event().end () ); 836 QDateTime end ( ev.event().end () );
835 837
836 838
837 /* 839 /*
838 * ok we know the start date or we need to find it 840 * ok we know the start date or we need to find it
839 */ 841 */
840 if ( ev.start() != QTime( 0, 0, 0 ) ) { 842 if ( ev.start() != QTime( 0, 0, 0 ) ) {
841 start.setDate( ev.date() ); 843 start.setDate( ev.date() );
842 }else { 844 }else {
843 QDate dt = DateBookDay::findRealStart( ev.event().uid(), ev.date(), dateBook->db ); 845 QDate dt = DateBookDay::findRealStart( ev.event().uid(), ev.date(), dateBook->db );
844 start.setDate( dt ); 846 start.setDate( dt );
845 } 847 }
846 848
847 849
848 /* 850 /*
849 * ok we know now the end date... 851 * ok we know now the end date...
850 * else 852 * else
851 * get to know the offset btw the real start and real end 853 * get to know the offset btw the real start and real end
852 * and then add it to the new start date... 854 * and then add it to the new start date...
853 */ 855 */
854 if ( ev.end() != QTime(23, 59, 59 ) ) { 856 if ( ev.end() != QTime(23, 59, 59 ) ) {
855 end.setDate( ev.date() ); 857 end.setDate( ev.date() );
856 }else{ 858 }else{
857 int days = ev.event().start().date().daysTo( ev.event().end().date() ); 859 int days = ev.event().start().date().daysTo( ev.event().end().date() );
858 end.setDate( start.date().addDays( days ) ); 860 end.setDate( start.date().addDays( days ) );
859 } 861 }
860 862