summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-04-08 11:36:36 (UTC)
committer zautrix <zautrix>2005-04-08 11:36:36 (UTC)
commitba04f6a4b6b651dcff11ca17103cba42330e52be (patch) (unidiff)
treec8c02a1327abbd87cf5f019399e8e7bf1940a2bc /korganizer
parent59fb8a0ac35bf3b81f1c4e2e4fc6b61356d064ef (diff)
downloadkdepimpi-ba04f6a4b6b651dcff11ca17103cba42330e52be.zip
kdepimpi-ba04f6a4b6b651dcff11ca17103cba42330e52be.tar.gz
kdepimpi-ba04f6a4b6b651dcff11ca17103cba42330e52be.tar.bz2
fix
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kotodoview.cpp21
-rw-r--r--korganizer/kotodoview.h2
2 files changed, 17 insertions, 6 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 395325c..935a5f5 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -542,424 +542,435 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
542 connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, 542 connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *,
543 const QPoint &,int ) ), 543 const QPoint &,int ) ),
544 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 544 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
545 */ 545 */
546 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, 546 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *,
547 const QPoint &,int ) ), 547 const QPoint &,int ) ),
548 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 548 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
549 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), 549 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ),
550 SLOT( itemClicked( QListViewItem * ) ) ); 550 SLOT( itemClicked( QListViewItem * ) ) );
551 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), 551 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ),
552 SLOT( itemDoubleClicked( QListViewItem * ) ) ); 552 SLOT( itemDoubleClicked( QListViewItem * ) ) );
553 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 553 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
554 SLOT( updateView() ) ); 554 SLOT( updateView() ) );
555 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 555 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
556 SLOT( todoModified(Todo *, int) ) ); 556 SLOT( todoModified(Todo *, int) ) );
557 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), 557 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ),
558 SLOT( itemStateChanged( QListViewItem * ) ) ); 558 SLOT( itemStateChanged( QListViewItem * ) ) );
559 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), 559 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ),
560 SLOT( itemStateChanged( QListViewItem * ) ) ); 560 SLOT( itemStateChanged( QListViewItem * ) ) );
561 connect( mTodoListView, SIGNAL( paintNeeded() ), 561 connect( mTodoListView, SIGNAL( paintNeeded() ),
562 SLOT( paintNeeded()) ); 562 SLOT( paintNeeded()) );
563 563
564#if 0 564#if 0
565 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), 565 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)),
566 SLOT(selectionChanged(QListViewItem *))); 566 SLOT(selectionChanged(QListViewItem *)));
567 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), 567 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)),
568 SLOT(selectionChanged(QListViewItem *))); 568 SLOT(selectionChanged(QListViewItem *)));
569 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), 569 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)),
570 SLOT(selectionChanged(QListViewItem *))); 570 SLOT(selectionChanged(QListViewItem *)));
571#endif 571#endif
572 572
573 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); 573 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) ));
574 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); 574 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) ));
575 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); 575 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) ));
576 576
577 connect( mTodoListView, SIGNAL(selectionChanged() ), 577 connect( mTodoListView, SIGNAL(selectionChanged() ),
578 SLOT( processSelectionChange() ) ); 578 SLOT( processSelectionChange() ) );
579 connect( mQuickAdd, SIGNAL( returnPressed () ), 579 connect( mQuickAdd, SIGNAL( returnPressed () ),
580 SLOT( addQuickTodo() ) ); 580 SLOT( addQuickTodo() ) );
581 581
582} 582}
583 583
584KOTodoView::~KOTodoView() 584KOTodoView::~KOTodoView()
585{ 585{
586 // delete mKOTodoViewWhatsThis; 586 // delete mKOTodoViewWhatsThis;
587 delete mDocPrefs; 587 delete mDocPrefs;
588} 588}
589QString KOTodoView::getWhatsThisText(QPoint p) 589QString KOTodoView::getWhatsThisText(QPoint p)
590{ 590{
591 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p ); 591 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p );
592 if ( item ) 592 if ( item )
593 return KIncidenceFormatter::instance()->getFormattedText( item->todo(), 593 return KIncidenceFormatter::instance()->getFormattedText( item->todo(),
594 KOPrefs::instance()->mWTshowDetails, 594 KOPrefs::instance()->mWTshowDetails,
595 KOPrefs::instance()->mWTshowCreated, 595 KOPrefs::instance()->mWTshowCreated,
596 KOPrefs::instance()->mWTshowChanged); 596 KOPrefs::instance()->mWTshowChanged);
597 return i18n("That is the todo view" ); 597 return i18n("That is the todo view" );
598 598
599} 599}
600 600
601void KOTodoView::jumpToDate () 601void KOTodoView::jumpToDate ()
602{ 602{
603 // if (mActiveItem) { 603 // if (mActiveItem) {
604// mActiveItem->todo()); 604// mActiveItem->todo());
605// if ( mActiveItem->todo()->hasDueDate() ) 605// if ( mActiveItem->todo()->hasDueDate() )
606// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); 606// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() );
607} 607}
608void KOTodoView::paintNeeded() 608void KOTodoView::paintNeeded()
609{ 609{
610 if ( mPendingUpdateBeforeRepaint ) { 610 if ( mPendingUpdateBeforeRepaint ) {
611 updateView(); 611 updateView();
612 mPendingUpdateBeforeRepaint = false; 612 mPendingUpdateBeforeRepaint = false;
613 } 613 }
614} 614}
615void KOTodoView::paintEvent(QPaintEvent * pevent) 615void KOTodoView::paintEvent(QPaintEvent * pevent)
616{ 616{
617 if ( mPendingUpdateBeforeRepaint ) { 617 if ( mPendingUpdateBeforeRepaint ) {
618 updateView(); 618 updateView();
619 mPendingUpdateBeforeRepaint = false; 619 mPendingUpdateBeforeRepaint = false;
620 } 620 }
621 KOrg::BaseView::paintEvent( pevent); 621 KOrg::BaseView::paintEvent( pevent);
622} 622}
623 623
624void KOTodoView::updateView() 624void KOTodoView::updateView()
625{ 625{
626 pendingSubtodo = 0; 626 pendingSubtodo = 0;
627 if ( mBlockUpdate ) { 627 if ( mBlockUpdate ) {
628 return; 628 return;
629 } 629 }
630 if ( !isVisible() ) { 630 if ( !isVisible() ) {
631 mPendingUpdateBeforeRepaint = true; 631 mPendingUpdateBeforeRepaint = true;
632 return; 632 return;
633 } 633 }
634 storeCurrentItem(); 634 storeCurrentItem();
635 //qDebug("KOTodoView::updateView() %x", this); 635 //qDebug("KOTodoView::updateView() %x", this);
636 if ( isFlatDisplay ) { 636 if ( isFlatDisplay ) {
637 displayAllFlat(); 637 displayAllFlat();
638 resetCurrentItem(); 638 resetCurrentItem();
639 return; 639 return;
640 } 640 }
641 //qDebug("update "); 641 //qDebug("update ");
642// kdDebug() << "KOTodoView::updateView()" << endl; 642// kdDebug() << "KOTodoView::updateView()" << endl;
643 QFont fo = KOPrefs::instance()->mTodoViewFont; 643 QFont fo = KOPrefs::instance()->mTodoViewFont;
644 644
645 645
646 mTodoListView->clear(); 646 mTodoListView->clear();
647 if ( mName == "todolistsmall" ) { 647 if ( mName == "todolistsmall" ) {
648 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { 648 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
649 int ps = fo.pointSize() -2; 649 int ps = fo.pointSize() -2;
650 if ( ps > 12 ) 650 if ( ps > 12 )
651 ps -= 2; 651 ps -= 2;
652 fo.setPointSize( ps ); 652 fo.setPointSize( ps );
653 } 653 }
654 } 654 }
655 655
656 mTodoListView->setFont( fo ); 656 mTodoListView->setFont( fo );
657 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); 657 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont );
658 //mTodoListView->header()->setMaximumHeight(fm.height()); 658 //mTodoListView->header()->setMaximumHeight(fm.height());
659 QPtrList<Todo> todoList = calendar()->todos(); 659 QPtrList<Todo> todoList = calendar()->todos();
660 660
661/* 661/*
662 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; 662 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl;
663 Event *t; 663 Event *t;
664 for(t = todoList.first(); t; t = todoList.next()) { 664 for(t = todoList.first(); t; t = todoList.next()) {
665 kdDebug() << " " << t->getSummary() << endl; 665 kdDebug() << " " << t->getSummary() << endl;
666 666
667 if (t->getRelatedTo()) { 667 if (t->getRelatedTo()) {
668 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; 668 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl;
669 } 669 }
670 670
671 QPtrList<Event> l = t->getRelations(); 671 QPtrList<Event> l = t->getRelations();
672 Event *c; 672 Event *c;
673 for(c=l.first();c;c=l.next()) { 673 for(c=l.first();c;c=l.next()) {
674 kdDebug() << " - relation: " << c->getSummary() << endl; 674 kdDebug() << " - relation: " << c->getSummary() << endl;
675 } 675 }
676 } 676 }
677*/ 677*/
678 678
679 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a 679 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a
680 // specific order of events. That means that we have to generate parent items 680 // specific order of events. That means that we have to generate parent items
681 // recursively for proper hierarchical display of Todos. 681 // recursively for proper hierarchical display of Todos.
682 mTodoMap.clear(); 682 mTodoMap.clear();
683 Todo *todo; 683 Todo *todo;
684 todo = todoList.first();// todo; todo = todoList.next()) { 684 todo = todoList.first();// todo; todo = todoList.next()) {
685 while ( todo ) { 685 while ( todo ) {
686 bool next = true; 686 bool next = true;
687 // qDebug("todo %s ", todo->summary().latin1()); 687 // qDebug("todo %s ", todo->summary().latin1());
688 Incidence *incidence = todo->relatedTo(); 688 Incidence *incidence = todo->relatedTo();
689 while ( incidence ) { 689 while ( incidence ) {
690 if ( incidence->type() == "Todo") { 690 if ( incidence->type() == "Todo") {
691 //qDebug("related %s ",incidence->summary().latin1() ); 691 //qDebug("related %s ",incidence->summary().latin1() );
692 if ( !(todoList.contains ( ((Todo* )incidence ) ) )) { 692 if ( !(todoList.contains ( ((Todo* )incidence ) ) )) {
693 //qDebug("related not found "); 693 //qDebug("related not found ");
694 todoList.remove( ); 694 todoList.remove( );
695 todo = todoList.current(); 695 todo = todoList.current();
696 next = false; 696 next = false;
697 incidence = 0; 697 incidence = 0;
698 698
699 } else { 699 } else {
700 //qDebug("related found "); 700 //qDebug("related found ");
701 incidence = incidence->relatedTo(); 701 incidence = incidence->relatedTo();
702 } 702 }
703 } else 703 } else
704 incidence = 0; 704 incidence = 0;
705 } 705 }
706 if ( next ) 706 if ( next )
707 todo = todoList.next(); 707 todo = todoList.next();
708 } 708 }
709// qDebug("again .... "); 709// qDebug("again .... ");
710// for(todo = todoList.first(); todo; todo = todoList.next()) { 710// for(todo = todoList.first(); todo; todo = todoList.next()) {
711 711
712// qDebug("yytodo %s ", todo->summary().latin1()); 712// qDebug("yytodo %s ", todo->summary().latin1());
713// } 713// }
714 //qDebug("for "); 714 //qDebug("for ");
715 for(todo = todoList.first(); todo; todo = todoList.next()) { 715 for(todo = todoList.first(); todo; todo = todoList.next()) {
716 if (!mTodoMap.contains(todo) && checkTodo( todo ) ) 716 if (!mTodoMap.contains(todo) && checkTodo( todo ) )
717 { 717 {
718 insertTodoItem(todo); 718 insertTodoItem(todo);
719 } 719 }
720 } 720 }
721 //qDebug("for end "); 721 //qDebug("for end ");
722 // Restore opened/closed state 722 // Restore opened/closed state
723 mTodoListView->blockSignals( true ); 723 mTodoListView->blockSignals( true );
724 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); 724 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() );
725 mTodoListView->blockSignals( false ); 725 mTodoListView->blockSignals( false );
726 resetCurrentItem(); 726 resetCurrentItem();
727 processSelectionChange(); 727 processSelectionChange();
728} 728}
729 729
730void KOTodoView::storeCurrentItem() 730void KOTodoView::storeCurrentItem()
731{ 731{
732 mCurItem = 0; 732 mCurItem = 0;
733 mCurItemRootParent = 0; 733 mCurItemRootParent = 0;
734 mCurItemParent = 0;
734 mCurItemAbove = 0; 735 mCurItemAbove = 0;
735 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 736 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
736 if (mActiveItem) { 737 if (mActiveItem) {
737 mCurItem = mActiveItem->todo(); 738 mCurItem = mActiveItem->todo();
738 KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove (); 739 KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove ();
739 if ( activeItemAbove ) 740 if ( activeItemAbove )
740 mCurItemAbove = activeItemAbove->todo(); 741 mCurItemAbove = activeItemAbove->todo();
741 mCurItemRootParent = mCurItem; 742 mCurItemRootParent = mCurItem;
743 mCurItemParent = mCurItemRootParent->relatedTo();
742 while ( mCurItemRootParent->relatedTo() != 0 ) 744 while ( mCurItemRootParent->relatedTo() != 0 )
743 mCurItemRootParent = mCurItemRootParent->relatedTo(); 745 mCurItemRootParent = mCurItemRootParent->relatedTo();
744 } 746 }
745 mActiveItem = 0; 747 mActiveItem = 0;
746} 748}
747 749
748void KOTodoView::resetCurrentItem() 750void KOTodoView::resetCurrentItem()
749{ 751{
750 mTodoListView->setFocus(); 752 mTodoListView->setFocus();
751 KOTodoViewItem* foundItem = 0; 753 KOTodoViewItem* foundItem = 0;
752 KOTodoViewItem* foundItemRoot = 0; 754 KOTodoViewItem* foundItemRoot = 0;
755 KOTodoViewItem* foundItemParent = 0;
753 KOTodoViewItem* foundItemAbove = 0; 756 KOTodoViewItem* foundItemAbove = 0;
754 if ( mTodoListView->firstChild () ) { 757 if ( mTodoListView->firstChild () ) {
755 if ( mCurItem ) { 758 if ( mCurItem ) {
756 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild (); 759 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild ();
757 while ( item ) { 760 while ( item ) {
758 if ( item->todo() == mCurItem ) { 761 if ( item->todo() == mCurItem ) {
759 foundItem = item; 762 foundItem = item;
760 break; 763 break;
761 } else if ( item->todo() == mCurItemAbove ) { 764 } else if ( item->todo() == mCurItemAbove ) {
762 foundItemAbove = item; 765 foundItemAbove = item;
763 766
764 } else if ( item->todo() == mCurItemRootParent ) { 767 }
768 if ( item->todo() == mCurItemRootParent ) {
765 foundItemRoot = item; 769 foundItemRoot = item;
766 } 770 }
771 if ( item->todo() == mCurItemParent ) {
772 foundItemParent = item;
773 }
767 item = (KOTodoViewItem*)item->itemBelow(); 774 item = (KOTodoViewItem*)item->itemBelow();
768 } 775 }
769 if ( ! foundItem ) { 776 if ( ! foundItem ) {
770 if ( foundItemRoot ) 777 if ( foundItemParent ) {
771 foundItem = foundItemRoot; 778 foundItem = foundItemParent;
772 else 779 } else {
773 foundItem = foundItemAbove; 780 if ( foundItemRoot )
781 foundItem = foundItemRoot;
782 else
783 foundItem = foundItemAbove;
784 }
774 } 785 }
775 } 786 }
776 if ( foundItem ) { 787 if ( foundItem ) {
777 mTodoListView->setCurrentItem( foundItem ); 788 mTodoListView->setCurrentItem( foundItem );
778 mTodoListView->ensureItemVisible( foundItem ); 789 mTodoListView->ensureItemVisible( foundItem );
779 } else { 790 } else {
780 mTodoListView->setCurrentItem( mTodoListView->firstChild () ); 791 mTodoListView->setCurrentItem( mTodoListView->firstChild () );
781 } 792 }
782 } 793 }
783 mTodoListView->setFocus(); 794 mTodoListView->setFocus();
784} 795}
785//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; 796//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove;
786bool KOTodoView::checkTodo( Todo * todo ) 797bool KOTodoView::checkTodo( Todo * todo )
787{ 798{
788 799
789 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) 800 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() )
790 return false; 801 return false;
791 if ( !todo->isCompleted() ) { 802 if ( !todo->isCompleted() ) {
792 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() ) 803 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() )
793 return true; 804 return true;
794 } 805 }
795 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { 806 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) {
796 if ( todo->hasStartDate() ) 807 if ( todo->hasStartDate() )
797 if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) 808 if ( mNavigator->selectedDates().last() < todo->dtStart().date() )
798 return false; 809 return false;
799 if ( todo->hasDueDate() ) 810 if ( todo->hasDueDate() )
800 if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) 811 if ( mNavigator->selectedDates().first() > todo->dtDue().date() )
801 return false; 812 return false;
802 } 813 }
803 return true; 814 return true;
804} 815}
805 816
806void KOTodoView::restoreItemState( QListViewItem *item ) 817void KOTodoView::restoreItemState( QListViewItem *item )
807{ 818{
808 pendingSubtodo = 0; 819 pendingSubtodo = 0;
809 while( item ) { 820 while( item ) {
810 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 821 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
811 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); 822 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) );
812 if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); 823 if( item->childCount() > 0 ) restoreItemState( item->firstChild() );
813 item = item->nextSibling(); 824 item = item->nextSibling();
814 } 825 }
815} 826}
816 827
817 828
818QMap<Todo *,KOTodoViewItem *>::ConstIterator 829QMap<Todo *,KOTodoViewItem *>::ConstIterator
819 KOTodoView::insertTodoItem(Todo *todo) 830 KOTodoView::insertTodoItem(Todo *todo)
820{ 831{
821 832
822// kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; 833// kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl;
823 // TODO: Check, if dynmaic cast is necessary 834 // TODO: Check, if dynmaic cast is necessary
824 835
825 pendingSubtodo = 0; 836 pendingSubtodo = 0;
826 Incidence *incidence = todo->relatedTo(); 837 Incidence *incidence = todo->relatedTo();
827 if (incidence && incidence->type() == "Todo") { 838 if (incidence && incidence->type() == "Todo") {
828 Todo *relatedTodo = static_cast<Todo *>(incidence); 839 Todo *relatedTodo = static_cast<Todo *>(incidence);
829 840
830// kdDebug() << " has Related" << endl; 841// kdDebug() << " has Related" << endl;
831 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 842 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
832 itemIterator = mTodoMap.find(relatedTodo); 843 itemIterator = mTodoMap.find(relatedTodo);
833 if (itemIterator == mTodoMap.end()) { 844 if (itemIterator == mTodoMap.end()) {
834// kdDebug() << " related not yet in list" << endl; 845// kdDebug() << " related not yet in list" << endl;
835 itemIterator = insertTodoItem (relatedTodo); 846 itemIterator = insertTodoItem (relatedTodo);
836 } 847 }
837 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem 848 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem
838 // and one into the map. Sure finding is more easy but why? -zecke 849 // and one into the map. Sure finding is more easy but why? -zecke
839 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); 850 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this);
840 return mTodoMap.insert(todo,todoItem); 851 return mTodoMap.insert(todo,todoItem);
841 } else { 852 } else {
842// kdDebug() << " no Related" << endl; 853// kdDebug() << " no Related" << endl;
843 // see above -zecke 854 // see above -zecke
844 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 855 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
845 return mTodoMap.insert(todo,todoItem); 856 return mTodoMap.insert(todo,todoItem);
846 } 857 }
847} 858}
848 859
849 860
850void KOTodoView::updateConfig() 861void KOTodoView::updateConfig()
851{ 862{
852 updateView(); 863 updateView();
853 mTodoListView->repaintContents(); 864 mTodoListView->repaintContents();
854} 865}
855 866
856QPtrList<Incidence> KOTodoView::selectedIncidences() 867QPtrList<Incidence> KOTodoView::selectedIncidences()
857{ 868{
858 QPtrList<Incidence> selected; 869 QPtrList<Incidence> selected;
859 870
860 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 871 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
861// if (!item) item = mActiveItem; 872// if (!item) item = mActiveItem;
862 if (item) selected.append(item->todo()); 873 if (item) selected.append(item->todo());
863 874
864 return selected; 875 return selected;
865} 876}
866 877
867QPtrList<Todo> KOTodoView::selectedTodos() 878QPtrList<Todo> KOTodoView::selectedTodos()
868{ 879{
869 QPtrList<Todo> selected; 880 QPtrList<Todo> selected;
870 881
871 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 882 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
872// if (!item) item = mActiveItem; 883// if (!item) item = mActiveItem;
873 if (item) selected.append(item->todo()); 884 if (item) selected.append(item->todo());
874 885
875 return selected; 886 return selected;
876} 887}
877 888
878void KOTodoView::changeEventDisplay(Event *, int) 889void KOTodoView::changeEventDisplay(Event *, int)
879{ 890{
880 updateView(); 891 updateView();
881} 892}
882 893
883void KOTodoView::showDates(const QDate &, const QDate &) 894void KOTodoView::showDates(const QDate &, const QDate &)
884{ 895{
885} 896}
886 897
887void KOTodoView::showEvents(QPtrList<Event>) 898void KOTodoView::showEvents(QPtrList<Event>)
888{ 899{
889 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; 900 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl;
890} 901}
891 902
892void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, 903void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd,
893 const QDate &td) 904 const QDate &td)
894{ 905{
895#ifndef KORG_NOPRINTER 906#ifndef KORG_NOPRINTER
896 calPrinter->preview(CalPrinter::Todolist, fd, td); 907 calPrinter->preview(CalPrinter::Todolist, fd, td);
897#endif 908#endif
898} 909}
899 910
900void KOTodoView::editItem(QListViewItem *item ) 911void KOTodoView::editItem(QListViewItem *item )
901{ 912{
902 // qDebug("editItem(QListViewItem *item ) "); 913 // qDebug("editItem(QListViewItem *item ) ");
903 emit editTodoSignal(((KOTodoViewItem *)item)->todo()); 914 emit editTodoSignal(((KOTodoViewItem *)item)->todo());
904} 915}
905 916
906void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) 917void KOTodoView::showItem(QListViewItem *item,const QPoint &,int)
907{ 918{
908 emit showTodoSignal(((KOTodoViewItem *)item)->todo()); 919 emit showTodoSignal(((KOTodoViewItem *)item)->todo());
909} 920}
910 921
911void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) 922void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column)
912{ 923{
913 pendingSubtodo = 0; 924 pendingSubtodo = 0;
914 mActiveItem = (KOTodoViewItem *)item; 925 mActiveItem = (KOTodoViewItem *)item;
915 if (item) { 926 if (item) {
916 switch (column){ 927 switch (column){
917 case 1: 928 case 1:
918 mPriorityPopupMenu->popup(QCursor::pos ()); break; 929 mPriorityPopupMenu->popup(QCursor::pos ()); break;
919 case 2: 930 case 2:
920 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; 931 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break;
921 case 3: 932 case 3:
922 moveTodo(); 933 moveTodo();
923 break; 934 break;
924 case 8: 935 case 8:
925 getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break; 936 getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break;
926 default: 937 default:
927 mItemPopupMenu->popup(QCursor::pos()); 938 mItemPopupMenu->popup(QCursor::pos());
928 } 939 }
929 } else mPopupMenu->popup(QCursor::pos()); 940 } else mPopupMenu->popup(QCursor::pos());
930} 941}
931void KOTodoView::newTodo() 942void KOTodoView::newTodo()
932{ 943{
933 emit newTodoSignal(); 944 emit newTodoSignal();
934} 945}
935 946
936void KOTodoView::newSubTodo() 947void KOTodoView::newSubTodo()
937{ 948{
938 if (mActiveItem) { 949 if (mActiveItem) {
939 emit newSubTodoSignal(mActiveItem->todo()); 950 emit newSubTodoSignal(mActiveItem->todo());
940 } 951 }
941} 952}
942void KOTodoView::unparentTodo() 953void KOTodoView::unparentTodo()
943{ 954{
944 if (mActiveItem) { 955 if (mActiveItem) {
945 emit unparentTodoSignal(mActiveItem->todo()); 956 emit unparentTodoSignal(mActiveItem->todo());
946 } 957 }
947} 958}
948 959
949void KOTodoView::reparentTodo() 960void KOTodoView::reparentTodo()
950{ 961{
951 if (mActiveItem) { 962 if (mActiveItem) {
952 qDebug("KOTodoView::reparentTodo() "); 963 qDebug("KOTodoView::reparentTodo() ");
953 topLevelWidget()->setCaption(i18n("Click on new parent item")); 964 topLevelWidget()->setCaption(i18n("Click on new parent item"));
954 pendingSubtodo = mActiveItem; 965 pendingSubtodo = mActiveItem;
955 } 966 }
956} 967}
957void KOTodoView::editTodo() 968void KOTodoView::editTodo()
958{ 969{
959 if (mActiveItem) { 970 if (mActiveItem) {
960 emit editTodoSignal(mActiveItem->todo()); 971 emit editTodoSignal(mActiveItem->todo());
961 } 972 }
962} 973}
963void KOTodoView::cloneTodo() 974void KOTodoView::cloneTodo()
964{ 975{
965 if (mActiveItem) { 976 if (mActiveItem) {
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h
index 39976cf..d0788a9 100644
--- a/korganizer/kotodoview.h
+++ b/korganizer/kotodoview.h
@@ -68,196 +68,196 @@ class KOTodoListView : public KListView
68 void unparentTodoSignal(Todo *); 68 void unparentTodoSignal(Todo *);
69 void deleteTodo( Todo * ); 69 void deleteTodo( Todo * );
70 protected: 70 protected:
71 void wheelEvent (QWheelEvent *e); 71 void wheelEvent (QWheelEvent *e);
72 void contentsDragEnterEvent(QDragEnterEvent *); 72 void contentsDragEnterEvent(QDragEnterEvent *);
73 void contentsDragMoveEvent(QDragMoveEvent *); 73 void contentsDragMoveEvent(QDragMoveEvent *);
74 void contentsDragLeaveEvent(QDragLeaveEvent *); 74 void contentsDragLeaveEvent(QDragLeaveEvent *);
75 void contentsDropEvent(QDropEvent *); 75 void contentsDropEvent(QDropEvent *);
76 76
77 void contentsMousePressEvent(QMouseEvent *); 77 void contentsMousePressEvent(QMouseEvent *);
78 void contentsMouseMoveEvent(QMouseEvent *); 78 void contentsMouseMoveEvent(QMouseEvent *);
79 void contentsMouseReleaseEvent(QMouseEvent *); 79 void contentsMouseReleaseEvent(QMouseEvent *);
80 void contentsMouseDoubleClickEvent(QMouseEvent *); 80 void contentsMouseDoubleClickEvent(QMouseEvent *);
81 81
82 private: 82 private:
83 void paintEvent(QPaintEvent * pevent); 83 void paintEvent(QPaintEvent * pevent);
84 bool internalDrop; 84 bool internalDrop;
85 QString mName; 85 QString mName;
86 Calendar *mCalendar; 86 Calendar *mCalendar;
87 QPoint mPressPos; 87 QPoint mPressPos;
88 bool mMousePressed; 88 bool mMousePressed;
89 QListViewItem *mOldCurrent; 89 QListViewItem *mOldCurrent;
90 bool mFlagKeyPressed; 90 bool mFlagKeyPressed;
91 void keyPressEvent ( QKeyEvent * ) ; 91 void keyPressEvent ( QKeyEvent * ) ;
92 void keyReleaseEvent ( QKeyEvent * ) ; 92 void keyReleaseEvent ( QKeyEvent * ) ;
93}; 93};
94 94
95 95
96/** 96/**
97 This is the line-edit on top of the todoview for fast addition of new todos 97 This is the line-edit on top of the todoview for fast addition of new todos
98*/ 98*/
99class KOQuickTodo : public QLineEdit 99class KOQuickTodo : public QLineEdit
100{ 100{
101 public: 101 public:
102 KOQuickTodo(QWidget *parent=0); 102 KOQuickTodo(QWidget *parent=0);
103 protected: 103 protected:
104 void focusInEvent(QFocusEvent *ev); 104 void focusInEvent(QFocusEvent *ev);
105 void focusOutEvent(QFocusEvent *ev); 105 void focusOutEvent(QFocusEvent *ev);
106}; 106};
107 107
108 108
109/** 109/**
110 This class provides a multi-column list view of todo events. 110 This class provides a multi-column list view of todo events.
111 111
112 @short multi-column list view of todo events. 112 @short multi-column list view of todo events.
113 @author Cornelius Schumacher <schumacher@kde.org> 113 @author Cornelius Schumacher <schumacher@kde.org>
114*/ 114*/
115class KOTodoView : public KOrg::BaseView 115class KOTodoView : public KOrg::BaseView
116{ 116{
117 Q_OBJECT 117 Q_OBJECT
118 public: 118 public:
119 KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); 119 KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 );
120 ~KOTodoView(); 120 ~KOTodoView();
121 121
122 QPtrList<Incidence> selectedIncidences(); 122 QPtrList<Incidence> selectedIncidences();
123 QPtrList<Todo> selectedTodos(); 123 QPtrList<Todo> selectedTodos();
124 124
125 DateList selectedDates() 125 DateList selectedDates()
126 {DateList q; 126 {DateList q;
127 return q;} 127 return q;}
128 128
129 /** Return number of shown dates. TodoView does not show dates, */ 129 /** Return number of shown dates. TodoView does not show dates, */
130 int currentDateCount() { return 0; } 130 int currentDateCount() { return 0; }
131 131
132 void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); 132 void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td);
133 133
134 void setDocumentId( const QString & ); 134 void setDocumentId( const QString & );
135 135
136 void saveLayout(KConfig *config, const QString &group) const; 136 void saveLayout(KConfig *config, const QString &group) const;
137 void restoreLayout(KConfig *config, const QString &group); 137 void restoreLayout(KConfig *config, const QString &group);
138 /** Create a popup menu to set categories */ 138 /** Create a popup menu to set categories */
139 QPopupMenu *getCategoryPopupMenu (KOTodoViewItem *todoItem); 139 QPopupMenu *getCategoryPopupMenu (KOTodoViewItem *todoItem);
140 void setNavigator( DateNavigator* nav ) {mNavigator = nav;} 140 void setNavigator( DateNavigator* nav ) {mNavigator = nav;}
141 QString getWhatsThisText(QPoint p); 141 QString getWhatsThisText(QPoint p);
142 142
143 public slots: 143 public slots:
144 void updateView(); 144 void updateView();
145 void updateConfig(); 145 void updateConfig();
146 146
147 void changeEventDisplay(Event *, int); 147 void changeEventDisplay(Event *, int);
148 148
149 void showDates(const QDate &start, const QDate &end); 149 void showDates(const QDate &start, const QDate &end);
150 void showEvents(QPtrList<Event> eventList); 150 void showEvents(QPtrList<Event> eventList);
151 151
152 void clearSelection(); 152 void clearSelection();
153 void jumpToDate (); 153 void jumpToDate ();
154 154
155 void editItem(QListViewItem *item); 155 void editItem(QListViewItem *item);
156 void showItem(QListViewItem *item,const QPoint &,int); 156 void showItem(QListViewItem *item,const QPoint &,int);
157 void popupMenu(QListViewItem *item,const QPoint &,int); 157 void popupMenu(QListViewItem *item,const QPoint &,int);
158 void newTodo(); 158 void newTodo();
159 void newSubTodo(); 159 void newSubTodo();
160 void unparentTodo(); 160 void unparentTodo();
161 void reparentTodo(); 161 void reparentTodo();
162 void showTodo(); 162 void showTodo();
163 void editTodo(); 163 void editTodo();
164 void cloneTodo(); 164 void cloneTodo();
165 void cancelTodo(); 165 void cancelTodo();
166 void moveTodo(); 166 void moveTodo();
167 void beamTodo(); 167 void beamTodo();
168 void deleteTodo(); 168 void deleteTodo();
169 169
170 void setNewPriority(int); 170 void setNewPriority(int);
171 void setNewPercentage(int); 171 void setNewPercentage(int);
172 void changedCategories(int); 172 void changedCategories(int);
173 173
174 void setAllOpen(); 174 void setAllOpen();
175 void setAllClose(); 175 void setAllClose();
176 void setAllFlat(); 176 void setAllFlat();
177 void displayAllFlat(); 177 void displayAllFlat();
178 178
179 void purgeCompleted(); 179 void purgeCompleted();
180 void toggleCompleted(); 180 void toggleCompleted();
181 void toggleRunning(); 181 void toggleRunning();
182 void toggleQuickTodo(); 182 void toggleQuickTodo();
183 void updateTodo( Todo *, int ); 183 void updateTodo( Todo *, int );
184 184
185 void itemClicked(QListViewItem *); 185 void itemClicked(QListViewItem *);
186 void itemStateChanged(QListViewItem *); 186 void itemStateChanged(QListViewItem *);
187 void modified(bool); 187 void modified(bool);
188 void itemDoubleClicked(QListViewItem *item); 188 void itemDoubleClicked(QListViewItem *item);
189 189
190 signals: 190 signals:
191 void newTodoSignal(); 191 void newTodoSignal();
192 void newSubTodoSignal(Todo *); 192 void newSubTodoSignal(Todo *);
193 void unparentTodoSignal(Todo *); 193 void unparentTodoSignal(Todo *);
194 void reparentTodoSignal( Todo *,Todo * ); 194 void reparentTodoSignal( Todo *,Todo * );
195 void showTodoSignal(Todo *); 195 void showTodoSignal(Todo *);
196 196
197 void editTodoSignal(Todo *); 197 void editTodoSignal(Todo *);
198 void deleteTodoSignal(Todo *); 198 void deleteTodoSignal(Todo *);
199 void todoModifiedSignal (Todo *, int); 199 void todoModifiedSignal (Todo *, int);
200 200
201 void isModified(bool); 201 void isModified(bool);
202 void cloneTodoSignal( Incidence * ); 202 void cloneTodoSignal( Incidence * );
203 void cancelTodoSignal( Incidence * ); 203 void cancelTodoSignal( Incidence * );
204 void moveTodoSignal( Incidence * ); 204 void moveTodoSignal( Incidence * );
205 void beamTodoSignal( Incidence * ); 205 void beamTodoSignal( Incidence * );
206 void purgeCompletedSignal(); 206 void purgeCompletedSignal();
207 207
208 protected slots: 208 protected slots:
209 void paintNeeded(); 209 void paintNeeded();
210 void processSelectionChange(); 210 void processSelectionChange();
211 void addQuickTodo(); 211 void addQuickTodo();
212 void setTodoModified( Todo* ); 212 void setTodoModified( Todo* );
213 void todoModified(Todo *, int ); 213 void todoModified(Todo *, int );
214 214
215 private: 215 private:
216 /* 216 /*
217 * the TodoEditor approach is rather unscaling in the long 217 * the TodoEditor approach is rather unscaling in the long
218 * run. 218 * run.
219 * Korganizer keeps it in memory and we need to update 219 * Korganizer keeps it in memory and we need to update
220 * 1. make KOTodoViewItem a QObject again? 220 * 1. make KOTodoViewItem a QObject again?
221 * 2. add a public method for setting one todo modified? 221 * 2. add a public method for setting one todo modified?
222 * 3. add a private method for setting a todo modified + friend here? 222 * 3. add a private method for setting a todo modified + friend here?
223 * -- zecke 2002-07-08 223 * -- zecke 2002-07-08
224 */ 224 */
225 KOTodoViewWhatsThis* mKOTodoViewWhatsThis; 225 KOTodoViewWhatsThis* mKOTodoViewWhatsThis;
226 friend class KOTodoListView; 226 friend class KOTodoListView;
227 void paintEvent(QPaintEvent * pevent); 227 void paintEvent(QPaintEvent * pevent);
228 bool mPendingUpdateBeforeRepaint; 228 bool mPendingUpdateBeforeRepaint;
229 friend class KOTodoViewItem; 229 friend class KOTodoViewItem;
230 QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); 230 QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo);
231 void restoreItemState( QListViewItem * ); 231 void restoreItemState( QListViewItem * );
232 232
233 bool checkTodo( Todo * ); 233 bool checkTodo( Todo * );
234 bool isFlatDisplay; 234 bool isFlatDisplay;
235 void setOpen( QListViewItem*, bool setOpen); 235 void setOpen( QListViewItem*, bool setOpen);
236 KOTodoListView *mTodoListView; 236 KOTodoListView *mTodoListView;
237 QPopupMenu *mItemPopupMenu; 237 QPopupMenu *mItemPopupMenu;
238 QPopupMenu *mPopupMenu; 238 QPopupMenu *mPopupMenu;
239 QPopupMenu *mPriorityPopupMenu; 239 QPopupMenu *mPriorityPopupMenu;
240 QPopupMenu *mPercentageCompletedPopupMenu; 240 QPopupMenu *mPercentageCompletedPopupMenu;
241 QPopupMenu *mCategoryPopupMenu; 241 QPopupMenu *mCategoryPopupMenu;
242 242
243 QMap<int, int> mPercentage; 243 QMap<int, int> mPercentage;
244 QMap<int, int> mPriority; 244 QMap<int, int> mPriority;
245 QMap<int, QString> mCategory; 245 QMap<int, QString> mCategory;
246 KOTodoViewItem *mActiveItem; 246 KOTodoViewItem *mActiveItem;
247 247
248 QMap<Todo *,KOTodoViewItem *> mTodoMap; 248 QMap<Todo *,KOTodoViewItem *> mTodoMap;
249 QString mName; 249 QString mName;
250 250
251 DocPrefs *mDocPrefs; 251 DocPrefs *mDocPrefs;
252 QString mCurrentDoc; 252 QString mCurrentDoc;
253 KOQuickTodo *mQuickAdd; 253 KOQuickTodo *mQuickAdd;
254 bool mBlockUpdate; 254 bool mBlockUpdate;
255 void keyPressEvent ( QKeyEvent * ) ; 255 void keyPressEvent ( QKeyEvent * ) ;
256 KOTodoViewItem * pendingSubtodo; 256 KOTodoViewItem * pendingSubtodo;
257 DateNavigator* mNavigator; 257 DateNavigator* mNavigator;
258 void storeCurrentItem(); 258 void storeCurrentItem();
259 void resetCurrentItem(); 259 void resetCurrentItem();
260 Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; 260 Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove;
261}; 261};
262 262
263#endif 263#endif