summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-20 12:10:31 (UTC)
committer zecke <zecke>2002-10-20 12:10:31 (UTC)
commit7948b5910a098d05f4cc7d0fb14b0f216bf41358 (patch) (side-by-side diff)
treec7765042be7eb4373ea90145f1e218fee0cd1c3a
parent940ba90ed4375f79b6a4934d290abf83980b77ad (diff)
downloadopie-7948b5910a098d05f4cc7d0fb14b0f216bf41358.zip
opie-7948b5910a098d05f4cc7d0fb14b0f216bf41358.tar.gz
opie-7948b5910a098d05f4cc7d0fb14b0f216bf41358.tar.bz2
Strike through a row to complete the Record ;)^
Diffstat (more/less context) (show 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
@@ -16,24 +16,25 @@
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
+#include <stdlib.h>
#include <qtimer.h>
#include <qpoint.h>
#include <qpopupmenu.h>
#include "mainwindow.h"
//#include "tableitems.h"
#include "tableview.h"
using namespace Todo;
namespace {
@@ -138,38 +139,35 @@ void TableView::updateView( ) {
sort();
OTodoAccess::List::Iterator it, end;
it = sorted().begin();
end = sorted().end();
qWarning("setTodos");
QTime time;
time.start();
m_enablePaint = false;
setUpdatesEnabled( false );
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 );
viewport()->update();
m_enablePaint = true;
int el = time.elapsed();
- qWarning("adding took %d", el/1000 );
}
void TableView::setTodo( int, const OTodo&) {
sort();
/* repaint */
repaint();
}
void TableView::addEvent( const OTodo&) {
/* fix problems of not showing the 'Haken' */
updateView();
}
@@ -248,24 +246,25 @@ void TableView::slotClicked(int row, int col, int,
case 3: {
m_menuTimer->stop();
TodoView::edit( ui );
break;
}
}
}
void TableView::slotPressed(int row, int col, int,
const QPoint& point) {
+ m_prevP = point;
/* TextColumn column */
if ( col == 2 && cellGeometry( row, col ).contains( point ) )
m_menuTimer->start( 750, TRUE );
}
void TableView::slotValueChanged( int, int ) {
qWarning("Value Changed");
}
void TableView::slotCurrentChanged(int, int ) {
m_menuTimer->stop();
}
QWidget* TableView::widget() {
return this;
@@ -275,25 +274,24 @@ QWidget* TableView::widget() {
* because we want to sort whole row
* based
* We event want to set the setOrder
* to a sort() and update()
*/
void TableView::sortColumn( int col, bool asc, bool ) {
qWarning("bool %d", asc );
setSortOrder( col );
setAscending( asc );
updateView();
}
void TableView::viewportPaintEvent( QPaintEvent* e) {
- qWarning("Paint event" );
if (m_enablePaint )
QTable::viewportPaintEvent( e );
}
/*
* This segment is copyrighted by TT
* it was taken from their todolist
* application this code is GPL
*/
void TableView::paintCell(QPainter* p, int row, int col, const QRect& cr, bool ) {
const QColorGroup &cg = colorGroup();
p->save();
@@ -426,31 +424,60 @@ void TableView::slotPriority() {
/*
* We'll use the TimerEvent to read ahead or to keep the cahce always
* filled enough.
* We will try to read ahead 4 items in both ways
* up and down. On odd or even we will currentRow()+-4 or +-9
*
*/
void TableView::timerEvent( QTimerEvent* ev ) {
if (sorted().count() == 0 )
return;
int row = currentRow();
- qWarning("TimerEvent %d", row);
if ( m_row ) {
int ro = row-4;
if (ro < 0 ) ro = 0;
sorted()[ro];
ro = row+4;
sorted()[ro];
} else {
int ro = row + 8;
sorted()[ro];
ro = row-8;
if (ro < 0 ) ro = 0;
sorted()[ro];
}
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
@@ -73,31 +73,34 @@ namespace Todo {
* OTodos where we only show 10 at a time!
*/
void paintCell(QPainter* p, int row, int col, const QRect&, bool );
private:
/* reimplented for internal reasons */
void viewportPaintEvent( QPaintEvent* );
QTimer *m_menuTimer;
bool m_enablePaint:1;
QString m_oleCat;
bool m_first : 1;
protected:
+ void contentsMouseReleaseEvent( QMouseEvent* );
+ void contentsMouseMoveEvent( QMouseEvent* );
void timerEvent( QTimerEvent* e );
QWidget* createEditor(int row, int col, bool initFromCell )const;
void setCellContentFromEditor( int row, int col );
private slots:
void slotShowMenu();
void slotClicked(int, int, int,
const QPoint& );
void slotPressed(int, int, int,
const QPoint& );
void slotValueChanged(int, int);
void slotCurrentChanged(int, int );
void slotPriority();
private:
bool m_row : 1;
+ QPoint m_prevP;
};
};
#endif