summaryrefslogtreecommitdiff
path: root/core/pim/todo/tableview.cpp
Unidiff
Diffstat (limited to 'core/pim/todo/tableview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/tableview.cpp54
1 files changed, 52 insertions, 2 deletions
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp
index 5d82eb2..f4b898f 100644
--- a/core/pim/todo/tableview.cpp
+++ b/core/pim/todo/tableview.cpp
@@ -117,24 +117,31 @@ int TableView::current() {
117 return uid; 117 return uid;
118} 118}
119QString TableView::currentRepresentation() { 119QString TableView::currentRepresentation() {
120 return text( currentRow(), 2); 120 return text( currentRow(), 2);
121} 121}
122/* show overdue */ 122/* show overdue */
123void TableView::showOverDue( bool ) { 123void TableView::showOverDue( bool ) {
124 clear(); 124 clear();
125 updateView(); 125 updateView();
126} 126}
127 127
128void TableView::updateView( ) { 128void TableView::updateView( ) {
129 m_row = false;
130 startTimer( 2000 );
131 /* FIXME we want one page to be read!
132 *
133 * Calculate that screensize
134 */
135 todoWindow()->setReadAhead( 4 );
129 sort(); 136 sort();
130 OTodoAccess::List::Iterator it, end; 137 OTodoAccess::List::Iterator it, end;
131 it = sorted().begin(); 138 it = sorted().begin();
132 end = sorted().end(); 139 end = sorted().end();
133 140
134 qWarning("setTodos"); 141 qWarning("setTodos");
135 QTime time; 142 QTime time;
136 time.start(); 143 time.start();
137 m_enablePaint = false; 144 m_enablePaint = false;
138 setUpdatesEnabled( false ); 145 setUpdatesEnabled( false );
139 viewport()->setUpdatesEnabled( false ); 146 viewport()->setUpdatesEnabled( false );
140 147
@@ -151,25 +158,26 @@ void TableView::updateView( ) {
151 int el = time.elapsed(); 158 int el = time.elapsed();
152 qWarning("adding took %d", el/1000 ); 159 qWarning("adding took %d", el/1000 );
153} 160}
154void TableView::setTodo( int, const OTodo&) { 161void TableView::setTodo( int, const OTodo&) {
155 sort(); 162 sort();
156 163
157 /* repaint */ 164 /* repaint */
158 QTable::update(); 165 QTable::update();
159} 166}
160void TableView::addEvent( const OTodo&) { 167void TableView::addEvent( const OTodo&) {
161 sort(); 168 sort();
162 169
163 QTable::update(); 170 /* fix problems of not showing the 'Haken' */
171 QTable::repaint();
164} 172}
165/* 173/*
166 * find the event 174 * find the event
167 * and then replace the complete row 175 * and then replace the complete row
168 */ 176 */
169void TableView::replaceEvent( const OTodo& ev) { 177void TableView::replaceEvent( const OTodo& ev) {
170 addEvent( ev ); 178 addEvent( ev );
171} 179}
172/* 180/*
173 * re aligning table can be slow too 181 * re aligning table can be slow too
174 * FIXME: look what performs better 182 * FIXME: look what performs better
175 * either this or the old align table 183 * either this or the old align table
@@ -344,25 +352,39 @@ void TableView::paintCell(QPainter* p, int row, int col, const QRect& cr, bool
344 // description field 352 // description field
345 { 353 {
346 QString text = task.summary().isEmpty() ? 354 QString text = task.summary().isEmpty() ?
347 task.description() : 355 task.description() :
348 task.summary(); 356 task.summary();
349 p->drawText(2,2 + fm.ascent(), text); 357 p->drawText(2,2 + fm.ascent(), text);
350 } 358 }
351 break; 359 break;
352 case 3: 360 case 3:
353 { 361 {
354 QString text; 362 QString text;
355 if (task.hasDueDate()) { 363 if (task.hasDueDate()) {
356 text = "HAS"; 364 int off = QDate::currentDate().daysTo( task.dueDate() );
365 text = QString::number(off) + tr(" day(s)");
366 /*
367 * set color if not completed
368 */
369 if (!task.isCompleted() ) {
370 QColor color = Qt::black;
371 if ( off < 0 )
372 color = Qt::red;
373 else if ( off == 0 )
374 color = Qt::yellow;
375 else if ( off > 0 )
376 color = Qt::green;
377 p->setPen(color );
378 }
357 } else { 379 } else {
358 text = tr("None"); 380 text = tr("None");
359 } 381 }
360 p->drawText(2,2 + fm.ascent(), text); 382 p->drawText(2,2 + fm.ascent(), text);
361 } 383 }
362 break; 384 break;
363 } 385 }
364 p->restore(); 386 p->restore();
365} 387}
366QWidget* TableView::createEditor(int row, int col, bool )const { 388QWidget* TableView::createEditor(int row, int col, bool )const {
367 switch( col ) { 389 switch( col ) {
368 case 1: { 390 case 1: {
@@ -389,12 +411,40 @@ void TableView::setCellContentFromEditor(int row, int col ) {
389 OTodo todo = sorted()[row]; 411 OTodo todo = sorted()[row];
390 if ( todo.priority() != pri ) { 412 if ( todo.priority() != pri ) {
391 todo.setPriority( pri ); 413 todo.setPriority( pri );
392 TodoView::update( todo.uid(), todo ); 414 TodoView::update( todo.uid(), todo );
393 updateView(); 415 updateView();
394 } 416 }
395 } 417 }
396 } 418 }
397} 419}
398void TableView::slotPriority() { 420void TableView::slotPriority() {
399 setCellContentFromEditor( currentRow(), currentColumn() ); 421 setCellContentFromEditor( currentRow(), currentColumn() );
400} 422}
423/*
424 * We'll use the TimerEvent to read ahead or to keep the cahce always
425 * filled enough.
426 * We will try to read ahead 4 items in both ways
427 * up and down. On odd or even we will currentRow()+-4 or +-9
428 *
429 */
430void TableView::timerEvent( QTimerEvent* ev ) {
431 int row = currentRow();
432 qWarning("TimerEvent %d", row);
433 if ( m_row ) {
434 int ro = row-4;
435 if (ro < 0 ) ro = 0;
436 sorted()[ro];
437
438 ro = row+4;
439 sorted()[ro];
440 } else {
441 int ro = row + 8;
442 sorted()[ro];
443
444 ro = row-8;
445 if (ro < 0 ) ro = 0;
446 sorted()[ro];
447 }
448
449 m_row = !m_row;
450}