author | zautrix <zautrix> | 2005-07-02 09:22:13 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-07-02 09:22:13 (UTC) |
commit | cf243d3d9faa7d79eb706f6e70c8d01926e9da89 (patch) (unidiff) | |
tree | ccacd0631c1e850ad1d1f7ae5d740d11bcaf35a3 | |
parent | 58a4e6e5dcc24e2f5c17ef9f0e6879d625b5f764 (diff) | |
download | kdepimpi-cf243d3d9faa7d79eb706f6e70c8d01926e9da89.zip kdepimpi-cf243d3d9faa7d79eb706f6e70c8d01926e9da89.tar.gz kdepimpi-cf243d3d9faa7d79eb706f6e70c8d01926e9da89.tar.bz2 |
todo view fix
-rw-r--r-- | korganizer/kotodoview.cpp | 26 | ||||
-rw-r--r-- | korganizer/kotodoview.h | 1 |
2 files changed, 17 insertions, 10 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 8d354c8..e2966f8 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -743,23 +743,22 @@ void KOTodoView::updateView() | |||
743 | pendingSubtodo = 0; | 743 | pendingSubtodo = 0; |
744 | if ( mBlockUpdate ) { | 744 | if ( mBlockUpdate ) { |
745 | return; | 745 | return; |
746 | } | 746 | } |
747 | if ( !isVisible() ) { | 747 | if ( !isVisible() ) { |
748 | mPendingUpdateBeforeRepaint = true; | 748 | mPendingUpdateBeforeRepaint = true; |
749 | return; | 749 | return; |
750 | } | 750 | } |
751 | storeCurrentItem(); | ||
752 | //qDebug("KOTodoView::updateView() %x", this); | 751 | //qDebug("KOTodoView::updateView() %x", this); |
753 | if ( isFlatDisplay ) { | 752 | if ( isFlatDisplay ) { |
754 | displayAllFlat(); | 753 | displayAllFlat(); |
755 | resetCurrentItem(); | ||
756 | return; | 754 | return; |
757 | } | 755 | } |
756 | storeCurrentItem(); | ||
758 | //qDebug("update "); | 757 | //qDebug("update "); |
759 | // kdDebug() << "KOTodoView::updateView()" << endl; | 758 | // kdDebug() << "KOTodoView::updateView()" << endl; |
760 | QFont fo = KOPrefs::instance()->mTodoViewFont; | 759 | QFont fo = KOPrefs::instance()->mTodoViewFont; |
761 | 760 | ||
762 | 761 | ||
763 | mTodoListView->clear(); | 762 | mTodoListView->clear(); |
764 | if ( mName == "todolistsmall" ) { | 763 | if ( mName == "todolistsmall" ) { |
765 | if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { | 764 | if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { |
@@ -830,17 +829,16 @@ void KOTodoView::updateView() | |||
830 | insertTodoItem(todo); | 829 | insertTodoItem(todo); |
831 | } | 830 | } |
832 | } | 831 | } |
833 | // Restore opened/closed state | 832 | // Restore opened/closed state |
834 | mTodoListView->blockSignals( true ); | 833 | mTodoListView->blockSignals( true ); |
835 | if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); | 834 | if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); |
836 | mTodoListView->blockSignals( false ); | 835 | mTodoListView->blockSignals( false ); |
837 | resetCurrentItem(); | 836 | resetCurrentItem(); |
838 | processSelectionChange(); | ||
839 | } | 837 | } |
840 | 838 | ||
841 | void KOTodoView::storeCurrentItem() | 839 | void KOTodoView::storeCurrentItem() |
842 | { | 840 | { |
843 | mCurItem = 0; | 841 | mCurItem = 0; |
844 | mCurItemRootParent = 0; | 842 | mCurItemRootParent = 0; |
845 | mCurItemParent = 0; | 843 | mCurItemParent = 0; |
846 | mCurItemAbove = 0; | 844 | mCurItemAbove = 0; |
@@ -855,17 +853,17 @@ void KOTodoView::storeCurrentItem() | |||
855 | while ( mCurItemRootParent->relatedTo() != 0 ) | 853 | while ( mCurItemRootParent->relatedTo() != 0 ) |
856 | mCurItemRootParent = mCurItemRootParent->relatedTo(); | 854 | mCurItemRootParent = mCurItemRootParent->relatedTo(); |
857 | } | 855 | } |
858 | mActiveItem = 0; | 856 | mActiveItem = 0; |
859 | } | 857 | } |
860 | 858 | ||
861 | void KOTodoView::resetCurrentItem() | 859 | void KOTodoView::resetCurrentItem() |
862 | { | 860 | { |
863 | mTodoListView->setFocus(); | 861 | //mTodoListView->setFocus(); |
864 | KOTodoViewItem* foundItem = 0; | 862 | KOTodoViewItem* foundItem = 0; |
865 | KOTodoViewItem* foundItemRoot = 0; | 863 | KOTodoViewItem* foundItemRoot = 0; |
866 | KOTodoViewItem* foundItemParent = 0; | 864 | KOTodoViewItem* foundItemParent = 0; |
867 | KOTodoViewItem* foundItemAbove = 0; | 865 | KOTodoViewItem* foundItemAbove = 0; |
868 | if ( mTodoListView->firstChild () ) { | 866 | if ( mTodoListView->firstChild () ) { |
869 | if ( mCurItem ) { | 867 | if ( mCurItem ) { |
870 | KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild (); | 868 | KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild (); |
871 | while ( item ) { | 869 | while ( item ) { |
@@ -891,22 +889,32 @@ void KOTodoView::resetCurrentItem() | |||
891 | if ( foundItemRoot ) | 889 | if ( foundItemRoot ) |
892 | foundItem = foundItemRoot; | 890 | foundItem = foundItemRoot; |
893 | else | 891 | else |
894 | foundItem = foundItemAbove; | 892 | foundItem = foundItemAbove; |
895 | } | 893 | } |
896 | } | 894 | } |
897 | } | 895 | } |
898 | if ( foundItem ) { | 896 | if ( foundItem ) { |
897 | mTodoListView->setSelected ( foundItem, true ); | ||
899 | mTodoListView->setCurrentItem( foundItem ); | 898 | mTodoListView->setCurrentItem( foundItem ); |
900 | mTodoListView->ensureItemVisible( foundItem ); | 899 | mTodoListView->ensureItemVisible( foundItem ); |
901 | } else { | 900 | } else { |
902 | mTodoListView->setCurrentItem( mTodoListView->firstChild () ); | 901 | if ( mTodoListView->firstChild () ) { |
902 | mTodoListView->setSelected ( mTodoListView->firstChild (), true ); | ||
903 | mTodoListView->setCurrentItem( mTodoListView->firstChild () ); | ||
904 | } | ||
903 | } | 905 | } |
904 | } | 906 | } |
907 | processSelectionChange(); | ||
908 | QTimer::singleShot( 100, this, SLOT ( resetFocusToList() )); | ||
909 | } | ||
910 | void KOTodoView::resetFocusToList() | ||
911 | { | ||
912 | topLevelWidget()->setActiveWindow(); | ||
905 | mTodoListView->setFocus(); | 913 | mTodoListView->setFocus(); |
906 | } | 914 | } |
907 | //Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; | 915 | //Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; |
908 | bool KOTodoView::checkTodo( Todo * todo ) | 916 | bool KOTodoView::checkTodo( Todo * todo ) |
909 | { | 917 | { |
910 | 918 | ||
911 | if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) | 919 | if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) |
912 | return false; | 920 | return false; |
@@ -1399,45 +1407,43 @@ void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) | |||
1399 | setOpen( item->firstChild(), setOpenI ); | 1407 | setOpen( item->firstChild(), setOpenI ); |
1400 | item->setOpen( setOpenI ); | 1408 | item->setOpen( setOpenI ); |
1401 | item = item->nextSibling(); | 1409 | item = item->nextSibling(); |
1402 | } | 1410 | } |
1403 | } | 1411 | } |
1404 | 1412 | ||
1405 | void KOTodoView::displayAllFlat() | 1413 | void KOTodoView::displayAllFlat() |
1406 | { | 1414 | { |
1415 | storeCurrentItem(); | ||
1407 | pendingSubtodo = 0; | 1416 | pendingSubtodo = 0; |
1408 | if ( mBlockUpdate ) { | 1417 | if ( mBlockUpdate ) { |
1409 | return; | 1418 | return; |
1410 | } | 1419 | } |
1411 | mPopupMenu->setItemChecked( 8,true ); | 1420 | mPopupMenu->setItemChecked( 8,true ); |
1412 | isFlatDisplay = true; | 1421 | isFlatDisplay = true; |
1413 | QPtrList<Todo> todoList = calendar()->todos(); | 1422 | QPtrList<Todo> todoList = calendar()->todos(); |
1414 | mTodoMap.clear(); | 1423 | mTodoMap.clear(); |
1415 | mTodoListView->clear(); | 1424 | mTodoListView->clear(); |
1416 | Todo *todo; | 1425 | Todo *todo; |
1417 | for(todo = todoList.first(); todo; todo = todoList.next()) { | 1426 | for(todo = todoList.first(); todo; todo = todoList.next()) { |
1418 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); | 1427 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); |
1419 | mTodoMap.insert(todo,todoItem); | 1428 | mTodoMap.insert(todo,todoItem); |
1420 | } | 1429 | } |
1421 | mTodoListView->setFocus(); | 1430 | resetCurrentItem(); |
1422 | processSelectionChange(); | ||
1423 | } | 1431 | } |
1424 | 1432 | ||
1425 | void KOTodoView::setAllFlat() | 1433 | void KOTodoView::setAllFlat() |
1426 | { | 1434 | { |
1427 | if ( isFlatDisplay ) { | 1435 | if ( isFlatDisplay ) { |
1428 | isFlatDisplay = false; | 1436 | isFlatDisplay = false; |
1429 | mPopupMenu->setItemChecked( 8,false ); | 1437 | mPopupMenu->setItemChecked( 8,false ); |
1430 | updateView(); | 1438 | updateView(); |
1431 | return; | 1439 | return; |
1432 | } | 1440 | } |
1433 | storeCurrentItem(); | ||
1434 | displayAllFlat(); | 1441 | displayAllFlat(); |
1435 | resetCurrentItem(); | ||
1436 | } | 1442 | } |
1437 | 1443 | ||
1438 | void KOTodoView::purgeCompleted() | 1444 | void KOTodoView::purgeCompleted() |
1439 | { | 1445 | { |
1440 | emit purgeCompletedSignal(); | 1446 | emit purgeCompletedSignal(); |
1441 | 1447 | ||
1442 | } | 1448 | } |
1443 | void KOTodoView::toggleQuickTodo() | 1449 | void KOTodoView::toggleQuickTodo() |
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index 1b31d0d..9ae7f53 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h | |||
@@ -219,16 +219,17 @@ class KOTodoView : public KOrg::BaseView | |||
219 | void toggleRunning(); | 219 | void toggleRunning(); |
220 | void toggleQuickTodo(); | 220 | void toggleQuickTodo(); |
221 | void updateTodo( Todo *, int ); | 221 | void updateTodo( Todo *, int ); |
222 | 222 | ||
223 | void itemClicked(QListViewItem *); | 223 | void itemClicked(QListViewItem *); |
224 | void itemStateChanged(QListViewItem *); | 224 | void itemStateChanged(QListViewItem *); |
225 | void modified(bool); | 225 | void modified(bool); |
226 | void itemDoubleClicked(QListViewItem *item); | 226 | void itemDoubleClicked(QListViewItem *item); |
227 | void resetFocusToList(); | ||
227 | 228 | ||
228 | signals: | 229 | signals: |
229 | void newTodoSignal(); | 230 | void newTodoSignal(); |
230 | void newSubTodoSignal(Todo *); | 231 | void newSubTodoSignal(Todo *); |
231 | void unparentTodoSignal(Todo *); | 232 | void unparentTodoSignal(Todo *); |
232 | void reparentTodoSignal( Todo *,Todo * ); | 233 | void reparentTodoSignal( Todo *,Todo * ); |
233 | void showTodoSignal(Todo *); | 234 | void showTodoSignal(Todo *); |
234 | 235 | ||