From df0200487afbfa59b80a79e548d70b5203019003 Mon Sep 17 00:00:00 2001 From: zautrix Date: Wed, 05 Jan 2005 14:17:14 +0000 Subject: todo enhancements/fixes --- (limited to 'korganizer') diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index a46cd87..7ddbe23 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -266,6 +266,7 @@ void CalendarView::init() "CalendarView::DateNavigator", QDate::currentDate() ); mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); + mTodoList->setNavigator( mNavigator ); mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); #ifdef KORG_NORESOURCEVIEW @@ -311,6 +312,7 @@ void CalendarView::init() leftFrameLayout->addWidget( mDateNavigator ); mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView"); mTodoList = new KOTodoView(mCalendar, leftFrame, "todolistsmall"); + mTodoList->setNavigator( mNavigator ); if ( QApplication::desktop()->width() < 480 ) { leftFrameLayout->addWidget(mFilterView); @@ -2144,6 +2146,8 @@ void CalendarView::updateView() // We assume that the navigator only selects consecutive days. updateView( tmpList.first(), tmpList.last() ); + if ( KOPrefs::instance()->mHideNonStartedTodos ) + mTodoList->updateView(); } void CalendarView::updateUnmanagedViews() diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp index 46184ac..6965ba7 100644 --- a/korganizer/koagendaitem.cpp +++ b/korganizer/koagendaitem.cpp @@ -498,7 +498,7 @@ void KOAgendaItem::computeText() } else { - if ( !(mIncidence->doesFloat())) + if ( !(mIncidence->doesFloat()) && KOPrefs::instance()->mShowTimeInAgenda) mDisplayedText += ": " +KGlobal::locale()->formatTime((static_cast(mIncidence))->dtStart().time()) + "-" + KGlobal::locale()->formatTime((static_cast(mIncidence))->dtEnd().time()) ; if ( mAllDay ) { diff --git a/korganizer/kodialogmanager.cpp b/korganizer/kodialogmanager.cpp index db7c3f2..c99c0cb 100644 --- a/korganizer/kodialogmanager.cpp +++ b/korganizer/kodialogmanager.cpp @@ -191,7 +191,7 @@ void KODialogManager::showSearchDialog() // connect( lview, SIGNAL( incidenceSelected( Incidence * ) ), // mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); #ifndef DESKTOP_VERSION - mSearchDialog->setMaximumSize( 640, 480 ); + mSearchDialog->setMaximumSize( QApplication::desktop()->size()); //mSearchDialog->setGeometry( 40,40, 400, 300); mSearchDialog->showMaximized(); #else diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp index 1cdb2fb..aae4692 100644 --- a/korganizer/koprefs.cpp +++ b/korganizer/koprefs.cpp @@ -110,6 +110,8 @@ KOPrefs::KOPrefs() : addItemInt("Whats Next Prios",&mWhatsNextPrios,1); addItemBool("ShowTodoInAgenda",&mShowTodoInAgenda,true); + addItemBool("ShowTimeInAgenda",&mShowTimeInAgenda,true); + addItemBool("HideNonStartedTodos",&mHideNonStartedTodos,false); addItemBool("ShowCompletedTodo",&mShowCompletedTodo,true); addItemInt("AllDay Size",&mAllDaySize,28); QString defAlarm = KGlobal::iconLoader()->iconPath()+"koalarm.wav"; diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h index f2fe77a..69722a1 100644 --- a/korganizer/koprefs.h +++ b/korganizer/koprefs.h @@ -190,6 +190,8 @@ class KOPrefs : public KPimPrefs bool mUsePassWd; bool mShowSyncEvents; bool mShowTodoInAgenda; + bool mShowTimeInAgenda; + bool mHideNonStartedTodos; int mLastSyncTime; void setCategoryColor(QString cat,const QColor & color); diff --git a/korganizer/koprefsdialog.cpp b/korganizer/koprefsdialog.cpp index 578c0e9..8aa24ee 100644 --- a/korganizer/koprefsdialog.cpp +++ b/korganizer/koprefsdialog.cpp @@ -93,6 +93,9 @@ KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) : //setupPrinterTab(); //setupGroupSchedulingTab(); //setupGroupAutomationTab(); + + if ( QApplication::desktop()->height() == 480 ) + hideButtons(); } @@ -600,6 +603,11 @@ void KOPrefsDialog::setupViewsTab() addWidBool(i18n("Edit item on doubleclick (if not, show)"), &(KOPrefs::instance()->mEditOnDoubleClick),topFrame); topLayout->addWidget(dummy->checkBox(),ii++,0); + + dummy = + addWidBool(i18n("Show time in agenda items"), + &(KOPrefs::instance()->mShowTimeInAgenda),topFrame); + topLayout->addWidget(dummy->checkBox(),ii++,0); dummy = addWidBool(i18n("Highlight current day in agenda"), @@ -833,6 +841,11 @@ void KOPrefsDialog::setupViewsTab() topLayout->setSpacing(spacingHint()); topLayout->setMargin(marginHint()); ii = 0; +dummy = + addWidBool(i18n("Hide not running Todos in To-do view"), + &(KOPrefs::instance()->mHideNonStartedTodos),topFrame); + topLayout->addWidget(dummy->checkBox(),ii++,0); + KPrefsDialogWidBool *showCompletedTodo = addWidBool(i18n("To-do view shows completed Todos"), diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 9cafc60..5d7b066 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp @@ -332,6 +332,7 @@ void KOQuickTodo::focusOutEvent(QFocusEvent *ev) KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : KOrg::BaseView(calendar,parent,name) { + mNavigator = 0; QBoxLayout *topLayout = new QVBoxLayout(this); mName = QString ( name ); mBlockUpdate = false; @@ -352,11 +353,18 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : mTodoListView->addColumn(i18n("Prio")); mTodoListView->setColumnAlignment(1,AlignHCenter); mTodoListView->addColumn(i18n("Complete")); - mTodoListView->setColumnAlignment(2,AlignHCenter); + mTodoListView->setColumnAlignment(2,AlignCenter); + mTodoListView->addColumn(i18n("Due Date")); mTodoListView->setColumnAlignment(3,AlignLeft); mTodoListView->addColumn(i18n("Due Time")); mTodoListView->setColumnAlignment(4,AlignHCenter); + + mTodoListView->addColumn(i18n("Start Date")); + mTodoListView->setColumnAlignment(5,AlignLeft); + mTodoListView->addColumn(i18n("Start Time")); + mTodoListView->setColumnAlignment(6,AlignHCenter); + mTodoListView->addColumn(i18n("Cancelled")); mTodoListView->addColumn(i18n("Categories")); #if 0 @@ -375,10 +383,9 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : mTodoListView->setColumnWidthMode(4, QListView::Manual); mTodoListView->setColumnWidthMode(5, QListView::Manual); mTodoListView->setColumnWidthMode(6, QListView::Manual); - mTodoListView->setColumnAlignment( 2, AlignCenter ); -#if 0 - mTodoListView->setColumnWidthMode(6, QListView::Manual); -#endif + mTodoListView->setColumnWidthMode(7, QListView::Manual); + mTodoListView->setColumnWidthMode(8, QListView::Manual); + mPriorityPopupMenu = new QPopupMenu(this); for (int i = 1; i <= 5; i++) { @@ -428,6 +435,8 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : this, SLOT( toggleCompleted() ),0, 33 ); mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), this, SLOT( toggleQuickTodo() ),0, 34 ); + mItemPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), + this, SLOT( toggleRunning() ),0, 35 ); mPopupMenu = new QPopupMenu(this); mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this, @@ -438,10 +447,24 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : this, SLOT( toggleCompleted() ),0,3 ); mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), this, SLOT( toggleQuickTodo() ),0,4 ); + mPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), + this, SLOT( toggleRunning() ),0,5 ); mDocPrefs = new DocPrefs( name ); mPopupMenu->setCheckable( true ); mItemPopupMenu->setCheckable( true ); + + + mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); + mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); + + mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); + mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); + + mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); + mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); + + // Double clicking conflicts with opening/closing the subtree connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), SLOT( editItem( QListViewItem *) ) ); @@ -476,11 +499,6 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : SLOT( processSelectionChange() ) ); connect( mQuickAdd, SIGNAL( returnPressed () ), SLOT( addQuickTodo() ) ); -// if ( QApplication::desktop()->width() < 480 ) { -// setNarrow(); - // mTodoListView->setColumnWidth( 0, 100 ); - - // } } @@ -497,16 +515,6 @@ void KOTodoView::jumpToDate () // emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); } -void KOTodoView::setNarrow() -{ - //mTodoListView->setColumnWidth( 0, 120 ); - mTodoListView->setColumnWidth( 1, 35 ); - mTodoListView->setColumnWidth( 2, 40 ); - mTodoListView->setColumnWidth( 3, 80 ); - mTodoListView->setColumnWidth( 4, 40 ); - mTodoListView->setColumnWidth( 5, 90 ); - -} void KOTodoView::updateView() { pendingSubtodo = 0; @@ -587,7 +595,7 @@ void KOTodoView::updateView() // } //qDebug("for "); for(todo = todoList.first(); todo; todo = todoList.next()) { - if (!mTodoMap.contains(todo) && ( KOPrefs::instance()->mShowCompletedTodo || !todo->isCompleted() ) ) + if (!mTodoMap.contains(todo) && checkTodo( todo ) ) { insertTodoItem(todo); } @@ -601,6 +609,22 @@ void KOTodoView::updateView() processSelectionChange(); } +bool KOTodoView::checkTodo( Todo * todo ) +{ + + if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) + return false; + if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { + if ( todo->hasStartDate() ) + if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) + return false; + if ( todo->hasDueDate() ) + if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) + return false; + } + return true; +} + void KOTodoView::restoreItemState( QListViewItem *item ) { pendingSubtodo = 0; @@ -616,6 +640,7 @@ void KOTodoView::restoreItemState( QListViewItem *item ) QMap::ConstIterator KOTodoView::insertTodoItem(Todo *todo) { + // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; // TODO: Check, if dynmaic cast is necessary @@ -718,7 +743,7 @@ void KOTodoView::popupMenu(QListViewItem *item,const QPoint &,int column) case 3: moveTodo(); break; - case 6: + case 8: getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break; default: mItemPopupMenu->popup(QCursor::pos()); @@ -995,6 +1020,15 @@ void KOTodoView::toggleQuickTodo() mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); } + +void KOTodoView::toggleRunning() +{ + KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; + mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); + mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); + updateView(); +} + void KOTodoView::toggleCompleted() { KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index 0c08677..5ca0362 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h @@ -43,6 +43,7 @@ #include "kotodoviewitem.h" #include "koprefs.h" #include "koglobals.h" +#include "datenavigator.h" class QDragEnterEvent; class QDragMoveEvent; @@ -118,7 +119,6 @@ class KOTodoView : public KOrg::BaseView /** Return number of shown dates. TodoView does not show dates, */ int currentDateCount() { return 0; } - void setNarrow(); void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); @@ -128,6 +128,7 @@ class KOTodoView : public KOrg::BaseView void restoreLayout(KConfig *config, const QString &group); /** Create a popup menu to set categories */ QPopupMenu *getCategoryPopupMenu (KOTodoViewItem *todoItem); + void setNavigator( DateNavigator* nav ) {mNavigator = nav;} public slots: void updateView(); @@ -162,6 +163,7 @@ class KOTodoView : public KOrg::BaseView void purgeCompleted(); void toggleCompleted(); + void toggleRunning(); void toggleQuickTodo(); void updateTodo( Todo *, int ); @@ -207,6 +209,8 @@ class KOTodoView : public KOrg::BaseView QMap::ConstIterator insertTodoItem(Todo *todo); void restoreItemState( QListViewItem * ); + bool checkTodo( Todo * ); + KOTodoListView *mTodoListView; QPopupMenu *mItemPopupMenu; QPopupMenu *mPopupMenu; @@ -229,6 +233,7 @@ class KOTodoView : public KOrg::BaseView void todoModified(Todo *, int ); void keyPressEvent ( QKeyEvent * ) ; KOTodoViewItem * pendingSubtodo; + DateNavigator* mNavigator; }; #endif diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp index ae0b334..347d982 100644 --- a/korganizer/kotodoviewitem.cpp +++ b/korganizer/kotodoviewitem.cpp @@ -79,6 +79,8 @@ void KOTodoViewItem::construct() m_init = true; QString keyd = "=="; QString keyt = "=="; + QString skeyd = "=="; + QString skeyt = "=="; setOn(mTodo->isCompleted()); setText(0,mTodo->summary()); @@ -96,7 +98,7 @@ void KOTodoViewItem::construct() setText(3, mTodo->dtDueDateStr()); QDate d = mTodo->dtDue().date(); keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); - setSortKey(3,keyd); + // setSortKey(3,keyd); if (mTodo->doesFloat()) { setText(4,""); } @@ -104,7 +106,7 @@ void KOTodoViewItem::construct() setText(4,mTodo->dtDueTimeStr()); QTime t = mTodo->dtDue().time(); keyt.sprintf("%02d%02d",t.hour(),t.minute()); - setSortKey(4,keyt); + //setSortKey(4,keyt); } } else { setText(3,""); @@ -116,8 +118,31 @@ void KOTodoViewItem::construct() if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt); else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); - setText(5,mTodo->cancelled() ? i18n("Yes") : i18n("No")); - setText(6,mTodo->categoriesStr()); + + + if (mTodo->hasStartDate()) { + setText(5, mTodo->dtStartDateStr()); + QDate d = mTodo->dtStart().date(); + skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); + + if (mTodo->doesFloat()) { + setText(6,""); + } + else { + setText(6,mTodo->dtStartTimeStr()); + QTime t = mTodo->dtStart().time(); + skeyt.sprintf("%02d%02d",t.hour(),t.minute()); + + } + } else { + setText(5,""); + setText(6,""); + } + setSortKey(5,skeyd); + setSortKey(6,skeyt); + + setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No")); + setText(8,mTodo->categoriesStr()); #if 0 // Find sort id in description. It's the text behind the last '#' character diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp index 6e151f9..b2dd266 100644 --- a/korganizer/koviewmanager.cpp +++ b/korganizer/koviewmanager.cpp @@ -509,6 +509,7 @@ void KOViewManager::showTodoView() mMainView, SLOT ( beamIncidence( Incidence * ) ) ); KConfig *config = KOGlobals::config(); mTodoView->restoreLayout(config,"Todo View"); + mTodoView->setNavigator( mMainView->dateNavigator() ); } globalFlagBlockAgenda = 1; -- cgit v0.9.0.2