SVN commit 628918 by timocin: Update: Config and Functionality of To-dos M +90 -57 branches/work/kdepim-3.5.5+/kontact/plugins/planner/planner.cpp --- branches/work/kdepim-3.5.5+/kontact/plugins/planner/planner.cpp #628917:628918 @@ -86,9 +86,97 @@ config.setGroup( "Calendar" ); mDays = config.readNumEntry( "DaysToShow", 1 ); + config.setGroup( "Todo" ); + mShowAllTodos = config.readBoolEntry( "ShowAllTodos" ); + mShowTodayEndingTodos = config.readBoolEntry( "ShowTodayEndingTodos" ); + mShowTodosInProgress = config.readBoolEntry( "ShowTodosInProgress" ); updateView(); } +void Planner::initTodoList( const QDate dt ) +{ + KCal::Todo *todo; + KCal::Todo::List todos = mCalendar->todos(); + KCal::Todo::List::ConstIterator td = todos.begin(); + mTodos.setAutoDelete( true ); + if( mShowAllTodos ){ + mTodos = mCalendar->todos(); + } + if( mShowTodayEndingTodos ){ + mTodos = mCalendar->todos( dt ); + } + if( mShowTodosInProgress ){ + for( ; td != todos.end(); ++td){ + todo = *td; + if ( todo->hasStartDate() && todo->hasDueDate() && + todo->dtStart().date() < dt && + dt < todo->dtDue().date() ){ + mTodos.append( todo ); + } + } + } +} + +int Planner::showTodos(int counter) +{ + KIconLoader loader( "kdepim" ); + QDate dt = QDate::currentDate(); + initTodoList( dt ); + + if ( !mTodos.empty() ) { + KCal::Todo *todo; + KCal::Todo::List::ConstIterator td = mTodos.begin(); + + ++counter; + mGrid = new QGridLayout ( this, 2 , 5, 3 ); + mGrid->setRowStretch( 6, 1 ); + mLayout->addMultiCellLayout( mGrid, counter, counter, 1, 4 ); + + for ( ; td != mTodos.end() ; ++td ) { + todo = *td; + + QPixmap todoPm = loader.loadIcon( "kontact_todo", KIcon::Small ); + QLabel *label = new QLabel( this ); + label->setPixmap( todoPm ); + label->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ); + mGrid->addWidget( label, counter, 0 ); + mLabels.append( label ); + + label = new QLabel( QString::number( todo->percentComplete() ) + '%', this ); + label->setAlignment( AlignHCenter | AlignVCenter ); + label->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ); + mGrid->addWidget( label, counter, 1 ); + mLabels.append( label ); + + QString string = todo->summary(); + KURLLabel *urlLabel = new KURLLabel( this ); + urlLabel->setText( string ); + urlLabel->setURL( todo->uid() ); + urlLabel->installEventFilter( this ); + urlLabel->setTextFormat( Qt::RichText ); + mGrid->addWidget( urlLabel, counter, 2 ); + mLabels.append( urlLabel ); + + connect( urlLabel, SIGNAL( leftClickedURL( const QString& ) ), + this, SLOT( viewTodo( const QString& ) ) ); + connect( urlLabel, SIGNAL( rightClickedURL( const QString& ) ), + this, SLOT( todoPopupMenu( const QString& ) ) ); + + QString stateText = initStateText ( todo ); + label = new QLabel( stateText, this ); + label->setAlignment( AlignLeft | AlignVCenter ); + label->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ); + mGrid->addWidget( label, counter, 4 ); + mLabels.append( label ); + + if ( td != mTodos.end() ) { + ++counter; + } + } + } + return counter; +} + void Planner::updateView() { mLabels.setAutoDelete( true ); @@ -177,58 +265,8 @@ mLayout->addWidget( label, counter, 1 ); mLabels.append( label ); - //ToDo Section - KCal::Todo *todo; - KCal::Todo::List todos = mCalendar->todos( dt ); - KCal::Todo::List::ConstIterator td = todos.begin(); - - if ( !todos.empty() ) { - ++counter; - mGrid = new QGridLayout ( this, 2 , 5, 3 ); - mGrid->setRowStretch( 6, 1 ); - mLayout->addMultiCellLayout( mGrid, counter, counter, 1, 4 ); - - for ( ; td != todos.end() ; ++td ) { - todo = *td; - - QPixmap todoPm = loader.loadIcon( "kontact_todo", KIcon::Small ); - label = new QLabel( this ); - label->setPixmap( todoPm ); - label->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ); - mGrid->addWidget( label, counter, 0 ); - mLabels.append( label ); - - label = new QLabel( QString::number( todo->percentComplete() ) + '%', this ); - label->setAlignment( AlignHCenter | AlignVCenter ); - label->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ); - mGrid->addWidget( label, counter, 1 ); - mLabels.append( label ); - - QString string = todo->summary(); - KURLLabel *urlLabel = new KURLLabel( this ); - urlLabel->setText( string ); - urlLabel->setURL( todo->uid() ); - urlLabel->installEventFilter( this ); - urlLabel->setTextFormat( Qt::RichText ); - mGrid->addWidget( urlLabel, counter, 2 ); - mLabels.append( urlLabel ); - - connect( urlLabel, SIGNAL( leftClickedURL( const QString& ) ), - this, SLOT( viewTodo( const QString& ) ) ); - connect( urlLabel, SIGNAL( rightClickedURL( const QString& ) ), - this, SLOT( todoPopupMenu( const QString& ) ) ); - - QString stateText = initStateText ( todo ); - label = new QLabel( stateText, this ); - label->setAlignment( AlignLeft | AlignVCenter ); - label->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ); - mGrid->addWidget( label, counter, 4 ); - mLabels.append( label ); - - if ( td != todos.end() ) { - ++counter; - } - } + if( datestr == i18n( "Today" ) ){ + counter = showTodos( counter ); } for ( it=events.begin(); it!=events.end(); ++it ) { @@ -265,11 +303,6 @@ label = new QLabel( datestr, this ); label->setAlignment( AlignLeft | AlignTop ); label->setPaletteForegroundColor( colorGroup().text() ); - if ( makeBold ){ - QFont font = label->font(); - font.setBold( true ); - label->setFont( font ); - } mLayout->addWidget( label, i, 1 ); mLabels.append( label ); }