author | zecke <zecke> | 2002-11-15 10:31:59 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-11-15 10:31:59 (UTC) |
commit | 5fac1f8271dc037d8d3a3a765bccc44c4734e544 (patch) (unidiff) | |
tree | 206a64d41f94217962dcf5ec7055225e8a0c2481 | |
parent | 39f256de174af80fd8ba2560e8586dda99d06b7d (diff) | |
download | opie-5fac1f8271dc037d8d3a3a765bccc44c4734e544.zip opie-5fac1f8271dc037d8d3a3a765bccc44c4734e544.tar.gz opie-5fac1f8271dc037d8d3a3a765bccc44c4734e544.tar.bz2 |
Fix #423 dealing with strike through and DueDate...
-rw-r--r-- | core/pim/todo/tableview.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index 743deb7..ded2dbd 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp | |||
@@ -1,35 +1,35 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the OPIE Project | 2 | =. This file is part of the OPIE Project |
3 | .=l. Copyright (c) 2002 <> | 3 | .=l. Copyright (c) 2002 <zecke> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This program is free software; you can | 5 | _;:, .> :=|. This program is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This program is distributed in the hope that | 12 | .i_,=:_. -<s. This program is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
17 | ..}^=.= = ; Library General Public License for more | 17 | ..}^=.= = ; Library General Public License for more |
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
20 | -. .:....=;==+<; You should have received a copy of the GNU | 20 | -. .:....=;==+<; You should have received a copy of the GNU |
21 | -_. . . )=. = Library General Public License along with | 21 | -_. . . )=. = Library General Public License along with |
22 | -- :-=` this library; see the file COPYING.LIB. | 22 | -- :-=` this library; see the file COPYING.LIB. |
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, |
24 | Inc., 59 Temple Place - Suite 330, | 24 | Inc., 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | #include <stdlib.h> | 28 | #include <stdlib.h> |
29 | #include <cmath> | 29 | #include <cmath> |
30 | 30 | ||
31 | #include <qlineedit.h> | 31 | #include <qlineedit.h> |
32 | #include <qtimer.h> | 32 | #include <qtimer.h> |
33 | #include <qpoint.h> | 33 | #include <qpoint.h> |
34 | #include <qpopupmenu.h> | 34 | #include <qpopupmenu.h> |
35 | 35 | ||
@@ -241,64 +241,65 @@ void TableView::slotClicked(int row, int col, int, | |||
241 | if ( x >= ( w - BoxSize ) / 2 && | 241 | if ( x >= ( w - BoxSize ) / 2 && |
242 | x <= ( w - BoxSize ) / 2 + BoxSize && | 242 | x <= ( w - BoxSize ) / 2 + BoxSize && |
243 | y >= ( h - BoxSize ) / 2 && | 243 | y >= ( h - BoxSize ) / 2 && |
244 | y <= ( h - BoxSize ) / 2 + BoxSize ) { | 244 | y <= ( h - BoxSize ) / 2 + BoxSize ) { |
245 | OTodo todo = sorted()[row]; | 245 | OTodo todo = sorted()[row]; |
246 | todo.setCompleted( !todo.isCompleted() ); | 246 | todo.setCompleted( !todo.isCompleted() ); |
247 | TodoView::update( todo.uid(), todo ); | 247 | TodoView::update( todo.uid(), todo ); |
248 | updateView(); | 248 | updateView(); |
249 | } | 249 | } |
250 | } | 250 | } |
251 | break; | 251 | break; |
252 | 252 | ||
253 | case 1: | 253 | case 1: |
254 | break; | 254 | break; |
255 | 255 | ||
256 | case 2: { | 256 | case 2: { |
257 | m_menuTimer->stop(); | 257 | m_menuTimer->stop(); |
258 | showTodo( ui ); | 258 | showTodo( ui ); |
259 | break; | 259 | break; |
260 | } | 260 | } |
261 | case 3: { | 261 | case 3: { |
262 | m_menuTimer->stop(); | 262 | m_menuTimer->stop(); |
263 | TodoView::edit( ui ); | 263 | TodoView::edit( ui ); |
264 | break; | 264 | break; |
265 | } | 265 | } |
266 | } | 266 | } |
267 | 267 | ||
268 | 268 | ||
269 | } | 269 | } |
270 | void TableView::slotPressed(int row, int col, int, | 270 | void TableView::slotPressed(int row, int col, int, |
271 | const QPoint& point) { | 271 | const QPoint& point) { |
272 | 272 | ||
273 | qWarning("pressed row %d col %d x:%d+y:%d", row,col,point.x(),point.y() ); | ||
273 | m_prevP = point; | 274 | m_prevP = point; |
274 | /* TextColumn column */ | 275 | /* TextColumn column */ |
275 | if ( col == 2 && cellGeometry( row, col ).contains( point ) ) | 276 | if ( col == 2 && cellGeometry( row, col ).contains( point ) ) |
276 | m_menuTimer->start( 750, TRUE ); | 277 | m_menuTimer->start( 750, TRUE ); |
277 | } | 278 | } |
278 | void TableView::slotValueChanged( int, int ) { | 279 | void TableView::slotValueChanged( int, int ) { |
279 | qWarning("Value Changed"); | 280 | qWarning("Value Changed"); |
280 | } | 281 | } |
281 | void TableView::slotCurrentChanged(int, int ) { | 282 | void TableView::slotCurrentChanged(int, int ) { |
282 | m_menuTimer->stop(); | 283 | m_menuTimer->stop(); |
283 | } | 284 | } |
284 | QWidget* TableView::widget() { | 285 | QWidget* TableView::widget() { |
285 | return this; | 286 | return this; |
286 | } | 287 | } |
287 | /* | 288 | /* |
288 | * We need to overwrite sortColumn | 289 | * We need to overwrite sortColumn |
289 | * because we want to sort whole row | 290 | * because we want to sort whole row |
290 | * based | 291 | * based |
291 | * We event want to set the setOrder | 292 | * We event want to set the setOrder |
292 | * to a sort() and update() | 293 | * to a sort() and update() |
293 | */ | 294 | */ |
294 | void TableView::sortColumn( int col, bool asc, bool ) { | 295 | void TableView::sortColumn( int col, bool asc, bool ) { |
295 | qWarning("bool %d", asc ); | 296 | qWarning("bool %d", asc ); |
296 | setSortOrder( col ); | 297 | setSortOrder( col ); |
297 | setAscending( asc ); | 298 | setAscending( asc ); |
298 | updateView(); | 299 | updateView(); |
299 | } | 300 | } |
300 | void TableView::viewportPaintEvent( QPaintEvent* e) { | 301 | void TableView::viewportPaintEvent( QPaintEvent* e) { |
301 | if (m_enablePaint ) | 302 | if (m_enablePaint ) |
302 | QTable::viewportPaintEvent( e ); | 303 | QTable::viewportPaintEvent( e ); |
303 | } | 304 | } |
304 | /* | 305 | /* |
@@ -467,51 +468,60 @@ void TableView::timerEvent( QTimerEvent* ev ) { | |||
467 | 468 | ||
468 | int row = currentRow(); | 469 | int row = currentRow(); |
469 | if ( m_row ) { | 470 | if ( m_row ) { |
470 | int ro = row-4; | 471 | int ro = row-4; |
471 | if (ro < 0 ) ro = 0; | 472 | if (ro < 0 ) ro = 0; |
472 | sorted()[ro]; | 473 | sorted()[ro]; |
473 | 474 | ||
474 | ro = row+4; | 475 | ro = row+4; |
475 | sorted()[ro]; | 476 | sorted()[ro]; |
476 | } else { | 477 | } else { |
477 | int ro = row + 8; | 478 | int ro = row + 8; |
478 | sorted()[ro]; | 479 | sorted()[ro]; |
479 | 480 | ||
480 | ro = row-8; | 481 | ro = row-8; |
481 | if (ro < 0 ) ro = 0; | 482 | if (ro < 0 ) ro = 0; |
482 | sorted()[ro]; | 483 | sorted()[ro]; |
483 | } | 484 | } |
484 | 485 | ||
485 | m_row = !m_row; | 486 | m_row = !m_row; |
486 | } | 487 | } |
487 | 488 | ||
488 | // We want a strike through completed ;) | 489 | // We want a strike through completed ;) |
489 | // durchstreichen to complete | 490 | // durchstreichen to complete |
490 | /* | 491 | /* |
491 | * MouseTracking is off this mean we only receive | 492 | * MouseTracking is off this mean we only receive |
492 | * these events if the mouse button is pressed | 493 | * these events if the mouse button is pressed |
493 | * We've the previous point saved | 494 | * We've the previous point saved |
494 | * We check if the previous and current Point are | 495 | * We check if the previous and current Point are |
495 | * in the same row. | 496 | * in the same row. |
496 | * Then we check if they're some pixel horizontal away | 497 | * Then we check if they're some pixel horizontal away |
497 | * if the distance between the two points is greater than | 498 | * if the distance between the two points is greater than |
498 | * 8 we mark the underlying todo as completed and do a repaint | 499 | * 8 we mark the underlying todo as completed and do a repaint |
500 | * | ||
501 | * BUG: When clicking on the Due column and it's scrollable | ||
502 | * the todo is marked as completed... | ||
503 | * REASON: QTable is doing auto scrolling which leads to a move | ||
504 | * in the x coordinate and this way it's able to pass the | ||
505 | * m_completeStrokeWidth criteria | ||
506 | * WORKAROUND: strike through needs to strike through the same | ||
507 | * row and two columns! | ||
499 | */ | 508 | */ |
500 | void TableView::contentsMouseReleaseEvent( QMouseEvent* e) { | 509 | void TableView::contentsMouseReleaseEvent( QMouseEvent* e) { |
501 | int row = rowAt(m_prevP.y()); | 510 | int row = rowAt(m_prevP.y()); |
502 | if ( row == rowAt( e->y() ) && row != -1 ) { | 511 | int colOld = columnAt(m_prevP.x() ); |
503 | if ( ::abs( m_prevP.x() - e->x() ) >= m_completeStrokeWidth ) { | 512 | int colNew = columnAt(e->x() ); |
504 | qWarning("current row %d", row ); | 513 | qWarning("colNew: %d colOld: %d", colNew, colOld ); |
514 | if ( row == rowAt( e->y() ) && row != -1 && | ||
515 | colOld != colNew ) { | ||
505 | OTodo todo = sorted()[row]; | 516 | OTodo todo = sorted()[row]; |
506 | todo.setCompleted( !todo.isCompleted() ); | 517 | todo.setCompleted( !todo.isCompleted() ); |
507 | TodoView::update( todo.uid(), todo ); | 518 | TodoView::update( todo.uid(), todo ); |
508 | updateView(); | 519 | updateView(); |
509 | return; | 520 | return; |
510 | } | ||
511 | } | 521 | } |
512 | QTable::contentsMouseReleaseEvent( e ); | 522 | QTable::contentsMouseReleaseEvent( e ); |
513 | } | 523 | } |
514 | void TableView::contentsMouseMoveEvent( QMouseEvent* e ) { | 524 | void TableView::contentsMouseMoveEvent( QMouseEvent* e ) { |
515 | m_menuTimer->stop(); | 525 | m_menuTimer->stop(); |
516 | QTable::contentsMouseMoveEvent( e ); | 526 | QTable::contentsMouseMoveEvent( e ); |
517 | } | 527 | } |