author | zecke <zecke> | 2002-10-19 00:10:15 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-10-19 00:10:15 (UTC) |
commit | e869be9990c0db11288bd196778cadd0ad6976a9 (patch) (unidiff) | |
tree | ee3474f8e5498466896e830bbeee68d618f7aff2 | |
parent | 549472ef07703ef27dc5f58a37e8f16c714fb2a1 (diff) | |
download | opie-e869be9990c0db11288bd196778cadd0ad6976a9.zip opie-e869be9990c0db11288bd196778cadd0ad6976a9.tar.gz opie-e869be9990c0db11288bd196778cadd0ad6976a9.tar.bz2 |
MainWindow setReadAhead added
Tableview we now try to read ahead in timerEvent..
the TodoView interface needs an update on this matter too...
besides that I'm quite happy with the speed and go on to implement new
features
-rw-r--r-- | core/pim/todo/mainwindow.cpp | 4 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.h | 1 | ||||
-rw-r--r-- | core/pim/todo/tableview.cpp | 54 | ||||
-rw-r--r-- | core/pim/todo/tableview.h | 3 |
4 files changed, 60 insertions, 2 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index 2994915..a6d657c 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp | |||
@@ -672,8 +672,12 @@ void MainWindow::updateTodo( const OTodo& ev) { | |||
672 | * update the view menu | 672 | * update the view menu |
673 | */ | 673 | */ |
674 | void MainWindow::slotUpdate3( QWidget* ) { | 674 | void MainWindow::slotUpdate3( QWidget* ) { |
675 | 675 | ||
676 | } | 676 | } |
677 | void MainWindow::updateList() { | 677 | void MainWindow::updateList() { |
678 | m_todoMgr.updateList(); | 678 | m_todoMgr.updateList(); |
679 | } | 679 | } |
680 | void MainWindow::setReadAhead( uint count ) { | ||
681 | if (m_todoMgr.todoDB() ) | ||
682 | m_todoMgr.todoDB()->setReadAhead( count ); | ||
683 | } | ||
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h index 8d0c29f..5a18e64 100644 --- a/core/pim/todo/mainwindow.h +++ b/core/pim/todo/mainwindow.h | |||
@@ -82,16 +82,17 @@ namespace Todo { | |||
82 | bool showOverDue()const; | 82 | bool showOverDue()const; |
83 | QString currentCategory()const; | 83 | QString currentCategory()const; |
84 | int currentCatId(); | 84 | int currentCatId(); |
85 | TemplateManager* templateManager(); | 85 | TemplateManager* templateManager(); |
86 | 86 | ||
87 | void updateTodo( const OTodo& ); | 87 | void updateTodo( const OTodo& ); |
88 | void populateTemplates(); | 88 | void populateTemplates(); |
89 | Editor* currentEditor(); | 89 | Editor* currentEditor(); |
90 | void setReadAhead(uint count ); | ||
90 | private slots: | 91 | private slots: |
91 | void populateCategories(); | 92 | void populateCategories(); |
92 | void slotReload(); | 93 | void slotReload(); |
93 | void slotFlush(); | 94 | void slotFlush(); |
94 | 95 | ||
95 | protected: | 96 | protected: |
96 | void closeEvent( QCloseEvent* e ); | 97 | void closeEvent( QCloseEvent* e ); |
97 | 98 | ||
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 | |||
@@ -121,16 +121,23 @@ QString TableView::currentRepresentation() { | |||
121 | } | 121 | } |
122 | /* show overdue */ | 122 | /* show overdue */ |
123 | void TableView::showOverDue( bool ) { | 123 | void TableView::showOverDue( bool ) { |
124 | clear(); | 124 | clear(); |
125 | updateView(); | 125 | updateView(); |
126 | } | 126 | } |
127 | 127 | ||
128 | void TableView::updateView( ) { | 128 | void 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(); |
@@ -155,17 +162,18 @@ void TableView::setTodo( int, const OTodo&) { | |||
155 | sort(); | 162 | sort(); |
156 | 163 | ||
157 | /* repaint */ | 164 | /* repaint */ |
158 | QTable::update(); | 165 | QTable::update(); |
159 | } | 166 | } |
160 | void TableView::addEvent( const OTodo&) { | 167 | void 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 | */ |
169 | void TableView::replaceEvent( const OTodo& ev) { | 177 | void TableView::replaceEvent( const OTodo& ev) { |
170 | addEvent( ev ); | 178 | addEvent( ev ); |
171 | } | 179 | } |
@@ -348,17 +356,31 @@ void TableView::paintCell(QPainter* p, int row, int col, const QRect& cr, bool | |||
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(); |
@@ -393,8 +415,36 @@ void TableView::setCellContentFromEditor(int row, int col ) { | |||
393 | updateView(); | 415 | updateView(); |
394 | } | 416 | } |
395 | } | 417 | } |
396 | } | 418 | } |
397 | } | 419 | } |
398 | void TableView::slotPriority() { | 420 | void 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 | */ | ||
430 | void 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 | } | ||
diff --git a/core/pim/todo/tableview.h b/core/pim/todo/tableview.h index bf41aea..fe65ca9 100644 --- a/core/pim/todo/tableview.h +++ b/core/pim/todo/tableview.h | |||
@@ -77,24 +77,27 @@ namespace Todo { | |||
77 | /* reimplented for internal reasons */ | 77 | /* reimplented for internal reasons */ |
78 | void viewportPaintEvent( QPaintEvent* ); | 78 | void viewportPaintEvent( QPaintEvent* ); |
79 | QTimer *m_menuTimer; | 79 | QTimer *m_menuTimer; |
80 | bool m_enablePaint:1; | 80 | bool m_enablePaint:1; |
81 | QString m_oleCat; | 81 | QString m_oleCat; |
82 | bool m_first : 1; | 82 | bool m_first : 1; |
83 | 83 | ||
84 | protected: | 84 | protected: |
85 | void timerEvent( QTimerEvent* e ); | ||
85 | QWidget* createEditor(int row, int col, bool initFromCell )const; | 86 | QWidget* createEditor(int row, int col, bool initFromCell )const; |
86 | void setCellContentFromEditor( int row, int col ); | 87 | void setCellContentFromEditor( int row, int col ); |
87 | 88 | ||
88 | private slots: | 89 | private slots: |
89 | void slotShowMenu(); | 90 | void slotShowMenu(); |
90 | void slotClicked(int, int, int, | 91 | void slotClicked(int, int, int, |
91 | const QPoint& ); | 92 | const QPoint& ); |
92 | void slotPressed(int, int, int, | 93 | void slotPressed(int, int, int, |
93 | const QPoint& ); | 94 | const QPoint& ); |
94 | void slotValueChanged(int, int); | 95 | void slotValueChanged(int, int); |
95 | void slotCurrentChanged(int, int ); | 96 | void slotCurrentChanged(int, int ); |
96 | void slotPriority(); | 97 | void slotPriority(); |
98 | private: | ||
99 | bool m_row : 1; | ||
97 | }; | 100 | }; |
98 | }; | 101 | }; |
99 | 102 | ||
100 | #endif | 103 | #endif |