author | zecke <zecke> | 2002-04-13 19:58:17 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-04-13 19:58:17 (UTC) |
commit | 244495af9bd629fe565b5c753d066cc4fde684ae (patch) (unidiff) | |
tree | 8f20084c688b627223a431f02875703418e6d999 /core/pim/todo/todotable.cpp | |
parent | 84f5e0817231fa3721c781b0538659f5a7149349 (diff) | |
download | opie-244495af9bd629fe565b5c753d066cc4fde684ae.zip opie-244495af9bd629fe565b5c753d066cc4fde684ae.tar.gz opie-244495af9bd629fe565b5c753d066cc4fde684ae.tar.bz2 |
Fix Stefan Eilers patch
Extend the due column
better sorting
and colors ;)
-rw-r--r-- | core/pim/todo/todotable.cpp | 98 |
1 files changed, 63 insertions, 35 deletions
diff --git a/core/pim/todo/todotable.cpp b/core/pim/todo/todotable.cpp index 3cd0c0e..2acd03c 100644 --- a/core/pim/todo/todotable.cpp +++ b/core/pim/todo/todotable.cpp | |||
@@ -157,15 +157,63 @@ void ComboItem::setText( const QString &s ) | |||
157 | QString ComboItem::text() const | 157 | QString ComboItem::text() const |
158 | { | 158 | { |
159 | if ( cb ) | 159 | if ( cb ) |
160 | return cb->currentText(); | 160 | return cb->currentText(); |
161 | return QTableItem::text(); | 161 | return QTableItem::text(); |
162 | } | 162 | } |
163 | 163 | DueTextItem::DueTextItem( QTable *t, ToDoEvent *ev ) | |
164 | 164 | : QTableItem(t, Never, QString::null ) | |
165 | 165 | { | |
166 | setToDoEvent( ev ); | ||
167 | } | ||
168 | QString DueTextItem::key() const | ||
169 | { | ||
170 | QString key; | ||
171 | if( m_hasDate ){ | ||
172 | if(m_off == 0 ){ | ||
173 | key.append("b"); | ||
174 | }else if( m_off > 0 ){ | ||
175 | key.append("c"); | ||
176 | }else if( m_off < 0 ){ | ||
177 | key.append("a"); | ||
178 | } | ||
179 | key.append(QString::number(m_off ) ); | ||
180 | }else{ | ||
181 | key.append("d"); | ||
182 | } | ||
183 | return key; | ||
184 | } | ||
185 | void DueTextItem::setToDoEvent( const ToDoEvent *ev ) | ||
186 | { | ||
187 | m_hasDate = ev->hasDate(); | ||
188 | m_completed = ev->isCompleted(); | ||
189 | if( ev->hasDate() ){ | ||
190 | QDate today = QDate::currentDate(); | ||
191 | m_off = today.daysTo(ev->date() ); | ||
192 | setText( QString::number(m_off) + " day(s) " ); | ||
193 | }else{ | ||
194 | setText("n.d." ); | ||
195 | m_off = 0; | ||
196 | } | ||
197 | } | ||
198 | void DueTextItem::paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected ) | ||
199 | { | ||
200 | QColorGroup cg2(cg); | ||
201 | QColor text = cg.text(); | ||
202 | if( m_hasDate && !m_completed ){ | ||
203 | if( m_off < 0 ){ | ||
204 | cg2.setColor(QColorGroup::Text, QColor(red ) ); | ||
205 | }else if( m_off == 0 ){ | ||
206 | cg2.setColor(QColorGroup::Text, QColor(yellow) ); // orange isn't predefined | ||
207 | }else if( m_off > 0){ | ||
208 | cg2.setColor(QColorGroup::Text, QColor(green ) ); | ||
209 | } | ||
210 | } | ||
211 | QTableItem::paint(p, cg2, cr, selected ); | ||
212 | cg2.setColor(QColorGroup::Text, text ); | ||
213 | } | ||
166 | TodoTable::TodoTable( QWidget *parent, const char *name ) | 214 | TodoTable::TodoTable( QWidget *parent, const char *name ) |
167 | // #ifdef QT_QTABLE_NOHEADER_CONSTRUCTOR | 215 | // #ifdef QT_QTABLE_NOHEADER_CONSTRUCTOR |
168 | // : QTable( 0, 3, parent, name, TRUE ), | 216 | // : QTable( 0, 3, parent, name, TRUE ), |
169 | // #else | 217 | // #else |
170 | : QTable( 0, 4, parent, name ), | 218 | : QTable( 0, 4, parent, name ), |
171 | // #endif | 219 | // #endif |
@@ -244,19 +292,19 @@ void TodoTable::slotClicked( int row, int col, int, const QPoint &pos ) | |||
244 | } | 292 | } |
245 | break; | 293 | break; |
246 | case 1: | 294 | case 1: |
247 | break; | 295 | break; |
248 | case 2: | 296 | case 2: |
249 | // may as well edit it... | 297 | // may as well edit it... |
250 | menuTimer->stop(); | 298 | // menuTimer->stop(); |
251 | // emit signalEdit(); | 299 | // emit signalEdit(); |
252 | break; | 300 | // fall through |
253 | case 3: /* added 20.01.2k2 by se */ | 301 | case 3: |
254 | // may as well edit it... | 302 | // may as well edit it... |
255 | menuTimer->stop(); | 303 | menuTimer->stop(); |
256 | emit signalEdit(); | 304 | // emit signalEdit(); |
257 | break; | 305 | break; |
258 | } | 306 | } |
259 | } | 307 | } |
260 | 308 | ||
261 | void TodoTable::slotPressed( int row, int col, int, const QPoint &pos ) | 309 | void TodoTable::slotPressed( int row, int col, int, const QPoint &pos ) |
262 | { | 310 | { |
@@ -365,22 +413,20 @@ void TodoTable::load( const QString &fn ) | |||
365 | save( fn ); | 413 | save( fn ); |
366 | } | 414 | } |
367 | // QTable::sortColumn(2,TRUE,TRUE); | 415 | // QTable::sortColumn(2,TRUE,TRUE); |
368 | // QTable::sortColumn(1,TRUE,TRUE); | 416 | // QTable::sortColumn(1,TRUE,TRUE); |
369 | QTable::sortColumn(0,TRUE,TRUE); | 417 | QTable::sortColumn(0,TRUE,TRUE); |
370 | setCurrentCell( 0, 2 ); | 418 | setCurrentCell( 0, 2 ); |
419 | setSorting(true ); | ||
371 | } | 420 | } |
372 | 421 | ||
373 | void TodoTable::updateVisible() | 422 | void TodoTable::updateVisible() |
374 | { | 423 | { |
375 | if ( !isUpdatesEnabled() ) | 424 | if ( !isUpdatesEnabled() ) |
376 | return; | 425 | return; |
377 | 426 | ||
378 | // qDebug("--> updateVisible!"); | ||
379 | |||
380 | /* added 20.01.2k2 by se */ | ||
381 | if (showDeadl){ | 427 | if (showDeadl){ |
382 | showColumn (3); | 428 | showColumn (3); |
383 | adjustColumn(3); | 429 | adjustColumn(3); |
384 | }else{ | 430 | }else{ |
385 | hideColumn (3); | 431 | hideColumn (3); |
386 | adjustColumn(2); | 432 | adjustColumn(2); |
@@ -397,13 +443,13 @@ void TodoTable::updateVisible() | |||
397 | hide = true; | 443 | hide = true; |
398 | if ( !showCat.isEmpty() ) { | 444 | if ( !showCat.isEmpty() ) { |
399 | if ( showCat == tr( "Unfiled" ) ) { | 445 | if ( showCat == tr( "Unfiled" ) ) { |
400 | if ( vlCats.count() > 0 ) | 446 | if ( vlCats.count() > 0 ) |
401 | hide = true; | 447 | hide = true; |
402 | } else { | 448 | } else { |
403 | // do some comparing, we have to reverse our idea here... | 449 | // do some comparing, we have to reverse our idea here... which idea - zecke |
404 | if ( !hide ) { | 450 | if ( !hide ) { |
405 | hide = true; | 451 | hide = true; |
406 | for ( uint it = 0; it < vlCats.count(); ++it ) { | 452 | for ( uint it = 0; it < vlCats.count(); ++it ) { |
407 | if ( vlCats[it] == id ) { | 453 | if ( vlCats[it] == id ) { |
408 | hide = false; | 454 | hide = false; |
409 | break; | 455 | break; |
@@ -463,19 +509,19 @@ void TodoTable::clear() | |||
463 | clearCell( r, c ); | 509 | clearCell( r, c ); |
464 | } | 510 | } |
465 | } | 511 | } |
466 | setNumRows( 0 ); | 512 | setNumRows( 0 ); |
467 | } | 513 | } |
468 | 514 | ||
469 | void TodoTable::sortColumn( int col, bool /*ascending*/, bool /*wholeRows*/ ) | 515 | void TodoTable::sortColumn( int col, bool ascending, bool /*wholeRows*/ ) |
470 | { | 516 | { |
471 | // The default for wholeRows is false, however | 517 | // The default for wholeRows is false, however |
472 | // for this todo table we want to exchange complete | 518 | // for this todo table we want to exchange complete |
473 | // rows when sorting. Also, we always want ascending, since | 519 | // rows when sorting. Also, we always want ascending, since |
474 | // the values have a logical order. | 520 | // the values have a logical order. |
475 | QTable::sortColumn( col, TRUE, TRUE ); | 521 | QTable::sortColumn( col, ascending, TRUE ); |
476 | updateVisible(); | 522 | updateVisible(); |
477 | } | 523 | } |
478 | 524 | ||
479 | void TodoTable::slotCheckPriority(int row, int col ) | 525 | void TodoTable::slotCheckPriority(int row, int col ) |
480 | { | 526 | { |
481 | // kludgey work around to make forward along the updated priority... | 527 | // kludgey work around to make forward along the updated priority... |
@@ -494,13 +540,13 @@ void TodoTable::updateJournal( const ToDoEvent &/*todo*/, journal_action action, | |||
494 | return; | 540 | return; |
495 | QString buf; | 541 | QString buf; |
496 | QCString str; | 542 | QCString str; |
497 | buf = "<Task"; | 543 | buf = "<Task"; |
498 | // todo.save( buf ); | 544 | // todo.save( buf ); |
499 | buf += " Action=\"" + QString::number( int(action) ) + "\""; | 545 | buf += " Action=\"" + QString::number( int(action) ) + "\""; |
500 | buf += " Row=\"" + QString::number( row ) + "\""; | 546 | buf += " Row=\"" + QString::number( row ) + "\""; // better write the id |
501 | buf += "/>\n"; | 547 | buf += "/>\n"; |
502 | str = buf.utf8(); | 548 | str = buf.utf8(); |
503 | f.writeBlock( str.data(), str.length() ); | 549 | f.writeBlock( str.data(), str.length() ); |
504 | f.close(); | 550 | f.close(); |
505 | } | 551 | } |
506 | 552 | ||
@@ -538,23 +584,14 @@ void TodoTable::journalFreeReplaceEntry( const ToDoEvent &todo, int row ) | |||
538 | if ( *(*it) == todo ) { | 584 | if ( *(*it) == todo ) { |
539 | row = it.key()->row(); | 585 | row = it.key()->row(); |
540 | it.key()->setChecked( todo.isCompleted() ); | 586 | it.key()->setChecked( todo.isCompleted() ); |
541 | static_cast<ComboItem*>(item(row, 1))->setText( QString::number(todo.priority()) ); | 587 | static_cast<ComboItem*>(item(row, 1))->setText( QString::number(todo.priority()) ); |
542 | item( row, 2 )->setText( strTodo ); | 588 | item( row, 2 )->setText( strTodo ); |
543 | 589 | ||
544 | /* added 20.01.2k2 by se */ | ||
545 | if (showDeadl){ | 590 | if (showDeadl){ |
546 | if (todo.hasDate()){ | 591 | static_cast<DueTextItem*>(item(row,3))->setToDoEvent(&todo ); |
547 | QDate *today = new QDate (QDate::currentDate()); | ||
548 | if (today){ | ||
549 | item (row, 3)->setText (tr ("%1").arg(today->daysTo(todo.date()))); | ||
550 | delete (today); | ||
551 | } | ||
552 | }else{ | ||
553 | item (row, 3)->setText ("n.d."); | ||
554 | } | ||
555 | } | 592 | } |
556 | 593 | ||
557 | *(*it) = todo; | 594 | *(*it) = todo; |
558 | } | 595 | } |
559 | } | 596 | } |
560 | } else { | 597 | } else { |
@@ -562,23 +599,14 @@ void TodoTable::journalFreeReplaceEntry( const ToDoEvent &todo, int row ) | |||
562 | todoList.remove( static_cast<CheckItem*>(item(row, 0)) ); | 599 | todoList.remove( static_cast<CheckItem*>(item(row, 0)) ); |
563 | delete t; | 600 | delete t; |
564 | static_cast<CheckItem*>(item(row, 0))->setChecked( todo.isCompleted() ); | 601 | static_cast<CheckItem*>(item(row, 0))->setChecked( todo.isCompleted() ); |
565 | static_cast<ComboItem*>(item(row, 1))->setText( QString::number(todo.priority()) ); | 602 | static_cast<ComboItem*>(item(row, 1))->setText( QString::number(todo.priority()) ); |
566 | item( row, 2 )->setText( strTodo ); | 603 | item( row, 2 )->setText( strTodo ); |
567 | 604 | ||
568 | /* added 20.01.2k2 by se */ | ||
569 | if (showDeadl){ | 605 | if (showDeadl){ |
570 | if (todo.hasDate()){ | 606 | static_cast<DueTextItem*>(item(row,3))->setToDoEvent(&todo ); |
571 | QDate *today = new QDate (QDate::currentDate()); | ||
572 | if (today){ | ||
573 | item (row, 3)->setText (tr ("%1").arg(today->daysTo(todo.date()))); | ||
574 | delete (today); | ||
575 | } | ||
576 | }else{ | ||
577 | item (row, 3)->setText ("n.d."); | ||
578 | } | ||
579 | } | 607 | } |
580 | 608 | ||
581 | todoList.insert( static_cast<CheckItem*>(item(row,0)), new ToDoEvent(todo) ); | 609 | todoList.insert( static_cast<CheckItem*>(item(row,0)), new ToDoEvent(todo) ); |
582 | } | 610 | } |
583 | } | 611 | } |
584 | 612 | ||