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,15 +1,15 @@ | |||
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 |
@@ -261,24 +261,25 @@ void TableView::slotClicked(int row, int col, int, | |||
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() { |
@@ -487,31 +488,40 @@ void TableView::timerEvent( QTimerEvent* ev ) { | |||
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 | } |