summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt4
-rw-r--r--korganizer/koagenda.cpp264
-rw-r--r--korganizer/koagenda.h2
-rw-r--r--korganizer/koagendaview.cpp22
4 files changed, 46 insertions, 246 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 44bf20b..03895fd 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,16 +1,20 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.0.28 ************ 3********** VERSION 2.0.28 ************
4 4
5KO/Pi:
6Fixed two problems in KO/Pi timetracking.
7Added context menu to month view for creating new events/todos.
8Fixed some other small bugs.
5 9
6 10
7********** VERSION 2.0.27 ************ 11********** VERSION 2.0.27 ************
8 12
9More bugfixes. 13More bugfixes.
10Added possibility to clone in KO/Pi a todo with all its subtodos. 14Added possibility to clone in KO/Pi a todo with all its subtodos.
11Added config option for alternate background in list views. 15Added config option for alternate background in list views.
12 16
13Added a timetracker funtionality in KO/Pi for todos in the todo view. 17Added a timetracker funtionality in KO/Pi for todos in the todo view.
14If a todo is set to started and then to stopped it is saving information about the runtime in 18If a todo is set to started and then to stopped it is saving information about the runtime in
15<yourhome>/kdepim/apps/timetrackerdir. 19<yourhome>/kdepim/apps/timetrackerdir.
16To read, display, print this information an external program is needed which will be developed. 20To read, display, print this information an external program is needed which will be developed.
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index 114ed75..355f4bb 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -465,33 +465,26 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
465 blockMoving = true; 465 blockMoving = true;
466 startX = viewportPos.x(); 466 startX = viewportPos.x();
467 startY = viewportPos.y(); 467 startY = viewportPos.y();
468 mPopupPos = me->globalPos(); 468 mPopupPos = me->globalPos();
469 if (object != viewport()) { 469 if (object != viewport()) {
470 mPopupItem = (KOAgendaItem *)object; 470 mPopupItem = (KOAgendaItem *)object;
471 mPopupKind = 1; 471 mPopupKind = 1;
472 if (me->button() == RightButton) { 472 if (me->button() == RightButton) {
473 popupMenu(); 473 popupMenu();
474 } else if (me->button() == LeftButton) { 474 } else if (me->button() == LeftButton) {
475 mActionItem = (KOAgendaItem *)object; 475 mActionItem = (KOAgendaItem *)object;
476 if (mActionItem) { 476 if (mActionItem) {
477 if ( mSelectionHeight > 0 ) { 477 emit signalClearSelection();
478 int selectionCellX = mSelectionCellX * mGridSpacingX; 478 slotClearSelection();
479 int selectionYTop = mSelectionYTop;
480 int gridSpacingX = mGridSpacingX;
481 int selectionHeight = mSelectionHeight;
482 clearSelection();
483 repaintContents( selectionCellX, selectionYTop,
484 gridSpacingX, selectionHeight,false );
485 }
486 selectItem(mActionItem); 479 selectItem(mActionItem);
487 Incidence *incidence = mActionItem->incidence(); 480 Incidence *incidence = mActionItem->incidence();
488 if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) { 481 if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) {
489 mActionItem = 0; 482 mActionItem = 0;
490 } else { 483 } else {
491 startItemAction(viewportPos); 484 startItemAction(viewportPos);
492 } 485 }
493 } 486 }
494 } 487 }
495 } else { // ---------- viewport() 488 } else { // ---------- viewport()
496 mPopupItem = 0; 489 mPopupItem = 0;
497 mPopupKind = 2; 490 mPopupKind = 2;
@@ -601,250 +594,81 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
601 selectItem(doubleClickedItem); 594 selectItem(doubleClickedItem);
602 if ( KOPrefs::instance()->mEditOnDoubleClick ) 595 if ( KOPrefs::instance()->mEditOnDoubleClick )
603 emit editIncidenceSignal(doubleClickedItem->incidence()); 596 emit editIncidenceSignal(doubleClickedItem->incidence());
604 else 597 else
605 emit showIncidenceSignal(doubleClickedItem->incidence()); 598 emit showIncidenceSignal(doubleClickedItem->incidence());
606 } 599 }
607 break; 600 break;
608 601
609 default: 602 default:
610 break; 603 break;
611 } 604 }
612 return true; 605 return true;
613#if 0
614 //qDebug("KOAgenda::eventFilter_mous ");
615 QPoint viewportPos;
616 if (object != viewport()) {
617 viewportPos = ((QWidget *)object)->mapToParent(me->pos());
618 } else {
619 viewportPos = me->pos();
620 }
621 static int startX = 0;
622 static int startY = 0;
623 static int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 15 : 20 );
624 static bool blockMoving = true;
625 static bool leftMouseDown = false;
626 bool rightButtonPressed = false;
627 switch (me->type()) {
628 case QEvent::MouseButtonPress:
629 if (me->button() == LeftButton) {
630 leftMouseDown = true;
631 }
632 else if (me->button() == RightButton) {
633 leftMouseDown = false;
634 }
635 blockMoving = true;
636 startX = viewportPos.x();
637 startY = viewportPos.y();
638 if (object != viewport()) { // item clicked **************
639 if (me->button() == RightButton) {
640 leftMouseDown = false;
641 mClickedItem = (KOAgendaItem *)object;
642 if (mActionItem ) {
643 endItemAction();
644 }
645 if (mClickedItem) {
646 selectItem(mClickedItem);
647 emit showIncidencePopupSignal(mClickedItem->incidence());
648 }
649 return true;
650 } else if (me->button() == LeftButton) {
651 mActionItem = (KOAgendaItem *)object;
652 if (mActionItem) {
653 if ( mSelectionHeight > 0 ) {
654 int selectionCellX = mSelectionCellX * mGridSpacingX;
655 int selectionYTop = mSelectionYTop;
656 int gridSpacingX = mGridSpacingX;
657 int selectionHeight = mSelectionHeight;
658 clearSelection();
659 repaintContents( selectionCellX, selectionYTop,
660 gridSpacingX, selectionHeight,false );
661 }
662 selectItem(mActionItem);
663 Incidence *incidence = mActionItem->incidence();
664 if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) {
665 mActionItem = 0;
666 } else {
667 startItemAction(viewportPos);
668 }
669 }
670 }
671 } else { // ---------- viewport()
672 selectItem(0);
673 mActionItem = 0;
674 if (me->button() == LeftButton ) {
675 setCursor(arrowCursor);
676 startSelectAction(viewportPos);
677 } else if (me->button() == RightButton ) {
678 setCursor(arrowCursor);
679 if ( leftMouseDown ) { // we have a simulated right click - clear left mouse action
680 endSelectAction( false ); // do not emit new event signal
681 leftMouseDown = false; // no more leftMouse computation
682 }
683 int x,y;
684 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
685 int gx,gy;
686 contentsToGrid(x,y,gx,gy);
687 mCurrentCellX = gx;
688 mCurrentCellY = gy;
689 mStartCellX = gx;
690 mStartCellY = gy;
691 mNewItemPopup->popup( viewport()->mapToGlobal( me->pos() ) );
692 }
693 }
694 break;
695
696 case QEvent::MouseButtonRelease:
697
698 if (object != viewport()) {
699 if (me->button() == LeftButton && leftMouseDown) {
700 if (mActionItem) {
701 QPoint clipperPos = clipper()->mapFromGlobal(viewport()->mapToGlobal(viewportPos));
702 //qDebug(" %d %d %d ",clipperPos.y(),visibleHeight() , 9 );
703 if ( mActionType == MOVE && (clipperPos.y() > visibleHeight()-2 ||clipperPos.y() < 0 ) ) {
704 mScrollUpTimer.stop();
705 mScrollDownTimer.stop();
706 mActionItem->resetMove();
707 placeSubCells( mActionItem );
708 // emit startDragSignal( mActionItem->incidence() );
709 setCursor( arrowCursor );
710 mActionItem = 0;
711 mActionType = NOP;
712 mItemMoved = 0;
713 leftMouseDown = false;
714 return true;
715 }
716 endItemAction();
717 }
718 }
719
720 } else { // ---------- viewport()
721 if (me->button() == LeftButton && leftMouseDown ) { //left click
722 endSelectAction( true ); // emit new event signal
723 }
724 }
725 if (me->button() == LeftButton)
726 leftMouseDown = false;
727
728 break;
729 606
730 case QEvent::MouseMove:
731 if ( !leftMouseDown )
732 return true;
733 if ( blockMoving ) {
734 int dX, dY;
735 dX = startX - viewportPos.x();
736 if ( dX < 0 )
737 dX = -dX;
738 dY = viewportPos.y() - startY;
739 if ( dY < 0 )
740 dY = -dY;
741 //qDebug("%d %d %d ", dX, dY , blockmoveDist );
742 if ( dX > blockmoveDist || dY > blockmoveDist ) {
743 blockMoving = false;
744 }
745 }
746 if (object != viewport()) {
747 KOAgendaItem *moveItem = (KOAgendaItem *)object;
748 if (!moveItem->incidence()->isReadOnly() ) {
749 if (!mActionItem)
750 setNoActionCursor(moveItem,viewportPos);
751 else {
752 if ( !blockMoving )
753 performItemAction(viewportPos);
754 }
755 }
756 } else { // ---------- viewport()
757 if ( mActionType == SELECT ) {
758 performSelectAction( viewportPos );
759 }
760 }
761 break;
762
763 case QEvent::MouseButtonDblClick:
764 blockMoving = false;
765 leftMouseDown = false;
766 if (object == viewport()) {
767 selectItem(0);
768 int x,y;
769 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
770 int gx,gy;
771 contentsToGrid(x,y,gx,gy);
772 emit newEventSignal(gx,gy);
773 } else {
774 KOAgendaItem *doubleClickedItem = (KOAgendaItem *)object;
775 selectItem(doubleClickedItem);
776 if ( KOPrefs::instance()->mEditOnDoubleClick )
777 emit editIncidenceSignal(doubleClickedItem->incidence());
778 else
779 emit showIncidenceSignal(doubleClickedItem->incidence());
780 }
781 break;
782
783 default:
784 break;
785 }
786 return true;
787#endif
788} 607}
789 608
790void KOAgenda::newItem( int item ) 609void KOAgenda::newItem( int item )
791{ 610{
792 if ( item == 1 ) { //new event 611 if ( item == 1 ) { //new event
793 newEventSignal(mStartCellX ,mStartCellY ); 612 newEventSignal(mStartCellX ,mStartCellY );
794 } else 613 } else
795 if ( item == 2 ) { //new event 614 if ( item == 2 ) { //new event
796 newTodoSignal(mStartCellX ,mStartCellY ); 615 newTodoSignal(mStartCellX ,mStartCellY );
797 } else 616 } else
798 { 617 {
799 emit showDateView( item, mStartCellX ); 618 emit showDateView( item, mStartCellX );
800 // 3Day view 619 // 3Day view
801 // 4Week view 620 // 4Week view
802 // 5Month view 621 // 5Month view
803 // 6Journal view 622 // 6Journal view
804 } 623 }
805} 624}
625void KOAgenda::slotClearSelection()
626{
627 if (mSelectionHeight) {
628 int selectionX = mSelectionCellX * mGridSpacingX;
629 int top = mSelectionYTop - 2 *mGridSpacingY;
630 int hei = mSelectionHeight + 4 *mGridSpacingY;
631 clearSelection();
632 repaintContents( selectionX, top,
633 mGridSpacingX, hei ,false );
634 }
635
636}
806void KOAgenda::startSelectAction(QPoint viewportPos) 637void KOAgenda::startSelectAction(QPoint viewportPos)
807{ 638{
808 //emit newStartSelectSignal(); 639
640 emit signalClearSelection();
641 slotClearSelection();
809 642
810 mActionType = SELECT; 643 mActionType = SELECT;
811 644
812 int x,y; 645 int x,y;
813 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 646 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
814 int gx,gy; 647 int gx,gy;
815 contentsToGrid(x,y,gx,gy); 648 contentsToGrid(x,y,gx,gy);
816 649
817 mStartCellX = gx; 650 mStartCellX = gx;
818 mStartCellY = gy; 651 mStartCellY = gy;
819 mCurrentCellX = gx; 652 mCurrentCellX = gx;
820 mCurrentCellY = gy; 653 mCurrentCellY = gy;
821
822 // Store coordinates of old selection
823 int selectionX = mSelectionCellX * mGridSpacingX;
824 int selectionYTop = mSelectionYTop;
825 int selectionHeight = mSelectionHeight;
826 654
827 // Store new selection 655 // Store new selection
828 mSelectionCellX = gx; 656 mSelectionCellX = gx;
829 mSelectionYTop = gy * mGridSpacingY; 657 mSelectionYTop = gy * mGridSpacingY;
830 mSelectionHeight = mGridSpacingY; 658 mSelectionHeight = mGridSpacingY;
831 659
832 // Clear old selection 660 // Paint new selection
833 repaintContents( selectionX, selectionYTop, 661 repaintContents( mSelectionCellX * mGridSpacingX+1, mSelectionYTop,
834 mGridSpacingX, selectionHeight,false ); 662 mGridSpacingX-1, mSelectionHeight );
835
836 // Paint new selection
837 // repaintContents( mSelectionCellX * mGridSpacingX, mSelectionYTop,
838 // mGridSpacingX, mSelectionHeight );
839} 663}
840 664
841void KOAgenda::performSelectAction(QPoint viewportPos) 665void KOAgenda::performSelectAction(QPoint viewportPos)
842{ 666{
843 int x,y; 667 int x,y;
844 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 668 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
845 int gx,gy; 669 int gx,gy;
846 contentsToGrid(x,y,gx,gy); 670 contentsToGrid(x,y,gx,gy);
847 671
848 QPoint clipperPos = clipper()-> 672 QPoint clipperPos = clipper()->
849 mapFromGlobal(viewport()->mapToGlobal(viewportPos)); 673 mapFromGlobal(viewport()->mapToGlobal(viewportPos));
850 674
@@ -853,36 +677,29 @@ void KOAgenda::performSelectAction(QPoint viewportPos)
853 mScrollUpTimer.start(mScrollDelay); 677 mScrollUpTimer.start(mScrollDelay);
854 } else if (visibleHeight() - clipperPos.y() < 678 } else if (visibleHeight() - clipperPos.y() <
855 mScrollBorderWidth) { 679 mScrollBorderWidth) {
856 mScrollDownTimer.start(mScrollDelay); 680 mScrollDownTimer.start(mScrollDelay);
857 } else { 681 } else {
858 mScrollUpTimer.stop(); 682 mScrollUpTimer.stop();
859 mScrollDownTimer.stop(); 683 mScrollDownTimer.stop();
860 } 684 }
861 685
862 if ( gy > mCurrentCellY ) { 686 if ( gy > mCurrentCellY ) {
863 mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop; 687 mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop;
864 688
865#if 0 689
866 // FIXME: Repaint only the newly selected region
867 repaintContents( mSelectionCellX * mGridSpacingX,
868 mCurrentCellY + mGridSpacingY,
869 mGridSpacingX,
870 mSelectionHeight - ( gy - mCurrentCellY - 1 ) * mGridSpacingY );
871#else
872 repaintContents( (KOGlobals::self()->reverseLayout() ? 690 repaintContents( (KOGlobals::self()->reverseLayout() ?
873 mColumns - 1 - mSelectionCellX : mSelectionCellX) * 691 mColumns - 1 - mSelectionCellX : mSelectionCellX) *
874 mGridSpacingX, mSelectionYTop, 692 mGridSpacingX, mSelectionYTop,
875 mGridSpacingX, mSelectionHeight , false); 693 mGridSpacingX, mSelectionHeight , false);
876#endif
877 694
878 mCurrentCellY = gy; 695 mCurrentCellY = gy;
879 } else if ( gy < mCurrentCellY ) { 696 } else if ( gy < mCurrentCellY ) {
880 if ( gy >= mStartCellY ) { 697 if ( gy >= mStartCellY ) {
881 int selectionHeight = mSelectionHeight; 698 int selectionHeight = mSelectionHeight;
882 mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop; 699 mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop;
883 700
884 repaintContents( (KOGlobals::self()->reverseLayout() ? 701 repaintContents( (KOGlobals::self()->reverseLayout() ?
885 mColumns - 1 - mSelectionCellX : mSelectionCellX) * 702 mColumns - 1 - mSelectionCellX : mSelectionCellX) *
886 mGridSpacingX, mSelectionYTop, 703 mGridSpacingX, mSelectionYTop,
887 mGridSpacingX, selectionHeight,false ); 704 mGridSpacingX, selectionHeight,false );
888 705
@@ -891,25 +708,24 @@ void KOAgenda::performSelectAction(QPoint viewportPos)
891 } 708 }
892 } 709 }
893} 710}
894 711
895void KOAgenda::endSelectAction( bool emitNewEvent ) 712void KOAgenda::endSelectAction( bool emitNewEvent )
896{ 713{
897 mActionType = NOP; 714 mActionType = NOP;
898 mScrollUpTimer.stop(); 715 mScrollUpTimer.stop();
899 mScrollDownTimer.stop(); 716 mScrollDownTimer.stop();
900 717
901 emit newTimeSpanSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY); 718 emit newTimeSpanSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY);
902 if ( emitNewEvent && mStartCellY < mCurrentCellY ) { 719 if ( emitNewEvent && mStartCellY < mCurrentCellY ) {
903 qDebug("ew event signal ");
904 emit newEventSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY); 720 emit newEventSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY);
905 } 721 }
906} 722}
907 723
908void KOAgenda::startItemAction(QPoint viewportPos) 724void KOAgenda::startItemAction(QPoint viewportPos)
909{ 725{
910 int x,y; 726 int x,y;
911 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 727 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
912 int gx,gy; 728 int gx,gy;
913 contentsToGrid(x,y,gx,gy); 729 contentsToGrid(x,y,gx,gy);
914 730
915 mStartCellX = gx; 731 mStartCellX = gx;
@@ -1091,35 +907,25 @@ void KOAgenda::endItemAction()
1091 KOAgendaItem *modifiedItem = placeItem; 907 KOAgendaItem *modifiedItem = placeItem;
1092 //emit itemModified( placeItem, mActionType /*KOGlobals::EVENTEDITED */); 908 //emit itemModified( placeItem, mActionType /*KOGlobals::EVENTEDITED */);
1093 QPtrList<KOAgendaItem> oldconflictItems ;//= placeItem->conflictItems(); 909 QPtrList<KOAgendaItem> oldconflictItems ;//= placeItem->conflictItems();
1094 KOAgendaItem *item; 910 KOAgendaItem *item;
1095 911
1096 if ( placeItem->incidence()->type() == "Todo" ) { 912 if ( placeItem->incidence()->type() == "Todo" ) {
1097 mSelectedItem = 0; 913 mSelectedItem = 0;
1098 //qDebug("todo %d %d %d ", mCurrentCellX, modifiedItem->cellX() ,modifiedItem->cellXWidth()); 914 //qDebug("todo %d %d %d ", mCurrentCellX, modifiedItem->cellX() ,modifiedItem->cellXWidth());
1099 modifiedItem->mLastMoveXPos = mCurrentCellX; 915 modifiedItem->mLastMoveXPos = mCurrentCellX;
1100 emit itemModified( modifiedItem, mActionType ); 916 emit itemModified( modifiedItem, mActionType );
1101 } 917 }
1102 else { 918 else {
1103#if 0 919
1104 for ( item=oldconflictItems.first(); item != 0;
1105 item=oldconflictItems.next() ) {
1106 placeSubCells(item);
1107 }
1108 while ( placeItem ) {
1109 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1());
1110 placeSubCells( placeItem );
1111 placeItem = placeItem->nextMultiItem();
1112 }
1113#endif
1114 920
1115 globalFlagBlockAgendaItemPaint = 1; 921 globalFlagBlockAgendaItemPaint = 1;
1116 for ( item=oldconflictItems.first(); item != 0; 922 for ( item=oldconflictItems.first(); item != 0;
1117 item=oldconflictItems.next() ) { 923 item=oldconflictItems.next() ) {
1118 placeSubCells(item); 924 placeSubCells(item);
1119 } 925 }
1120 while ( placeItem ) { 926 while ( placeItem ) {
1121 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1()); 927 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1());
1122 oldconflictItems = placeItem->conflictItems(); 928 oldconflictItems = placeItem->conflictItems();
1123 for ( item=oldconflictItems.first(); item != 0; 929 for ( item=oldconflictItems.first(); item != 0;
1124 item=oldconflictItems.next() ) { 930 item=oldconflictItems.next() ) {
1125 placeSubCells(item); 931 placeSubCells(item);
diff --git a/korganizer/koagenda.h b/korganizer/koagenda.h
index 4f1fdb9..fb9983e 100644
--- a/korganizer/koagenda.h
+++ b/korganizer/koagenda.h
@@ -118,43 +118,45 @@ class KOAgenda : public QScrollView
118 118
119 void setHolidayMask(QMemArray<bool> *); 119 void setHolidayMask(QMemArray<bool> *);
120 void setDateList(const DateList &selectedDates); 120 void setDateList(const DateList &selectedDates);
121 DateList dateList() const; 121 DateList dateList() const;
122 void drawContentsToPainter( QPainter* paint = 0, bool backgroundOnly = false); 122 void drawContentsToPainter( QPainter* paint = 0, bool backgroundOnly = false);
123 void finishUpdate(); 123 void finishUpdate();
124 void printSelection(); 124 void printSelection();
125 void storePosition(); 125 void storePosition();
126 void restorePosition(); 126 void restorePosition();
127 void setPopup( KOEventPopupMenu * p ) { mAllAgendaPopup = p; } 127 void setPopup( KOEventPopupMenu * p ) { mAllAgendaPopup = p; }
128 128
129 public slots: 129 public slots:
130 void slotClearSelection();
130 void popupMenu(); 131 void popupMenu();
131 void newItem( int ); 132 void newItem( int );
132 void moveChild( QWidget *, int, int ); 133 void moveChild( QWidget *, int, int );
133 void scrollUp(); 134 void scrollUp();
134 void scrollDown(); 135 void scrollDown();
135 void updateTodo( Todo * t, int , bool ); 136 void updateTodo( Todo * t, int , bool );
136 void popupAlarm(); 137 void popupAlarm();
137 138
138 void checkScrollBoundaries(int); 139 void checkScrollBoundaries(int);
139 140
140 /** Deselect selected items. This function does not emit any signals. */ 141 /** Deselect selected items. This function does not emit any signals. */
141 void deselectItem(); 142 void deselectItem();
142 /** Select item. If the argument is 0, the currently selected item gets 143 /** Select item. If the argument is 0, the currently selected item gets
143 deselected. This function emits the itemSelected(bool) signal to inform 144 deselected. This function emits the itemSelected(bool) signal to inform
144 about selection/deseelction of events. */ 145 about selection/deseelction of events. */
145 void selectItem(KOAgendaItem *); 146 void selectItem(KOAgendaItem *);
146 void finishResize(); 147 void finishResize();
147 148
148 signals: 149 signals:
150 void signalClearSelection();
149 void showDateView( int, int); 151 void showDateView( int, int);
150 void newEventSignal(); 152 void newEventSignal();
151 void newEventSignal(int gx,int gy); 153 void newEventSignal(int gx,int gy);
152 void newTodoSignal(int gx,int gy); 154 void newTodoSignal(int gx,int gy);
153 void newEventSignal(int gxStart, int gyStart, int gxEnd, int gyEnd); 155 void newEventSignal(int gxStart, int gyStart, int gxEnd, int gyEnd);
154 void newTimeSpanSignal(int gxStart, int gyStart, int gxEnd, int gyEnd); 156 void newTimeSpanSignal(int gxStart, int gyStart, int gxEnd, int gyEnd);
155 void newStartSelectSignal(); 157 void newStartSelectSignal();
156 void showIncidenceSignal(Incidence *); 158 void showIncidenceSignal(Incidence *);
157 void editIncidenceSignal(Incidence *); 159 void editIncidenceSignal(Incidence *);
158 void deleteIncidenceSignal(Incidence *); 160 void deleteIncidenceSignal(Incidence *);
159 void showIncidencePopupSignal(Incidence *); 161 void showIncidencePopupSignal(Incidence *);
160 162
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 17f791d..b43c40e 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -425,25 +425,24 @@ KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
425 QLabel *dummyAllDayRight = new QLabel (mAllDayFrame); 425 QLabel *dummyAllDayRight = new QLabel (mAllDayFrame);
426 426
427 // Create event context menu for all day agenda 427 // Create event context menu for all day agenda
428 //mAllDayAgendaPopup = eventPopup(); 428 //mAllDayAgendaPopup = eventPopup();
429 429
430 // Create agenda frame 430 // Create agenda frame
431 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3); 431 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3);
432 // QHBox *agendaFrame = new QHBox(splitterAgenda); 432 // QHBox *agendaFrame = new QHBox(splitterAgenda);
433 433
434 // create event indicator bars 434 // create event indicator bars
435 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); 435 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame);
436#ifndef DESKTOP_VERSION 436#ifndef DESKTOP_VERSION
437 // FIX
438 mEventIndicatorTop->setPaintWidget( mSplitterAgenda ); 437 mEventIndicatorTop->setPaintWidget( mSplitterAgenda );
439#endif 438#endif
440 mDayLabelsFrame = new QHBox(agendaFrame); 439 mDayLabelsFrame = new QHBox(agendaFrame);
441 //topLayout->addWidget(mDayLabelsFrame); 440 //topLayout->addWidget(mDayLabelsFrame);
442 mDayLabels = new QFrame (mDayLabelsFrame); 441 mDayLabels = new QFrame (mDayLabelsFrame);
443 mLayoutDayLabels = new QHBoxLayout(mDayLabels); 442 mLayoutDayLabels = new QHBoxLayout(mDayLabels);
444 agendaLayout->addMultiCellWidget(mDayLabelsFrame ,0,0,0,2); 443 agendaLayout->addMultiCellWidget(mDayLabelsFrame ,0,0,0,2);
445 agendaLayout->addWidget(mEventIndicatorTop,1,1); 444 agendaLayout->addWidget(mEventIndicatorTop,1,1);
446 445
447 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom, 446 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom,
448 agendaFrame); 447 agendaFrame);
449 agendaLayout->addWidget(mEventIndicatorBottom,3,1); 448 agendaLayout->addWidget(mEventIndicatorBottom,3,1);
@@ -558,24 +557,26 @@ KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
558 SIGNAL( incidenceSelected( Incidence * ) ) ); 557 SIGNAL( incidenceSelected( Incidence * ) ) );
559 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 558 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
560 SIGNAL( incidenceSelected( Incidence * ) ) ); 559 SIGNAL( incidenceSelected( Incidence * ) ) );
561 connect( mAgenda, SIGNAL( resizedSignal() ), 560 connect( mAgenda, SIGNAL( resizedSignal() ),
562 SLOT( updateConfig( ) ) ); 561 SLOT( updateConfig( ) ) );
563 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ), 562 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ),
564 SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); 563 SLOT( addToCalSlot(Incidence *, Incidence * ) ) );
565 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), 564 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ),
566 SLOT( addToCalSlot(Incidence * , Incidence *) ) ); 565 SLOT( addToCalSlot(Incidence * , Incidence *) ) );
567 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 566 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
568 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 567 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
569 568
569 connect( mAllDayAgenda, SIGNAL( signalClearSelection() ),mAgenda, SLOT( slotClearSelection()) );
570 connect( mAgenda, SIGNAL( signalClearSelection() ),mAllDayAgenda, SLOT( slotClearSelection()) );
570 571
571} 572}
572 573
573void KOAgendaView::toggleAllDay() 574void KOAgendaView::toggleAllDay()
574{ 575{
575 if ( mSplitterAgenda->firstHandle() ) 576 if ( mSplitterAgenda->firstHandle() )
576 mSplitterAgenda->firstHandle()->toggle(); 577 mSplitterAgenda->firstHandle()->toggle();
577} 578}
578void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld ) 579void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld )
579{ 580{
580 calendar()->addIncidence( inc ); 581 calendar()->addIncidence( inc );
581 582
@@ -716,30 +717,26 @@ void KOAgendaView::createDayLabels()
716 // QFont lFont = dlf; 717 // QFont lFont = dlf;
717 bool appendLabels = false; 718 bool appendLabels = false;
718 KOAgendaButton *dayLabel; 719 KOAgendaButton *dayLabel;
719 dayLabel = mDayLabelsList.first(); 720 dayLabel = mDayLabelsList.first();
720 if ( !dayLabel ) { 721 if ( !dayLabel ) {
721 appendLabels = true; 722 appendLabels = true;
722 dayLabel = getNewDaylabel(); 723 dayLabel = getNewDaylabel();
723 } 724 }
724 dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() ); 725 dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() );
725 dayLabel->setFont( dlf ); 726 dayLabel->setFont( dlf );
726 dayLabel->setNum( -1 ); 727 dayLabel->setNum( -1 );
727 //dayLabel->setAlignment(QLabel::AlignHCenter); 728 //dayLabel->setAlignment(QLabel::AlignHCenter);
728#if 0 729
729 if ( QApplication::desktop()->width() <= 320 ) 730 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) );
730 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ).left(2) );
731 else
732#endif
733 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) );
734 dayLabel->show(); 731 dayLabel->show();
735 DateList::ConstIterator dit; 732 DateList::ConstIterator dit;
736 bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); 733 bool oneday = (mSelectedDates.first() == mSelectedDates.last() );
737 int counter = -1; 734 int counter = -1;
738 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { 735 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) {
739 ++counter; 736 ++counter;
740 QDate date = *dit; 737 QDate date = *dit;
741 // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels); 738 // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels);
742 if ( ! appendLabels ) { 739 if ( ! appendLabels ) {
743 dayLabel = mDayLabelsList.next(); 740 dayLabel = mDayLabelsList.next();
744 if ( !dayLabel ) 741 if ( !dayLabel )
745 appendLabels = true; 742 appendLabels = true;
@@ -1170,34 +1167,25 @@ void KOAgendaView::fillAgenda()
1170 qDebug("days %d %s",endX , currentDate.toString().latin1()); 1167 qDebug("days %d %s",endX , currentDate.toString().latin1());
1171 QDate dateit = currentDate.addDays( -endX ); 1168 QDate dateit = currentDate.addDays( -endX );
1172 if ( event->recursOn( dateit ) ) { 1169 if ( event->recursOn( dateit ) ) {
1173 qDebug("found %d %d %d %s", endX,curCol, curCol-endX ,dateit.toString().latin1() ); 1170 qDebug("found %d %d %d %s", endX,curCol, curCol-endX ,dateit.toString().latin1() );
1174 if ( curCol-endX < 0 ) { 1171 if ( curCol-endX < 0 ) {
1175 mAllDayAgenda->insertAllDayItem(event,currentDate,0,curCol); 1172 mAllDayAgenda->insertAllDayItem(event,currentDate,0,curCol);
1176 } 1173 }
1177 } 1174 }
1178 } 1175 }
1179 } else { 1176 } else {
1180 mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol); 1177 mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol);
1181 } 1178 }
1182#if 0 1179
1183 if (beginX <= 0 && curCol == 0) {
1184 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1185 } else if (beginX == curCol) {
1186 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1187 } else {
1188 qDebug("skipped %d %d %d ",beginX , endX, curCol);
1189 }
1190#endif
1191 //mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol);
1192 } else { 1180 } else {
1193 if (beginX <= 0 && curCol == 0) { 1181 if (beginX <= 0 && curCol == 0) {
1194 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1182 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1195 } else if (beginX == curCol) { 1183 } else if (beginX == curCol) {
1196 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1184 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1197 } 1185 }
1198 } 1186 }
1199 } else if (event->isMultiDay()) { 1187 } else if (event->isMultiDay()) {
1200 if ( event->doesRecur () ) { 1188 if ( event->doesRecur () ) {
1201 QDate dateit = currentDate; 1189 QDate dateit = currentDate;
1202 int count = 0; 1190 int count = 0;
1203 int max = event->dtStart().daysTo( event->dtEnd() ) +2; 1191 int max = event->dtStart().daysTo( event->dtEnd() ) +2;