author | zautrix <zautrix> | 2005-06-13 13:57:22 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-06-13 13:57:22 (UTC) |
commit | 56de219c5ce910a470a01a0e5003d1a113837ef4 (patch) (unidiff) | |
tree | 3393cb306cec8dcdc05d6ed0fae3ae7d374f2794 /korganizer/kotodoview.cpp | |
parent | 4f3ff02932b39bf16b9692c3cb69c101a28b4616 (diff) | |
download | kdepimpi-56de219c5ce910a470a01a0e5003d1a113837ef4.zip kdepimpi-56de219c5ce910a470a01a0e5003d1a113837ef4.tar.gz kdepimpi-56de219c5ce910a470a01a0e5003d1a113837ef4.tar.bz2 |
fixxx
-rw-r--r-- | korganizer/kotodoview.cpp | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 2602487..35c2a9f 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -680,52 +680,52 @@ void KOTodoView::updateView() | |||
680 | kdDebug() << " " << t->getSummary() << endl; | 680 | kdDebug() << " " << t->getSummary() << endl; |
681 | 681 | ||
682 | if (t->getRelatedTo()) { | 682 | if (t->getRelatedTo()) { |
683 | kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; | 683 | kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; |
684 | } | 684 | } |
685 | 685 | ||
686 | QPtrList<Event> l = t->getRelations(); | 686 | QPtrList<Event> l = t->getRelations(); |
687 | Event *c; | 687 | Event *c; |
688 | for(c=l.first();c;c=l.next()) { | 688 | for(c=l.first();c;c=l.next()) { |
689 | kdDebug() << " - relation: " << c->getSummary() << endl; | 689 | kdDebug() << " - relation: " << c->getSummary() << endl; |
690 | } | 690 | } |
691 | } | 691 | } |
692 | */ | 692 | */ |
693 | 693 | ||
694 | // Put for each Event a KOTodoViewItem in the list view. Don't rely on a | 694 | // Put for each Event a KOTodoViewItem in the list view. Don't rely on a |
695 | // specific order of events. That means that we have to generate parent items | 695 | // specific order of events. That means that we have to generate parent items |
696 | // recursively for proper hierarchical display of Todos. | 696 | // recursively for proper hierarchical display of Todos. |
697 | mTodoMap.clear(); | 697 | mTodoMap.clear(); |
698 | Todo *todo; | 698 | Todo *todo; |
699 | todo = todoList.first();// todo; todo = todoList.next()) { | 699 | todo = todoList.first();// todo; todo = todoList.next()) { |
700 | while ( todo ) { | 700 | while ( todo ) { |
701 | bool next = true; | 701 | bool next = true; |
702 | // qDebug("todo %s ", todo->summary().latin1()); | 702 | // qDebug("todo %s ", todo->summary().latin1()); |
703 | Incidence *incidence = todo->relatedTo(); | 703 | Incidence *incidence = todo->relatedTo(); |
704 | while ( incidence ) { | 704 | while ( incidence ) { |
705 | if ( incidence->typeID() == todoID ) { | 705 | if ( incidence->typeID() == todoID ) { |
706 | //qDebug("related %s ",incidence->summary().latin1() ); | 706 | //qDebug("related %s ",incidence->summary().latin1() ); |
707 | if ( !(todoList.contains ( ((Todo* )incidence ) ) )) { | 707 | if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) { |
708 | //qDebug("related not found "); | 708 | //qDebug("related not found "); |
709 | todoList.remove( ); | 709 | todoList.remove( ); |
710 | todo = todoList.current(); | 710 | todo = todoList.current(); |
711 | next = false; | 711 | next = false; |
712 | incidence = 0; | 712 | incidence = 0; |
713 | 713 | ||
714 | } else { | 714 | } else { |
715 | //qDebug("related found "); | 715 | //qDebug("related found "); |
716 | incidence = incidence->relatedTo(); | 716 | incidence = incidence->relatedTo(); |
717 | } | 717 | } |
718 | } else | 718 | } else |
719 | incidence = 0; | 719 | incidence = 0; |
720 | } | 720 | } |
721 | if ( next ) | 721 | if ( next ) |
722 | todo = todoList.next(); | 722 | todo = todoList.next(); |
723 | } | 723 | } |
724 | 724 | ||
725 | for(todo = todoList.first(); todo; todo = todoList.next()) { | 725 | for(todo = todoList.first(); todo; todo = todoList.next()) { |
726 | if (!mTodoMap.contains(todo) && checkTodo( todo ) ) | 726 | if (!mTodoMap.contains(todo) && checkTodo( todo ) ) |
727 | { | 727 | { |
728 | insertTodoItem(todo); | 728 | insertTodoItem(todo); |
729 | } | 729 | } |
730 | } | 730 | } |
731 | // Restore opened/closed state | 731 | // Restore opened/closed state |
@@ -815,76 +815,78 @@ bool KOTodoView::checkTodo( Todo * todo ) | |||
815 | if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { | 815 | if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { |
816 | if ( todo->hasStartDate() ) | 816 | if ( todo->hasStartDate() ) |
817 | if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) | 817 | if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) |
818 | return false; | 818 | return false; |
819 | if ( todo->hasDueDate() ) | 819 | if ( todo->hasDueDate() ) |
820 | if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) | 820 | if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) |
821 | return false; | 821 | return false; |
822 | } | 822 | } |
823 | return true; | 823 | return true; |
824 | } | 824 | } |
825 | 825 | ||
826 | void KOTodoView::restoreItemState( QListViewItem *item ) | 826 | void KOTodoView::restoreItemState( QListViewItem *item ) |
827 | { | 827 | { |
828 | pendingSubtodo = 0; | 828 | pendingSubtodo = 0; |
829 | while( item ) { | 829 | while( item ) { |
830 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; | 830 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; |
831 | todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); | 831 | todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); |
832 | if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); | 832 | if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); |
833 | item = item->nextSibling(); | 833 | item = item->nextSibling(); |
834 | } | 834 | } |
835 | } | 835 | } |
836 | 836 | ||
837 | 837 | ||
838 | QMap<Todo *,KOTodoViewItem *>::ConstIterator | 838 | QMap<Todo *,KOTodoViewItem *>::ConstIterator |
839 | KOTodoView::insertTodoItem(Todo *todo) | 839 | KOTodoView::insertTodoItem(Todo *todo) |
840 | { | 840 | { |
841 | 841 | ||
842 | // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; | 842 | // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; |
843 | // TODO: Check, if dynmaic cast is necessary | 843 | // TODO: Check, if dynmaic cast is necessary |
844 | 844 | ||
845 | pendingSubtodo = 0; | 845 | pendingSubtodo = 0; |
846 | Incidence *incidence = todo->relatedTo(); | 846 | Incidence *incidence = todo->relatedTo(); |
847 | if (incidence && incidence->typeID() == todoID ) { | 847 | while ( incidence && !incidence->calEnabled() ) |
848 | Todo *relatedTodo = static_cast<Todo *>(incidence); | 848 | incidence = incidence->relatedTo(); |
849 | 849 | if (incidence && incidence->typeID() == todoID ) { | |
850 | // kdDebug() << " has Related" << endl; | 850 | Todo *relatedTodo = static_cast<Todo *>(incidence); |
851 | QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; | 851 | |
852 | itemIterator = mTodoMap.find(relatedTodo); | 852 | // kdDebug() << " has Related" << endl; |
853 | if (itemIterator == mTodoMap.end()) { | 853 | QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; |
854 | // kdDebug() << " related not yet in list" << endl; | 854 | itemIterator = mTodoMap.find(relatedTodo); |
855 | itemIterator = insertTodoItem (relatedTodo); | 855 | if (itemIterator == mTodoMap.end()) { |
856 | // kdDebug() << " related not yet in list" << endl; | ||
857 | itemIterator = insertTodoItem (relatedTodo); | ||
858 | } | ||
859 | // isn't this pretty stupid? We give one Todo to the KOTodoViewItem | ||
860 | // and one into the map. Sure finding is more easy but why? -zecke | ||
861 | KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); | ||
862 | return mTodoMap.insert(todo,todoItem); | ||
863 | } else { | ||
864 | // kdDebug() << " no Related" << endl; | ||
865 | // see above -zecke | ||
866 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); | ||
867 | return mTodoMap.insert(todo,todoItem); | ||
856 | } | 868 | } |
857 | // isn't this pretty stupid? We give one Todo to the KOTodoViewItem | ||
858 | // and one into the map. Sure finding is more easy but why? -zecke | ||
859 | KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); | ||
860 | return mTodoMap.insert(todo,todoItem); | ||
861 | } else { | ||
862 | // kdDebug() << " no Related" << endl; | ||
863 | // see above -zecke | ||
864 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); | ||
865 | return mTodoMap.insert(todo,todoItem); | ||
866 | } | ||
867 | } | 869 | } |
868 | 870 | ||
869 | 871 | ||
870 | void KOTodoView::updateConfig() | 872 | void KOTodoView::updateConfig() |
871 | { | 873 | { |
872 | updateView(); | 874 | updateView(); |
873 | mTodoListView->repaintContents(); | 875 | mTodoListView->repaintContents(); |
874 | } | 876 | } |
875 | 877 | ||
876 | QPtrList<Incidence> KOTodoView::selectedIncidences() | 878 | QPtrList<Incidence> KOTodoView::selectedIncidences() |
877 | { | 879 | { |
878 | QPtrList<Incidence> selected; | 880 | QPtrList<Incidence> selected; |
879 | 881 | ||
880 | KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); | 882 | KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); |
881 | // if (!item) item = mActiveItem; | 883 | // if (!item) item = mActiveItem; |
882 | if (item) selected.append(item->todo()); | 884 | if (item) selected.append(item->todo()); |
883 | 885 | ||
884 | return selected; | 886 | return selected; |
885 | } | 887 | } |
886 | 888 | ||
887 | QPtrList<Todo> KOTodoView::selectedTodos() | 889 | QPtrList<Todo> KOTodoView::selectedTodos() |
888 | { | 890 | { |
889 | QPtrList<Todo> selected; | 891 | QPtrList<Todo> selected; |
890 | 892 | ||