-rw-r--r-- | bin/kdepim/WhatsNew.txt | 4 | ||||
-rw-r--r-- | korganizer/kotodoview.cpp | 46 | ||||
-rw-r--r-- | korganizer/kotodoview.h | 2 |
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,14 +1,16 @@ Info about the changes in new versions of KDE-Pim/Pi ********** VERSION 2.1.19 ************ -Fixed 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. +Fixed a crash in journal view. +Fixed a crash at setting a todo to stopped if KO/Pi saved the file while "stop todo" dialog was shown. Fixed a minor problem with the marcus bains line (whatever that is). +Fixed a crash when setting a todo to complete from the show dialog which was called from the What's Next View. ********** VERSION 2.1.18 ************ Pi-Sync mode: The "Write back file" status dialog was updated too often such that writing back the file on the Z was very slow. Fixed. KO/Pi: Fixed 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 ). diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 00c2d97..27d755e 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp @@ -497,17 +497,18 @@ void KOQuickTodo::focusOutEvent(QFocusEvent *ev) setText(i18n("Click to add new Todo")); QLineEdit::focusOutEvent(ev); } ///////////////////////////////////////////////////////////////////////////// KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : KOrg::BaseView(calendar,parent,name) -{ +{ + mActiveItem = 0; mCategoryPopupMenu = 0; mPendingUpdateBeforeRepaint = false; isFlatDisplay = false; mNavigator = 0; QBoxLayout *topLayout = new QVBoxLayout(this); mName = QString ( name ); mBlockUpdate = false; mQuickBar = new QWidget( this ); @@ -802,38 +803,48 @@ void KOTodoView::paintEvent(QPaintEvent * pevent) { if ( mPendingUpdateBeforeRepaint ) { updateView(); mPendingUpdateBeforeRepaint = false; } KOrg::BaseView::paintEvent( pevent); } +void KOTodoView::clearList( bool saveCurrentItem ) // default true +{ + if ( mTodoListView->childCount() ) { + if ( saveCurrentItem ) + storeCurrentItem(); + mTodoListView->clear(); + mTodoMap.clear(); + } +} void KOTodoView::updateView() { + mActiveItem = 0; pendingSubtodo = 0; if ( mBlockUpdate ) { return; } if ( !isVisible() ) { - mPendingUpdateBeforeRepaint = true; - return; + clearList (); + mPendingUpdateBeforeRepaint = true; + return; } //qDebug("KOTodoView::updateView() %x", this); if ( isFlatDisplay ) { displayAllFlat(); return; } - storeCurrentItem(); //qDebug("update "); // kdDebug() << "KOTodoView::updateView()" << endl; QFont fo = KOPrefs::instance()->mTodoViewFont; - - mTodoListView->clear(); + clearList (); + if ( mName == "todolistsmall" ) { if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { int ps = fo.pointSize() -2; if ( ps > 12 ) ps -= 2; fo.setPointSize( ps ); } } @@ -859,17 +870,16 @@ void KOTodoView::updateView() kdDebug() << " - relation: " << c->getSummary() << endl; } } */ // Put for each Event a KOTodoViewItem in the list view. Don't rely on a // specific order of events. That means that we have to generate parent items // recursively for proper hierarchical display of Todos. - mTodoMap.clear(); Todo *todo; todo = todoList.first();// todo; todo = todoList.next()) { while ( todo ) { bool next = true; // qDebug("todo %s ", todo->summary().latin1()); Incidence *incidence = todo->relatedTo(); while ( incidence ) { if ( incidence->typeID() == todoID ) { @@ -969,17 +979,18 @@ void KOTodoView::resetCurrentItem() } else { if ( mTodoListView->firstChild () ) { mTodoListView->setSelected ( mTodoListView->firstChild (), true ); mTodoListView->setCurrentItem( mTodoListView->firstChild () ); } } } processSelectionChange(); - QTimer::singleShot( 100, this, SLOT ( resetFocusToList() )); + if ( mName != "todolistsmall" ) + QTimer::singleShot( 100, this, SLOT ( resetFocusToList() )); } void KOTodoView::resetFocusToList() { topLevelWidget()->setActiveWindow(); mTodoListView->setFocus(); } //Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; bool KOTodoView::checkTodo( Todo * todo ) @@ -1095,22 +1106,24 @@ void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, { #ifndef KORG_NOPRINTER calPrinter->preview(CalPrinter::Todolist, fd, td); #endif } void KOTodoView::editItem(QListViewItem *item ) { - emit editTodoSignal(((KOTodoViewItem *)item)->todo()); + if ( item ) + emit editTodoSignal(((KOTodoViewItem *)item)->todo()); } void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) { - emit showTodoSignal(((KOTodoViewItem *)item)->todo()); + if ( item ) + emit showTodoSignal(((KOTodoViewItem *)item)->todo()); } void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) { pendingSubtodo = 0; mActiveItem = (KOTodoViewItem *)item; if (item) { switch (column){ @@ -1352,34 +1365,34 @@ void KOTodoView::toggleRunningItem() if (QApplication::desktop()->width() <= 800 ){ int wid = tp.width(); int hei = tp.height(); int xx = (QApplication::desktop()->width()-wid)/2; int yy = (QApplication::desktop()->height()-hei)/2; tp.setGeometry( xx,yy,wid,hei ); } tp.exec(); - updateTodo ( t, 0 ); + updateTodo ( t, KOGlobals::EVENTEDITED ); } else { KOStartTodoPrefs tp ( t->summary(), this ); if (QApplication::desktop()->width() <= 800 ){ int wid = tp.width(); int hei = tp.height(); int xx = (QApplication::desktop()->width()-wid)/2; int yy = (QApplication::desktop()->height()-hei)/2; tp.setGeometry( xx,yy,wid,hei ); } if ( !tp.exec() ) return; if ( tp.stopAll() ) { mCalendar->stopAllTodos(); t->setRunning( true ); updateView(); } else { t->setRunning( true ); - updateTodo ( t, 0 ); + updateTodo ( t, KOGlobals::EVENTEDITED ); } } } void KOTodoView::itemClicked(QListViewItem *item) { //qDebug("KOTodoView::itemClicked %d", item); if (!item) { @@ -1500,26 +1513,26 @@ void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) setOpen( item->firstChild(), setOpenI ); item->setOpen( setOpenI ); item = item->nextSibling(); } } void KOTodoView::displayAllFlat() { - storeCurrentItem(); + + mActiveItem = 0; pendingSubtodo = 0; if ( mBlockUpdate ) { return; } + clearList (); mPopupMenu->setItemChecked( 8,true ); isFlatDisplay = true; QPtrList<Todo> todoList = calendar()->todos(); - mTodoMap.clear(); - mTodoListView->clear(); Todo *todo; for(todo = todoList.first(); todo; todo = todoList.next()) { if ( checkTodo( todo ) ) { KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); mTodoMap.insert(todo,todoItem); } } resetCurrentItem(); @@ -1691,19 +1704,20 @@ void KOTodoView::keyPressEvent ( QKeyEvent * e ) } } } e->accept(); } } } + void KOTodoView::updateTodo( Todo * t, int type ) { - if ( mBlockUpdate) + if ( mBlockUpdate ) return; QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; itemIterator = mTodoMap.find(t); if (itemIterator != mTodoMap.end()) { (*itemIterator)->construct(); } else { if ( type == KOGlobals::EVENTADDED ) { diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index a8e90e2..9180015 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h @@ -169,17 +169,17 @@ class KOTodoView : public KOrg::BaseView void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); void setDocumentId( const QString & ); void saveLayout(KConfig *config, const QString &group) const; void restoreLayout(KConfig *config, const QString &group); void setNavigator( DateNavigator* nav ) {mNavigator = nav;} QString getWhatsThisText(QPoint p); - void clearList() {mTodoListView->clear(); } + void clearList( bool saveCurrentItem = true ); public slots: void updateView(); void updateConfig(); void changeEventDisplay(Event *, int); void showDates(const QDate &start, const QDate &end); |