-rw-r--r-- | korganizer/kotodoview.cpp | 47 | ||||
-rw-r--r-- | korganizer/kotodoview.h | 1 |
2 files changed, 31 insertions, 17 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index d79a9b9..ba94057 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -576,1191 +576,1204 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : | |||
576 | mNewSubBut->setFocusPolicy( NoFocus ); | 576 | mNewSubBut->setFocusPolicy( NoFocus ); |
577 | 577 | ||
578 | QWhatsThis::add( flat, i18n("Click this button to display all todos in a <b>flat</b> hierarchy" ) ); | 578 | QWhatsThis::add( flat, i18n("Click this button to display all todos in a <b>flat</b> hierarchy" ) ); |
579 | QWhatsThis::add( allopen, i18n("Click this button to display all todos <b>openend</b>" ) ); | 579 | QWhatsThis::add( allopen, i18n("Click this button to display all todos <b>openend</b>" ) ); |
580 | QWhatsThis::add( allclose, i18n("Click this button to display all todos <b>closed</b>" ) ); | 580 | QWhatsThis::add( allclose, i18n("Click this button to display all todos <b>closed</b>" ) ); |
581 | QWhatsThis::add( s_run, i18n("Click this button to toggle show/hide <b>running</b> todos" ) ); | 581 | QWhatsThis::add( s_run, i18n("Click this button to toggle show/hide <b>running</b> todos" ) ); |
582 | QWhatsThis::add( mNewSubBut, i18n("Click this button to add a new subtodo to the currently selected todo" ) ); | 582 | QWhatsThis::add( mNewSubBut, i18n("Click this button to add a new subtodo to the currently selected todo" ) ); |
583 | QWhatsThis::add( s_done, i18n("Click this button to toggle show/hide <b>completed</b> todos" ) ); | 583 | QWhatsThis::add( s_done, i18n("Click this button to toggle show/hide <b>completed</b> todos" ) ); |
584 | 584 | ||
585 | quickLayout->addWidget( mNewSubBut ); | 585 | quickLayout->addWidget( mNewSubBut ); |
586 | quickLayout->addWidget( s_done ); | 586 | quickLayout->addWidget( s_done ); |
587 | quickLayout->addWidget( s_run ); | 587 | quickLayout->addWidget( s_run ); |
588 | quickLayout->addWidget( allopen ); | 588 | quickLayout->addWidget( allopen ); |
589 | quickLayout->addWidget( allclose ); | 589 | quickLayout->addWidget( allclose ); |
590 | quickLayout->addWidget( flat ); | 590 | quickLayout->addWidget( flat ); |
591 | 591 | ||
592 | if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickBar->hide(); | 592 | if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickBar->hide(); |
593 | 593 | ||
594 | mTodoListView = new KOTodoListView(calendar,this, name ); | 594 | mTodoListView = new KOTodoListView(calendar,this, name ); |
595 | topLayout->addWidget(mTodoListView); | 595 | topLayout->addWidget(mTodoListView); |
596 | //mTodoListView->header()->setMaximumHeight(30); | 596 | //mTodoListView->header()->setMaximumHeight(30); |
597 | mTodoListView->setRootIsDecorated(true); | 597 | mTodoListView->setRootIsDecorated(true); |
598 | mTodoListView->setAllColumnsShowFocus(true); | 598 | mTodoListView->setAllColumnsShowFocus(true); |
599 | 599 | ||
600 | mTodoListView->setShowSortIndicator(true); | 600 | mTodoListView->setShowSortIndicator(true); |
601 | 601 | ||
602 | mTodoListView->addColumn(i18n("Todo")); | 602 | mTodoListView->addColumn(i18n("Todo")); |
603 | mTodoListView->addColumn(i18n("Prio")); | 603 | mTodoListView->addColumn(i18n("Prio")); |
604 | mTodoListView->setColumnAlignment(1,AlignHCenter); | 604 | mTodoListView->setColumnAlignment(1,AlignHCenter); |
605 | mTodoListView->addColumn(i18n("Complete")); | 605 | mTodoListView->addColumn(i18n("Complete")); |
606 | mTodoListView->setColumnAlignment(2,AlignCenter); | 606 | mTodoListView->setColumnAlignment(2,AlignCenter); |
607 | 607 | ||
608 | mTodoListView->addColumn(i18n("Due Date")); | 608 | mTodoListView->addColumn(i18n("Due Date")); |
609 | mTodoListView->setColumnAlignment(3,AlignLeft); | 609 | mTodoListView->setColumnAlignment(3,AlignLeft); |
610 | mTodoListView->addColumn(i18n("Due Time")); | 610 | mTodoListView->addColumn(i18n("Due Time")); |
611 | mTodoListView->setColumnAlignment(4,AlignHCenter); | 611 | mTodoListView->setColumnAlignment(4,AlignHCenter); |
612 | 612 | ||
613 | mTodoListView->addColumn(i18n("Start Date")); | 613 | mTodoListView->addColumn(i18n("Start Date")); |
614 | mTodoListView->setColumnAlignment(5,AlignLeft); | 614 | mTodoListView->setColumnAlignment(5,AlignLeft); |
615 | mTodoListView->addColumn(i18n("Start Time")); | 615 | mTodoListView->addColumn(i18n("Start Time")); |
616 | mTodoListView->setColumnAlignment(6,AlignHCenter); | 616 | mTodoListView->setColumnAlignment(6,AlignHCenter); |
617 | 617 | ||
618 | //mTodoListView->addColumn(i18n("Cancelled")); | 618 | //mTodoListView->addColumn(i18n("Cancelled")); |
619 | mTodoListView->addColumn(i18n("Categories")); | 619 | mTodoListView->addColumn(i18n("Categories")); |
620 | mTodoListView->addColumn(i18n("Calendar")); | 620 | mTodoListView->addColumn(i18n("Calendar")); |
621 | mTodoListView->addColumn(i18n("Last Modified")); | 621 | mTodoListView->addColumn(i18n("Last Modified")); |
622 | mTodoListView->addColumn(i18n("Created")); | 622 | mTodoListView->addColumn(i18n("Created")); |
623 | mTodoListView->addColumn(i18n("Last Modified Sub")); | 623 | mTodoListView->addColumn(i18n("Last Modified Sub")); |
624 | #if 0 | 624 | #if 0 |
625 | mTodoListView->addColumn(i18n("Sort Id")); | 625 | mTodoListView->addColumn(i18n("Sort Id")); |
626 | mTodoListView->setColumnAlignment(4,AlignHCenter); | 626 | mTodoListView->setColumnAlignment(4,AlignHCenter); |
627 | #endif | 627 | #endif |
628 | 628 | ||
629 | mTodoListView->setMinimumHeight( 60 ); | 629 | mTodoListView->setMinimumHeight( 60 ); |
630 | mTodoListView->setItemsRenameable( true ); | 630 | mTodoListView->setItemsRenameable( true ); |
631 | mTodoListView->setRenameable( 0 ); | 631 | mTodoListView->setRenameable( 0 ); |
632 | mTodoListView->setColumnWidth( 0, 120 ); | 632 | mTodoListView->setColumnWidth( 0, 120 ); |
633 | int iii = 0; | 633 | int iii = 0; |
634 | for ( iii = 0; iii< 12 ; ++iii ) | 634 | for ( iii = 0; iii< 12 ; ++iii ) |
635 | mTodoListView->setColumnWidthMode( iii, QListView::Manual ); | 635 | mTodoListView->setColumnWidthMode( iii, QListView::Manual ); |
636 | 636 | ||
637 | 637 | ||
638 | mKOTodoViewWhatsThis = new KOTodoViewWhatsThis(mTodoListView->viewport(),this); | 638 | mKOTodoViewWhatsThis = new KOTodoViewWhatsThis(mTodoListView->viewport(),this); |
639 | 639 | ||
640 | mPriorityPopupMenu = new QPopupMenu(this); | 640 | mPriorityPopupMenu = new QPopupMenu(this); |
641 | for (int i = 1; i <= 5; i++) { | 641 | for (int i = 1; i <= 5; i++) { |
642 | QString label = QString ("%1").arg (i); | 642 | QString label = QString ("%1").arg (i); |
643 | mPriority[mPriorityPopupMenu->insertItem (label)] = i; | 643 | mPriority[mPriorityPopupMenu->insertItem (label)] = i; |
644 | } | 644 | } |
645 | connect (mPriorityPopupMenu, SIGNAL(activated (int)), SLOT (setNewPriority(int))); | 645 | connect (mPriorityPopupMenu, SIGNAL(activated (int)), SLOT (setNewPriority(int))); |
646 | 646 | ||
647 | mPercentageCompletedPopupMenu = new QPopupMenu(this); | 647 | mPercentageCompletedPopupMenu = new QPopupMenu(this); |
648 | for (int i = 0; i <= 100; i+=20) { | 648 | for (int i = 0; i <= 100; i+=20) { |
649 | QString label = QString ("%1 %").arg (i); | 649 | QString label = QString ("%1 %").arg (i); |
650 | mPercentage[mPercentageCompletedPopupMenu->insertItem (label)] = i; | 650 | mPercentage[mPercentageCompletedPopupMenu->insertItem (label)] = i; |
651 | } | 651 | } |
652 | connect (mPercentageCompletedPopupMenu, SIGNAL (activated (int)), SLOT (setNewPercentage (int))); | 652 | connect (mPercentageCompletedPopupMenu, SIGNAL (activated (int)), SLOT (setNewPercentage (int))); |
653 | 653 | ||
654 | 654 | ||
655 | mCategoryPopupMenu = new QPopupMenu (this); | 655 | mCategoryPopupMenu = new QPopupMenu (this); |
656 | mCategoryPopupMenu->setCheckable (true); | 656 | mCategoryPopupMenu->setCheckable (true); |
657 | connect (mCategoryPopupMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); | 657 | connect (mCategoryPopupMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); |
658 | connect (mCategoryPopupMenu, SIGNAL (aboutToShow ()), SLOT (fillCategories ())); | 658 | connect (mCategoryPopupMenu, SIGNAL (aboutToShow ()), SLOT (fillCategories ())); |
659 | 659 | ||
660 | mCalPopupMenu = new QPopupMenu (this); | 660 | mCalPopupMenu = new QPopupMenu (this); |
661 | mCalPopupMenu->setCheckable (true); | 661 | mCalPopupMenu->setCheckable (true); |
662 | connect (mCalPopupMenu, SIGNAL (activated (int)), SLOT (changedCal (int))); | 662 | connect (mCalPopupMenu, SIGNAL (activated (int)), SLOT (changedCal (int))); |
663 | connect (mCalPopupMenu, SIGNAL (aboutToShow ()), SLOT (fillCal ())); | 663 | connect (mCalPopupMenu, SIGNAL (aboutToShow ()), SLOT (fillCal ())); |
664 | 664 | ||
665 | 665 | ||
666 | 666 | ||
667 | 667 | ||
668 | mItemPopupMenu = new QPopupMenu(this); | 668 | mItemPopupMenu = new QPopupMenu(this); |
669 | mItemPopupMenu->insertItem(i18n("Show"), this, | 669 | mItemPopupMenu->insertItem(i18n("Show"), this, |
670 | SLOT (showTodo())); | 670 | SLOT (showTodo())); |
671 | mItemPopupMenu->insertItem(i18n("Edit..."), this, | 671 | mItemPopupMenu->insertItem(i18n("Edit..."), this, |
672 | SLOT (editTodo())); | 672 | SLOT (editTodo())); |
673 | mItemPopupMenu->insertItem( i18n("Delete..."), this, | 673 | mItemPopupMenu->insertItem( i18n("Delete..."), this, |
674 | SLOT (deleteTodo())); | 674 | SLOT (deleteTodo())); |
675 | mItemPopupMenu->insertItem( i18n("Clone..."), this, | 675 | mItemPopupMenu->insertItem( i18n("Clone..."), this, |
676 | SLOT (cloneTodo())); | 676 | SLOT (cloneTodo())); |
677 | mItemPopupMenu->insertItem( i18n("Move..."), this, | 677 | mItemPopupMenu->insertItem( i18n("Move..."), this, |
678 | SLOT (moveTodo())); | 678 | SLOT (moveTodo())); |
679 | #ifndef DESKTOP_VERSION | 679 | #ifndef DESKTOP_VERSION |
680 | mItemPopupMenu->insertItem( i18n("Beam..."), this, | 680 | mItemPopupMenu->insertItem( i18n("Beam..."), this, |
681 | SLOT (beamTodo())); | 681 | SLOT (beamTodo())); |
682 | #endif | 682 | #endif |
683 | mItemPopupMenu->insertItem( i18n("Toggle Cancel"), this, | 683 | mItemPopupMenu->insertItem( i18n("Toggle Cancel"), this, |
684 | SLOT (cancelTodo())); | 684 | SLOT (cancelTodo())); |
685 | mItemPopupMenu->insertItem( i18n("Categories"), mCategoryPopupMenu); | 685 | mItemPopupMenu->insertItem( i18n("Categories"), mCategoryPopupMenu); |
686 | mItemPopupMenu->insertItem( i18n("Calendar"), mCalPopupMenu); | 686 | mItemPopupMenu->insertItem( i18n("Calendar"), mCalPopupMenu); |
687 | mItemPopupMenu->insertSeparator(); | 687 | mItemPopupMenu->insertSeparator(); |
688 | mItemPopupMenu->insertItem( i18n("Start/Stop todo..."), this, | 688 | mItemPopupMenu->insertItem( i18n("Start/Stop todo..."), this, |
689 | SLOT (toggleRunningItem())); | 689 | SLOT (toggleRunningItem())); |
690 | mItemPopupMenu->insertSeparator(); | 690 | mItemPopupMenu->insertSeparator(); |
691 | /* | 691 | /* |
692 | mItemPopupMenu->insertItem( i18n("New Todo..."), this, | 692 | mItemPopupMenu->insertItem( i18n("New Todo..."), this, |
693 | SLOT (newTodo())); | 693 | SLOT (newTodo())); |
694 | */ | 694 | */ |
695 | mItemPopupMenu->insertItem(i18n("New Sub-Todo..."), this, | 695 | mItemPopupMenu->insertItem(i18n("New Sub-Todo..."), this, |
696 | SLOT (newSubTodo())); | 696 | SLOT (newSubTodo())); |
697 | mItemPopupMenu->insertItem(i18n("Unparent Todo"), this, | 697 | mItemPopupMenu->insertItem(i18n("Unparent Todo"), this, |
698 | SLOT (unparentTodo()),0,21); | 698 | SLOT (unparentTodo()),0,21); |
699 | mItemPopupMenu->insertItem(i18n("Reparent Todo"), this, | 699 | mItemPopupMenu->insertItem(i18n("Reparent Todo"), this, |
700 | SLOT (reparentTodo()),0,22); | 700 | SLOT (reparentTodo()),0,22); |
701 | mItemPopupMenu->insertSeparator(); | 701 | mItemPopupMenu->insertSeparator(); |
702 | #if 0 | 702 | #if 0 |
703 | mItemPopupMenu->insertItem(i18n("Delete completed To-Dos","Purge Completed..."), | 703 | mItemPopupMenu->insertItem(i18n("Delete completed To-Dos","Purge Completed..."), |
704 | this, SLOT( purgeCompleted() ) ); | 704 | this, SLOT( purgeCompleted() ) ); |
705 | mItemPopupMenu->insertItem(i18n("toggle completed To-Dos","Show Completed"), | 705 | mItemPopupMenu->insertItem(i18n("toggle completed To-Dos","Show Completed"), |
706 | this, SLOT( toggleCompleted() ),0, 33 ); | 706 | this, SLOT( toggleCompleted() ),0, 33 ); |
707 | mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), | 707 | mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), |
708 | this, SLOT( toggleQuickTodo() ),0, 34 ); | 708 | this, SLOT( toggleQuickTodo() ),0, 34 ); |
709 | mItemPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), | 709 | mItemPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), |
710 | this, SLOT( toggleRunning() ),0, 35 ); | 710 | this, SLOT( toggleRunning() ),0, 35 ); |
711 | 711 | ||
712 | #endif | 712 | #endif |
713 | mPopupMenu = new QPopupMenu(this); | 713 | mPopupMenu = new QPopupMenu(this); |
714 | mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this, | 714 | mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this, |
715 | SLOT (newTodo()),0,1); | 715 | SLOT (newTodo()),0,1); |
716 | mPopupMenu->insertItem(i18n("delete completed To-Dos","Purge Completed..."), | 716 | mPopupMenu->insertItem(i18n("delete completed To-Dos","Purge Completed..."), |
717 | this, SLOT(purgeCompleted()),0,2); | 717 | this, SLOT(purgeCompleted()),0,2); |
718 | mPopupMenu->insertItem(i18n("Show Completed"), | 718 | mPopupMenu->insertItem(i18n("Show Completed"), |
719 | this, SLOT( toggleCompleted() ),0,3 ); | 719 | this, SLOT( toggleCompleted() ),0,3 ); |
720 | mPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), | 720 | mPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), |
721 | this, SLOT( toggleRunning() ),0,5 ); | 721 | this, SLOT( toggleRunning() ),0,5 ); |
722 | mPopupMenu->insertItem(i18n(" set all open","Display all opened"), | 722 | mPopupMenu->insertItem(i18n(" set all open","Display all opened"), |
723 | this, SLOT( setAllOpen() ),0,6 ); | 723 | this, SLOT( setAllOpen() ),0,6 ); |
724 | mPopupMenu->insertItem(i18n(" set all close","Display all closed"), | 724 | mPopupMenu->insertItem(i18n(" set all close","Display all closed"), |
725 | this, SLOT( setAllClose() ),0,7 ); | 725 | this, SLOT( setAllClose() ),0,7 ); |
726 | mPopupMenu->insertItem(i18n(" set all flat","Display all flat"), | 726 | mPopupMenu->insertItem(i18n(" set all flat","Display all flat"), |
727 | this, SLOT( setAllFlat() ),0,8 ); | 727 | this, SLOT( setAllFlat() ),0,8 ); |
728 | mPopupMenu->insertSeparator(); | 728 | mPopupMenu->insertSeparator(); |
729 | mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), | 729 | mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), |
730 | this, SLOT( toggleQuickTodo() ),0,4 ); | 730 | this, SLOT( toggleQuickTodo() ),0,4 ); |
731 | mDocPrefs = new DocPrefs( name ); | 731 | mDocPrefs = new DocPrefs( name ); |
732 | 732 | ||
733 | mItemPopupMenu->insertItem(i18n("Todo View"),mPopupMenu ); | 733 | mItemPopupMenu->insertItem(i18n("Todo View"),mPopupMenu ); |
734 | mPopupMenu->setCheckable( true ); | 734 | mPopupMenu->setCheckable( true ); |
735 | mItemPopupMenu->setCheckable( true ); | 735 | mItemPopupMenu->setCheckable( true ); |
736 | 736 | ||
737 | 737 | ||
738 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); | 738 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); |
739 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); | 739 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); |
740 | 740 | ||
741 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); | 741 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); |
742 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); | 742 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); |
743 | 743 | ||
744 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); | 744 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); |
745 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); | 745 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); |
746 | 746 | ||
747 | 747 | ||
748 | // Double clicking conflicts with opening/closing the subtree | 748 | // Double clicking conflicts with opening/closing the subtree |
749 | connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), | 749 | connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), |
750 | SLOT( editItem( QListViewItem *) ) ); | 750 | SLOT( editItem( QListViewItem *) ) ); |
751 | /* | 751 | /* |
752 | connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, | 752 | connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, |
753 | const QPoint &,int ) ), | 753 | const QPoint &,int ) ), |
754 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); | 754 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); |
755 | */ | 755 | */ |
756 | connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, | 756 | connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, |
757 | const QPoint &,int ) ), | 757 | const QPoint &,int ) ), |
758 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); | 758 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); |
759 | connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), | 759 | connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), |
760 | SLOT( itemClicked( QListViewItem * ) ) ); | 760 | SLOT( itemClicked( QListViewItem * ) ) ); |
761 | connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), | 761 | connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), |
762 | SLOT( itemDoubleClicked( QListViewItem * ) ) ); | 762 | SLOT( itemDoubleClicked( QListViewItem * ) ) ); |
763 | connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), | 763 | connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), |
764 | SLOT( updateView() ) ); | 764 | SLOT( updateView() ) ); |
765 | connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), | 765 | connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), |
766 | SLOT( todoModified(Todo *, int) ) ); | 766 | SLOT( todoModified(Todo *, int) ) ); |
767 | connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), | 767 | connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), |
768 | SLOT( itemStateChanged( QListViewItem * ) ) ); | 768 | SLOT( itemStateChanged( QListViewItem * ) ) ); |
769 | connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), | 769 | connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), |
770 | SLOT( itemStateChanged( QListViewItem * ) ) ); | 770 | SLOT( itemStateChanged( QListViewItem * ) ) ); |
771 | connect( mTodoListView, SIGNAL( paintNeeded() ), | 771 | connect( mTodoListView, SIGNAL( paintNeeded() ), |
772 | SLOT( paintNeeded()) ); | 772 | SLOT( paintNeeded()) ); |
773 | 773 | ||
774 | #if 0 | 774 | #if 0 |
775 | connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), | 775 | connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), |
776 | SLOT(selectionChanged(QListViewItem *))); | 776 | SLOT(selectionChanged(QListViewItem *))); |
777 | connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), | 777 | connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), |
778 | SLOT(selectionChanged(QListViewItem *))); | 778 | SLOT(selectionChanged(QListViewItem *))); |
779 | connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), | 779 | connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), |
780 | SLOT(selectionChanged(QListViewItem *))); | 780 | SLOT(selectionChanged(QListViewItem *))); |
781 | #endif | 781 | #endif |
782 | 782 | ||
783 | connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); | 783 | connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); |
784 | connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); | 784 | connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); |
785 | connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); | 785 | connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); |
786 | 786 | ||
787 | connect( mTodoListView, SIGNAL(selectionChanged() ), | 787 | connect( mTodoListView, SIGNAL(selectionChanged() ), |
788 | SLOT( processSelectionChange() ) ); | 788 | SLOT( processSelectionChange() ) ); |
789 | connect( mQuickAdd, SIGNAL( returnPressed () ), | 789 | connect( mQuickAdd, SIGNAL( returnPressed () ), |
790 | SLOT( addQuickTodo() ) ); | 790 | SLOT( addQuickTodo() ) ); |
791 | 791 | ||
792 | } | 792 | } |
793 | 793 | ||
794 | KOTodoView::~KOTodoView() | 794 | KOTodoView::~KOTodoView() |
795 | { | 795 | { |
796 | 796 | ||
797 | #if QT_VERSION >= 0x030000 | 797 | #if QT_VERSION >= 0x030000 |
798 | 798 | ||
799 | #else | 799 | #else |
800 | delete mKOTodoViewWhatsThis; | 800 | delete mKOTodoViewWhatsThis; |
801 | #endif | 801 | #endif |
802 | 802 | ||
803 | delete mDocPrefs; | 803 | delete mDocPrefs; |
804 | } | 804 | } |
805 | QString KOTodoView::getWhatsThisText(QPoint p) | 805 | QString KOTodoView::getWhatsThisText(QPoint p) |
806 | { | 806 | { |
807 | KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p ); | 807 | KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p ); |
808 | if ( item ) | 808 | if ( item ) |
809 | return KIncidenceFormatter::instance()->getFormattedText( item->todo(), | 809 | return KIncidenceFormatter::instance()->getFormattedText( item->todo(), |
810 | KOPrefs::instance()->mWTshowDetails, | 810 | KOPrefs::instance()->mWTshowDetails, |
811 | KOPrefs::instance()->mWTshowCreated, | 811 | KOPrefs::instance()->mWTshowCreated, |
812 | KOPrefs::instance()->mWTshowChanged); | 812 | KOPrefs::instance()->mWTshowChanged); |
813 | return i18n("That is the todo view" ); | 813 | return i18n("That is the todo view" ); |
814 | 814 | ||
815 | } | 815 | } |
816 | 816 | ||
817 | void KOTodoView::jumpToDate () | 817 | void KOTodoView::jumpToDate () |
818 | { | 818 | { |
819 | // if (mActiveItem) { | 819 | // if (mActiveItem) { |
820 | // mActiveItem->todo()); | 820 | // mActiveItem->todo()); |
821 | // if ( mActiveItem->todo()->hasDueDate() ) | 821 | // if ( mActiveItem->todo()->hasDueDate() ) |
822 | // emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); | 822 | // emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); |
823 | } | 823 | } |
824 | void KOTodoView::paintNeeded() | 824 | void KOTodoView::paintNeeded() |
825 | { | 825 | { |
826 | if ( mPendingUpdateBeforeRepaint ) { | 826 | if ( mPendingUpdateBeforeRepaint ) { |
827 | updateView(); | 827 | updateView(); |
828 | mPendingUpdateBeforeRepaint = false; | 828 | mPendingUpdateBeforeRepaint = false; |
829 | } | 829 | } |
830 | } | 830 | } |
831 | void KOTodoView::paintEvent(QPaintEvent * pevent) | 831 | void KOTodoView::paintEvent(QPaintEvent * pevent) |
832 | { | 832 | { |
833 | if ( mPendingUpdateBeforeRepaint ) { | 833 | if ( mPendingUpdateBeforeRepaint ) { |
834 | updateView(); | 834 | updateView(); |
835 | mPendingUpdateBeforeRepaint = false; | 835 | mPendingUpdateBeforeRepaint = false; |
836 | } | 836 | } |
837 | KOrg::BaseView::paintEvent( pevent); | 837 | KOrg::BaseView::paintEvent( pevent); |
838 | } | 838 | } |
839 | 839 | ||
840 | void KOTodoView::clearList( bool saveCurrentItem ) // default true | 840 | void KOTodoView::clearList( bool saveCurrentItem ) // default true |
841 | { | 841 | { |
842 | if ( mTodoListView->childCount() ) { | 842 | if ( mTodoListView->childCount() ) { |
843 | if ( saveCurrentItem ) | 843 | if ( saveCurrentItem ) |
844 | storeCurrentItem(); | 844 | storeCurrentItem(); |
845 | mTodoListView->clear(); | 845 | mTodoListView->clear(); |
846 | mTodoMap.clear(); | 846 | mTodoMap.clear(); |
847 | } | 847 | } |
848 | } | 848 | } |
849 | void KOTodoView::updateView() | 849 | void KOTodoView::updateView() |
850 | { | 850 | { |
851 | mActiveItem = 0; | 851 | mActiveItem = 0; |
852 | pendingSubtodo = 0; | 852 | pendingSubtodo = 0; |
853 | if ( mBlockUpdate ) { | 853 | if ( mBlockUpdate ) { |
854 | return; | 854 | return; |
855 | } | 855 | } |
856 | if ( !isVisible() ) { | 856 | if ( !isVisible() ) { |
857 | clearList (); | 857 | clearList (); |
858 | mPendingUpdateBeforeRepaint = true; | 858 | mPendingUpdateBeforeRepaint = true; |
859 | return; | 859 | return; |
860 | } | 860 | } |
861 | //qDebug("KOTodoView::updateView() %x", this); | 861 | //qDebug("KOTodoView::updateView() %x", this); |
862 | if ( isFlatDisplay ) { | 862 | if ( isFlatDisplay ) { |
863 | displayAllFlat(); | 863 | displayAllFlat(); |
864 | return; | 864 | return; |
865 | } | 865 | } |
866 | //qDebug("update "); | 866 | //qDebug("update "); |
867 | // kdDebug() << "KOTodoView::updateView()" << endl; | 867 | // kdDebug() << "KOTodoView::updateView()" << endl; |
868 | QFont fo = KOPrefs::instance()->mTodoViewFont; | 868 | QFont fo = KOPrefs::instance()->mTodoViewFont; |
869 | 869 | ||
870 | clearList (); | 870 | clearList (); |
871 | 871 | ||
872 | if ( mName == "todolistsmall" ) { | 872 | if ( mName == "todolistsmall" ) { |
873 | if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { | 873 | if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { |
874 | int ps = fo.pointSize() -2; | 874 | int ps = fo.pointSize() -2; |
875 | if ( ps > 12 ) | 875 | if ( ps > 12 ) |
876 | ps -= 2; | 876 | ps -= 2; |
877 | fo.setPointSize( ps ); | 877 | fo.setPointSize( ps ); |
878 | } | 878 | } |
879 | } | 879 | } |
880 | 880 | ||
881 | mTodoListView->setFont( fo ); | 881 | mTodoListView->setFont( fo ); |
882 | // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); | 882 | // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); |
883 | //mTodoListView->header()->setMaximumHeight(fm.height()); | 883 | //mTodoListView->header()->setMaximumHeight(fm.height()); |
884 | QPtrList<Todo> todoList = calendar()->todos(); | 884 | QPtrList<Todo> todoList = calendar()->todos(); |
885 | 885 | ||
886 | /* | 886 | /* |
887 | kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; | 887 | kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; |
888 | Event *t; | 888 | Event *t; |
889 | for(t = todoList.first(); t; t = todoList.next()) { | 889 | for(t = todoList.first(); t; t = todoList.next()) { |
890 | kdDebug() << " " << t->getSummary() << endl; | 890 | kdDebug() << " " << t->getSummary() << endl; |
891 | 891 | ||
892 | if (t->getRelatedTo()) { | 892 | if (t->getRelatedTo()) { |
893 | kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; | 893 | kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; |
894 | } | 894 | } |
895 | 895 | ||
896 | QPtrList<Event> l = t->getRelations(); | 896 | QPtrList<Event> l = t->getRelations(); |
897 | Event *c; | 897 | Event *c; |
898 | for(c=l.first();c;c=l.next()) { | 898 | for(c=l.first();c;c=l.next()) { |
899 | kdDebug() << " - relation: " << c->getSummary() << endl; | 899 | kdDebug() << " - relation: " << c->getSummary() << endl; |
900 | } | 900 | } |
901 | } | 901 | } |
902 | */ | 902 | */ |
903 | 903 | ||
904 | // Put for each Event a KOTodoViewItem in the list view. Don't rely on a | 904 | // Put for each Event a KOTodoViewItem in the list view. Don't rely on a |
905 | // specific order of events. That means that we have to generate parent items | 905 | // specific order of events. That means that we have to generate parent items |
906 | // recursively for proper hierarchical display of Todos. | 906 | // recursively for proper hierarchical display of Todos. |
907 | Todo *todo; | 907 | Todo *todo; |
908 | todo = todoList.first();// todo; todo = todoList.next()) { | 908 | todo = todoList.first();// todo; todo = todoList.next()) { |
909 | while ( todo ) { | 909 | while ( todo ) { |
910 | bool next = true; | 910 | bool next = true; |
911 | // qDebug("todo %s ", todo->summary().latin1()); | 911 | // qDebug("todo %s ", todo->summary().latin1()); |
912 | Incidence *incidence = todo->relatedTo(); | 912 | Incidence *incidence = todo->relatedTo(); |
913 | while ( incidence ) { | 913 | while ( incidence ) { |
914 | if ( incidence->typeID() == todoID ) { | 914 | if ( incidence->typeID() == todoID ) { |
915 | //qDebug("related %s ",incidence->summary().latin1() ); | 915 | //qDebug("related %s ",incidence->summary().latin1() ); |
916 | if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) { | 916 | if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) { |
917 | //qDebug("related not found "); | 917 | //qDebug("related not found "); |
918 | todoList.remove( ); | 918 | todoList.remove( ); |
919 | todo = todoList.current(); | 919 | todo = todoList.current(); |
920 | next = false; | 920 | next = false; |
921 | incidence = 0; | 921 | incidence = 0; |
922 | 922 | ||
923 | } else { | 923 | } else { |
924 | //qDebug("related found "); | 924 | //qDebug("related found "); |
925 | incidence = incidence->relatedTo(); | 925 | incidence = incidence->relatedTo(); |
926 | } | 926 | } |
927 | } else | 927 | } else |
928 | incidence = 0; | 928 | incidence = 0; |
929 | } | 929 | } |
930 | if ( next ) | 930 | if ( next ) |
931 | todo = todoList.next(); | 931 | todo = todoList.next(); |
932 | } | 932 | } |
933 | 933 | ||
934 | for(todo = todoList.first(); todo; todo = todoList.next()) { | 934 | for(todo = todoList.first(); todo; todo = todoList.next()) { |
935 | if (!mTodoMap.contains(todo) && checkTodo( todo ) ) | 935 | if (!mTodoMap.contains(todo) && checkTodo( todo ) ) |
936 | { | 936 | { |
937 | insertTodoItem(todo); | 937 | insertTodoItem(todo); |
938 | } | 938 | } |
939 | } | 939 | } |
940 | // Restore opened/closed state | 940 | // Restore opened/closed state |
941 | mTodoListView->blockSignals( true ); | 941 | mTodoListView->blockSignals( true ); |
942 | if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); | 942 | if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); |
943 | mTodoListView->blockSignals( false ); | 943 | mTodoListView->blockSignals( false ); |
944 | resetCurrentItem(); | 944 | resetCurrentItem(); |
945 | } | 945 | } |
946 | 946 | ||
947 | void KOTodoView::storeCurrentItem() | 947 | void KOTodoView::storeCurrentItem() |
948 | { | 948 | { |
949 | mCurItem = 0; | 949 | mCurItem = 0; |
950 | mCurItemRootParent = 0; | 950 | mCurItemRootParent = 0; |
951 | mCurItemParent = 0; | 951 | mCurItemParent = 0; |
952 | mCurItemAbove = 0; | 952 | mCurItemAbove = 0; |
953 | mIsActiveWindow = topLevelWidget()->isActiveWindow(); | 953 | mIsActiveWindow = topLevelWidget()->isActiveWindow(); |
954 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 954 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
955 | if (mActiveItem) { | 955 | if (mActiveItem) { |
956 | mCurItem = mActiveItem->todo(); | 956 | mCurItem = mActiveItem->todo(); |
957 | KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove (); | 957 | KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove (); |
958 | if ( activeItemAbove ) | 958 | if ( activeItemAbove ) |
959 | mCurItemAbove = activeItemAbove->todo(); | 959 | mCurItemAbove = activeItemAbove->todo(); |
960 | mCurItemRootParent = mCurItem; | 960 | mCurItemRootParent = mCurItem; |
961 | mCurItemParent = mCurItemRootParent->relatedTo(); | 961 | mCurItemParent = mCurItemRootParent->relatedTo(); |
962 | while ( mCurItemRootParent->relatedTo() != 0 ) | 962 | while ( mCurItemRootParent->relatedTo() != 0 ) |
963 | mCurItemRootParent = mCurItemRootParent->relatedTo(); | 963 | mCurItemRootParent = mCurItemRootParent->relatedTo(); |
964 | } | 964 | } |
965 | mActiveItem = 0; | 965 | mActiveItem = 0; |
966 | } | 966 | } |
967 | 967 | ||
968 | void KOTodoView::resetCurrentItem() | 968 | void KOTodoView::resetCurrentItem() |
969 | { | 969 | { |
970 | //mTodoListView->setFocus(); | 970 | //mTodoListView->setFocus(); |
971 | KOTodoViewItem* foundItem = 0; | 971 | KOTodoViewItem* foundItem = 0; |
972 | KOTodoViewItem* foundItemRoot = 0; | 972 | KOTodoViewItem* foundItemRoot = 0; |
973 | KOTodoViewItem* foundItemParent = 0; | 973 | KOTodoViewItem* foundItemParent = 0; |
974 | KOTodoViewItem* foundItemAbove = 0; | 974 | KOTodoViewItem* foundItemAbove = 0; |
975 | if ( mTodoListView->firstChild () ) { | 975 | if ( mTodoListView->firstChild () ) { |
976 | if ( mCurItem ) { | 976 | if ( mCurItem ) { |
977 | KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild (); | 977 | KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild (); |
978 | while ( item ) { | 978 | while ( item ) { |
979 | if ( item->todo() == mCurItem ) { | 979 | if ( item->todo() == mCurItem ) { |
980 | foundItem = item; | 980 | foundItem = item; |
981 | break; | 981 | break; |
982 | } else if ( item->todo() == mCurItemAbove ) { | 982 | } else if ( item->todo() == mCurItemAbove ) { |
983 | foundItemAbove = item; | 983 | foundItemAbove = item; |
984 | 984 | ||
985 | } | 985 | } |
986 | if ( item->todo() == mCurItemRootParent ) { | 986 | if ( item->todo() == mCurItemRootParent ) { |
987 | foundItemRoot = item; | 987 | foundItemRoot = item; |
988 | } | 988 | } |
989 | if ( item->todo() == mCurItemParent ) { | 989 | if ( item->todo() == mCurItemParent ) { |
990 | foundItemParent = item; | 990 | foundItemParent = item; |
991 | } | 991 | } |
992 | item = (KOTodoViewItem*)item->itemBelow(); | 992 | item = (KOTodoViewItem*)item->itemBelow(); |
993 | } | 993 | } |
994 | if ( ! foundItem ) { | 994 | if ( ! foundItem ) { |
995 | if ( foundItemParent ) { | 995 | if ( foundItemParent ) { |
996 | foundItem = foundItemParent; | 996 | foundItem = foundItemParent; |
997 | } else { | 997 | } else { |
998 | if ( foundItemRoot ) | 998 | if ( foundItemRoot ) |
999 | foundItem = foundItemRoot; | 999 | foundItem = foundItemRoot; |
1000 | else | 1000 | else |
1001 | foundItem = foundItemAbove; | 1001 | foundItem = foundItemAbove; |
1002 | } | 1002 | } |
1003 | } | 1003 | } |
1004 | } | 1004 | } |
1005 | if ( foundItem ) { | 1005 | if ( foundItem ) { |
1006 | mTodoListView->setSelected ( foundItem, true ); | 1006 | mTodoListView->setSelected ( foundItem, true ); |
1007 | mTodoListView->setCurrentItem( foundItem ); | 1007 | mTodoListView->setCurrentItem( foundItem ); |
1008 | mTodoListView->ensureItemVisible( foundItem ); | 1008 | mTodoListView->ensureItemVisible( foundItem ); |
1009 | } else { | 1009 | } else { |
1010 | if ( mTodoListView->firstChild () ) { | 1010 | if ( mTodoListView->firstChild () ) { |
1011 | mTodoListView->setSelected ( mTodoListView->firstChild (), true ); | 1011 | mTodoListView->setSelected ( mTodoListView->firstChild (), true ); |
1012 | mTodoListView->setCurrentItem( mTodoListView->firstChild () ); | 1012 | mTodoListView->setCurrentItem( mTodoListView->firstChild () ); |
1013 | } | 1013 | } |
1014 | } | 1014 | } |
1015 | } | 1015 | } |
1016 | processSelectionChange(); | 1016 | processSelectionChange(); |
1017 | if ( mName != "todolistsmall" ) | 1017 | if ( mName != "todolistsmall" ) |
1018 | QTimer::singleShot( 100, this, SLOT ( resetFocusToList() )); | 1018 | QTimer::singleShot( 100, this, SLOT ( resetFocusToList() )); |
1019 | } | 1019 | } |
1020 | void KOTodoView::resetFocusToList() | 1020 | void KOTodoView::resetFocusToList() |
1021 | { | 1021 | { |
1022 | if ( mIsActiveWindow ) | 1022 | if ( mIsActiveWindow ) |
1023 | topLevelWidget()->setActiveWindow(); | 1023 | topLevelWidget()->setActiveWindow(); |
1024 | mTodoListView->setFocus(); | 1024 | mTodoListView->setFocus(); |
1025 | } | 1025 | } |
1026 | //Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; | 1026 | //Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; |
1027 | bool KOTodoView::checkTodo( Todo * todo ) | 1027 | bool KOTodoView::checkTodo( Todo * todo ) |
1028 | { | 1028 | { |
1029 | 1029 | ||
1030 | if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) | 1030 | if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) |
1031 | return false; | 1031 | return false; |
1032 | if ( !todo->isCompleted() ) { | 1032 | if ( !todo->isCompleted() ) { |
1033 | if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() ) | 1033 | if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() ) |
1034 | return true; | 1034 | return true; |
1035 | } | 1035 | } |
1036 | if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { | 1036 | if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { |
1037 | if ( todo->hasStartDate() ) | 1037 | if ( todo->hasStartDate() ) |
1038 | if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) | 1038 | if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) |
1039 | return false; | 1039 | return false; |
1040 | if ( todo->hasDueDate() ) | 1040 | if ( todo->hasDueDate() ) |
1041 | if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) | 1041 | if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) |
1042 | return false; | 1042 | return false; |
1043 | } | 1043 | } |
1044 | return true; | 1044 | return true; |
1045 | } | 1045 | } |
1046 | 1046 | ||
1047 | void KOTodoView::restoreItemState( QListViewItem *item ) | 1047 | void KOTodoView::restoreItemState( QListViewItem *item ) |
1048 | { | 1048 | { |
1049 | pendingSubtodo = 0; | 1049 | pendingSubtodo = 0; |
1050 | while( item ) { | 1050 | while( item ) { |
1051 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; | 1051 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; |
1052 | todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); | 1052 | todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); |
1053 | if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); | 1053 | if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); |
1054 | item = item->nextSibling(); | 1054 | item = item->nextSibling(); |
1055 | } | 1055 | } |
1056 | } | 1056 | } |
1057 | 1057 | ||
1058 | 1058 | ||
1059 | QMap<Todo *,KOTodoViewItem *>::ConstIterator | 1059 | QMap<Todo *,KOTodoViewItem *>::ConstIterator |
1060 | KOTodoView::insertTodoItem(Todo *todo) | 1060 | KOTodoView::insertTodoItem(Todo *todo) |
1061 | { | 1061 | { |
1062 | 1062 | ||
1063 | // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; | 1063 | // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; |
1064 | // TODO: Check, if dynmaic cast is necessary | 1064 | // TODO: Check, if dynmaic cast is necessary |
1065 | 1065 | ||
1066 | pendingSubtodo = 0; | 1066 | pendingSubtodo = 0; |
1067 | Incidence *incidence = todo->relatedTo(); | 1067 | Incidence *incidence = todo->relatedTo(); |
1068 | while ( incidence && !incidence->calEnabled() ) | 1068 | while ( incidence && !incidence->calEnabled() ) |
1069 | incidence = incidence->relatedTo(); | 1069 | incidence = incidence->relatedTo(); |
1070 | if (incidence && incidence->typeID() == todoID ) { | 1070 | if (incidence && incidence->typeID() == todoID ) { |
1071 | Todo *relatedTodo = static_cast<Todo *>(incidence); | 1071 | Todo *relatedTodo = static_cast<Todo *>(incidence); |
1072 | 1072 | ||
1073 | // kdDebug() << " has Related" << endl; | 1073 | // kdDebug() << " has Related" << endl; |
1074 | QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; | 1074 | QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; |
1075 | itemIterator = mTodoMap.find(relatedTodo); | 1075 | itemIterator = mTodoMap.find(relatedTodo); |
1076 | if (itemIterator == mTodoMap.end()) { | 1076 | if (itemIterator == mTodoMap.end()) { |
1077 | // kdDebug() << " related not yet in list" << endl; | 1077 | // kdDebug() << " related not yet in list" << endl; |
1078 | itemIterator = insertTodoItem (relatedTodo); | 1078 | itemIterator = insertTodoItem (relatedTodo); |
1079 | } | 1079 | } |
1080 | // isn't this pretty stupid? We give one Todo to the KOTodoViewItem | 1080 | // isn't this pretty stupid? We give one Todo to the KOTodoViewItem |
1081 | // and one into the map. Sure finding is more easy but why? -zecke | 1081 | // and one into the map. Sure finding is more easy but why? -zecke |
1082 | KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); | 1082 | KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); |
1083 | return mTodoMap.insert(todo,todoItem); | 1083 | return mTodoMap.insert(todo,todoItem); |
1084 | } else { | 1084 | } else { |
1085 | // kdDebug() << " no Related" << endl; | 1085 | // kdDebug() << " no Related" << endl; |
1086 | // see above -zecke | 1086 | // see above -zecke |
1087 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); | 1087 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); |
1088 | return mTodoMap.insert(todo,todoItem); | 1088 | return mTodoMap.insert(todo,todoItem); |
1089 | } | 1089 | } |
1090 | } | 1090 | } |
1091 | 1091 | ||
1092 | 1092 | ||
1093 | void KOTodoView::updateConfig() | 1093 | void KOTodoView::updateConfig() |
1094 | { | 1094 | { |
1095 | updateView(); | 1095 | updateView(); |
1096 | mTodoListView->repaintContents(); | 1096 | mTodoListView->repaintContents(); |
1097 | } | 1097 | } |
1098 | 1098 | ||
1099 | QPtrList<Incidence> KOTodoView::selectedIncidences() | 1099 | QPtrList<Incidence> KOTodoView::selectedIncidences() |
1100 | { | 1100 | { |
1101 | QPtrList<Incidence> selected; | 1101 | QPtrList<Incidence> selected; |
1102 | 1102 | ||
1103 | KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); | 1103 | KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); |
1104 | // if (!item) item = mActiveItem; | 1104 | // if (!item) item = mActiveItem; |
1105 | if (item) selected.append(item->todo()); | 1105 | if (item) selected.append(item->todo()); |
1106 | 1106 | ||
1107 | return selected; | 1107 | return selected; |
1108 | } | 1108 | } |
1109 | 1109 | ||
1110 | QPtrList<Todo> KOTodoView::selectedTodos() | 1110 | QPtrList<Todo> KOTodoView::selectedTodos() |
1111 | { | 1111 | { |
1112 | QPtrList<Todo> selected; | 1112 | QPtrList<Todo> selected; |
1113 | 1113 | ||
1114 | KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); | 1114 | KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); |
1115 | // if (!item) item = mActiveItem; | 1115 | // if (!item) item = mActiveItem; |
1116 | if (item) selected.append(item->todo()); | 1116 | if (item) selected.append(item->todo()); |
1117 | 1117 | ||
1118 | return selected; | 1118 | return selected; |
1119 | } | 1119 | } |
1120 | 1120 | ||
1121 | void KOTodoView::changeEventDisplay(Event *, int) | 1121 | void KOTodoView::changeEventDisplay(Event *, int) |
1122 | { | 1122 | { |
1123 | updateView(); | 1123 | updateView(); |
1124 | } | 1124 | } |
1125 | 1125 | ||
1126 | void KOTodoView::showDates(const QDate &, const QDate &) | 1126 | void KOTodoView::showDates(const QDate &, const QDate &) |
1127 | { | 1127 | { |
1128 | } | 1128 | } |
1129 | 1129 | ||
1130 | void KOTodoView::showEvents(QPtrList<Event>) | 1130 | void KOTodoView::showEvents(QPtrList<Event>) |
1131 | { | 1131 | { |
1132 | kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; | 1132 | kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; |
1133 | } | 1133 | } |
1134 | 1134 | ||
1135 | void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, | 1135 | void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, |
1136 | const QDate &td) | 1136 | const QDate &td) |
1137 | { | 1137 | { |
1138 | #ifndef KORG_NOPRINTER | 1138 | #ifndef KORG_NOPRINTER |
1139 | calPrinter->preview(CalPrinter::Todolist, fd, td); | 1139 | calPrinter->preview(CalPrinter::Todolist, fd, td); |
1140 | #endif | 1140 | #endif |
1141 | } | 1141 | } |
1142 | 1142 | ||
1143 | void KOTodoView::editItem(QListViewItem *item ) | 1143 | void KOTodoView::editItem(QListViewItem *item ) |
1144 | { | 1144 | { |
1145 | if ( item ) | 1145 | if ( item ) |
1146 | emit editTodoSignal(((KOTodoViewItem *)item)->todo()); | 1146 | emit editTodoSignal(((KOTodoViewItem *)item)->todo()); |
1147 | } | 1147 | } |
1148 | 1148 | ||
1149 | void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) | 1149 | void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) |
1150 | { | 1150 | { |
1151 | if ( item ) | 1151 | if ( item ) |
1152 | emit showTodoSignal(((KOTodoViewItem *)item)->todo()); | 1152 | emit showTodoSignal(((KOTodoViewItem *)item)->todo()); |
1153 | } | 1153 | } |
1154 | 1154 | ||
1155 | void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) | 1155 | void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) |
1156 | { | 1156 | { |
1157 | pendingSubtodo = 0; | 1157 | pendingSubtodo = 0; |
1158 | mActiveItem = (KOTodoViewItem *)item; | 1158 | mActiveItem = (KOTodoViewItem *)item; |
1159 | if (item) { | 1159 | if (item) { |
1160 | switch (column){ | 1160 | switch (column){ |
1161 | case 1: | 1161 | case 1: |
1162 | mPriorityPopupMenu->popup(QCursor::pos ()); break; | 1162 | mPriorityPopupMenu->popup(QCursor::pos ()); break; |
1163 | case 2: | 1163 | case 2: |
1164 | mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; | 1164 | mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; |
1165 | case 3: | 1165 | case 3: |
1166 | moveTodo(); | 1166 | moveTodo(); |
1167 | break; | 1167 | break; |
1168 | case 7: | 1168 | case 7: |
1169 | mCategoryPopupMenu->popup(QCursor::pos ()); break; | 1169 | mCategoryPopupMenu->popup(QCursor::pos ()); break; |
1170 | case 8: | 1170 | case 8: |
1171 | mCalPopupMenu->popup(QCursor::pos ()); break; | 1171 | mCalPopupMenu->popup(QCursor::pos ()); break; |
1172 | default: | 1172 | default: |
1173 | mItemPopupMenu->popup(QCursor::pos()); | 1173 | mItemPopupMenu->popup(QCursor::pos()); |
1174 | } | 1174 | } |
1175 | } else mPopupMenu->popup(QCursor::pos()); | 1175 | } else mPopupMenu->popup(QCursor::pos()); |
1176 | } | 1176 | } |
1177 | void KOTodoView::newTodo() | 1177 | void KOTodoView::newTodo() |
1178 | { | 1178 | { |
1179 | emit newTodoSignal(); | 1179 | emit newTodoSignal(); |
1180 | } | 1180 | } |
1181 | 1181 | ||
1182 | void KOTodoView::newSubTodo() | 1182 | void KOTodoView::newSubTodo() |
1183 | { | 1183 | { |
1184 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1184 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1185 | if (mActiveItem) { | 1185 | if (mActiveItem) { |
1186 | if ( mQuickAdd->isVisible() && !mQuickAdd->text().isEmpty() && mQuickAdd->text() != i18n("Click to add new Todo") ) { | 1186 | if ( mQuickAdd->isVisible() && !mQuickAdd->text().isEmpty() && mQuickAdd->text() != i18n("Click to add new Todo") ) { |
1187 | addQuickTodoPar( mActiveItem->todo()); | 1187 | addQuickTodoPar( mActiveItem->todo()); |
1188 | } else | 1188 | } else |
1189 | emit newSubTodoSignal(mActiveItem->todo()); | 1189 | emit newSubTodoSignal(mActiveItem->todo()); |
1190 | } | 1190 | } |
1191 | } | 1191 | } |
1192 | void KOTodoView::unparentTodo() | 1192 | void KOTodoView::unparentTodo() |
1193 | { | 1193 | { |
1194 | if (mActiveItem) { | 1194 | if (mActiveItem) { |
1195 | emit unparentTodoSignal(mActiveItem->todo()); | 1195 | emit unparentTodoSignal(mActiveItem->todo()); |
1196 | } | 1196 | } |
1197 | } | 1197 | } |
1198 | 1198 | ||
1199 | void KOTodoView::reparentTodo() | 1199 | void KOTodoView::reparentTodo() |
1200 | { | 1200 | { |
1201 | if (mActiveItem) { | 1201 | if (mActiveItem) { |
1202 | topLevelWidget()->setCaption(i18n("Click on new parent item")); | 1202 | topLevelWidget()->setCaption(i18n("Click on new parent item")); |
1203 | pendingSubtodo = mActiveItem; | 1203 | pendingSubtodo = mActiveItem; |
1204 | } | 1204 | } |
1205 | } | 1205 | } |
1206 | void KOTodoView::editTodo() | 1206 | void KOTodoView::editTodo() |
1207 | { | 1207 | { |
1208 | if (mActiveItem) { | 1208 | if (mActiveItem) { |
1209 | emit editTodoSignal(mActiveItem->todo()); | 1209 | emit editTodoSignal(mActiveItem->todo()); |
1210 | } | 1210 | } |
1211 | } | 1211 | } |
1212 | void KOTodoView::cloneTodo() | 1212 | void KOTodoView::cloneTodo() |
1213 | { | 1213 | { |
1214 | if (mActiveItem) { | 1214 | if (mActiveItem) { |
1215 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); | 1215 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); |
1216 | } | 1216 | } |
1217 | } | 1217 | } |
1218 | void KOTodoView::cancelTodo() | 1218 | void KOTodoView::cancelTodo() |
1219 | { | 1219 | { |
1220 | if (mActiveItem) { | 1220 | if (mActiveItem) { |
1221 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); | 1221 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); |
1222 | } | 1222 | } |
1223 | } | 1223 | } |
1224 | void KOTodoView::moveTodo() | 1224 | void KOTodoView::moveTodo() |
1225 | { | 1225 | { |
1226 | if (mActiveItem) { | 1226 | if (mActiveItem) { |
1227 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); | 1227 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); |
1228 | } | 1228 | } |
1229 | } | 1229 | } |
1230 | void KOTodoView::beamTodo() | 1230 | void KOTodoView::beamTodo() |
1231 | { | 1231 | { |
1232 | if (mActiveItem) { | 1232 | if (mActiveItem) { |
1233 | emit beamTodoSignal((Incidence*)mActiveItem->todo()); | 1233 | emit beamTodoSignal((Incidence*)mActiveItem->todo()); |
1234 | } | 1234 | } |
1235 | } | 1235 | } |
1236 | 1236 | ||
1237 | 1237 | ||
1238 | void KOTodoView::showTodo() | 1238 | void KOTodoView::showTodo() |
1239 | { | 1239 | { |
1240 | if (mActiveItem) { | 1240 | if (mActiveItem) { |
1241 | emit showTodoSignal(mActiveItem->todo()); | 1241 | emit showTodoSignal(mActiveItem->todo()); |
1242 | } | 1242 | } |
1243 | } | 1243 | } |
1244 | 1244 | ||
1245 | void KOTodoView::deleteTodo() | 1245 | void KOTodoView::deleteTodo() |
1246 | { | 1246 | { |
1247 | if (mActiveItem) { | 1247 | if (mActiveItem) { |
1248 | emit deleteTodoSignal(mActiveItem->todo()); | 1248 | emit deleteTodoSignal(mActiveItem->todo()); |
1249 | } | 1249 | } |
1250 | } | 1250 | } |
1251 | 1251 | ||
1252 | void KOTodoView::setNewPriority(int index) | 1252 | void KOTodoView::setNewPriority(int index) |
1253 | { | 1253 | { |
1254 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 1254 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
1255 | mActiveItem->todo()->setPriority(mPriority[index]); | 1255 | mActiveItem->todo()->setPriority(mPriority[index]); |
1256 | mActiveItem->construct(); | 1256 | mActiveItem->construct(); |
1257 | todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); | 1257 | todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); |
1258 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 1258 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
1259 | } | 1259 | } |
1260 | processSelectionChange(); | 1260 | processSelectionChange(); |
1261 | } | 1261 | } |
1262 | 1262 | ||
1263 | void KOTodoView::setNewPercentage(int index) | 1263 | void KOTodoView::setNewPercentage(int index) |
1264 | { | 1264 | { |
1265 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 1265 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
1266 | 1266 | ||
1267 | if ( mPercentage[index] == 100 && !mActiveItem->isOn() ) { | 1267 | if ( mPercentage[index] == 100 && !mActiveItem->isOn() ) { |
1268 | mActiveItem->setOn( true ); | 1268 | mActiveItem->setOn( true ); |
1269 | processSelectionChange(); | 1269 | processSelectionChange(); |
1270 | return; | 1270 | return; |
1271 | } else if ( mPercentage[index] != 100 && mActiveItem->isOn() ) { | 1271 | } else if ( mPercentage[index] != 100 && mActiveItem->isOn() ) { |
1272 | KOTodoViewItem* par = (static_cast<KOTodoViewItem*>(mActiveItem->parent())); | 1272 | KOTodoViewItem* par = (static_cast<KOTodoViewItem*>(mActiveItem->parent())); |
1273 | if ( par && par->isOn() ) | 1273 | if ( par && par->isOn() ) |
1274 | par->setOn( false ); | 1274 | par->setOn( false ); |
1275 | } | 1275 | } |
1276 | if (mPercentage[index] == 100) { | 1276 | if (mPercentage[index] == 100) { |
1277 | mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); | 1277 | mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); |
1278 | } else { | 1278 | } else { |
1279 | mActiveItem->todo()->setCompleted(false); | 1279 | mActiveItem->todo()->setCompleted(false); |
1280 | } | 1280 | } |
1281 | mActiveItem->todo()->setPercentComplete(mPercentage[index]); | 1281 | mActiveItem->todo()->setPercentComplete(mPercentage[index]); |
1282 | mActiveItem->construct(); | 1282 | mActiveItem->construct(); |
1283 | todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); | 1283 | todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); |
1284 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 1284 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
1285 | } | 1285 | } |
1286 | processSelectionChange(); | 1286 | processSelectionChange(); |
1287 | } | 1287 | } |
1288 | 1288 | ||
1289 | void KOTodoView::fillCategories () | 1289 | void KOTodoView::fillCategories () |
1290 | { | 1290 | { |
1291 | mCategoryPopupMenu->clear(); | 1291 | mCategoryPopupMenu->clear(); |
1292 | if ( ! mActiveItem ) return; | 1292 | if ( ! mActiveItem ) return; |
1293 | QStringList checkedCategories = mActiveItem->todo()->categories (); | 1293 | QStringList checkedCategories = mActiveItem->todo()->categories (); |
1294 | for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); | 1294 | for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); |
1295 | it != KOPrefs::instance()->mCustomCategories.end (); | 1295 | it != KOPrefs::instance()->mCustomCategories.end (); |
1296 | ++it) { | 1296 | ++it) { |
1297 | int index = mCategoryPopupMenu->insertItem (*it); | 1297 | int index = mCategoryPopupMenu->insertItem (*it); |
1298 | mCategory[index] = *it; | 1298 | mCategory[index] = *it; |
1299 | if (checkedCategories.find (*it) != checkedCategories.end ()) mCategoryPopupMenu->setItemChecked (index, true); | 1299 | if (checkedCategories.find (*it) != checkedCategories.end ()) mCategoryPopupMenu->setItemChecked (index, true); |
1300 | } | 1300 | } |
1301 | } | 1301 | } |
1302 | void KOTodoView::fillCal () | 1302 | void KOTodoView::fillCal () |
1303 | { | 1303 | { |
1304 | mCalPopupMenu->clear(); | 1304 | mCalPopupMenu->clear(); |
1305 | if (!mActiveItem) return; | 1305 | if (!mActiveItem) return; |
1306 | bool readO = mActiveItem->todo()->isReadOnly(); | 1306 | bool readO = mActiveItem->todo()->isReadOnly(); |
1307 | KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); | 1307 | KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); |
1308 | while ( kkf ) { | 1308 | while ( kkf ) { |
1309 | int index = mCalPopupMenu->insertItem( kkf->mName, kkf->mCalNumber); | 1309 | int index = mCalPopupMenu->insertItem( kkf->mName, kkf->mCalNumber); |
1310 | if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO ) | 1310 | if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO ) |
1311 | mCalPopupMenu->setItemEnabled( index, false ); | 1311 | mCalPopupMenu->setItemEnabled( index, false ); |
1312 | mCalPopupMenu->setItemChecked (index, kkf->mCalNumber == mActiveItem->todo()->calID()); | 1312 | mCalPopupMenu->setItemChecked (index, kkf->mCalNumber == mActiveItem->todo()->calID()); |
1313 | kkf = KOPrefs::instance()->mCalendars.next(); | 1313 | kkf = KOPrefs::instance()->mCalendars.next(); |
1314 | } | 1314 | } |
1315 | } | 1315 | } |
1316 | void KOTodoView::changedCal (int index ) | 1316 | void KOTodoView::changedCal (int index ) |
1317 | { | 1317 | { |
1318 | if (!mActiveItem) return; | 1318 | if (!mActiveItem) return; |
1319 | mActiveItem->todo()->setCalID( index ); | 1319 | mActiveItem->todo()->setCalID( index ); |
1320 | mActiveItem->construct(); | 1320 | mActiveItem->construct(); |
1321 | } | 1321 | } |
1322 | void KOTodoView::changedCategories(int index) | 1322 | void KOTodoView::changedCategories(int index) |
1323 | { | 1323 | { |
1324 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 1324 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
1325 | QStringList categories = mActiveItem->todo()->categories (); | 1325 | QStringList categories = mActiveItem->todo()->categories (); |
1326 | QString colcat = categories.first(); | 1326 | QString colcat = categories.first(); |
1327 | if (categories.find (mCategory[index]) != categories.end ()) | 1327 | if (categories.find (mCategory[index]) != categories.end ()) |
1328 | categories.remove (mCategory[index]); | 1328 | categories.remove (mCategory[index]); |
1329 | else | 1329 | else |
1330 | categories.insert (categories.end(), mCategory[index]); | 1330 | categories.insert (categories.end(), mCategory[index]); |
1331 | categories.sort (); | 1331 | categories.sort (); |
1332 | if ( !colcat.isEmpty() ) { | 1332 | if ( !colcat.isEmpty() ) { |
1333 | if ( categories.find ( colcat ) != categories.end () ) { | 1333 | if ( categories.find ( colcat ) != categories.end () ) { |
1334 | categories.remove( colcat ); | 1334 | categories.remove( colcat ); |
1335 | categories.prepend( colcat ); | 1335 | categories.prepend( colcat ); |
1336 | } | 1336 | } |
1337 | } | 1337 | } |
1338 | mActiveItem->todo()->setCategories (categories); | 1338 | mActiveItem->todo()->setCategories (categories); |
1339 | mActiveItem->construct(); | 1339 | mActiveItem->construct(); |
1340 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 1340 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
1341 | todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); | 1341 | todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); |
1342 | } | 1342 | } |
1343 | } | 1343 | } |
1344 | void KOTodoView::toggleRunningItemQuick() | ||
1345 | { | ||
1346 | if ( !mActiveItem ) return; | ||
1347 | Todo * t = mActiveItem->todo(); | ||
1348 | if ( t->isRunning() ) { | ||
1349 | if ( t->runTime() < 15) { | ||
1350 | t->stopRunning(); | ||
1351 | mActiveItem->construct(); | ||
1352 | topLevelWidget()->setCaption(i18n("Todo stopped - no data saved because runtime was < 15 sec!")); | ||
1353 | return; | ||
1354 | } | ||
1355 | else | ||
1356 | toggleRunningItem(); | ||
1357 | return; | ||
1358 | } else { | ||
1359 | t->setRunning( true ); | ||
1360 | mActiveItem->construct(); | ||
1361 | topLevelWidget()->setCaption(i18n("Todo started! Double click again to stop!")); | ||
1362 | } | ||
1363 | } | ||
1344 | void KOTodoView::itemDoubleClicked(QListViewItem *item) | 1364 | void KOTodoView::itemDoubleClicked(QListViewItem *item) |
1345 | { | 1365 | { |
1346 | if ( pendingSubtodo != 0 ) { | 1366 | if ( pendingSubtodo != 0 ) { |
1347 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); | 1367 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); |
1348 | } | 1368 | } |
1349 | pendingSubtodo = 0; | 1369 | pendingSubtodo = 0; |
1350 | //int row = mTodoListView->header()->sectionAt ( mTodoListView->header()->mapFromGlobal( QCursor::pos()).x() ); | 1370 | //int row = mTodoListView->header()->sectionAt ( mTodoListView->header()->mapFromGlobal( QCursor::pos()).x() ); |
1351 | int row = mTodoListView->header()->sectionAt ( mTodoListView->viewportToContents(mTodoListView->viewport()->mapFromGlobal( QCursor::pos())) .x() ); | 1371 | int row = mTodoListView->header()->sectionAt ( mTodoListView->viewportToContents(mTodoListView->viewport()->mapFromGlobal( QCursor::pos())) .x() ); |
1352 | //qDebug("ROW %d ", row); | 1372 | //qDebug("ROW %d ", row); |
1353 | if (!item) { | 1373 | if (!item) { |
1354 | newTodo(); | 1374 | newTodo(); |
1355 | return; | 1375 | return; |
1356 | } else { | 1376 | } else { |
1357 | if ( row == 1 ) { | 1377 | if ( row == 1 ) { |
1358 | mActiveItem = (KOTodoViewItem *) item; | 1378 | mActiveItem = (KOTodoViewItem *) item; |
1359 | newSubTodo(); | 1379 | newSubTodo(); |
1360 | return; | 1380 | return; |
1361 | } | 1381 | } |
1362 | if ( row == 5 || row == 6 || row == 2) { | 1382 | if ( row == 5 || row == 6 || row == 2) { |
1363 | mActiveItem = (KOTodoViewItem *) item; | 1383 | mActiveItem = (KOTodoViewItem *) item; |
1364 | Todo * t = mActiveItem->todo(); | 1384 | toggleRunningItemQuick(); |
1365 | if ( t->isRunning() ) { | 1385 | return; |
1366 | if ( t->runTime() < 15) { | ||
1367 | t->stopRunning(); | ||
1368 | mActiveItem->construct(); | ||
1369 | topLevelWidget()->setCaption(i18n("Todo stopped - no data saved because runtime was < 15 sec!")); | ||
1370 | return; | ||
1371 | } | ||
1372 | else | ||
1373 | toggleRunningItem(); | ||
1374 | return; | ||
1375 | } else { | ||
1376 | t->setRunning( true ); | ||
1377 | mActiveItem->construct(); | ||
1378 | topLevelWidget()->setCaption(i18n("Todo started! Double click again to stop!")); | ||
1379 | return; | ||
1380 | } | ||
1381 | } | 1386 | } |
1382 | } | 1387 | } |
1383 | if ( KOPrefs::instance()->mEditOnDoubleClick ) | 1388 | if ( KOPrefs::instance()->mEditOnDoubleClick ) |
1384 | editItem( item ); | 1389 | editItem( item ); |
1385 | else | 1390 | else |
1386 | showItem( item , QPoint(), 0 ); | 1391 | showItem( item , QPoint(), 0 ); |
1387 | } | 1392 | } |
1388 | void KOTodoView::toggleRunningItem() | 1393 | void KOTodoView::toggleRunningItem() |
1389 | { | 1394 | { |
1390 | // qDebug("KOTodoView::toggleRunning() "); | 1395 | // qDebug("KOTodoView::toggleRunning() "); |
1391 | if ( ! mActiveItem ) | 1396 | if ( ! mActiveItem ) |
1392 | return; | 1397 | return; |
1393 | Todo * t = mActiveItem->todo(); | 1398 | Todo * t = mActiveItem->todo(); |
1394 | if ( t->isRunning() ) { | 1399 | if ( t->isRunning() ) { |
1395 | KOStopTodoPrefs tp ( t, this ); | 1400 | KOStopTodoPrefs tp ( t, this ); |
1396 | if (QApplication::desktop()->width() <= 800 ){ | 1401 | if (QApplication::desktop()->width() <= 800 ){ |
1397 | int wid = tp.width(); | 1402 | int wid = tp.width(); |
1398 | int hei = tp.height(); | 1403 | int hei = tp.height(); |
1399 | int xx = (QApplication::desktop()->width()-wid)/2; | 1404 | int xx = (QApplication::desktop()->width()-wid)/2; |
1400 | int yy = (QApplication::desktop()->height()-hei)/2; | 1405 | int yy = (QApplication::desktop()->height()-hei)/2; |
1401 | tp.setGeometry( xx,yy,wid,hei ); | 1406 | tp.setGeometry( xx,yy,wid,hei ); |
1402 | } | 1407 | } |
1403 | tp.exec(); | 1408 | tp.exec(); |
1404 | updateTodo ( t, KOGlobals::EVENTEDITED ); | 1409 | updateTodo ( t, KOGlobals::EVENTEDITED ); |
1405 | } else { | 1410 | } else { |
1406 | KOStartTodoPrefs tp ( t->summary(), this ); | 1411 | KOStartTodoPrefs tp ( t->summary(), this ); |
1407 | if (QApplication::desktop()->width() <= 800 ){ | 1412 | if (QApplication::desktop()->width() <= 800 ){ |
1408 | int wid = tp.width(); | 1413 | int wid = tp.width(); |
1409 | int hei = tp.height(); | 1414 | int hei = tp.height(); |
1410 | int xx = (QApplication::desktop()->width()-wid)/2; | 1415 | int xx = (QApplication::desktop()->width()-wid)/2; |
1411 | int yy = (QApplication::desktop()->height()-hei)/2; | 1416 | int yy = (QApplication::desktop()->height()-hei)/2; |
1412 | tp.setGeometry( xx,yy,wid,hei ); | 1417 | tp.setGeometry( xx,yy,wid,hei ); |
1413 | } | 1418 | } |
1414 | if ( !tp.exec() ) return; | 1419 | if ( !tp.exec() ) return; |
1415 | if ( tp.stopAll() ) { | 1420 | if ( tp.stopAll() ) { |
1416 | mCalendar->stopAllTodos(); | 1421 | mCalendar->stopAllTodos(); |
1417 | t->setRunning( true ); | 1422 | t->setRunning( true ); |
1418 | updateView(); | 1423 | updateView(); |
1419 | } else { | 1424 | } else { |
1420 | t->setRunning( true ); | 1425 | t->setRunning( true ); |
1421 | updateTodo ( t, KOGlobals::EVENTEDITED ); | 1426 | updateTodo ( t, KOGlobals::EVENTEDITED ); |
1422 | } | 1427 | } |
1423 | } | 1428 | } |
1424 | } | 1429 | } |
1425 | 1430 | ||
1426 | void KOTodoView::itemClicked(QListViewItem *item) | 1431 | void KOTodoView::itemClicked(QListViewItem *item) |
1427 | { | 1432 | { |
1428 | //qDebug("KOTodoView::itemClicked %d", item); | 1433 | //qDebug("KOTodoView::itemClicked %d", item); |
1429 | if (!item) { | 1434 | if (!item) { |
1430 | if ( pendingSubtodo != 0 ) { | 1435 | if ( pendingSubtodo != 0 ) { |
1431 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); | 1436 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); |
1432 | } | 1437 | } |
1433 | pendingSubtodo = 0; | 1438 | pendingSubtodo = 0; |
1434 | return; | 1439 | return; |
1435 | } | 1440 | } |
1436 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; | 1441 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; |
1437 | if ( pendingSubtodo != 0 ) { | 1442 | if ( pendingSubtodo != 0 ) { |
1438 | bool allowReparent = true; | 1443 | bool allowReparent = true; |
1439 | QListViewItem *par = item; | 1444 | QListViewItem *par = item; |
1440 | while ( par ) { | 1445 | while ( par ) { |
1441 | if ( par == pendingSubtodo ) { | 1446 | if ( par == pendingSubtodo ) { |
1442 | allowReparent = false; | 1447 | allowReparent = false; |
1443 | break; | 1448 | break; |
1444 | } | 1449 | } |
1445 | par = par->parent(); | 1450 | par = par->parent(); |
1446 | } | 1451 | } |
1447 | if ( !allowReparent ) { | 1452 | if ( !allowReparent ) { |
1448 | topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!")); | 1453 | topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!")); |
1449 | pendingSubtodo = 0; | 1454 | pendingSubtodo = 0; |
1450 | } else { | 1455 | } else { |
1451 | Todo* newParent = todoItem->todo(); | 1456 | Todo* newParent = todoItem->todo(); |
1452 | Todo* newSub = pendingSubtodo->todo(); | 1457 | Todo* newSub = pendingSubtodo->todo(); |
1453 | pendingSubtodo = 0; | 1458 | pendingSubtodo = 0; |
1454 | emit reparentTodoSignal( newParent,newSub ); | 1459 | emit reparentTodoSignal( newParent,newSub ); |
1455 | return; | 1460 | return; |
1456 | } | 1461 | } |
1457 | } | 1462 | } |
1458 | 1463 | ||
1459 | } | 1464 | } |
1460 | 1465 | ||
1461 | void KOTodoView::setDocumentId( const QString &id ) | 1466 | void KOTodoView::setDocumentId( const QString &id ) |
1462 | { | 1467 | { |
1463 | 1468 | ||
1464 | mDocPrefs->setDoc( id ); | 1469 | mDocPrefs->setDoc( id ); |
1465 | } | 1470 | } |
1466 | 1471 | ||
1467 | void KOTodoView::itemStateChanged( QListViewItem *item ) | 1472 | void KOTodoView::itemStateChanged( QListViewItem *item ) |
1468 | { | 1473 | { |
1469 | if (!item) return; | 1474 | if (!item) return; |
1470 | 1475 | ||
1471 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; | 1476 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; |
1472 | 1477 | ||
1473 | // kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; | 1478 | // kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; |
1474 | 1479 | ||
1475 | if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); | 1480 | if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); |
1476 | } | 1481 | } |
1477 | 1482 | ||
1478 | void KOTodoView::saveLayout(KConfig *config, const QString &group) const | 1483 | void KOTodoView::saveLayout(KConfig *config, const QString &group) const |
1479 | { | 1484 | { |
1480 | mTodoListView->saveLayout(config,group); | 1485 | mTodoListView->saveLayout(config,group); |
1481 | } | 1486 | } |
1482 | 1487 | ||
1483 | void KOTodoView::restoreLayout(KConfig *config, const QString &group) | 1488 | void KOTodoView::restoreLayout(KConfig *config, const QString &group) |
1484 | { | 1489 | { |
1485 | mTodoListView->restoreLayout(config,group); | 1490 | mTodoListView->restoreLayout(config,group); |
1486 | } | 1491 | } |
1487 | 1492 | ||
1488 | void KOTodoView::processSelectionChange() | 1493 | void KOTodoView::processSelectionChange() |
1489 | { | 1494 | { |
1490 | // kdDebug() << "KOTodoView::processSelectionChange()" << endl; | 1495 | // kdDebug() << "KOTodoView::processSelectionChange()" << endl; |
1491 | 1496 | ||
1492 | KOTodoViewItem *item = | 1497 | KOTodoViewItem *item = |
1493 | static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); | 1498 | static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); |
1494 | 1499 | ||
1495 | if ( !item ) { | 1500 | if ( !item ) { |
1496 | emit incidenceSelected( 0 ); | 1501 | emit incidenceSelected( 0 ); |
1497 | mNewSubBut->setEnabled( false ); | 1502 | mNewSubBut->setEnabled( false ); |
1498 | } else { | 1503 | } else { |
1499 | emit incidenceSelected( item->todo() ); | 1504 | emit incidenceSelected( item->todo() ); |
1500 | mNewSubBut->setEnabled( true ); | 1505 | mNewSubBut->setEnabled( true ); |
1501 | } | 1506 | } |
1502 | } | 1507 | } |
1503 | 1508 | ||
1504 | void KOTodoView::modified(bool b) | 1509 | void KOTodoView::modified(bool b) |
1505 | { | 1510 | { |
1506 | emit isModified(b); | 1511 | emit isModified(b); |
1507 | } | 1512 | } |
1508 | void KOTodoView::setTodoModified( Todo* todo ) | 1513 | void KOTodoView::setTodoModified( Todo* todo ) |
1509 | { | 1514 | { |
1510 | todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); | 1515 | todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); |
1511 | } | 1516 | } |
1512 | void KOTodoView::clearSelection() | 1517 | void KOTodoView::clearSelection() |
1513 | { | 1518 | { |
1514 | mTodoListView->selectAll( false ); | 1519 | mTodoListView->selectAll( false ); |
1515 | } | 1520 | } |
1516 | void KOTodoView::setAllOpen() | 1521 | void KOTodoView::setAllOpen() |
1517 | { | 1522 | { |
1518 | if ( isFlatDisplay ) { | 1523 | if ( isFlatDisplay ) { |
1519 | isFlatDisplay = false; | 1524 | isFlatDisplay = false; |
1520 | mPopupMenu->setItemChecked( 8,false ); | 1525 | mPopupMenu->setItemChecked( 8,false ); |
1521 | updateView(); | 1526 | updateView(); |
1522 | } else { | 1527 | } else { |
1523 | storeCurrentItem(); | 1528 | storeCurrentItem(); |
1524 | } | 1529 | } |
1525 | setOpen(mTodoListView->firstChild(), true); | 1530 | setOpen(mTodoListView->firstChild(), true); |
1526 | resetCurrentItem(); | 1531 | resetCurrentItem(); |
1527 | } | 1532 | } |
1528 | void KOTodoView::setAllClose() | 1533 | void KOTodoView::setAllClose() |
1529 | { | 1534 | { |
1530 | if ( isFlatDisplay ) { | 1535 | if ( isFlatDisplay ) { |
1531 | isFlatDisplay = false; | 1536 | isFlatDisplay = false; |
1532 | mPopupMenu->setItemChecked( 8,false ); | 1537 | mPopupMenu->setItemChecked( 8,false ); |
1533 | updateView(); | 1538 | updateView(); |
1534 | } else { | 1539 | } else { |
1535 | storeCurrentItem(); | 1540 | storeCurrentItem(); |
1536 | } | 1541 | } |
1537 | setOpen(mTodoListView->firstChild(), false); | 1542 | setOpen(mTodoListView->firstChild(), false); |
1538 | resetCurrentItem(); | 1543 | resetCurrentItem(); |
1539 | } | 1544 | } |
1540 | void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) | 1545 | void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) |
1541 | { | 1546 | { |
1542 | 1547 | ||
1543 | while ( item ) { | 1548 | while ( item ) { |
1544 | setOpen( item->firstChild(), setOpenI ); | 1549 | setOpen( item->firstChild(), setOpenI ); |
1545 | item->setOpen( setOpenI ); | 1550 | item->setOpen( setOpenI ); |
1546 | item = item->nextSibling(); | 1551 | item = item->nextSibling(); |
1547 | } | 1552 | } |
1548 | } | 1553 | } |
1549 | 1554 | ||
1550 | void KOTodoView::displayAllFlat() | 1555 | void KOTodoView::displayAllFlat() |
1551 | { | 1556 | { |
1552 | 1557 | ||
1553 | mActiveItem = 0; | 1558 | mActiveItem = 0; |
1554 | pendingSubtodo = 0; | 1559 | pendingSubtodo = 0; |
1555 | if ( mBlockUpdate ) { | 1560 | if ( mBlockUpdate ) { |
1556 | return; | 1561 | return; |
1557 | } | 1562 | } |
1558 | clearList (); | 1563 | clearList (); |
1559 | mPopupMenu->setItemChecked( 8,true ); | 1564 | mPopupMenu->setItemChecked( 8,true ); |
1560 | isFlatDisplay = true; | 1565 | isFlatDisplay = true; |
1561 | QPtrList<Todo> todoList = calendar()->todos(); | 1566 | QPtrList<Todo> todoList = calendar()->todos(); |
1562 | Todo *todo; | 1567 | Todo *todo; |
1563 | for(todo = todoList.first(); todo; todo = todoList.next()) { | 1568 | for(todo = todoList.first(); todo; todo = todoList.next()) { |
1564 | if ( checkTodo( todo ) ) { | 1569 | if ( checkTodo( todo ) ) { |
1565 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); | 1570 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); |
1566 | mTodoMap.insert(todo,todoItem); | 1571 | mTodoMap.insert(todo,todoItem); |
1567 | } | 1572 | } |
1568 | } | 1573 | } |
1569 | resetCurrentItem(); | 1574 | resetCurrentItem(); |
1570 | } | 1575 | } |
1571 | 1576 | ||
1572 | void KOTodoView::setAllFlat() | 1577 | void KOTodoView::setAllFlat() |
1573 | { | 1578 | { |
1574 | if ( isFlatDisplay ) { | 1579 | if ( isFlatDisplay ) { |
1575 | isFlatDisplay = false; | 1580 | isFlatDisplay = false; |
1576 | mPopupMenu->setItemChecked( 8,false ); | 1581 | mPopupMenu->setItemChecked( 8,false ); |
1577 | updateView(); | 1582 | updateView(); |
1578 | return; | 1583 | return; |
1579 | } | 1584 | } |
1580 | displayAllFlat(); | 1585 | displayAllFlat(); |
1581 | } | 1586 | } |
1582 | 1587 | ||
1583 | void KOTodoView::purgeCompleted() | 1588 | void KOTodoView::purgeCompleted() |
1584 | { | 1589 | { |
1585 | emit purgeCompletedSignal(); | 1590 | emit purgeCompletedSignal(); |
1586 | 1591 | ||
1587 | } | 1592 | } |
1588 | void KOTodoView::toggleQuickTodo() | 1593 | void KOTodoView::toggleQuickTodo() |
1589 | { | 1594 | { |
1590 | if ( mQuickBar->isVisible() ) { | 1595 | if ( mQuickBar->isVisible() ) { |
1591 | mQuickBar->hide(); | 1596 | mQuickBar->hide(); |
1592 | KOPrefs::instance()->mEnableQuickTodo = false; | 1597 | KOPrefs::instance()->mEnableQuickTodo = false; |
1593 | } | 1598 | } |
1594 | else { | 1599 | else { |
1595 | mQuickBar->show(); | 1600 | mQuickBar->show(); |
1596 | KOPrefs::instance()->mEnableQuickTodo = true; | 1601 | KOPrefs::instance()->mEnableQuickTodo = true; |
1597 | } | 1602 | } |
1598 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); | 1603 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); |
1599 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); | 1604 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); |
1600 | } | 1605 | } |
1601 | 1606 | ||
1602 | void KOTodoView::toggleRunning() | 1607 | void KOTodoView::toggleRunning() |
1603 | { | 1608 | { |
1604 | KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; | 1609 | KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; |
1605 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); | 1610 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); |
1606 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); | 1611 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); |
1607 | updateView(); | 1612 | updateView(); |
1608 | if ( KOPrefs::instance()->mHideNonStartedTodos ) | 1613 | if ( KOPrefs::instance()->mHideNonStartedTodos ) |
1609 | topLevelWidget()->setCaption(i18n("Hide not Running")); | 1614 | topLevelWidget()->setCaption(i18n("Hide not Running")); |
1610 | else | 1615 | else |
1611 | topLevelWidget()->setCaption(i18n("Show not Running")); | 1616 | topLevelWidget()->setCaption(i18n("Show not Running")); |
1612 | } | 1617 | } |
1613 | 1618 | ||
1614 | void KOTodoView::toggleCompleted() | 1619 | void KOTodoView::toggleCompleted() |
1615 | { | 1620 | { |
1616 | KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; | 1621 | KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; |
1617 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); | 1622 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); |
1618 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); | 1623 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); |
1619 | updateView(); | 1624 | updateView(); |
1620 | if ( KOPrefs::instance()->mShowCompletedTodo ) | 1625 | if ( KOPrefs::instance()->mShowCompletedTodo ) |
1621 | topLevelWidget()->setCaption(i18n("Show Completed")); | 1626 | topLevelWidget()->setCaption(i18n("Show Completed")); |
1622 | else | 1627 | else |
1623 | topLevelWidget()->setCaption(i18n("Hide Completed")); | 1628 | topLevelWidget()->setCaption(i18n("Hide Completed")); |
1624 | } | 1629 | } |
1625 | 1630 | ||
1626 | void KOTodoView::addQuickTodo() | 1631 | void KOTodoView::addQuickTodo() |
1627 | { | 1632 | { |
1628 | addQuickTodoPar( 0 ); | 1633 | addQuickTodoPar( 0 ); |
1629 | } | 1634 | } |
1630 | void KOTodoView::addQuickTodoPar( Todo * parentTodo) | 1635 | void KOTodoView::addQuickTodoPar( Todo * parentTodo) |
1631 | { | 1636 | { |
1632 | Todo *todo = new Todo(); | 1637 | Todo *todo = new Todo(); |
1633 | todo->setSummary(mQuickAdd->text()); | 1638 | todo->setSummary(mQuickAdd->text()); |
1634 | todo->setOrganizer(KOPrefs::instance()->email()); | 1639 | todo->setOrganizer(KOPrefs::instance()->email()); |
1635 | if ( parentTodo ) { | 1640 | if ( parentTodo ) { |
1636 | todo->setRelatedTo(parentTodo); | 1641 | todo->setRelatedTo(parentTodo); |
1637 | 1642 | ||
1638 | todo->setCategories (parentTodo->categoriesStr ()); | 1643 | todo->setCategories (parentTodo->categoriesStr ()); |
1639 | todo->setSecrecy (parentTodo->secrecy ()); | 1644 | todo->setSecrecy (parentTodo->secrecy ()); |
1640 | if ( parentTodo->priority() < 3 ) | 1645 | if ( parentTodo->priority() < 3 ) |
1641 | todo->setPriority( parentTodo->priority() ); | 1646 | todo->setPriority( parentTodo->priority() ); |
1642 | todo->setCalID( parentTodo->calID() ); | 1647 | todo->setCalID( parentTodo->calID() ); |
1643 | } else { | 1648 | } else { |
1644 | CalFilter * cf = mCalendar->filter(); | 1649 | CalFilter * cf = mCalendar->filter(); |
1645 | if ( cf ) { | 1650 | if ( cf ) { |
1646 | if ( cf->isEnabled()&& cf->showCategories()) { | 1651 | if ( cf->isEnabled()&& cf->showCategories()) { |
1647 | todo->setCategories(cf->categoryList()); | 1652 | todo->setCategories(cf->categoryList()); |
1648 | } | 1653 | } |
1649 | if ( cf->isEnabled() ) | 1654 | if ( cf->isEnabled() ) |
1650 | todo->setSecrecy( cf->getSecrecy()); | 1655 | todo->setSecrecy( cf->getSecrecy()); |
1651 | } | 1656 | } |
1652 | } | 1657 | } |
1653 | mCalendar->addTodo(todo); | 1658 | mCalendar->addTodo(todo); |
1654 | mQuickAdd->setText(""); | 1659 | mQuickAdd->setText(""); |
1655 | todoModified (todo, KOGlobals::EVENTADDED ); | 1660 | todoModified (todo, KOGlobals::EVENTADDED ); |
1656 | updateView(); | 1661 | updateView(); |
1657 | 1662 | ||
1658 | } | 1663 | } |
1659 | void KOTodoView::keyPressEvent ( QKeyEvent * e ) | 1664 | void KOTodoView::keyPressEvent ( QKeyEvent * e ) |
1660 | { | 1665 | { |
1661 | // e->ignore(); | 1666 | // e->ignore(); |
1662 | //return; | 1667 | //return; |
1663 | if ( !isVisible() ) { | 1668 | if ( !isVisible() ) { |
1664 | e->ignore(); | 1669 | e->ignore(); |
1665 | return; | 1670 | return; |
1666 | } | 1671 | } |
1667 | switch ( e->key() ) { | 1672 | switch ( e->key() ) { |
1668 | case Qt::Key_Down: | 1673 | case Qt::Key_Down: |
1669 | case Qt::Key_Up: | 1674 | case Qt::Key_Up: |
1670 | // KOrg::BaseView::keyPressEvent ( e ); | 1675 | // KOrg::BaseView::keyPressEvent ( e ); |
1671 | e->ignore(); | 1676 | e->ignore(); |
1672 | break; | 1677 | break; |
1673 | 1678 | ||
1674 | case Qt::Key_Q: | 1679 | case Qt::Key_Q: |
1675 | 1680 | ||
1676 | 1681 | ||
1677 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) { | 1682 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) { |
1678 | e->ignore(); | 1683 | e->ignore(); |
1679 | break; | 1684 | break; |
1680 | } | 1685 | } |
1681 | toggleQuickTodo(); | 1686 | toggleQuickTodo(); |
1682 | break; | 1687 | break; |
1683 | case Qt::Key_U: | 1688 | case Qt::Key_U: |
1684 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | 1689 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { |
1685 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1690 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1686 | unparentTodo(); | 1691 | unparentTodo(); |
1687 | e->accept(); | 1692 | e->accept(); |
1688 | } else | 1693 | } else |
1689 | e->ignore(); | 1694 | e->ignore(); |
1690 | break; | 1695 | break; |
1691 | case Qt::Key_S: | 1696 | case Qt::Key_S: |
1692 | if ( e->state() == Qt::ControlButton ) { | 1697 | if ( e->state() == Qt::ControlButton ) { |
1693 | e->ignore(); | 1698 | e->ignore(); |
1694 | break; | 1699 | break; |
1695 | } | 1700 | } |
1696 | if ( e->state() == Qt::ShiftButton ) { | 1701 | if ( e->state() == Qt::ShiftButton ) { |
1697 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1702 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1698 | reparentTodo(); | 1703 | reparentTodo(); |
1699 | e->accept(); | 1704 | e->accept(); |
1700 | } else | 1705 | } else |
1701 | e->ignore(); | 1706 | e->ignore(); |
1702 | break; | 1707 | break; |
1703 | case Qt::Key_P: | 1708 | case Qt::Key_P: |
1704 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | 1709 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { |
1705 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1710 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1706 | if ( pendingSubtodo ) | 1711 | if ( pendingSubtodo ) |
1707 | itemClicked(mActiveItem); | 1712 | itemClicked(mActiveItem); |
1708 | e->accept(); | 1713 | e->accept(); |
1709 | } else | 1714 | } else |
1710 | e->ignore(); | 1715 | e->ignore(); |
1716 | break; | ||
1717 | case Qt::Key_R: | ||
1718 | if (!( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) ) { | ||
1719 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | ||
1720 | toggleRunningItemQuick(); | ||
1721 | e->accept(); | ||
1722 | } else | ||
1723 | e->ignore(); | ||
1711 | break; | 1724 | break; |
1712 | case Qt::Key_Escape: | 1725 | case Qt::Key_Escape: |
1713 | if ( pendingSubtodo ) { | 1726 | if ( pendingSubtodo ) { |
1714 | itemClicked(0); | 1727 | itemClicked(0); |
1715 | e->accept(); | 1728 | e->accept(); |
1716 | } else | 1729 | } else |
1717 | e->ignore(); | 1730 | e->ignore(); |
1718 | break; | 1731 | break; |
1719 | default: | 1732 | default: |
1720 | e->ignore(); | 1733 | e->ignore(); |
1721 | } | 1734 | } |
1722 | 1735 | ||
1723 | if ( true ) { | 1736 | if ( true ) { |
1724 | if ( e->key() == Qt::Key_I ) { | 1737 | if ( e->key() == Qt::Key_I ) { |
1725 | KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); | 1738 | KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); |
1726 | if ( cn ) { | 1739 | if ( cn ) { |
1727 | mActiveItem = cn; | 1740 | mActiveItem = cn; |
1728 | KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); | 1741 | KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); |
1729 | if ( ci ){ | 1742 | if ( ci ){ |
1730 | showTodo(); | 1743 | showTodo(); |
1731 | cn = (KOTodoViewItem*)cn->itemBelow(); | 1744 | cn = (KOTodoViewItem*)cn->itemBelow(); |
1732 | if ( cn ) { | 1745 | if ( cn ) { |
1733 | mTodoListView->setCurrentItem ( cn ); | 1746 | mTodoListView->setCurrentItem ( cn ); |
1734 | mTodoListView->ensureItemVisible ( cn ); | 1747 | mTodoListView->ensureItemVisible ( cn ); |
1735 | } | 1748 | } |
1736 | 1749 | ||
1737 | } | 1750 | } |
1738 | } | 1751 | } |
1739 | e->accept(); | 1752 | e->accept(); |
1740 | } | 1753 | } |
1741 | } | 1754 | } |
1742 | } | 1755 | } |
1743 | 1756 | ||
1744 | void KOTodoView::updateTodo( Todo * t, int type ) | 1757 | void KOTodoView::updateTodo( Todo * t, int type ) |
1745 | { | 1758 | { |
1746 | if ( mBlockUpdate ) | 1759 | if ( mBlockUpdate ) |
1747 | return; | 1760 | return; |
1748 | 1761 | ||
1749 | QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; | 1762 | QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; |
1750 | itemIterator = mTodoMap.find(t); | 1763 | itemIterator = mTodoMap.find(t); |
1751 | if (itemIterator != mTodoMap.end()) { | 1764 | if (itemIterator != mTodoMap.end()) { |
1752 | (*itemIterator)->construct(); | 1765 | (*itemIterator)->construct(); |
1753 | } else { | 1766 | } else { |
1754 | if ( type == KOGlobals::EVENTADDED ) { | 1767 | if ( type == KOGlobals::EVENTADDED ) { |
1755 | insertTodoItem( t ); | 1768 | insertTodoItem( t ); |
1756 | } | 1769 | } |
1757 | } | 1770 | } |
1758 | 1771 | ||
1759 | } | 1772 | } |
1760 | 1773 | ||
1761 | void KOTodoView::todoModified(Todo * t , int p ) | 1774 | void KOTodoView::todoModified(Todo * t , int p ) |
1762 | { | 1775 | { |
1763 | mBlockUpdate = true; | 1776 | mBlockUpdate = true; |
1764 | emit todoModifiedSignal ( t, p ); | 1777 | emit todoModifiedSignal ( t, p ); |
1765 | mBlockUpdate = false; | 1778 | mBlockUpdate = false; |
1766 | } | 1779 | } |
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index 161ecb0..0cbc087 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h | |||
@@ -1,310 +1,311 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 2000, 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2000, 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | #ifndef KOTODOVIEW_H | 23 | #ifndef KOTODOVIEW_H |
24 | #define KOTODOVIEW_H | 24 | #define KOTODOVIEW_H |
25 | 25 | ||
26 | #include <qfont.h> | 26 | #include <qfont.h> |
27 | #include <qfontmetrics.h> | 27 | #include <qfontmetrics.h> |
28 | #include <qlineedit.h> | 28 | #include <qlineedit.h> |
29 | #include <qptrlist.h> | 29 | #include <qptrlist.h> |
30 | #include <qstrlist.h> | 30 | #include <qstrlist.h> |
31 | #include <qlistbox.h> | 31 | #include <qlistbox.h> |
32 | #include <qpopupmenu.h> | 32 | #include <qpopupmenu.h> |
33 | #include <qlabel.h> | 33 | #include <qlabel.h> |
34 | #include <qmap.h> | 34 | #include <qmap.h> |
35 | #include <qdialog.h> | 35 | #include <qdialog.h> |
36 | #include <qlabel.h> | 36 | #include <qlabel.h> |
37 | #include <qlistview.h> | 37 | #include <qlistview.h> |
38 | #include <klistview.h> | 38 | #include <klistview.h> |
39 | 39 | ||
40 | #include <libkcal/calendar.h> | 40 | #include <libkcal/calendar.h> |
41 | #include <libkcal/todo.h> | 41 | #include <libkcal/todo.h> |
42 | 42 | ||
43 | #include <korganizer/baseview.h> | 43 | #include <korganizer/baseview.h> |
44 | 44 | ||
45 | #include "kotodoviewitem.h" | 45 | #include "kotodoviewitem.h" |
46 | #include "koprefs.h" | 46 | #include "koprefs.h" |
47 | #include "koglobals.h" | 47 | #include "koglobals.h" |
48 | #include "datenavigator.h" | 48 | #include "datenavigator.h" |
49 | 49 | ||
50 | class QDragEnterEvent; | 50 | class QDragEnterEvent; |
51 | class QDragMoveEvent; | 51 | class QDragMoveEvent; |
52 | class QDragLeaveEvent; | 52 | class QDragLeaveEvent; |
53 | class QDropEvent; | 53 | class QDropEvent; |
54 | class KOTodoViewWhatsThis; | 54 | class KOTodoViewWhatsThis; |
55 | class KDateEdit; | 55 | class KDateEdit; |
56 | class KOTimeEdit; | 56 | class KOTimeEdit; |
57 | 57 | ||
58 | class DocPrefs; | 58 | class DocPrefs; |
59 | 59 | ||
60 | 60 | ||
61 | class KOStopTodoPrefs : public QDialog | 61 | class KOStopTodoPrefs : public QDialog |
62 | { | 62 | { |
63 | Q_OBJECT | 63 | Q_OBJECT |
64 | public: | 64 | public: |
65 | KOStopTodoPrefs( Todo* todo, QWidget *parent=0, const char *name=0 ) ; | 65 | KOStopTodoPrefs( Todo* todo, QWidget *parent=0, const char *name=0 ) ; |
66 | 66 | ||
67 | 67 | ||
68 | private slots: | 68 | private slots: |
69 | void doNotSave(); | 69 | void doNotSave(); |
70 | void accept(); | 70 | void accept(); |
71 | private: | 71 | private: |
72 | Todo* mTodo; | 72 | Todo* mTodo; |
73 | QLineEdit* mComment; | 73 | QLineEdit* mComment; |
74 | QDateTime mStop; | 74 | QDateTime mStop; |
75 | KDateEdit *sde, *ede; | 75 | KDateEdit *sde, *ede; |
76 | KOTimeEdit *ste, *ete; | 76 | KOTimeEdit *ste, *ete; |
77 | 77 | ||
78 | }; | 78 | }; |
79 | 79 | ||
80 | class KOStartTodoPrefs : public QDialog | 80 | class KOStartTodoPrefs : public QDialog |
81 | { | 81 | { |
82 | Q_OBJECT | 82 | Q_OBJECT |
83 | public: | 83 | public: |
84 | KOStartTodoPrefs( QString sum, QWidget *parent=0, const char *name=0 ) ; | 84 | KOStartTodoPrefs( QString sum, QWidget *parent=0, const char *name=0 ) ; |
85 | 85 | ||
86 | bool stopAll() { return mStopAll; } | 86 | bool stopAll() { return mStopAll; } |
87 | private slots: | 87 | private slots: |
88 | void doStop(); | 88 | void doStop(); |
89 | private: | 89 | private: |
90 | bool mStopAll; | 90 | bool mStopAll; |
91 | 91 | ||
92 | }; | 92 | }; |
93 | 93 | ||
94 | class KOTodoListView : public KListView | 94 | class KOTodoListView : public KListView |
95 | { | 95 | { |
96 | Q_OBJECT | 96 | Q_OBJECT |
97 | public: | 97 | public: |
98 | KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0); | 98 | KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0); |
99 | virtual ~KOTodoListView() {} | 99 | virtual ~KOTodoListView() {} |
100 | 100 | ||
101 | signals: | 101 | signals: |
102 | void paintNeeded(); | 102 | void paintNeeded(); |
103 | void todoDropped(Todo *, int); | 103 | void todoDropped(Todo *, int); |
104 | void double_Clicked(QListViewItem *item); | 104 | void double_Clicked(QListViewItem *item); |
105 | void reparentTodoSignal( Todo *,Todo * ); | 105 | void reparentTodoSignal( Todo *,Todo * ); |
106 | void unparentTodoSignal(Todo *); | 106 | void unparentTodoSignal(Todo *); |
107 | void deleteTodo( Todo * ); | 107 | void deleteTodo( Todo * ); |
108 | protected: | 108 | protected: |
109 | void wheelEvent (QWheelEvent *e); | 109 | void wheelEvent (QWheelEvent *e); |
110 | void contentsDragEnterEvent(QDragEnterEvent *); | 110 | void contentsDragEnterEvent(QDragEnterEvent *); |
111 | void contentsDragMoveEvent(QDragMoveEvent *); | 111 | void contentsDragMoveEvent(QDragMoveEvent *); |
112 | void contentsDragLeaveEvent(QDragLeaveEvent *); | 112 | void contentsDragLeaveEvent(QDragLeaveEvent *); |
113 | void contentsDropEvent(QDropEvent *); | 113 | void contentsDropEvent(QDropEvent *); |
114 | 114 | ||
115 | void contentsMousePressEvent(QMouseEvent *); | 115 | void contentsMousePressEvent(QMouseEvent *); |
116 | void contentsMouseMoveEvent(QMouseEvent *); | 116 | void contentsMouseMoveEvent(QMouseEvent *); |
117 | void contentsMouseReleaseEvent(QMouseEvent *); | 117 | void contentsMouseReleaseEvent(QMouseEvent *); |
118 | void contentsMouseDoubleClickEvent(QMouseEvent *); | 118 | void contentsMouseDoubleClickEvent(QMouseEvent *); |
119 | 119 | ||
120 | private: | 120 | private: |
121 | void paintEvent(QPaintEvent * pevent); | 121 | void paintEvent(QPaintEvent * pevent); |
122 | bool internalDrop; | 122 | bool internalDrop; |
123 | QString mName; | 123 | QString mName; |
124 | Calendar *mCalendar; | 124 | Calendar *mCalendar; |
125 | QPoint mPressPos; | 125 | QPoint mPressPos; |
126 | bool mMousePressed; | 126 | bool mMousePressed; |
127 | QListViewItem *mOldCurrent; | 127 | QListViewItem *mOldCurrent; |
128 | bool mFlagKeyPressed; | 128 | bool mFlagKeyPressed; |
129 | void keyPressEvent ( QKeyEvent * ) ; | 129 | void keyPressEvent ( QKeyEvent * ) ; |
130 | void keyReleaseEvent ( QKeyEvent * ) ; | 130 | void keyReleaseEvent ( QKeyEvent * ) ; |
131 | }; | 131 | }; |
132 | 132 | ||
133 | 133 | ||
134 | /** | 134 | /** |
135 | This is the line-edit on top of the todoview for fast addition of new todos | 135 | This is the line-edit on top of the todoview for fast addition of new todos |
136 | */ | 136 | */ |
137 | class KOQuickTodo : public QLineEdit | 137 | class KOQuickTodo : public QLineEdit |
138 | { | 138 | { |
139 | public: | 139 | public: |
140 | KOQuickTodo(QWidget *parent=0); | 140 | KOQuickTodo(QWidget *parent=0); |
141 | protected: | 141 | protected: |
142 | void focusInEvent(QFocusEvent *ev); | 142 | void focusInEvent(QFocusEvent *ev); |
143 | void focusOutEvent(QFocusEvent *ev); | 143 | void focusOutEvent(QFocusEvent *ev); |
144 | }; | 144 | }; |
145 | 145 | ||
146 | 146 | ||
147 | /** | 147 | /** |
148 | This class provides a multi-column list view of todo events. | 148 | This class provides a multi-column list view of todo events. |
149 | 149 | ||
150 | @short multi-column list view of todo events. | 150 | @short multi-column list view of todo events. |
151 | @author Cornelius Schumacher <schumacher@kde.org> | 151 | @author Cornelius Schumacher <schumacher@kde.org> |
152 | */ | 152 | */ |
153 | class KOTodoView : public KOrg::BaseView | 153 | class KOTodoView : public KOrg::BaseView |
154 | { | 154 | { |
155 | Q_OBJECT | 155 | Q_OBJECT |
156 | public: | 156 | public: |
157 | KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); | 157 | KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); |
158 | ~KOTodoView(); | 158 | ~KOTodoView(); |
159 | 159 | ||
160 | QPtrList<Incidence> selectedIncidences(); | 160 | QPtrList<Incidence> selectedIncidences(); |
161 | QPtrList<Todo> selectedTodos(); | 161 | QPtrList<Todo> selectedTodos(); |
162 | 162 | ||
163 | DateList selectedDates() | 163 | DateList selectedDates() |
164 | {DateList q; | 164 | {DateList q; |
165 | return q;} | 165 | return q;} |
166 | 166 | ||
167 | /** Return number of shown dates. TodoView does not show dates, */ | 167 | /** Return number of shown dates. TodoView does not show dates, */ |
168 | int currentDateCount() { return 0; } | 168 | int currentDateCount() { return 0; } |
169 | 169 | ||
170 | void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); | 170 | void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); |
171 | 171 | ||
172 | void setDocumentId( const QString & ); | 172 | void setDocumentId( const QString & ); |
173 | 173 | ||
174 | void saveLayout(KConfig *config, const QString &group) const; | 174 | void saveLayout(KConfig *config, const QString &group) const; |
175 | void restoreLayout(KConfig *config, const QString &group); | 175 | void restoreLayout(KConfig *config, const QString &group); |
176 | void setNavigator( DateNavigator* nav ) {mNavigator = nav;} | 176 | void setNavigator( DateNavigator* nav ) {mNavigator = nav;} |
177 | QString getWhatsThisText(QPoint p); | 177 | QString getWhatsThisText(QPoint p); |
178 | void clearList( bool saveCurrentItem = true ); | 178 | void clearList( bool saveCurrentItem = true ); |
179 | 179 | ||
180 | public slots: | 180 | public slots: |
181 | void updateView(); | 181 | void updateView(); |
182 | void updateConfig(); | 182 | void updateConfig(); |
183 | 183 | ||
184 | void changeEventDisplay(Event *, int); | 184 | void changeEventDisplay(Event *, int); |
185 | 185 | ||
186 | void showDates(const QDate &start, const QDate &end); | 186 | void showDates(const QDate &start, const QDate &end); |
187 | void showEvents(QPtrList<Event> eventList); | 187 | void showEvents(QPtrList<Event> eventList); |
188 | 188 | ||
189 | void clearSelection(); | 189 | void clearSelection(); |
190 | void jumpToDate (); | 190 | void jumpToDate (); |
191 | 191 | ||
192 | void editItem(QListViewItem *item); | 192 | void editItem(QListViewItem *item); |
193 | void showItem(QListViewItem *item,const QPoint &,int); | 193 | void showItem(QListViewItem *item,const QPoint &,int); |
194 | void popupMenu(QListViewItem *item,const QPoint &,int); | 194 | void popupMenu(QListViewItem *item,const QPoint &,int); |
195 | void newTodo(); | 195 | void newTodo(); |
196 | void newSubTodo(); | 196 | void newSubTodo(); |
197 | void unparentTodo(); | 197 | void unparentTodo(); |
198 | void reparentTodo(); | 198 | void reparentTodo(); |
199 | void showTodo(); | 199 | void showTodo(); |
200 | void editTodo(); | 200 | void editTodo(); |
201 | void cloneTodo(); | 201 | void cloneTodo(); |
202 | void cancelTodo(); | 202 | void cancelTodo(); |
203 | void moveTodo(); | 203 | void moveTodo(); |
204 | void beamTodo(); | 204 | void beamTodo(); |
205 | void deleteTodo(); | 205 | void deleteTodo(); |
206 | 206 | ||
207 | void setNewPriority(int); | 207 | void setNewPriority(int); |
208 | void setNewPercentage(int); | 208 | void setNewPercentage(int); |
209 | void changedCategories(int); | 209 | void changedCategories(int); |
210 | 210 | ||
211 | void setAllOpen(); | 211 | void setAllOpen(); |
212 | void setAllClose(); | 212 | void setAllClose(); |
213 | void setAllFlat(); | 213 | void setAllFlat(); |
214 | void displayAllFlat(); | 214 | void displayAllFlat(); |
215 | 215 | ||
216 | void purgeCompleted(); | 216 | void purgeCompleted(); |
217 | void toggleCompleted(); | 217 | void toggleCompleted(); |
218 | void toggleRunning(); | 218 | void toggleRunning(); |
219 | void toggleQuickTodo(); | 219 | void toggleQuickTodo(); |
220 | void updateTodo( Todo *, int ); | 220 | void updateTodo( Todo *, int ); |
221 | 221 | ||
222 | void itemClicked(QListViewItem *); | 222 | void itemClicked(QListViewItem *); |
223 | void itemStateChanged(QListViewItem *); | 223 | void itemStateChanged(QListViewItem *); |
224 | void modified(bool); | 224 | void modified(bool); |
225 | void itemDoubleClicked(QListViewItem *item); | 225 | void itemDoubleClicked(QListViewItem *item); |
226 | void resetFocusToList(); | 226 | void resetFocusToList(); |
227 | void fillCategories (); | 227 | void fillCategories (); |
228 | void fillCal (); | 228 | void fillCal (); |
229 | void changedCal (int); | 229 | void changedCal (int); |
230 | 230 | ||
231 | signals: | 231 | signals: |
232 | void newTodoSignal(); | 232 | void newTodoSignal(); |
233 | void newSubTodoSignal(Todo *); | 233 | void newSubTodoSignal(Todo *); |
234 | void unparentTodoSignal(Todo *); | 234 | void unparentTodoSignal(Todo *); |
235 | void reparentTodoSignal( Todo *,Todo * ); | 235 | void reparentTodoSignal( Todo *,Todo * ); |
236 | void showTodoSignal(Todo *); | 236 | void showTodoSignal(Todo *); |
237 | 237 | ||
238 | void editTodoSignal(Todo *); | 238 | void editTodoSignal(Todo *); |
239 | void deleteTodoSignal(Todo *); | 239 | void deleteTodoSignal(Todo *); |
240 | void todoModifiedSignal (Todo *, int); | 240 | void todoModifiedSignal (Todo *, int); |
241 | 241 | ||
242 | void isModified(bool); | 242 | void isModified(bool); |
243 | void cloneTodoSignal( Incidence * ); | 243 | void cloneTodoSignal( Incidence * ); |
244 | void cancelTodoSignal( Incidence * ); | 244 | void cancelTodoSignal( Incidence * ); |
245 | void moveTodoSignal( Incidence * ); | 245 | void moveTodoSignal( Incidence * ); |
246 | void beamTodoSignal( Incidence * ); | 246 | void beamTodoSignal( Incidence * ); |
247 | void purgeCompletedSignal(); | 247 | void purgeCompletedSignal(); |
248 | 248 | ||
249 | protected slots: | 249 | protected slots: |
250 | void toggleRunningItem(); | 250 | void toggleRunningItem(); |
251 | void toggleRunningItemQuick(); | ||
251 | void paintNeeded(); | 252 | void paintNeeded(); |
252 | void processSelectionChange(); | 253 | void processSelectionChange(); |
253 | void addQuickTodo(); | 254 | void addQuickTodo(); |
254 | void setTodoModified( Todo* ); | 255 | void setTodoModified( Todo* ); |
255 | void todoModified(Todo *, int ); | 256 | void todoModified(Todo *, int ); |
256 | 257 | ||
257 | private: | 258 | private: |
258 | bool mIsActiveWindow; | 259 | bool mIsActiveWindow; |
259 | void addQuickTodoPar( Todo * parentTodo); | 260 | void addQuickTodoPar( Todo * parentTodo); |
260 | /* | 261 | /* |
261 | * the TodoEditor approach is rather unscaling in the long | 262 | * the TodoEditor approach is rather unscaling in the long |
262 | * run. | 263 | * run. |
263 | * Korganizer keeps it in memory and we need to update | 264 | * Korganizer keeps it in memory and we need to update |
264 | * 1. make KOTodoViewItem a QObject again? | 265 | * 1. make KOTodoViewItem a QObject again? |
265 | * 2. add a public method for setting one todo modified? | 266 | * 2. add a public method for setting one todo modified? |
266 | * 3. add a private method for setting a todo modified + friend here? | 267 | * 3. add a private method for setting a todo modified + friend here? |
267 | * -- zecke 2002-07-08 | 268 | * -- zecke 2002-07-08 |
268 | */ | 269 | */ |
269 | KOTodoViewWhatsThis* mKOTodoViewWhatsThis; | 270 | KOTodoViewWhatsThis* mKOTodoViewWhatsThis; |
270 | friend class KOTodoListView; | 271 | friend class KOTodoListView; |
271 | void paintEvent(QPaintEvent * pevent); | 272 | void paintEvent(QPaintEvent * pevent); |
272 | bool mPendingUpdateBeforeRepaint; | 273 | bool mPendingUpdateBeforeRepaint; |
273 | friend class KOTodoViewItem; | 274 | friend class KOTodoViewItem; |
274 | QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); | 275 | QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); |
275 | void restoreItemState( QListViewItem * ); | 276 | void restoreItemState( QListViewItem * ); |
276 | 277 | ||
277 | bool checkTodo( Todo * ); | 278 | bool checkTodo( Todo * ); |
278 | bool isFlatDisplay; | 279 | bool isFlatDisplay; |
279 | void setOpen( QListViewItem*, bool setOpen); | 280 | void setOpen( QListViewItem*, bool setOpen); |
280 | KOTodoListView *mTodoListView; | 281 | KOTodoListView *mTodoListView; |
281 | QPopupMenu *mItemPopupMenu; | 282 | QPopupMenu *mItemPopupMenu; |
282 | QPopupMenu *mPopupMenu; | 283 | QPopupMenu *mPopupMenu; |
283 | QPopupMenu *mPriorityPopupMenu; | 284 | QPopupMenu *mPriorityPopupMenu; |
284 | QPopupMenu *mPercentageCompletedPopupMenu; | 285 | QPopupMenu *mPercentageCompletedPopupMenu; |
285 | QPopupMenu *mCategoryPopupMenu; | 286 | QPopupMenu *mCategoryPopupMenu; |
286 | QPopupMenu *mCalPopupMenu; | 287 | QPopupMenu *mCalPopupMenu; |
287 | 288 | ||
288 | QMap<int, int> mPercentage; | 289 | QMap<int, int> mPercentage; |
289 | QMap<int, int> mPriority; | 290 | QMap<int, int> mPriority; |
290 | QMap<int, QString> mCategory; | 291 | QMap<int, QString> mCategory; |
291 | KOTodoViewItem *mActiveItem; | 292 | KOTodoViewItem *mActiveItem; |
292 | 293 | ||
293 | QMap<Todo *,KOTodoViewItem *> mTodoMap; | 294 | QMap<Todo *,KOTodoViewItem *> mTodoMap; |
294 | QString mName; | 295 | QString mName; |
295 | QWidget* mQuickBar; | 296 | QWidget* mQuickBar; |
296 | 297 | ||
297 | DocPrefs *mDocPrefs; | 298 | DocPrefs *mDocPrefs; |
298 | QString mCurrentDoc; | 299 | QString mCurrentDoc; |
299 | KOQuickTodo *mQuickAdd; | 300 | KOQuickTodo *mQuickAdd; |
300 | bool mBlockUpdate; | 301 | bool mBlockUpdate; |
301 | void keyPressEvent ( QKeyEvent * ) ; | 302 | void keyPressEvent ( QKeyEvent * ) ; |
302 | KOTodoViewItem * pendingSubtodo; | 303 | KOTodoViewItem * pendingSubtodo; |
303 | DateNavigator* mNavigator; | 304 | DateNavigator* mNavigator; |
304 | void storeCurrentItem(); | 305 | void storeCurrentItem(); |
305 | void resetCurrentItem(); | 306 | void resetCurrentItem(); |
306 | Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove; | 307 | Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove; |
307 | QPushButton * mNewSubBut; | 308 | QPushButton * mNewSubBut; |
308 | }; | 309 | }; |
309 | 310 | ||
310 | #endif | 311 | #endif |