summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-08-06 09:54:42 (UTC)
committer zautrix <zautrix>2005-08-06 09:54:42 (UTC)
commitb841f4f2d54ac531c1f9ec88852d31307b9145f2 (patch) (unidiff)
treec334106e75e73bbc3fc33cd3c0d6480314a42774
parentcd215c243d0636cabbc73006652b9b6783319de1 (diff)
downloadkdepimpi-b841f4f2d54ac531c1f9ec88852d31307b9145f2.zip
kdepimpi-b841f4f2d54ac531c1f9ec88852d31307b9145f2.tar.gz
kdepimpi-b841f4f2d54ac531c1f9ec88852d31307b9145f2.tar.bz2
fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt4
-rw-r--r--korganizer/kotodoview.cpp46
-rw-r--r--korganizer/kotodoview.h2
3 files changed, 34 insertions, 18 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index f4b3ddb..201f863 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,30 +1,32 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.1.19 ************ 3********** VERSION 2.1.19 ************
4 4
5Fixed a crash in journal view and a crash in setting a todo to stopped when KO/Pi saved the file when "stop todo" dialog was shown. 5Fixed a crash in journal view.
6Fixed a crash at setting a todo to stopped if KO/Pi saved the file while "stop todo" dialog was shown.
6Fixed a minor problem with the marcus bains line (whatever that is). 7Fixed a minor problem with the marcus bains line (whatever that is).
8Fixed a crash when setting a todo to complete from the show dialog which was called from the What's Next View.
7 9
8********** VERSION 2.1.18 ************ 10********** VERSION 2.1.18 ************
9 11
10Pi-Sync mode: 12Pi-Sync mode:
11The "Write back file" status dialog was updated too often such that writing back the file on the Z was very slow. Fixed. 13The "Write back file" status dialog was updated too often such that writing back the file on the Z was very slow. Fixed.
12 14
13KO/Pi: 15KO/Pi:
14Fixed a layout problem on the Z 5500 with the calender box right of the location box in the event/todo editor. Thanks to Andrew, who found, reported and fixed this problem ( I did not get that problem - it was working on my 5500 ). 16Fixed a layout problem on the Z 5500 with the calender box right of the location box in the event/todo editor. Thanks to Andrew, who found, reported and fixed this problem ( I did not get that problem - it was working on my 5500 ).
15 17
16Fixed a problem when (imported or added from other applications) events or todos did have attachments. 18Fixed a problem when (imported or added from other applications) events or todos did have attachments.
17Fixed a really ugly and hidden problem in the management of the parent/child relationchip of todos. 19Fixed a really ugly and hidden problem in the management of the parent/child relationchip of todos.
18 20
19 21
20********** VERSION 2.1.17 ************ 22********** VERSION 2.1.17 ************
21 23
22KO/Pi: 24KO/Pi:
23Added option to display times in What's Next View on two lines. 25Added option to display times in What's Next View on two lines.
24(Useful for display on the Zaurus with 240x320 screen) 26(Useful for display on the Zaurus with 240x320 screen)
25Removed "Allday" for allday events of one day duration in What's Next View. 27Removed "Allday" for allday events of one day duration in What's Next View.
26Added date range for allday events of more than one day duration in What's Next View. 28Added date range for allday events of more than one day duration in What's Next View.
27Fixed two problems in the data importing from Outlook: 29Fixed two problems in the data importing from Outlook:
28 Fixed the duplicated import if the summary, location or description had whitespaces at the end. 30 Fixed the duplicated import if the summary, location or description had whitespaces at the end.
29 Fixed a problem importing certain recurrence rules. 31 Fixed a problem importing certain recurrence rules.
30 32
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 00c2d97..27d755e 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -481,49 +481,50 @@ void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e)
481 481
482KOQuickTodo::KOQuickTodo(QWidget *parent) : 482KOQuickTodo::KOQuickTodo(QWidget *parent) :
483 QLineEdit(parent) 483 QLineEdit(parent)
484{ 484{
485 setText(i18n("Click to add new Todo")); 485 setText(i18n("Click to add new Todo"));
486} 486}
487 487
488void KOQuickTodo::focusInEvent(QFocusEvent *ev) 488void KOQuickTodo::focusInEvent(QFocusEvent *ev)
489{ 489{
490 if ( text()==i18n("Click to add new Todo") ) 490 if ( text()==i18n("Click to add new Todo") )
491 setText(""); 491 setText("");
492 QLineEdit::focusInEvent(ev); 492 QLineEdit::focusInEvent(ev);
493} 493}
494 494
495void KOQuickTodo::focusOutEvent(QFocusEvent *ev) 495void KOQuickTodo::focusOutEvent(QFocusEvent *ev)
496{ 496{
497 setText(i18n("Click to add new Todo")); 497 setText(i18n("Click to add new Todo"));
498 QLineEdit::focusOutEvent(ev); 498 QLineEdit::focusOutEvent(ev);
499} 499}
500 500
501///////////////////////////////////////////////////////////////////////////// 501/////////////////////////////////////////////////////////////////////////////
502 502
503KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : 503KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
504 KOrg::BaseView(calendar,parent,name) 504 KOrg::BaseView(calendar,parent,name)
505{ 505{
506 mActiveItem = 0;
506 mCategoryPopupMenu = 0; 507 mCategoryPopupMenu = 0;
507 mPendingUpdateBeforeRepaint = false; 508 mPendingUpdateBeforeRepaint = false;
508 isFlatDisplay = false; 509 isFlatDisplay = false;
509 mNavigator = 0; 510 mNavigator = 0;
510 QBoxLayout *topLayout = new QVBoxLayout(this); 511 QBoxLayout *topLayout = new QVBoxLayout(this);
511 mName = QString ( name ); 512 mName = QString ( name );
512 mBlockUpdate = false; 513 mBlockUpdate = false;
513 mQuickBar = new QWidget( this ); 514 mQuickBar = new QWidget( this );
514 topLayout->addWidget(mQuickBar); 515 topLayout->addWidget(mQuickBar);
515 516
516 mQuickAdd = new KOQuickTodo(mQuickBar); 517 mQuickAdd = new KOQuickTodo(mQuickBar);
517 QBoxLayout *quickLayout = new QHBoxLayout(mQuickBar); 518 QBoxLayout *quickLayout = new QHBoxLayout(mQuickBar);
518 quickLayout->addWidget( mQuickAdd ); 519 quickLayout->addWidget( mQuickAdd );
519 mNewSubBut = new QPushButton( "sub",mQuickBar ); 520 mNewSubBut = new QPushButton( "sub",mQuickBar );
520 QPushButton * s_done = new QPushButton( "D",mQuickBar ); 521 QPushButton * s_done = new QPushButton( "D",mQuickBar );
521 QPushButton * s_run = new QPushButton( "R",mQuickBar ); 522 QPushButton * s_run = new QPushButton( "R",mQuickBar );
522 QPushButton * allopen = new QPushButton( "O",mQuickBar ); 523 QPushButton * allopen = new QPushButton( "O",mQuickBar );
523 QPushButton * allclose = new QPushButton( "C",mQuickBar ); 524 QPushButton * allclose = new QPushButton( "C",mQuickBar );
524 QPushButton * flat = new QPushButton( "F",mQuickBar ); 525 QPushButton * flat = new QPushButton( "F",mQuickBar );
525 526
526 int fixwid = mQuickAdd->sizeHint().height(); 527 int fixwid = mQuickAdd->sizeHint().height();
527 int fixhei = fixwid; 528 int fixhei = fixwid;
528 if ( QApplication::desktop()->width() > 800 ) 529 if ( QApplication::desktop()->width() > 800 )
529 fixwid = (fixwid*3)/2; 530 fixwid = (fixwid*3)/2;
@@ -786,106 +787,115 @@ QString KOTodoView::getWhatsThisText(QPoint p)
786 787
787void KOTodoView::jumpToDate () 788void KOTodoView::jumpToDate ()
788{ 789{
789 // if (mActiveItem) { 790 // if (mActiveItem) {
790// mActiveItem->todo()); 791// mActiveItem->todo());
791// if ( mActiveItem->todo()->hasDueDate() ) 792// if ( mActiveItem->todo()->hasDueDate() )
792// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); 793// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() );
793} 794}
794void KOTodoView::paintNeeded() 795void KOTodoView::paintNeeded()
795{ 796{
796 if ( mPendingUpdateBeforeRepaint ) { 797 if ( mPendingUpdateBeforeRepaint ) {
797 updateView(); 798 updateView();
798 mPendingUpdateBeforeRepaint = false; 799 mPendingUpdateBeforeRepaint = false;
799 } 800 }
800} 801}
801void KOTodoView::paintEvent(QPaintEvent * pevent) 802void KOTodoView::paintEvent(QPaintEvent * pevent)
802{ 803{
803 if ( mPendingUpdateBeforeRepaint ) { 804 if ( mPendingUpdateBeforeRepaint ) {
804 updateView(); 805 updateView();
805 mPendingUpdateBeforeRepaint = false; 806 mPendingUpdateBeforeRepaint = false;
806 } 807 }
807 KOrg::BaseView::paintEvent( pevent); 808 KOrg::BaseView::paintEvent( pevent);
808} 809}
809 810
811void KOTodoView::clearList( bool saveCurrentItem ) // default true
812{
813 if ( mTodoListView->childCount() ) {
814 if ( saveCurrentItem )
815 storeCurrentItem();
816 mTodoListView->clear();
817 mTodoMap.clear();
818 }
819}
810void KOTodoView::updateView() 820void KOTodoView::updateView()
811{ 821{
822 mActiveItem = 0;
812 pendingSubtodo = 0; 823 pendingSubtodo = 0;
813 if ( mBlockUpdate ) { 824 if ( mBlockUpdate ) {
814 return; 825 return;
815 } 826 }
816 if ( !isVisible() ) { 827 if ( !isVisible() ) {
817 mPendingUpdateBeforeRepaint = true; 828 clearList ();
818 return; 829 mPendingUpdateBeforeRepaint = true;
830 return;
819 } 831 }
820 //qDebug("KOTodoView::updateView() %x", this); 832 //qDebug("KOTodoView::updateView() %x", this);
821 if ( isFlatDisplay ) { 833 if ( isFlatDisplay ) {
822 displayAllFlat(); 834 displayAllFlat();
823 return; 835 return;
824 } 836 }
825 storeCurrentItem();
826 //qDebug("update "); 837 //qDebug("update ");
827// kdDebug() << "KOTodoView::updateView()" << endl; 838// kdDebug() << "KOTodoView::updateView()" << endl;
828 QFont fo = KOPrefs::instance()->mTodoViewFont; 839 QFont fo = KOPrefs::instance()->mTodoViewFont;
829 840
830 841 clearList ();
831 mTodoListView->clear(); 842
832 if ( mName == "todolistsmall" ) { 843 if ( mName == "todolistsmall" ) {
833 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { 844 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
834 int ps = fo.pointSize() -2; 845 int ps = fo.pointSize() -2;
835 if ( ps > 12 ) 846 if ( ps > 12 )
836 ps -= 2; 847 ps -= 2;
837 fo.setPointSize( ps ); 848 fo.setPointSize( ps );
838 } 849 }
839 } 850 }
840 851
841 mTodoListView->setFont( fo ); 852 mTodoListView->setFont( fo );
842 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); 853 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont );
843 //mTodoListView->header()->setMaximumHeight(fm.height()); 854 //mTodoListView->header()->setMaximumHeight(fm.height());
844 QPtrList<Todo> todoList = calendar()->todos(); 855 QPtrList<Todo> todoList = calendar()->todos();
845 856
846/* 857/*
847 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; 858 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl;
848 Event *t; 859 Event *t;
849 for(t = todoList.first(); t; t = todoList.next()) { 860 for(t = todoList.first(); t; t = todoList.next()) {
850 kdDebug() << " " << t->getSummary() << endl; 861 kdDebug() << " " << t->getSummary() << endl;
851 862
852 if (t->getRelatedTo()) { 863 if (t->getRelatedTo()) {
853 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; 864 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl;
854 } 865 }
855 866
856 QPtrList<Event> l = t->getRelations(); 867 QPtrList<Event> l = t->getRelations();
857 Event *c; 868 Event *c;
858 for(c=l.first();c;c=l.next()) { 869 for(c=l.first();c;c=l.next()) {
859 kdDebug() << " - relation: " << c->getSummary() << endl; 870 kdDebug() << " - relation: " << c->getSummary() << endl;
860 } 871 }
861 } 872 }
862*/ 873*/
863 874
864 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a 875 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a
865 // specific order of events. That means that we have to generate parent items 876 // specific order of events. That means that we have to generate parent items
866 // recursively for proper hierarchical display of Todos. 877 // recursively for proper hierarchical display of Todos.
867 mTodoMap.clear();
868 Todo *todo; 878 Todo *todo;
869 todo = todoList.first();// todo; todo = todoList.next()) { 879 todo = todoList.first();// todo; todo = todoList.next()) {
870 while ( todo ) { 880 while ( todo ) {
871 bool next = true; 881 bool next = true;
872 // qDebug("todo %s ", todo->summary().latin1()); 882 // qDebug("todo %s ", todo->summary().latin1());
873 Incidence *incidence = todo->relatedTo(); 883 Incidence *incidence = todo->relatedTo();
874 while ( incidence ) { 884 while ( incidence ) {
875 if ( incidence->typeID() == todoID ) { 885 if ( incidence->typeID() == todoID ) {
876 //qDebug("related %s ",incidence->summary().latin1() ); 886 //qDebug("related %s ",incidence->summary().latin1() );
877 if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) { 887 if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) {
878 //qDebug("related not found "); 888 //qDebug("related not found ");
879 todoList.remove( ); 889 todoList.remove( );
880 todo = todoList.current(); 890 todo = todoList.current();
881 next = false; 891 next = false;
882 incidence = 0; 892 incidence = 0;
883 893
884 } else { 894 } else {
885 //qDebug("related found "); 895 //qDebug("related found ");
886 incidence = incidence->relatedTo(); 896 incidence = incidence->relatedTo();
887 } 897 }
888 } else 898 } else
889 incidence = 0; 899 incidence = 0;
890 } 900 }
891 if ( next ) 901 if ( next )
@@ -953,49 +963,50 @@ void KOTodoView::resetCurrentItem()
953 } 963 }
954 if ( ! foundItem ) { 964 if ( ! foundItem ) {
955 if ( foundItemParent ) { 965 if ( foundItemParent ) {
956 foundItem = foundItemParent; 966 foundItem = foundItemParent;
957 } else { 967 } else {
958 if ( foundItemRoot ) 968 if ( foundItemRoot )
959 foundItem = foundItemRoot; 969 foundItem = foundItemRoot;
960 else 970 else
961 foundItem = foundItemAbove; 971 foundItem = foundItemAbove;
962 } 972 }
963 } 973 }
964 } 974 }
965 if ( foundItem ) { 975 if ( foundItem ) {
966 mTodoListView->setSelected ( foundItem, true ); 976 mTodoListView->setSelected ( foundItem, true );
967 mTodoListView->setCurrentItem( foundItem ); 977 mTodoListView->setCurrentItem( foundItem );
968 mTodoListView->ensureItemVisible( foundItem ); 978 mTodoListView->ensureItemVisible( foundItem );
969 } else { 979 } else {
970 if ( mTodoListView->firstChild () ) { 980 if ( mTodoListView->firstChild () ) {
971 mTodoListView->setSelected ( mTodoListView->firstChild (), true ); 981 mTodoListView->setSelected ( mTodoListView->firstChild (), true );
972 mTodoListView->setCurrentItem( mTodoListView->firstChild () ); 982 mTodoListView->setCurrentItem( mTodoListView->firstChild () );
973 } 983 }
974 } 984 }
975 } 985 }
976 processSelectionChange(); 986 processSelectionChange();
977 QTimer::singleShot( 100, this, SLOT ( resetFocusToList() )); 987 if ( mName != "todolistsmall" )
988 QTimer::singleShot( 100, this, SLOT ( resetFocusToList() ));
978} 989}
979void KOTodoView::resetFocusToList() 990void KOTodoView::resetFocusToList()
980{ 991{
981 topLevelWidget()->setActiveWindow(); 992 topLevelWidget()->setActiveWindow();
982 mTodoListView->setFocus(); 993 mTodoListView->setFocus();
983} 994}
984//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; 995//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove;
985bool KOTodoView::checkTodo( Todo * todo ) 996bool KOTodoView::checkTodo( Todo * todo )
986{ 997{
987 998
988 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) 999 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() )
989 return false; 1000 return false;
990 if ( !todo->isCompleted() ) { 1001 if ( !todo->isCompleted() ) {
991 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() ) 1002 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() )
992 return true; 1003 return true;
993 } 1004 }
994 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { 1005 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) {
995 if ( todo->hasStartDate() ) 1006 if ( todo->hasStartDate() )
996 if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) 1007 if ( mNavigator->selectedDates().last() < todo->dtStart().date() )
997 return false; 1008 return false;
998 if ( todo->hasDueDate() ) 1009 if ( todo->hasDueDate() )
999 if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) 1010 if ( mNavigator->selectedDates().first() > todo->dtDue().date() )
1000 return false; 1011 return false;
1001 } 1012 }
@@ -1079,54 +1090,56 @@ QPtrList<Todo> KOTodoView::selectedTodos()
1079void KOTodoView::changeEventDisplay(Event *, int) 1090void KOTodoView::changeEventDisplay(Event *, int)
1080{ 1091{
1081 updateView(); 1092 updateView();
1082} 1093}
1083 1094
1084void KOTodoView::showDates(const QDate &, const QDate &) 1095void KOTodoView::showDates(const QDate &, const QDate &)
1085{ 1096{
1086} 1097}
1087 1098
1088void KOTodoView::showEvents(QPtrList<Event>) 1099void KOTodoView::showEvents(QPtrList<Event>)
1089{ 1100{
1090 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; 1101 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl;
1091} 1102}
1092 1103
1093void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1104void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1094 const QDate &td) 1105 const QDate &td)
1095{ 1106{
1096#ifndef KORG_NOPRINTER 1107#ifndef KORG_NOPRINTER
1097 calPrinter->preview(CalPrinter::Todolist, fd, td); 1108 calPrinter->preview(CalPrinter::Todolist, fd, td);
1098#endif 1109#endif
1099} 1110}
1100 1111
1101void KOTodoView::editItem(QListViewItem *item ) 1112void KOTodoView::editItem(QListViewItem *item )
1102{ 1113{
1103 emit editTodoSignal(((KOTodoViewItem *)item)->todo()); 1114 if ( item )
1115 emit editTodoSignal(((KOTodoViewItem *)item)->todo());
1104} 1116}
1105 1117
1106void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) 1118void KOTodoView::showItem(QListViewItem *item,const QPoint &,int)
1107{ 1119{
1108 emit showTodoSignal(((KOTodoViewItem *)item)->todo()); 1120 if ( item )
1121 emit showTodoSignal(((KOTodoViewItem *)item)->todo());
1109} 1122}
1110 1123
1111void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) 1124void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column)
1112{ 1125{
1113 pendingSubtodo = 0; 1126 pendingSubtodo = 0;
1114 mActiveItem = (KOTodoViewItem *)item; 1127 mActiveItem = (KOTodoViewItem *)item;
1115 if (item) { 1128 if (item) {
1116 switch (column){ 1129 switch (column){
1117 case 1: 1130 case 1:
1118 mPriorityPopupMenu->popup(QCursor::pos ()); break; 1131 mPriorityPopupMenu->popup(QCursor::pos ()); break;
1119 case 2: 1132 case 2:
1120 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; 1133 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break;
1121 case 3: 1134 case 3:
1122 moveTodo(); 1135 moveTodo();
1123 break; 1136 break;
1124 case 7: 1137 case 7:
1125 mCategoryPopupMenu->popup(QCursor::pos ()); break; 1138 mCategoryPopupMenu->popup(QCursor::pos ()); break;
1126 case 8: 1139 case 8:
1127 mCalPopupMenu->popup(QCursor::pos ()); break; 1140 mCalPopupMenu->popup(QCursor::pos ()); break;
1128 default: 1141 default:
1129 mItemPopupMenu->popup(QCursor::pos()); 1142 mItemPopupMenu->popup(QCursor::pos());
1130 } 1143 }
1131 } else mPopupMenu->popup(QCursor::pos()); 1144 } else mPopupMenu->popup(QCursor::pos());
1132} 1145}
@@ -1336,66 +1349,66 @@ void KOTodoView::itemDoubleClicked(QListViewItem *item)
1336 } 1349 }
1337 } 1350 }
1338 } 1351 }
1339 if ( KOPrefs::instance()->mEditOnDoubleClick ) 1352 if ( KOPrefs::instance()->mEditOnDoubleClick )
1340 editItem( item ); 1353 editItem( item );
1341 else 1354 else
1342 showItem( item , QPoint(), 0 ); 1355 showItem( item , QPoint(), 0 );
1343} 1356}
1344void KOTodoView::toggleRunningItem() 1357void KOTodoView::toggleRunningItem()
1345{ 1358{
1346 // qDebug("KOTodoView::toggleRunning() "); 1359 // qDebug("KOTodoView::toggleRunning() ");
1347 if ( ! mActiveItem ) 1360 if ( ! mActiveItem )
1348 return; 1361 return;
1349 Todo * t = mActiveItem->todo(); 1362 Todo * t = mActiveItem->todo();
1350 if ( t->isRunning() ) { 1363 if ( t->isRunning() ) {
1351 KOStopTodoPrefs tp ( t, this ); 1364 KOStopTodoPrefs tp ( t, this );
1352 if (QApplication::desktop()->width() <= 800 ){ 1365 if (QApplication::desktop()->width() <= 800 ){
1353 int wid = tp.width(); 1366 int wid = tp.width();
1354 int hei = tp.height(); 1367 int hei = tp.height();
1355 int xx = (QApplication::desktop()->width()-wid)/2; 1368 int xx = (QApplication::desktop()->width()-wid)/2;
1356 int yy = (QApplication::desktop()->height()-hei)/2; 1369 int yy = (QApplication::desktop()->height()-hei)/2;
1357 tp.setGeometry( xx,yy,wid,hei ); 1370 tp.setGeometry( xx,yy,wid,hei );
1358 } 1371 }
1359 tp.exec(); 1372 tp.exec();
1360 updateTodo ( t, 0 ); 1373 updateTodo ( t, KOGlobals::EVENTEDITED );
1361 } else { 1374 } else {
1362 KOStartTodoPrefs tp ( t->summary(), this ); 1375 KOStartTodoPrefs tp ( t->summary(), this );
1363 if (QApplication::desktop()->width() <= 800 ){ 1376 if (QApplication::desktop()->width() <= 800 ){
1364 int wid = tp.width(); 1377 int wid = tp.width();
1365 int hei = tp.height(); 1378 int hei = tp.height();
1366 int xx = (QApplication::desktop()->width()-wid)/2; 1379 int xx = (QApplication::desktop()->width()-wid)/2;
1367 int yy = (QApplication::desktop()->height()-hei)/2; 1380 int yy = (QApplication::desktop()->height()-hei)/2;
1368 tp.setGeometry( xx,yy,wid,hei ); 1381 tp.setGeometry( xx,yy,wid,hei );
1369 } 1382 }
1370 if ( !tp.exec() ) return; 1383 if ( !tp.exec() ) return;
1371 if ( tp.stopAll() ) { 1384 if ( tp.stopAll() ) {
1372 mCalendar->stopAllTodos(); 1385 mCalendar->stopAllTodos();
1373 t->setRunning( true ); 1386 t->setRunning( true );
1374 updateView(); 1387 updateView();
1375 } else { 1388 } else {
1376 t->setRunning( true ); 1389 t->setRunning( true );
1377 updateTodo ( t, 0 ); 1390 updateTodo ( t, KOGlobals::EVENTEDITED );
1378 } 1391 }
1379 } 1392 }
1380} 1393}
1381 1394
1382void KOTodoView::itemClicked(QListViewItem *item) 1395void KOTodoView::itemClicked(QListViewItem *item)
1383{ 1396{
1384 //qDebug("KOTodoView::itemClicked %d", item); 1397 //qDebug("KOTodoView::itemClicked %d", item);
1385 if (!item) { 1398 if (!item) {
1386 if ( pendingSubtodo != 0 ) { 1399 if ( pendingSubtodo != 0 ) {
1387 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 1400 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
1388 } 1401 }
1389 pendingSubtodo = 0; 1402 pendingSubtodo = 0;
1390 return; 1403 return;
1391 } 1404 }
1392 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 1405 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
1393 if ( pendingSubtodo != 0 ) { 1406 if ( pendingSubtodo != 0 ) {
1394 bool allowReparent = true; 1407 bool allowReparent = true;
1395 QListViewItem *par = item; 1408 QListViewItem *par = item;
1396 while ( par ) { 1409 while ( par ) {
1397 if ( par == pendingSubtodo ) { 1410 if ( par == pendingSubtodo ) {
1398 allowReparent = false; 1411 allowReparent = false;
1399 break; 1412 break;
1400 } 1413 }
1401 par = par->parent(); 1414 par = par->parent();
@@ -1484,58 +1497,58 @@ void KOTodoView::setAllOpen()
1484void KOTodoView::setAllClose() 1497void KOTodoView::setAllClose()
1485{ 1498{
1486 if ( isFlatDisplay ) { 1499 if ( isFlatDisplay ) {
1487 isFlatDisplay = false; 1500 isFlatDisplay = false;
1488 mPopupMenu->setItemChecked( 8,false ); 1501 mPopupMenu->setItemChecked( 8,false );
1489 updateView(); 1502 updateView();
1490 } else { 1503 } else {
1491 storeCurrentItem(); 1504 storeCurrentItem();
1492 } 1505 }
1493 setOpen(mTodoListView->firstChild(), false); 1506 setOpen(mTodoListView->firstChild(), false);
1494 resetCurrentItem(); 1507 resetCurrentItem();
1495} 1508}
1496void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) 1509void KOTodoView::setOpen( QListViewItem* item, bool setOpenI)
1497{ 1510{
1498 1511
1499 while ( item ) { 1512 while ( item ) {
1500 setOpen( item->firstChild(), setOpenI ); 1513 setOpen( item->firstChild(), setOpenI );
1501 item->setOpen( setOpenI ); 1514 item->setOpen( setOpenI );
1502 item = item->nextSibling(); 1515 item = item->nextSibling();
1503 } 1516 }
1504} 1517}
1505 1518
1506void KOTodoView::displayAllFlat() 1519void KOTodoView::displayAllFlat()
1507{ 1520{
1508 storeCurrentItem(); 1521
1522 mActiveItem = 0;
1509 pendingSubtodo = 0; 1523 pendingSubtodo = 0;
1510 if ( mBlockUpdate ) { 1524 if ( mBlockUpdate ) {
1511 return; 1525 return;
1512 } 1526 }
1527 clearList ();
1513 mPopupMenu->setItemChecked( 8,true ); 1528 mPopupMenu->setItemChecked( 8,true );
1514 isFlatDisplay = true; 1529 isFlatDisplay = true;
1515 QPtrList<Todo> todoList = calendar()->todos(); 1530 QPtrList<Todo> todoList = calendar()->todos();
1516 mTodoMap.clear();
1517 mTodoListView->clear();
1518 Todo *todo; 1531 Todo *todo;
1519 for(todo = todoList.first(); todo; todo = todoList.next()) { 1532 for(todo = todoList.first(); todo; todo = todoList.next()) {
1520 if ( checkTodo( todo ) ) { 1533 if ( checkTodo( todo ) ) {
1521 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 1534 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
1522 mTodoMap.insert(todo,todoItem); 1535 mTodoMap.insert(todo,todoItem);
1523 } 1536 }
1524 } 1537 }
1525 resetCurrentItem(); 1538 resetCurrentItem();
1526} 1539}
1527 1540
1528void KOTodoView::setAllFlat() 1541void KOTodoView::setAllFlat()
1529{ 1542{
1530 if ( isFlatDisplay ) { 1543 if ( isFlatDisplay ) {
1531 isFlatDisplay = false; 1544 isFlatDisplay = false;
1532 mPopupMenu->setItemChecked( 8,false ); 1545 mPopupMenu->setItemChecked( 8,false );
1533 updateView(); 1546 updateView();
1534 return; 1547 return;
1535 } 1548 }
1536 displayAllFlat(); 1549 displayAllFlat();
1537} 1550}
1538 1551
1539void KOTodoView::purgeCompleted() 1552void KOTodoView::purgeCompleted()
1540{ 1553{
1541 emit purgeCompletedSignal(); 1554 emit purgeCompletedSignal();
@@ -1675,47 +1688,48 @@ void KOTodoView::keyPressEvent ( QKeyEvent * e )
1675 default: 1688 default:
1676 e->ignore(); 1689 e->ignore();
1677 } 1690 }
1678 1691
1679 if ( true ) { 1692 if ( true ) {
1680 if ( e->key() == Qt::Key_I ) { 1693 if ( e->key() == Qt::Key_I ) {
1681 KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); 1694 KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem();
1682 if ( cn ) { 1695 if ( cn ) {
1683 mActiveItem = cn; 1696 mActiveItem = cn;
1684 KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); 1697 KOTodoViewItem* ci = (KOTodoViewItem*)( cn );
1685 if ( ci ){ 1698 if ( ci ){
1686 showTodo(); 1699 showTodo();
1687 cn = (KOTodoViewItem*)cn->itemBelow(); 1700 cn = (KOTodoViewItem*)cn->itemBelow();
1688 if ( cn ) { 1701 if ( cn ) {
1689 mTodoListView->setCurrentItem ( cn ); 1702 mTodoListView->setCurrentItem ( cn );
1690 mTodoListView->ensureItemVisible ( cn ); 1703 mTodoListView->ensureItemVisible ( cn );
1691 } 1704 }
1692 1705
1693 } 1706 }
1694 } 1707 }
1695 e->accept(); 1708 e->accept();
1696 } 1709 }
1697 } 1710 }
1698} 1711}
1712
1699void KOTodoView::updateTodo( Todo * t, int type ) 1713void KOTodoView::updateTodo( Todo * t, int type )
1700{ 1714{
1701 if ( mBlockUpdate) 1715 if ( mBlockUpdate )
1702 return; 1716 return;
1703 1717
1704 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 1718 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
1705 itemIterator = mTodoMap.find(t); 1719 itemIterator = mTodoMap.find(t);
1706 if (itemIterator != mTodoMap.end()) { 1720 if (itemIterator != mTodoMap.end()) {
1707 (*itemIterator)->construct(); 1721 (*itemIterator)->construct();
1708 } else { 1722 } else {
1709 if ( type == KOGlobals::EVENTADDED ) { 1723 if ( type == KOGlobals::EVENTADDED ) {
1710 insertTodoItem( t ); 1724 insertTodoItem( t );
1711 } 1725 }
1712 } 1726 }
1713 1727
1714} 1728}
1715 1729
1716void KOTodoView::todoModified(Todo * t , int p ) 1730void KOTodoView::todoModified(Todo * t , int p )
1717{ 1731{
1718 mBlockUpdate = true; 1732 mBlockUpdate = true;
1719 emit todoModifiedSignal ( t, p ); 1733 emit todoModifiedSignal ( t, p );
1720 mBlockUpdate = false; 1734 mBlockUpdate = false;
1721} 1735}
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h
index a8e90e2..9180015 100644
--- a/korganizer/kotodoview.h
+++ b/korganizer/kotodoview.h
@@ -153,49 +153,49 @@ class KOTodoView : public KOrg::BaseView
153{ 153{
154 Q_OBJECT 154 Q_OBJECT
155 public: 155 public:
156 KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); 156 KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 );
157 ~KOTodoView(); 157 ~KOTodoView();
158 158
159 QPtrList<Incidence> selectedIncidences(); 159 QPtrList<Incidence> selectedIncidences();
160 QPtrList<Todo> selectedTodos(); 160 QPtrList<Todo> selectedTodos();
161 161
162 DateList selectedDates() 162 DateList selectedDates()
163 {DateList q; 163 {DateList q;
164 return q;} 164 return q;}
165 165
166 /** Return number of shown dates. TodoView does not show dates, */ 166 /** Return number of shown dates. TodoView does not show dates, */
167 int currentDateCount() { return 0; } 167 int currentDateCount() { return 0; }
168 168
169 void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); 169 void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td);
170 170
171 void setDocumentId( const QString & ); 171 void setDocumentId( const QString & );
172 172
173 void saveLayout(KConfig *config, const QString &group) const; 173 void saveLayout(KConfig *config, const QString &group) const;
174 void restoreLayout(KConfig *config, const QString &group); 174 void restoreLayout(KConfig *config, const QString &group);
175 void setNavigator( DateNavigator* nav ) {mNavigator = nav;} 175 void setNavigator( DateNavigator* nav ) {mNavigator = nav;}
176 QString getWhatsThisText(QPoint p); 176 QString getWhatsThisText(QPoint p);
177 void clearList() {mTodoListView->clear(); } 177 void clearList( bool saveCurrentItem = true );
178 178
179 public slots: 179 public slots:
180 void updateView(); 180 void updateView();
181 void updateConfig(); 181 void updateConfig();
182 182
183 void changeEventDisplay(Event *, int); 183 void changeEventDisplay(Event *, int);
184 184
185 void showDates(const QDate &start, const QDate &end); 185 void showDates(const QDate &start, const QDate &end);
186 void showEvents(QPtrList<Event> eventList); 186 void showEvents(QPtrList<Event> eventList);
187 187
188 void clearSelection(); 188 void clearSelection();
189 void jumpToDate (); 189 void jumpToDate ();
190 190
191 void editItem(QListViewItem *item); 191 void editItem(QListViewItem *item);
192 void showItem(QListViewItem *item,const QPoint &,int); 192 void showItem(QListViewItem *item,const QPoint &,int);
193 void popupMenu(QListViewItem *item,const QPoint &,int); 193 void popupMenu(QListViewItem *item,const QPoint &,int);
194 void newTodo(); 194 void newTodo();
195 void newSubTodo(); 195 void newSubTodo();
196 void unparentTodo(); 196 void unparentTodo();
197 void reparentTodo(); 197 void reparentTodo();
198 void showTodo(); 198 void showTodo();
199 void editTodo(); 199 void editTodo();
200 void cloneTodo(); 200 void cloneTodo();
201 void cancelTodo(); 201 void cancelTodo();