summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/tableview.cpp14
-rw-r--r--core/pim/todo/tableview.h2
-rw-r--r--core/pim/todo/todoview.cpp4
3 files changed, 17 insertions, 3 deletions
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp
index 6299113..743deb7 100644
--- a/core/pim/todo/tableview.cpp
+++ b/core/pim/todo/tableview.cpp
@@ -1,130 +1,142 @@
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 <>
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 30
30#include <qlineedit.h> 31#include <qlineedit.h>
31#include <qtimer.h> 32#include <qtimer.h>
32#include <qpoint.h> 33#include <qpoint.h>
33#include <qpopupmenu.h> 34#include <qpopupmenu.h>
34 35
36#include <qpe/config.h>
37
35#include "mainwindow.h" 38#include "mainwindow.h"
36//#include "tableitems.h" 39//#include "tableitems.h"
37#include "tableview.h" 40#include "tableview.h"
38 41
39using namespace Todo; 42using namespace Todo;
40 43
41namespace { 44namespace {
42 static const int BoxSize = 14; 45 static const int BoxSize = 14;
43 static const int RowHeight = 20; 46 static const int RowHeight = 20;
44} 47}
45 48
46 49
50void TableView::initConfig() {
51 Config config( "todo" );
52 config.setGroup( "Options" );
53 m_completeStrokeWidth = config.readNumEntry( "CompleteStrokeWidth", 8 );
54}
55
47TableView::TableView( MainWindow* window, QWidget* wid ) 56TableView::TableView( MainWindow* window, QWidget* wid )
48 : QTable( wid ), TodoView( window ) { 57 : QTable( wid ), TodoView( window ) {
49 setUpdatesEnabled( false ); 58 setUpdatesEnabled( false );
50 viewport()->setUpdatesEnabled( false ); 59 viewport()->setUpdatesEnabled( false );
51 m_enablePaint = false; 60 m_enablePaint = false;
52 setNumRows(0); 61 setNumRows(0);
53 setNumCols(4); 62 setNumCols(4);
54 63
55 setSorting( TRUE ); 64 setSorting( TRUE );
56 setSelectionMode( NoSelection ); 65 setSelectionMode( NoSelection );
57// setColumnStretchable( 2, TRUE ); 66// setColumnStretchable( 2, TRUE );
58 setColumnStretchable( 3, FALSE ); 67 setColumnStretchable( 3, FALSE );
59 setColumnWidth(0, 20 ); 68 setColumnWidth(0, 20 );
60 setColumnWidth(1, 35 ); 69 setColumnWidth(1, 35 );
61 setColumnWidth(3, 18 ); 70 setColumnWidth(3, 18 );
62 71
63 setLeftMargin( 0 ); 72 setLeftMargin( 0 );
64 verticalHeader()->hide(); 73 verticalHeader()->hide();
65 74
66 horizontalHeader()->setLabel(0, tr("C.") ); 75 horizontalHeader()->setLabel(0, tr("C.") );
67 horizontalHeader()->setLabel(1, tr("Prior.") ); 76 horizontalHeader()->setLabel(1, tr("Prior.") );
68 horizontalHeader()->setLabel(2, tr("Description" ) ); 77 horizontalHeader()->setLabel(2, tr("Description" ) );
69 78
70// setColumnStretchable(3, FALSE ); 79// setColumnStretchable(3, FALSE );
71 80
72 horizontalHeader()->setLabel(3, tr("Deadline") ); 81 horizontalHeader()->setLabel(3, tr("Deadline") );
73 82
74 if ( todoWindow()->showDeadline() ) 83 if ( todoWindow()->showDeadline() )
75 showColumn( 3); 84 showColumn( 3);
76 else 85 else
77 hideColumn(3 ); 86 hideColumn(3 );
78 87
79 connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ), 88 connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ),
80 this, SLOT( slotClicked(int, int, int, const QPoint& ) ) ); 89 this, SLOT( slotClicked(int, int, int, const QPoint& ) ) );
81 connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ), 90 connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ),
82 this, SLOT( slotPressed(int, int, int, const QPoint& ) ) ); 91 this, SLOT( slotPressed(int, int, int, const QPoint& ) ) );
83 connect((QTable*)this, SIGNAL(valueChanged(int, int) ), 92 connect((QTable*)this, SIGNAL(valueChanged(int, int) ),
84 this, SLOT( slotValueChanged(int, int) ) ); 93 this, SLOT( slotValueChanged(int, int) ) );
85 connect((QTable*)this, SIGNAL(currentChanged(int, int) ), 94 connect((QTable*)this, SIGNAL(currentChanged(int, int) ),
86 this, SLOT( slotCurrentChanged(int, int) ) ); 95 this, SLOT( slotCurrentChanged(int, int) ) );
87 96
88 m_menuTimer = new QTimer( this ); 97 m_menuTimer = new QTimer( this );
89 connect( m_menuTimer, SIGNAL(timeout()), 98 connect( m_menuTimer, SIGNAL(timeout()),
90 this, SLOT(slotShowMenu()) ); 99 this, SLOT(slotShowMenu()) );
91 100
92 m_enablePaint = true; 101 m_enablePaint = true;
93 setUpdatesEnabled( true ); 102 setUpdatesEnabled( true );
94 viewport()->setUpdatesEnabled( true ); 103 viewport()->setUpdatesEnabled( true );
95 viewport()->update(); 104 viewport()->update();
96 setSortOrder( 0 ); 105 setSortOrder( 0 );
97 setAscending( TRUE ); 106 setAscending( TRUE );
98 m_first = true; 107 m_first = true;
108
109 /* now let's init the config */
110 initConfig();
99} 111}
100/* a new day has started 112/* a new day has started
101 * update the day 113 * update the day
102 */ 114 */
103void TableView::newDay() { 115void TableView::newDay() {
104 clear(); 116 clear();
105 updateView(); 117 updateView();
106} 118}
107TableView::~TableView() { 119TableView::~TableView() {
108 120
109} 121}
110void TableView::slotShowMenu() { 122void TableView::slotShowMenu() {
111 QPopupMenu *menu = todoWindow()->contextMenu( current() ); 123 QPopupMenu *menu = todoWindow()->contextMenu( current() );
112 menu->exec(QCursor::pos() ); 124 menu->exec(QCursor::pos() );
113 delete menu; 125 delete menu;
114} 126}
115QString TableView::type() const { 127QString TableView::type() const {
116 return QString::fromLatin1( tr("Table View") ); 128 return QString::fromLatin1( tr("Table View") );
117} 129}
118int TableView::current() { 130int TableView::current() {
119 int uid = sorted().uidAt(currentRow() ); 131 int uid = sorted().uidAt(currentRow() );
120 qWarning("uid %d", uid ); 132 qWarning("uid %d", uid );
121 return uid; 133 return uid;
122} 134}
123QString TableView::currentRepresentation() { 135QString TableView::currentRepresentation() {
124 return text( currentRow(), 2); 136 return text( currentRow(), 2);
125} 137}
126/* show overdue */ 138/* show overdue */
127void TableView::showOverDue( bool ) { 139void TableView::showOverDue( bool ) {
128 clear(); 140 clear();
129 updateView(); 141 updateView();
130} 142}
@@ -459,47 +471,47 @@ void TableView::timerEvent( QTimerEvent* ev ) {
459 if (ro < 0 ) ro = 0; 471 if (ro < 0 ) ro = 0;
460 sorted()[ro]; 472 sorted()[ro];
461 473
462 ro = row+4; 474 ro = row+4;
463 sorted()[ro]; 475 sorted()[ro];
464 } else { 476 } else {
465 int ro = row + 8; 477 int ro = row + 8;
466 sorted()[ro]; 478 sorted()[ro];
467 479
468 ro = row-8; 480 ro = row-8;
469 if (ro < 0 ) ro = 0; 481 if (ro < 0 ) ro = 0;
470 sorted()[ro]; 482 sorted()[ro];
471 } 483 }
472 484
473 m_row = !m_row; 485 m_row = !m_row;
474} 486}
475 487
476// We want a strike through completed ;) 488// We want a strike through completed ;)
477// durchstreichen to complete 489// durchstreichen to complete
478/* 490/*
479 * MouseTracking is off this mean we only receive 491 * MouseTracking is off this mean we only receive
480 * these events if the mouse button is pressed 492 * these events if the mouse button is pressed
481 * We've the previous point saved 493 * We've the previous point saved
482 * We check if the previous and current Point are 494 * We check if the previous and current Point are
483 * in the same row. 495 * in the same row.
484 * Then we check if they're some pixel horizontal away 496 * Then we check if they're some pixel horizontal away
485 * if the distance between the two points is greater than 497 * if the distance between the two points is greater than
486 * 8 we mark the underlying todo as completed and do a repaint 498 * 8 we mark the underlying todo as completed and do a repaint
487 */ 499 */
488void TableView::contentsMouseReleaseEvent( QMouseEvent* e) { 500void TableView::contentsMouseReleaseEvent( QMouseEvent* e) {
489 int row = rowAt(m_prevP.y()); 501 int row = rowAt(m_prevP.y());
490 if ( row == rowAt( e->y() ) && row != -1 ) { 502 if ( row == rowAt( e->y() ) && row != -1 ) {
491 if ( abs( m_prevP.x() - e->x() ) >= 8 ) { 503 if ( ::abs( m_prevP.x() - e->x() ) >= m_completeStrokeWidth ) {
492 qWarning("current row %d", row ); 504 qWarning("current row %d", row );
493 OTodo todo = sorted()[row]; 505 OTodo todo = sorted()[row];
494 todo.setCompleted( !todo.isCompleted() ); 506 todo.setCompleted( !todo.isCompleted() );
495 TodoView::update( todo.uid(), todo ); 507 TodoView::update( todo.uid(), todo );
496 updateView(); 508 updateView();
497 return; 509 return;
498 } 510 }
499 } 511 }
500 QTable::contentsMouseReleaseEvent( e ); 512 QTable::contentsMouseReleaseEvent( e );
501} 513}
502void TableView::contentsMouseMoveEvent( QMouseEvent* e ) { 514void TableView::contentsMouseMoveEvent( QMouseEvent* e ) {
503 m_menuTimer->stop(); 515 m_menuTimer->stop();
504 QTable::contentsMouseMoveEvent( e ); 516 QTable::contentsMouseMoveEvent( e );
505} 517}
diff --git a/core/pim/todo/tableview.h b/core/pim/todo/tableview.h
index 0c3e865..e47b38f 100644
--- a/core/pim/todo/tableview.h
+++ b/core/pim/todo/tableview.h
@@ -69,38 +69,40 @@ namespace Todo {
69 /* 69 /*
70 * we do our drawing ourselves 70 * we do our drawing ourselves
71 * because we don't want to have 71 * because we don't want to have
72 * 40.000 QTableItems for 10.000 72 * 40.000 QTableItems for 10.000
73 * OTodos where we only show 10 at a time! 73 * OTodos where we only show 10 at a time!
74 */ 74 */
75 void paintCell(QPainter* p, int row, int col, const QRect&, bool ); 75 void paintCell(QPainter* p, int row, int col, const QRect&, bool );
76 private: 76 private:
77 /* reimplented for internal reasons */ 77 /* reimplented for internal reasons */
78 void viewportPaintEvent( QPaintEvent* ); 78 void viewportPaintEvent( QPaintEvent* );
79 QTimer *m_menuTimer; 79 QTimer *m_menuTimer;
80 bool m_enablePaint:1; 80 bool m_enablePaint:1;
81 QString m_oleCat; 81 QString m_oleCat;
82 bool m_first : 1; 82 bool m_first : 1;
83 83
84 protected: 84 protected:
85 void contentsMouseReleaseEvent( QMouseEvent* ); 85 void contentsMouseReleaseEvent( QMouseEvent* );
86 void contentsMouseMoveEvent( QMouseEvent* ); 86 void contentsMouseMoveEvent( QMouseEvent* );
87 void timerEvent( QTimerEvent* e ); 87 void timerEvent( QTimerEvent* e );
88 QWidget* createEditor(int row, int col, bool initFromCell )const; 88 QWidget* createEditor(int row, int col, bool initFromCell )const;
89 void setCellContentFromEditor( int row, int col ); 89 void setCellContentFromEditor( int row, int col );
90 90
91private slots: 91private slots:
92 void slotShowMenu(); 92 void slotShowMenu();
93 void slotClicked(int, int, int, 93 void slotClicked(int, int, int,
94 const QPoint& ); 94 const QPoint& );
95 void slotPressed(int, int, int, 95 void slotPressed(int, int, int,
96 const QPoint& ); 96 const QPoint& );
97 void slotValueChanged(int, int); 97 void slotValueChanged(int, int);
98 void slotCurrentChanged(int, int ); 98 void slotCurrentChanged(int, int );
99 void slotPriority(); 99 void slotPriority();
100 private: 100 private:
101 void initConfig();
102 int m_completeStrokeWidth;
101 bool m_row : 1; 103 bool m_row : 1;
102 QPoint m_prevP; 104 QPoint m_prevP;
103 }; 105 };
104}; 106};
105 107
106#endif 108#endif
diff --git a/core/pim/todo/todoview.cpp b/core/pim/todo/todoview.cpp
index 639fa66..4cf7d30 100644
--- a/core/pim/todo/todoview.cpp
+++ b/core/pim/todo/todoview.cpp
@@ -42,38 +42,38 @@ void TodoView::connectUpdateView( QObject* obj,
42} 42}
43void TodoView::connectRemove( QObject* obj, 43void TodoView::connectRemove( QObject* obj,
44 const char* slot ) { 44 const char* slot ) {
45 QObject::connect( hack, SIGNAL(remove(int) ), 45 QObject::connect( hack, SIGNAL(remove(int) ),
46 obj, slot ); 46 obj, slot );
47} 47}
48MainWindow* TodoView::todoWindow() { 48MainWindow* TodoView::todoWindow() {
49 return m_main; 49 return m_main;
50} 50}
51 51
52OTodo TodoView::event(int uid ) { return m_main->event( uid ); } 52OTodo TodoView::event(int uid ) { return m_main->event( uid ); }
53OTodoAccess::List TodoView::list(){ 53OTodoAccess::List TodoView::list(){
54 todoWindow()->updateList(); 54 todoWindow()->updateList();
55 return todoWindow()->list(); 55 return todoWindow()->list();
56} 56}
57OTodoAccess::List TodoView::sorted()const{ 57OTodoAccess::List TodoView::sorted()const{
58 return m_sort; 58 return m_sort;
59} 59}
60void TodoView::sort() { 60void TodoView::sort() {
61 m_sort = todoWindow()->sorted(m_asc,m_sortOrder ); 61 m_sort = todoWindow()->sorted(m_asc,m_sortOrder );
62 qWarning("m_sort.count() = %d", m_sort.count() ); 62 qWarning("m_sort.count() = %d", m_sort.count() );
63} 63}
64void TodoView::sort(int sort) { 64void TodoView::sort(int sort) {
65 m_sort = todoWindow()->sorted(m_asc, m_sortOrder, sort ); 65 m_sort = todoWindow()->sorted(m_asc, m_sortOrder, sort );
66} 66}
67void TodoView::setSortOrder( int order ) { 67void TodoView::setSortOrder( int order ) {
68 m_sortOrder = order; 68 m_sortOrder = order;
69} 69}
70void TodoView::setAscending( bool b ) { 70void TodoView::setAscending( bool b ) {
71 qWarning("setAscending %d", b ); 71 qWarning("setAscending %d", b );
72 m_asc = b; 72 m_asc = b;
73} 73}
74void TodoView::update(int uid, const SmallTodo& to ) { 74void TodoView::update(int, const SmallTodo& ) {
75 //m_main->slotUpate1( uid, to ); 75 //m_main->slotUpate1( uid, to );
76} 76}
77void TodoView::update(int uid, const OTodo& ev ) { 77void TodoView::update(int , const OTodo& ev ) {
78 m_main->updateTodo( ev ); 78 m_main->updateTodo( ev );
79} 79}