summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/tableview.cpp39
-rw-r--r--core/pim/todo/tableview.h3
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;
};
};