summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-07-02 09:22:13 (UTC)
committer zautrix <zautrix>2005-07-02 09:22:13 (UTC)
commitcf243d3d9faa7d79eb706f6e70c8d01926e9da89 (patch) (unidiff)
treeccacd0631c1e850ad1d1f7ae5d740d11bcaf35a3
parent58a4e6e5dcc24e2f5c17ef9f0e6879d625b5f764 (diff)
downloadkdepimpi-cf243d3d9faa7d79eb706f6e70c8d01926e9da89.zip
kdepimpi-cf243d3d9faa7d79eb706f6e70c8d01926e9da89.tar.gz
kdepimpi-cf243d3d9faa7d79eb706f6e70c8d01926e9da89.tar.bz2
todo view fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kotodoview.cpp26
-rw-r--r--korganizer/kotodoview.h1
2 files changed, 17 insertions, 10 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 8d354c8..e2966f8 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -655,346 +655,354 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
655 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 655 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
656 */ 656 */
657 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, 657 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *,
658 const QPoint &,int ) ), 658 const QPoint &,int ) ),
659 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 659 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
660 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), 660 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ),
661 SLOT( itemClicked( QListViewItem * ) ) ); 661 SLOT( itemClicked( QListViewItem * ) ) );
662 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), 662 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ),
663 SLOT( itemDoubleClicked( QListViewItem * ) ) ); 663 SLOT( itemDoubleClicked( QListViewItem * ) ) );
664 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 664 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
665 SLOT( updateView() ) ); 665 SLOT( updateView() ) );
666 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 666 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
667 SLOT( todoModified(Todo *, int) ) ); 667 SLOT( todoModified(Todo *, int) ) );
668 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), 668 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ),
669 SLOT( itemStateChanged( QListViewItem * ) ) ); 669 SLOT( itemStateChanged( QListViewItem * ) ) );
670 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), 670 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ),
671 SLOT( itemStateChanged( QListViewItem * ) ) ); 671 SLOT( itemStateChanged( QListViewItem * ) ) );
672 connect( mTodoListView, SIGNAL( paintNeeded() ), 672 connect( mTodoListView, SIGNAL( paintNeeded() ),
673 SLOT( paintNeeded()) ); 673 SLOT( paintNeeded()) );
674 674
675#if 0 675#if 0
676 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), 676 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)),
677 SLOT(selectionChanged(QListViewItem *))); 677 SLOT(selectionChanged(QListViewItem *)));
678 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), 678 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)),
679 SLOT(selectionChanged(QListViewItem *))); 679 SLOT(selectionChanged(QListViewItem *)));
680 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), 680 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)),
681 SLOT(selectionChanged(QListViewItem *))); 681 SLOT(selectionChanged(QListViewItem *)));
682#endif 682#endif
683 683
684 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); 684 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) ));
685 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); 685 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) ));
686 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); 686 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) ));
687 687
688 connect( mTodoListView, SIGNAL(selectionChanged() ), 688 connect( mTodoListView, SIGNAL(selectionChanged() ),
689 SLOT( processSelectionChange() ) ); 689 SLOT( processSelectionChange() ) );
690 connect( mQuickAdd, SIGNAL( returnPressed () ), 690 connect( mQuickAdd, SIGNAL( returnPressed () ),
691 SLOT( addQuickTodo() ) ); 691 SLOT( addQuickTodo() ) );
692 692
693} 693}
694 694
695KOTodoView::~KOTodoView() 695KOTodoView::~KOTodoView()
696{ 696{
697 697
698#if QT_VERSION >= 0x030000 698#if QT_VERSION >= 0x030000
699 699
700#else 700#else
701 delete mKOTodoViewWhatsThis; 701 delete mKOTodoViewWhatsThis;
702#endif 702#endif
703 703
704 delete mDocPrefs; 704 delete mDocPrefs;
705} 705}
706QString KOTodoView::getWhatsThisText(QPoint p) 706QString KOTodoView::getWhatsThisText(QPoint p)
707{ 707{
708 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p ); 708 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p );
709 if ( item ) 709 if ( item )
710 return KIncidenceFormatter::instance()->getFormattedText( item->todo(), 710 return KIncidenceFormatter::instance()->getFormattedText( item->todo(),
711 KOPrefs::instance()->mWTshowDetails, 711 KOPrefs::instance()->mWTshowDetails,
712 KOPrefs::instance()->mWTshowCreated, 712 KOPrefs::instance()->mWTshowCreated,
713 KOPrefs::instance()->mWTshowChanged); 713 KOPrefs::instance()->mWTshowChanged);
714 return i18n("That is the todo view" ); 714 return i18n("That is the todo view" );
715 715
716} 716}
717 717
718void KOTodoView::jumpToDate () 718void KOTodoView::jumpToDate ()
719{ 719{
720 // if (mActiveItem) { 720 // if (mActiveItem) {
721// mActiveItem->todo()); 721// mActiveItem->todo());
722// if ( mActiveItem->todo()->hasDueDate() ) 722// if ( mActiveItem->todo()->hasDueDate() )
723// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); 723// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() );
724} 724}
725void KOTodoView::paintNeeded() 725void KOTodoView::paintNeeded()
726{ 726{
727 if ( mPendingUpdateBeforeRepaint ) { 727 if ( mPendingUpdateBeforeRepaint ) {
728 updateView(); 728 updateView();
729 mPendingUpdateBeforeRepaint = false; 729 mPendingUpdateBeforeRepaint = false;
730 } 730 }
731} 731}
732void KOTodoView::paintEvent(QPaintEvent * pevent) 732void KOTodoView::paintEvent(QPaintEvent * pevent)
733{ 733{
734 if ( mPendingUpdateBeforeRepaint ) { 734 if ( mPendingUpdateBeforeRepaint ) {
735 updateView(); 735 updateView();
736 mPendingUpdateBeforeRepaint = false; 736 mPendingUpdateBeforeRepaint = false;
737 } 737 }
738 KOrg::BaseView::paintEvent( pevent); 738 KOrg::BaseView::paintEvent( pevent);
739} 739}
740 740
741void KOTodoView::updateView() 741void KOTodoView::updateView()
742{ 742{
743 pendingSubtodo = 0; 743 pendingSubtodo = 0;
744 if ( mBlockUpdate ) { 744 if ( mBlockUpdate ) {
745 return; 745 return;
746 } 746 }
747 if ( !isVisible() ) { 747 if ( !isVisible() ) {
748 mPendingUpdateBeforeRepaint = true; 748 mPendingUpdateBeforeRepaint = true;
749 return; 749 return;
750 } 750 }
751 storeCurrentItem();
752 //qDebug("KOTodoView::updateView() %x", this); 751 //qDebug("KOTodoView::updateView() %x", this);
753 if ( isFlatDisplay ) { 752 if ( isFlatDisplay ) {
754 displayAllFlat(); 753 displayAllFlat();
755 resetCurrentItem();
756 return; 754 return;
757 } 755 }
756 storeCurrentItem();
758 //qDebug("update "); 757 //qDebug("update ");
759// kdDebug() << "KOTodoView::updateView()" << endl; 758// kdDebug() << "KOTodoView::updateView()" << endl;
760 QFont fo = KOPrefs::instance()->mTodoViewFont; 759 QFont fo = KOPrefs::instance()->mTodoViewFont;
761 760
762 761
763 mTodoListView->clear(); 762 mTodoListView->clear();
764 if ( mName == "todolistsmall" ) { 763 if ( mName == "todolistsmall" ) {
765 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { 764 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
766 int ps = fo.pointSize() -2; 765 int ps = fo.pointSize() -2;
767 if ( ps > 12 ) 766 if ( ps > 12 )
768 ps -= 2; 767 ps -= 2;
769 fo.setPointSize( ps ); 768 fo.setPointSize( ps );
770 } 769 }
771 } 770 }
772 771
773 mTodoListView->setFont( fo ); 772 mTodoListView->setFont( fo );
774 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); 773 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont );
775 //mTodoListView->header()->setMaximumHeight(fm.height()); 774 //mTodoListView->header()->setMaximumHeight(fm.height());
776 QPtrList<Todo> todoList = calendar()->todos(); 775 QPtrList<Todo> todoList = calendar()->todos();
777 776
778/* 777/*
779 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; 778 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl;
780 Event *t; 779 Event *t;
781 for(t = todoList.first(); t; t = todoList.next()) { 780 for(t = todoList.first(); t; t = todoList.next()) {
782 kdDebug() << " " << t->getSummary() << endl; 781 kdDebug() << " " << t->getSummary() << endl;
783 782
784 if (t->getRelatedTo()) { 783 if (t->getRelatedTo()) {
785 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; 784 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl;
786 } 785 }
787 786
788 QPtrList<Event> l = t->getRelations(); 787 QPtrList<Event> l = t->getRelations();
789 Event *c; 788 Event *c;
790 for(c=l.first();c;c=l.next()) { 789 for(c=l.first();c;c=l.next()) {
791 kdDebug() << " - relation: " << c->getSummary() << endl; 790 kdDebug() << " - relation: " << c->getSummary() << endl;
792 } 791 }
793 } 792 }
794*/ 793*/
795 794
796 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a 795 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a
797 // specific order of events. That means that we have to generate parent items 796 // specific order of events. That means that we have to generate parent items
798 // recursively for proper hierarchical display of Todos. 797 // recursively for proper hierarchical display of Todos.
799 mTodoMap.clear(); 798 mTodoMap.clear();
800 Todo *todo; 799 Todo *todo;
801 todo = todoList.first();// todo; todo = todoList.next()) { 800 todo = todoList.first();// todo; todo = todoList.next()) {
802 while ( todo ) { 801 while ( todo ) {
803 bool next = true; 802 bool next = true;
804 // qDebug("todo %s ", todo->summary().latin1()); 803 // qDebug("todo %s ", todo->summary().latin1());
805 Incidence *incidence = todo->relatedTo(); 804 Incidence *incidence = todo->relatedTo();
806 while ( incidence ) { 805 while ( incidence ) {
807 if ( incidence->typeID() == todoID ) { 806 if ( incidence->typeID() == todoID ) {
808 //qDebug("related %s ",incidence->summary().latin1() ); 807 //qDebug("related %s ",incidence->summary().latin1() );
809 if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) { 808 if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) {
810 //qDebug("related not found "); 809 //qDebug("related not found ");
811 todoList.remove( ); 810 todoList.remove( );
812 todo = todoList.current(); 811 todo = todoList.current();
813 next = false; 812 next = false;
814 incidence = 0; 813 incidence = 0;
815 814
816 } else { 815 } else {
817 //qDebug("related found "); 816 //qDebug("related found ");
818 incidence = incidence->relatedTo(); 817 incidence = incidence->relatedTo();
819 } 818 }
820 } else 819 } else
821 incidence = 0; 820 incidence = 0;
822 } 821 }
823 if ( next ) 822 if ( next )
824 todo = todoList.next(); 823 todo = todoList.next();
825 } 824 }
826 825
827 for(todo = todoList.first(); todo; todo = todoList.next()) { 826 for(todo = todoList.first(); todo; todo = todoList.next()) {
828 if (!mTodoMap.contains(todo) && checkTodo( todo ) ) 827 if (!mTodoMap.contains(todo) && checkTodo( todo ) )
829 { 828 {
830 insertTodoItem(todo); 829 insertTodoItem(todo);
831 } 830 }
832 } 831 }
833 // Restore opened/closed state 832 // Restore opened/closed state
834 mTodoListView->blockSignals( true ); 833 mTodoListView->blockSignals( true );
835 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); 834 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() );
836 mTodoListView->blockSignals( false ); 835 mTodoListView->blockSignals( false );
837 resetCurrentItem(); 836 resetCurrentItem();
838 processSelectionChange();
839} 837}
840 838
841void KOTodoView::storeCurrentItem() 839void KOTodoView::storeCurrentItem()
842{ 840{
843 mCurItem = 0; 841 mCurItem = 0;
844 mCurItemRootParent = 0; 842 mCurItemRootParent = 0;
845 mCurItemParent = 0; 843 mCurItemParent = 0;
846 mCurItemAbove = 0; 844 mCurItemAbove = 0;
847 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 845 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
848 if (mActiveItem) { 846 if (mActiveItem) {
849 mCurItem = mActiveItem->todo(); 847 mCurItem = mActiveItem->todo();
850 KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove (); 848 KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove ();
851 if ( activeItemAbove ) 849 if ( activeItemAbove )
852 mCurItemAbove = activeItemAbove->todo(); 850 mCurItemAbove = activeItemAbove->todo();
853 mCurItemRootParent = mCurItem; 851 mCurItemRootParent = mCurItem;
854 mCurItemParent = mCurItemRootParent->relatedTo(); 852 mCurItemParent = mCurItemRootParent->relatedTo();
855 while ( mCurItemRootParent->relatedTo() != 0 ) 853 while ( mCurItemRootParent->relatedTo() != 0 )
856 mCurItemRootParent = mCurItemRootParent->relatedTo(); 854 mCurItemRootParent = mCurItemRootParent->relatedTo();
857 } 855 }
858 mActiveItem = 0; 856 mActiveItem = 0;
859} 857}
860 858
861void KOTodoView::resetCurrentItem() 859void KOTodoView::resetCurrentItem()
862{ 860{
863 mTodoListView->setFocus(); 861 //mTodoListView->setFocus();
864 KOTodoViewItem* foundItem = 0; 862 KOTodoViewItem* foundItem = 0;
865 KOTodoViewItem* foundItemRoot = 0; 863 KOTodoViewItem* foundItemRoot = 0;
866 KOTodoViewItem* foundItemParent = 0; 864 KOTodoViewItem* foundItemParent = 0;
867 KOTodoViewItem* foundItemAbove = 0; 865 KOTodoViewItem* foundItemAbove = 0;
868 if ( mTodoListView->firstChild () ) { 866 if ( mTodoListView->firstChild () ) {
869 if ( mCurItem ) { 867 if ( mCurItem ) {
870 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild (); 868 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild ();
871 while ( item ) { 869 while ( item ) {
872 if ( item->todo() == mCurItem ) { 870 if ( item->todo() == mCurItem ) {
873 foundItem = item; 871 foundItem = item;
874 break; 872 break;
875 } else if ( item->todo() == mCurItemAbove ) { 873 } else if ( item->todo() == mCurItemAbove ) {
876 foundItemAbove = item; 874 foundItemAbove = item;
877 875
878 } 876 }
879 if ( item->todo() == mCurItemRootParent ) { 877 if ( item->todo() == mCurItemRootParent ) {
880 foundItemRoot = item; 878 foundItemRoot = item;
881 } 879 }
882 if ( item->todo() == mCurItemParent ) { 880 if ( item->todo() == mCurItemParent ) {
883 foundItemParent = item; 881 foundItemParent = item;
884 } 882 }
885 item = (KOTodoViewItem*)item->itemBelow(); 883 item = (KOTodoViewItem*)item->itemBelow();
886 } 884 }
887 if ( ! foundItem ) { 885 if ( ! foundItem ) {
888 if ( foundItemParent ) { 886 if ( foundItemParent ) {
889 foundItem = foundItemParent; 887 foundItem = foundItemParent;
890 } else { 888 } else {
891 if ( foundItemRoot ) 889 if ( foundItemRoot )
892 foundItem = foundItemRoot; 890 foundItem = foundItemRoot;
893 else 891 else
894 foundItem = foundItemAbove; 892 foundItem = foundItemAbove;
895 } 893 }
896 } 894 }
897 } 895 }
898 if ( foundItem ) { 896 if ( foundItem ) {
897 mTodoListView->setSelected ( foundItem, true );
899 mTodoListView->setCurrentItem( foundItem ); 898 mTodoListView->setCurrentItem( foundItem );
900 mTodoListView->ensureItemVisible( foundItem ); 899 mTodoListView->ensureItemVisible( foundItem );
901 } else { 900 } else {
902 mTodoListView->setCurrentItem( mTodoListView->firstChild () ); 901 if ( mTodoListView->firstChild () ) {
902 mTodoListView->setSelected ( mTodoListView->firstChild (), true );
903 mTodoListView->setCurrentItem( mTodoListView->firstChild () );
904 }
903 } 905 }
904 } 906 }
907 processSelectionChange();
908 QTimer::singleShot( 100, this, SLOT ( resetFocusToList() ));
909}
910void KOTodoView::resetFocusToList()
911{
912 topLevelWidget()->setActiveWindow();
905 mTodoListView->setFocus(); 913 mTodoListView->setFocus();
906} 914}
907//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; 915//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove;
908bool KOTodoView::checkTodo( Todo * todo ) 916bool KOTodoView::checkTodo( Todo * todo )
909{ 917{
910 918
911 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) 919 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() )
912 return false; 920 return false;
913 if ( !todo->isCompleted() ) { 921 if ( !todo->isCompleted() ) {
914 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() ) 922 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() )
915 return true; 923 return true;
916 } 924 }
917 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { 925 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) {
918 if ( todo->hasStartDate() ) 926 if ( todo->hasStartDate() )
919 if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) 927 if ( mNavigator->selectedDates().last() < todo->dtStart().date() )
920 return false; 928 return false;
921 if ( todo->hasDueDate() ) 929 if ( todo->hasDueDate() )
922 if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) 930 if ( mNavigator->selectedDates().first() > todo->dtDue().date() )
923 return false; 931 return false;
924 } 932 }
925 return true; 933 return true;
926} 934}
927 935
928void KOTodoView::restoreItemState( QListViewItem *item ) 936void KOTodoView::restoreItemState( QListViewItem *item )
929{ 937{
930 pendingSubtodo = 0; 938 pendingSubtodo = 0;
931 while( item ) { 939 while( item ) {
932 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 940 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
933 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); 941 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) );
934 if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); 942 if( item->childCount() > 0 ) restoreItemState( item->firstChild() );
935 item = item->nextSibling(); 943 item = item->nextSibling();
936 } 944 }
937} 945}
938 946
939 947
940QMap<Todo *,KOTodoViewItem *>::ConstIterator 948QMap<Todo *,KOTodoViewItem *>::ConstIterator
941KOTodoView::insertTodoItem(Todo *todo) 949KOTodoView::insertTodoItem(Todo *todo)
942{ 950{
943 951
944 // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; 952 // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl;
945 // TODO: Check, if dynmaic cast is necessary 953 // TODO: Check, if dynmaic cast is necessary
946 954
947 pendingSubtodo = 0; 955 pendingSubtodo = 0;
948 Incidence *incidence = todo->relatedTo(); 956 Incidence *incidence = todo->relatedTo();
949 while ( incidence && !incidence->calEnabled() ) 957 while ( incidence && !incidence->calEnabled() )
950 incidence = incidence->relatedTo(); 958 incidence = incidence->relatedTo();
951 if (incidence && incidence->typeID() == todoID ) { 959 if (incidence && incidence->typeID() == todoID ) {
952 Todo *relatedTodo = static_cast<Todo *>(incidence); 960 Todo *relatedTodo = static_cast<Todo *>(incidence);
953 961
954 // kdDebug() << " has Related" << endl; 962 // kdDebug() << " has Related" << endl;
955 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 963 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
956 itemIterator = mTodoMap.find(relatedTodo); 964 itemIterator = mTodoMap.find(relatedTodo);
957 if (itemIterator == mTodoMap.end()) { 965 if (itemIterator == mTodoMap.end()) {
958 // kdDebug() << " related not yet in list" << endl; 966 // kdDebug() << " related not yet in list" << endl;
959 itemIterator = insertTodoItem (relatedTodo); 967 itemIterator = insertTodoItem (relatedTodo);
960 } 968 }
961 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem 969 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem
962 // and one into the map. Sure finding is more easy but why? -zecke 970 // and one into the map. Sure finding is more easy but why? -zecke
963 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); 971 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this);
964 return mTodoMap.insert(todo,todoItem); 972 return mTodoMap.insert(todo,todoItem);
965 } else { 973 } else {
966 // kdDebug() << " no Related" << endl; 974 // kdDebug() << " no Related" << endl;
967 // see above -zecke 975 // see above -zecke
968 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 976 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
969 return mTodoMap.insert(todo,todoItem); 977 return mTodoMap.insert(todo,todoItem);
970 } 978 }
971} 979}
972 980
973 981
974void KOTodoView::updateConfig() 982void KOTodoView::updateConfig()
975{ 983{
976 updateView(); 984 updateView();
977 mTodoListView->repaintContents(); 985 mTodoListView->repaintContents();
978} 986}
979 987
980QPtrList<Incidence> KOTodoView::selectedIncidences() 988QPtrList<Incidence> KOTodoView::selectedIncidences()
981{ 989{
982 QPtrList<Incidence> selected; 990 QPtrList<Incidence> selected;
983 991
984 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 992 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
985// if (!item) item = mActiveItem; 993// if (!item) item = mActiveItem;
986 if (item) selected.append(item->todo()); 994 if (item) selected.append(item->todo());
987 995
988 return selected; 996 return selected;
989} 997}
990 998
991QPtrList<Todo> KOTodoView::selectedTodos() 999QPtrList<Todo> KOTodoView::selectedTodos()
992{ 1000{
993 QPtrList<Todo> selected; 1001 QPtrList<Todo> selected;
994 1002
995 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 1003 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
996// if (!item) item = mActiveItem; 1004// if (!item) item = mActiveItem;
997 if (item) selected.append(item->todo()); 1005 if (item) selected.append(item->todo());
998 1006
999 return selected; 1007 return selected;
1000} 1008}
@@ -1311,221 +1319,219 @@ void KOTodoView::itemClicked(QListViewItem *item)
1311 emit reparentTodoSignal( newParent,newSub ); 1319 emit reparentTodoSignal( newParent,newSub );
1312 return; 1320 return;
1313 } 1321 }
1314 } 1322 }
1315 1323
1316} 1324}
1317 1325
1318void KOTodoView::setDocumentId( const QString &id ) 1326void KOTodoView::setDocumentId( const QString &id )
1319{ 1327{
1320 1328
1321 mDocPrefs->setDoc( id ); 1329 mDocPrefs->setDoc( id );
1322} 1330}
1323 1331
1324void KOTodoView::itemStateChanged( QListViewItem *item ) 1332void KOTodoView::itemStateChanged( QListViewItem *item )
1325{ 1333{
1326 if (!item) return; 1334 if (!item) return;
1327 1335
1328 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 1336 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
1329 1337
1330// kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; 1338// kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl;
1331 1339
1332 if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); 1340 if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() );
1333} 1341}
1334 1342
1335void KOTodoView::saveLayout(KConfig *config, const QString &group) const 1343void KOTodoView::saveLayout(KConfig *config, const QString &group) const
1336{ 1344{
1337 mTodoListView->saveLayout(config,group); 1345 mTodoListView->saveLayout(config,group);
1338} 1346}
1339 1347
1340void KOTodoView::restoreLayout(KConfig *config, const QString &group) 1348void KOTodoView::restoreLayout(KConfig *config, const QString &group)
1341{ 1349{
1342 mTodoListView->restoreLayout(config,group); 1350 mTodoListView->restoreLayout(config,group);
1343} 1351}
1344 1352
1345void KOTodoView::processSelectionChange() 1353void KOTodoView::processSelectionChange()
1346{ 1354{
1347// kdDebug() << "KOTodoView::processSelectionChange()" << endl; 1355// kdDebug() << "KOTodoView::processSelectionChange()" << endl;
1348 1356
1349 KOTodoViewItem *item = 1357 KOTodoViewItem *item =
1350 static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); 1358 static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() );
1351 1359
1352 if ( !item ) { 1360 if ( !item ) {
1353 emit incidenceSelected( 0 ); 1361 emit incidenceSelected( 0 );
1354 } else { 1362 } else {
1355 emit incidenceSelected( item->todo() ); 1363 emit incidenceSelected( item->todo() );
1356 } 1364 }
1357} 1365}
1358 1366
1359void KOTodoView::modified(bool b) 1367void KOTodoView::modified(bool b)
1360{ 1368{
1361 emit isModified(b); 1369 emit isModified(b);
1362} 1370}
1363void KOTodoView::setTodoModified( Todo* todo ) 1371void KOTodoView::setTodoModified( Todo* todo )
1364{ 1372{
1365 todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); 1373 todoModified( todo, KOGlobals::UNKNOWN_MODIFIED );
1366} 1374}
1367void KOTodoView::clearSelection() 1375void KOTodoView::clearSelection()
1368{ 1376{
1369 mTodoListView->selectAll( false ); 1377 mTodoListView->selectAll( false );
1370} 1378}
1371void KOTodoView::setAllOpen() 1379void KOTodoView::setAllOpen()
1372{ 1380{
1373 if ( isFlatDisplay ) { 1381 if ( isFlatDisplay ) {
1374 isFlatDisplay = false; 1382 isFlatDisplay = false;
1375 mPopupMenu->setItemChecked( 8,false ); 1383 mPopupMenu->setItemChecked( 8,false );
1376 updateView(); 1384 updateView();
1377 } else { 1385 } else {
1378 storeCurrentItem(); 1386 storeCurrentItem();
1379 } 1387 }
1380 setOpen(mTodoListView->firstChild(), true); 1388 setOpen(mTodoListView->firstChild(), true);
1381 resetCurrentItem(); 1389 resetCurrentItem();
1382} 1390}
1383void KOTodoView::setAllClose() 1391void KOTodoView::setAllClose()
1384{ 1392{
1385 if ( isFlatDisplay ) { 1393 if ( isFlatDisplay ) {
1386 isFlatDisplay = false; 1394 isFlatDisplay = false;
1387 mPopupMenu->setItemChecked( 8,false ); 1395 mPopupMenu->setItemChecked( 8,false );
1388 updateView(); 1396 updateView();
1389 } else { 1397 } else {
1390 storeCurrentItem(); 1398 storeCurrentItem();
1391 } 1399 }
1392 setOpen(mTodoListView->firstChild(), false); 1400 setOpen(mTodoListView->firstChild(), false);
1393 resetCurrentItem(); 1401 resetCurrentItem();
1394} 1402}
1395void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) 1403void KOTodoView::setOpen( QListViewItem* item, bool setOpenI)
1396{ 1404{
1397 1405
1398 while ( item ) { 1406 while ( item ) {
1399 setOpen( item->firstChild(), setOpenI ); 1407 setOpen( item->firstChild(), setOpenI );
1400 item->setOpen( setOpenI ); 1408 item->setOpen( setOpenI );
1401 item = item->nextSibling(); 1409 item = item->nextSibling();
1402 } 1410 }
1403} 1411}
1404 1412
1405void KOTodoView::displayAllFlat() 1413void KOTodoView::displayAllFlat()
1406{ 1414{
1415 storeCurrentItem();
1407 pendingSubtodo = 0; 1416 pendingSubtodo = 0;
1408 if ( mBlockUpdate ) { 1417 if ( mBlockUpdate ) {
1409 return; 1418 return;
1410 } 1419 }
1411 mPopupMenu->setItemChecked( 8,true ); 1420 mPopupMenu->setItemChecked( 8,true );
1412 isFlatDisplay = true; 1421 isFlatDisplay = true;
1413 QPtrList<Todo> todoList = calendar()->todos(); 1422 QPtrList<Todo> todoList = calendar()->todos();
1414 mTodoMap.clear(); 1423 mTodoMap.clear();
1415 mTodoListView->clear(); 1424 mTodoListView->clear();
1416 Todo *todo; 1425 Todo *todo;
1417 for(todo = todoList.first(); todo; todo = todoList.next()) { 1426 for(todo = todoList.first(); todo; todo = todoList.next()) {
1418 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 1427 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
1419 mTodoMap.insert(todo,todoItem); 1428 mTodoMap.insert(todo,todoItem);
1420 } 1429 }
1421 mTodoListView->setFocus(); 1430 resetCurrentItem();
1422 processSelectionChange();
1423} 1431}
1424 1432
1425void KOTodoView::setAllFlat() 1433void KOTodoView::setAllFlat()
1426{ 1434{
1427 if ( isFlatDisplay ) { 1435 if ( isFlatDisplay ) {
1428 isFlatDisplay = false; 1436 isFlatDisplay = false;
1429 mPopupMenu->setItemChecked( 8,false ); 1437 mPopupMenu->setItemChecked( 8,false );
1430 updateView(); 1438 updateView();
1431 return; 1439 return;
1432 } 1440 }
1433 storeCurrentItem();
1434 displayAllFlat(); 1441 displayAllFlat();
1435 resetCurrentItem();
1436} 1442}
1437 1443
1438void KOTodoView::purgeCompleted() 1444void KOTodoView::purgeCompleted()
1439{ 1445{
1440 emit purgeCompletedSignal(); 1446 emit purgeCompletedSignal();
1441 1447
1442} 1448}
1443void KOTodoView::toggleQuickTodo() 1449void KOTodoView::toggleQuickTodo()
1444{ 1450{
1445 if ( mQuickAdd->isVisible() ) { 1451 if ( mQuickAdd->isVisible() ) {
1446 mQuickAdd->hide(); 1452 mQuickAdd->hide();
1447 KOPrefs::instance()->mEnableQuickTodo = false; 1453 KOPrefs::instance()->mEnableQuickTodo = false;
1448 } 1454 }
1449 else { 1455 else {
1450 mQuickAdd->show(); 1456 mQuickAdd->show();
1451 KOPrefs::instance()->mEnableQuickTodo = true; 1457 KOPrefs::instance()->mEnableQuickTodo = true;
1452 } 1458 }
1453 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); 1459 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo);
1454 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); 1460 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo );
1455} 1461}
1456 1462
1457void KOTodoView::toggleRunning() 1463void KOTodoView::toggleRunning()
1458{ 1464{
1459 KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; 1465 KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos;
1460 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); 1466 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos);
1461 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); 1467 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos );
1462 updateView(); 1468 updateView();
1463} 1469}
1464 1470
1465void KOTodoView::toggleCompleted() 1471void KOTodoView::toggleCompleted()
1466{ 1472{
1467 KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; 1473 KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo;
1468 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); 1474 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo );
1469 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); 1475 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo );
1470 updateView(); 1476 updateView();
1471} 1477}
1472 1478
1473void KOTodoView::addQuickTodo() 1479void KOTodoView::addQuickTodo()
1474{ 1480{
1475 Todo *todo = new Todo(); 1481 Todo *todo = new Todo();
1476 todo->setSummary(mQuickAdd->text()); 1482 todo->setSummary(mQuickAdd->text());
1477 todo->setOrganizer(KOPrefs::instance()->email()); 1483 todo->setOrganizer(KOPrefs::instance()->email());
1478 CalFilter * cf = mCalendar->filter(); 1484 CalFilter * cf = mCalendar->filter();
1479 if ( cf ) { 1485 if ( cf ) {
1480 if ( cf->isEnabled()&& cf->showCategories()) { 1486 if ( cf->isEnabled()&& cf->showCategories()) {
1481 todo->setCategories(cf->categoryList()); 1487 todo->setCategories(cf->categoryList());
1482 } 1488 }
1483 if ( cf->isEnabled() ) 1489 if ( cf->isEnabled() )
1484 todo->setSecrecy( cf->getSecrecy()); 1490 todo->setSecrecy( cf->getSecrecy());
1485 } 1491 }
1486 mCalendar->addTodo(todo); 1492 mCalendar->addTodo(todo);
1487 mQuickAdd->setText(""); 1493 mQuickAdd->setText("");
1488 todoModified (todo, KOGlobals::EVENTADDED ); 1494 todoModified (todo, KOGlobals::EVENTADDED );
1489 updateView(); 1495 updateView();
1490} 1496}
1491 1497
1492void KOTodoView::keyPressEvent ( QKeyEvent * e ) 1498void KOTodoView::keyPressEvent ( QKeyEvent * e )
1493{ 1499{
1494 // e->ignore(); 1500 // e->ignore();
1495 //return; 1501 //return;
1496 //qDebug("KOTodoView::keyPressEvent "); 1502 //qDebug("KOTodoView::keyPressEvent ");
1497 switch ( e->key() ) { 1503 switch ( e->key() ) {
1498 case Qt::Key_Down: 1504 case Qt::Key_Down:
1499 case Qt::Key_Up: 1505 case Qt::Key_Up:
1500 QWidget::keyPressEvent ( e ); 1506 QWidget::keyPressEvent ( e );
1501 break; 1507 break;
1502 1508
1503 case Qt::Key_Q: 1509 case Qt::Key_Q:
1504 toggleQuickTodo(); 1510 toggleQuickTodo();
1505 break; 1511 break;
1506 case Qt::Key_U: 1512 case Qt::Key_U:
1507 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { 1513 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) {
1508 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1514 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1509 unparentTodo(); 1515 unparentTodo();
1510 e->accept(); 1516 e->accept();
1511 } else 1517 } else
1512 e->ignore(); 1518 e->ignore();
1513 break; 1519 break;
1514 case Qt::Key_S: 1520 case Qt::Key_S:
1515 if ( e->state() == Qt::ControlButton ) { 1521 if ( e->state() == Qt::ControlButton ) {
1516 e->ignore(); 1522 e->ignore();
1517 break; 1523 break;
1518 } 1524 }
1519 if ( e->state() == Qt::ShiftButton ) { 1525 if ( e->state() == Qt::ShiftButton ) {
1520 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1526 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1521 reparentTodo(); 1527 reparentTodo();
1522 e->accept(); 1528 e->accept();
1523 } else 1529 } else
1524 e->ignore(); 1530 e->ignore();
1525 break; 1531 break;
1526 case Qt::Key_P: 1532 case Qt::Key_P:
1527 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { 1533 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) {
1528 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1534 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1529 if ( pendingSubtodo ) 1535 if ( pendingSubtodo )
1530 itemClicked(mActiveItem); 1536 itemClicked(mActiveItem);
1531 e->accept(); 1537 e->accept();
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h
index 1b31d0d..9ae7f53 100644
--- a/korganizer/kotodoview.h
+++ b/korganizer/kotodoview.h
@@ -131,172 +131,173 @@ class KOTodoListView : public KListView
131 131
132 132
133/** 133/**
134 This is the line-edit on top of the todoview for fast addition of new todos 134 This is the line-edit on top of the todoview for fast addition of new todos
135*/ 135*/
136class KOQuickTodo : public QLineEdit 136class KOQuickTodo : public QLineEdit
137{ 137{
138 public: 138 public:
139 KOQuickTodo(QWidget *parent=0); 139 KOQuickTodo(QWidget *parent=0);
140 protected: 140 protected:
141 void focusInEvent(QFocusEvent *ev); 141 void focusInEvent(QFocusEvent *ev);
142 void focusOutEvent(QFocusEvent *ev); 142 void focusOutEvent(QFocusEvent *ev);
143}; 143};
144 144
145 145
146/** 146/**
147 This class provides a multi-column list view of todo events. 147 This class provides a multi-column list view of todo events.
148 148
149 @short multi-column list view of todo events. 149 @short multi-column list view of todo events.
150 @author Cornelius Schumacher <schumacher@kde.org> 150 @author Cornelius Schumacher <schumacher@kde.org>
151*/ 151*/
152class KOTodoView : public KOrg::BaseView 152class KOTodoView : public KOrg::BaseView
153{ 153{
154 Q_OBJECT 154 Q_OBJECT
155 public: 155 public:
156 KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); 156 KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 );
157 ~KOTodoView(); 157 ~KOTodoView();
158 158
159 QPtrList<Incidence> selectedIncidences(); 159 QPtrList<Incidence> selectedIncidences();
160 QPtrList<Todo> selectedTodos(); 160 QPtrList<Todo> selectedTodos();
161 161
162 DateList selectedDates() 162 DateList selectedDates()
163 {DateList q; 163 {DateList q;
164 return q;} 164 return q;}
165 165
166 /** Return number of shown dates. TodoView does not show dates, */ 166 /** Return number of shown dates. TodoView does not show dates, */
167 int currentDateCount() { return 0; } 167 int currentDateCount() { return 0; }
168 168
169 void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); 169 void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td);
170 170
171 void setDocumentId( const QString & ); 171 void setDocumentId( const QString & );
172 172
173 void saveLayout(KConfig *config, const QString &group) const; 173 void saveLayout(KConfig *config, const QString &group) const;
174 void restoreLayout(KConfig *config, const QString &group); 174 void restoreLayout(KConfig *config, const QString &group);
175 /** Create a popup menu to set categories */ 175 /** Create a popup menu to set categories */
176 QPopupMenu *getCategoryPopupMenu (KOTodoViewItem *todoItem); 176 QPopupMenu *getCategoryPopupMenu (KOTodoViewItem *todoItem);
177 void setNavigator( DateNavigator* nav ) {mNavigator = nav;} 177 void setNavigator( DateNavigator* nav ) {mNavigator = nav;}
178 QString getWhatsThisText(QPoint p); 178 QString getWhatsThisText(QPoint p);
179 void clearList() {mTodoListView->clear(); } 179 void clearList() {mTodoListView->clear(); }
180 180
181 public slots: 181 public slots:
182 void updateView(); 182 void updateView();
183 void updateConfig(); 183 void updateConfig();
184 184
185 void changeEventDisplay(Event *, int); 185 void changeEventDisplay(Event *, int);
186 186
187 void showDates(const QDate &start, const QDate &end); 187 void showDates(const QDate &start, const QDate &end);
188 void showEvents(QPtrList<Event> eventList); 188 void showEvents(QPtrList<Event> eventList);
189 189
190 void clearSelection(); 190 void clearSelection();
191 void jumpToDate (); 191 void jumpToDate ();
192 192
193 void editItem(QListViewItem *item); 193 void editItem(QListViewItem *item);
194 void showItem(QListViewItem *item,const QPoint &,int); 194 void showItem(QListViewItem *item,const QPoint &,int);
195 void popupMenu(QListViewItem *item,const QPoint &,int); 195 void popupMenu(QListViewItem *item,const QPoint &,int);
196 void newTodo(); 196 void newTodo();
197 void newSubTodo(); 197 void newSubTodo();
198 void unparentTodo(); 198 void unparentTodo();
199 void reparentTodo(); 199 void reparentTodo();
200 void showTodo(); 200 void showTodo();
201 void editTodo(); 201 void editTodo();
202 void cloneTodo(); 202 void cloneTodo();
203 void cancelTodo(); 203 void cancelTodo();
204 void moveTodo(); 204 void moveTodo();
205 void beamTodo(); 205 void beamTodo();
206 void deleteTodo(); 206 void deleteTodo();
207 207
208 void setNewPriority(int); 208 void setNewPriority(int);
209 void setNewPercentage(int); 209 void setNewPercentage(int);
210 void changedCategories(int); 210 void changedCategories(int);
211 211
212 void setAllOpen(); 212 void setAllOpen();
213 void setAllClose(); 213 void setAllClose();
214 void setAllFlat(); 214 void setAllFlat();
215 void displayAllFlat(); 215 void displayAllFlat();
216 216
217 void purgeCompleted(); 217 void purgeCompleted();
218 void toggleCompleted(); 218 void toggleCompleted();
219 void toggleRunning(); 219 void toggleRunning();
220 void toggleQuickTodo(); 220 void toggleQuickTodo();
221 void updateTodo( Todo *, int ); 221 void updateTodo( Todo *, int );
222 222
223 void itemClicked(QListViewItem *); 223 void itemClicked(QListViewItem *);
224 void itemStateChanged(QListViewItem *); 224 void itemStateChanged(QListViewItem *);
225 void modified(bool); 225 void modified(bool);
226 void itemDoubleClicked(QListViewItem *item); 226 void itemDoubleClicked(QListViewItem *item);
227 void resetFocusToList();
227 228
228 signals: 229 signals:
229 void newTodoSignal(); 230 void newTodoSignal();
230 void newSubTodoSignal(Todo *); 231 void newSubTodoSignal(Todo *);
231 void unparentTodoSignal(Todo *); 232 void unparentTodoSignal(Todo *);
232 void reparentTodoSignal( Todo *,Todo * ); 233 void reparentTodoSignal( Todo *,Todo * );
233 void showTodoSignal(Todo *); 234 void showTodoSignal(Todo *);
234 235
235 void editTodoSignal(Todo *); 236 void editTodoSignal(Todo *);
236 void deleteTodoSignal(Todo *); 237 void deleteTodoSignal(Todo *);
237 void todoModifiedSignal (Todo *, int); 238 void todoModifiedSignal (Todo *, int);
238 239
239 void isModified(bool); 240 void isModified(bool);
240 void cloneTodoSignal( Incidence * ); 241 void cloneTodoSignal( Incidence * );
241 void cancelTodoSignal( Incidence * ); 242 void cancelTodoSignal( Incidence * );
242 void moveTodoSignal( Incidence * ); 243 void moveTodoSignal( Incidence * );
243 void beamTodoSignal( Incidence * ); 244 void beamTodoSignal( Incidence * );
244 void purgeCompletedSignal(); 245 void purgeCompletedSignal();
245 246
246 protected slots: 247 protected slots:
247 void toggleRunningItem(); 248 void toggleRunningItem();
248 void paintNeeded(); 249 void paintNeeded();
249 void processSelectionChange(); 250 void processSelectionChange();
250 void addQuickTodo(); 251 void addQuickTodo();
251 void setTodoModified( Todo* ); 252 void setTodoModified( Todo* );
252 void todoModified(Todo *, int ); 253 void todoModified(Todo *, int );
253 254
254 private: 255 private:
255 /* 256 /*
256 * the TodoEditor approach is rather unscaling in the long 257 * the TodoEditor approach is rather unscaling in the long
257 * run. 258 * run.
258 * Korganizer keeps it in memory and we need to update 259 * Korganizer keeps it in memory and we need to update
259 * 1. make KOTodoViewItem a QObject again? 260 * 1. make KOTodoViewItem a QObject again?
260 * 2. add a public method for setting one todo modified? 261 * 2. add a public method for setting one todo modified?
261 * 3. add a private method for setting a todo modified + friend here? 262 * 3. add a private method for setting a todo modified + friend here?
262 * -- zecke 2002-07-08 263 * -- zecke 2002-07-08
263 */ 264 */
264 KOTodoViewWhatsThis* mKOTodoViewWhatsThis; 265 KOTodoViewWhatsThis* mKOTodoViewWhatsThis;
265 friend class KOTodoListView; 266 friend class KOTodoListView;
266 void paintEvent(QPaintEvent * pevent); 267 void paintEvent(QPaintEvent * pevent);
267 bool mPendingUpdateBeforeRepaint; 268 bool mPendingUpdateBeforeRepaint;
268 friend class KOTodoViewItem; 269 friend class KOTodoViewItem;
269 QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); 270 QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo);
270 void restoreItemState( QListViewItem * ); 271 void restoreItemState( QListViewItem * );
271 272
272 bool checkTodo( Todo * ); 273 bool checkTodo( Todo * );
273 bool isFlatDisplay; 274 bool isFlatDisplay;
274 void setOpen( QListViewItem*, bool setOpen); 275 void setOpen( QListViewItem*, bool setOpen);
275 KOTodoListView *mTodoListView; 276 KOTodoListView *mTodoListView;
276 QPopupMenu *mItemPopupMenu; 277 QPopupMenu *mItemPopupMenu;
277 QPopupMenu *mPopupMenu; 278 QPopupMenu *mPopupMenu;
278 QPopupMenu *mPriorityPopupMenu; 279 QPopupMenu *mPriorityPopupMenu;
279 QPopupMenu *mPercentageCompletedPopupMenu; 280 QPopupMenu *mPercentageCompletedPopupMenu;
280 QPopupMenu *mCategoryPopupMenu; 281 QPopupMenu *mCategoryPopupMenu;
281 282
282 QMap<int, int> mPercentage; 283 QMap<int, int> mPercentage;
283 QMap<int, int> mPriority; 284 QMap<int, int> mPriority;
284 QMap<int, QString> mCategory; 285 QMap<int, QString> mCategory;
285 KOTodoViewItem *mActiveItem; 286 KOTodoViewItem *mActiveItem;
286 287
287 QMap<Todo *,KOTodoViewItem *> mTodoMap; 288 QMap<Todo *,KOTodoViewItem *> mTodoMap;
288 QString mName; 289 QString mName;
289 290
290 DocPrefs *mDocPrefs; 291 DocPrefs *mDocPrefs;
291 QString mCurrentDoc; 292 QString mCurrentDoc;
292 KOQuickTodo *mQuickAdd; 293 KOQuickTodo *mQuickAdd;
293 bool mBlockUpdate; 294 bool mBlockUpdate;
294 void keyPressEvent ( QKeyEvent * ) ; 295 void keyPressEvent ( QKeyEvent * ) ;
295 KOTodoViewItem * pendingSubtodo; 296 KOTodoViewItem * pendingSubtodo;
296 DateNavigator* mNavigator; 297 DateNavigator* mNavigator;
297 void storeCurrentItem(); 298 void storeCurrentItem();
298 void resetCurrentItem(); 299 void resetCurrentItem();
299 Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove; 300 Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove;
300}; 301};
301 302
302#endif 303#endif