-rw-r--r-- | core/pim/todo/tableview.cpp | 39 | ||||
-rw-r--r-- | core/pim/todo/tableview.h | 3 |
2 files changed, 36 insertions, 6 deletions
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index 34b8b3c..c4165db 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp @@ -26,4 +26,5 @@ */ +#include <stdlib.h> #include <qtimer.h> @@ -148,11 +149,9 @@ void TableView::updateView( ) { viewport()->setUpdatesEnabled( false ); - QTime t; - t.start(); setNumRows( it.count() ); if ( it.count() == 0 ) killTimer(id); + int elc = time.elapsed(); - qWarning("Adding took %d", elc/1000 ); setUpdatesEnabled( true ); viewport()->setUpdatesEnabled( true ); @@ -161,5 +160,4 @@ void TableView::updateView( ) { m_enablePaint = true; int el = time.elapsed(); - qWarning("adding took %d", el/1000 ); } void TableView::setTodo( int, const OTodo&) { @@ -258,4 +256,5 @@ void TableView::slotPressed(int row, int col, int, const QPoint& point) { + m_prevP = point; /* TextColumn column */ if ( col == 2 && cellGeometry( row, col ).contains( point ) ) @@ -285,5 +284,4 @@ void TableView::sortColumn( int col, bool asc, bool ) { } void TableView::viewportPaintEvent( QPaintEvent* e) { - qWarning("Paint event" ); if (m_enablePaint ) QTable::viewportPaintEvent( e ); @@ -436,5 +434,4 @@ void TableView::timerEvent( QTimerEvent* ev ) { int row = currentRow(); - qWarning("TimerEvent %d", row); if ( m_row ) { int ro = row-4; @@ -455,2 +452,32 @@ void TableView::timerEvent( QTimerEvent* ev ) { m_row = !m_row; } + +// We want a strike through completed ;) +// durchstreichen to complete +/* + * MouseTracking is off this mean we only receive + * these events if the mouse button is pressed + * We've the previous point saved + * We check if the previous and current Point are + * in the same row. + * Then we check if they're some pixel horizontal away + * if the distance between the two points is greater than + * 8 we mark the underlying todo as completed and do a repaint + */ +void TableView::contentsMouseReleaseEvent( QMouseEvent* e) { + int row = rowAt(m_prevP.y()); + if ( row == rowAt( e->y() ) ) { + if ( abs( m_prevP.x() - e->x() ) >= 8 ) { + OTodo todo = sorted()[row]; + todo.setCompleted( !todo.isCompleted() ); + TodoView::update( todo.uid(), todo ); + updateView(); + return; + } + } + QTable::contentsMouseReleaseEvent( e ); +} +void TableView::contentsMouseMoveEvent( QMouseEvent* e ) { + m_menuTimer->stop(); + QTable::contentsMouseMoveEvent( e ); +} diff --git a/core/pim/todo/tableview.h b/core/pim/todo/tableview.h index fe65ca9..0c3e865 100644 --- a/core/pim/todo/tableview.h +++ b/core/pim/todo/tableview.h @@ -83,4 +83,6 @@ namespace Todo { protected: + void contentsMouseReleaseEvent( QMouseEvent* ); + void contentsMouseMoveEvent( QMouseEvent* ); void timerEvent( QTimerEvent* e ); QWidget* createEditor(int row, int col, bool initFromCell )const; @@ -98,4 +100,5 @@ private slots: private: bool m_row : 1; + QPoint m_prevP; }; }; |