summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/mainwindow.cpp4
-rw-r--r--core/pim/todo/mainwindow.h1
-rw-r--r--core/pim/todo/tableview.cpp54
-rw-r--r--core/pim/todo/tableview.h3
4 files changed, 60 insertions, 2 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp
index 2994915..a6d657c 100644
--- a/core/pim/todo/mainwindow.cpp
+++ b/core/pim/todo/mainwindow.cpp
@@ -552,128 +552,132 @@ void MainWindow::slotBeam() {
552 Ir* ir = new Ir(this ); 552 Ir* ir = new Ir(this );
553 connect(ir, SIGNAL(done(Ir*) ), 553 connect(ir, SIGNAL(done(Ir*) ),
554 this, SLOT(beamDone(Ir*) ) ); 554 this, SLOT(beamDone(Ir*) ) );
555 ir->send( beamfile, todo.summary(), "text/x-vCalendar" ); 555 ir->send( beamfile, todo.summary(), "text/x-vCalendar" );
556 556
557} 557}
558void MainWindow::beamDone( Ir* ir) { 558void MainWindow::beamDone( Ir* ir) {
559 delete ir; 559 delete ir;
560 ::unlink( beamfile ); 560 ::unlink( beamfile );
561} 561}
562void MainWindow::receiveFile( const QString& filename ) { 562void MainWindow::receiveFile( const QString& filename ) {
563 OTodoAccessVCal* cal = new OTodoAccessVCal(filename ); 563 OTodoAccessVCal* cal = new OTodoAccessVCal(filename );
564 OTodoAccess acc( cal ); 564 OTodoAccess acc( cal );
565 acc.load(); 565 acc.load();
566 OTodoAccess::List list = acc.allRecords(); 566 OTodoAccess::List list = acc.allRecords();
567 567
568 QString message = tr("<P>%1 new tasks arrived.<p>Would you like to add them to your Todolist?").arg(list.count() ); 568 QString message = tr("<P>%1 new tasks arrived.<p>Would you like to add them to your Todolist?").arg(list.count() );
569 569
570 if ( QMessageBox::information(this, tr("New Tasks"), 570 if ( QMessageBox::information(this, tr("New Tasks"),
571 message, QMessageBox::Ok, 571 message, QMessageBox::Ok,
572 QMessageBox::Cancel ) == QMessageBox::Ok ) { 572 QMessageBox::Cancel ) == QMessageBox::Ok ) {
573 OTodoAccess::List::Iterator it; 573 OTodoAccess::List::Iterator it;
574 for ( it = list.begin(); it != list.end(); ++it ) 574 for ( it = list.begin(); it != list.end(); ++it )
575 m_todoMgr.add( (*it) ); 575 m_todoMgr.add( (*it) );
576 576
577 currentView()->updateView(); 577 currentView()->updateView();
578 } 578 }
579} 579}
580 580
581void MainWindow::slotFlush() { 581void MainWindow::slotFlush() {
582 m_syncing = FALSE; 582 m_syncing = FALSE;
583 m_todoMgr.save(); 583 m_todoMgr.save();
584} 584}
585void MainWindow::slotShowDetails() { 585void MainWindow::slotShowDetails() {
586 slotShow( currentView()->current() ); 586 slotShow( currentView()->current() );
587} 587}
588/* 588/*
589 * populate the Categories 589 * populate the Categories
590 * Menu 590 * Menu
591 */ 591 */
592void MainWindow::populateCategories() { 592void MainWindow::populateCategories() {
593 m_todoMgr.load(); 593 m_todoMgr.load();
594 594
595 m_catMenu->clear(); 595 m_catMenu->clear();
596 int id, rememberId; 596 int id, rememberId;
597 id = 1; 597 id = 1;
598 rememberId = 1; 598 rememberId = 1;
599 599
600 m_catMenu->insertItem( tr( "All Categories" ), id++ ); 600 m_catMenu->insertItem( tr( "All Categories" ), id++ );
601 m_catMenu->insertSeparator(); 601 m_catMenu->insertSeparator();
602 QStringList categories = m_todoMgr.categories(); 602 QStringList categories = m_todoMgr.categories();
603 categories.append( tr( "Unfiled" ) ); 603 categories.append( tr( "Unfiled" ) );
604 for ( QStringList::Iterator it = categories.begin(); 604 for ( QStringList::Iterator it = categories.begin();
605 it != categories.end(); ++it ) { 605 it != categories.end(); ++it ) {
606 m_catMenu->insertItem( *it, id ); 606 m_catMenu->insertItem( *it, id );
607 if ( *it == currentCategory() ) 607 if ( *it == currentCategory() )
608 rememberId = id; 608 rememberId = id;
609 ++id; 609 ++id;
610 } 610 }
611 setCategory( rememberId ); 611 setCategory( rememberId );
612} 612}
613bool MainWindow::showCompleted()const { 613bool MainWindow::showCompleted()const {
614 return m_completed; 614 return m_completed;
615} 615}
616bool MainWindow::showDeadline()const { 616bool MainWindow::showDeadline()const {
617 return m_deadline; 617 return m_deadline;
618} 618}
619QString MainWindow::currentCategory()const { 619QString MainWindow::currentCategory()const {
620 return m_curCat; 620 return m_curCat;
621} 621}
622int MainWindow::currentCatId() { 622int MainWindow::currentCatId() {
623 return m_todoMgr.catId( m_curCat ); 623 return m_todoMgr.catId( m_curCat );
624} 624}
625ViewBase* MainWindow::currentView() { 625ViewBase* MainWindow::currentView() {
626 return m_curView; 626 return m_curView;
627} 627}
628void MainWindow::raiseCurrentView() { 628void MainWindow::raiseCurrentView() {
629 m_stack->raiseWidget( m_curView->widget() ); 629 m_stack->raiseWidget( m_curView->widget() );
630} 630}
631void MainWindow::slotShowDue(bool ov) { 631void MainWindow::slotShowDue(bool ov) {
632 m_overdue = ov; 632 m_overdue = ov;
633 currentView()->showOverDue( ov ); 633 currentView()->showOverDue( ov );
634 raiseCurrentView(); 634 raiseCurrentView();
635} 635}
636void MainWindow::slotShow( int uid ) { 636void MainWindow::slotShow( int uid ) {
637 qWarning("slotShow"); 637 qWarning("slotShow");
638 currentShow()->slotShow( event( uid ) ); 638 currentShow()->slotShow( event( uid ) );
639 m_stack->raiseWidget( currentShow()->widget() ); 639 m_stack->raiseWidget( currentShow()->widget() );
640} 640}
641void MainWindow::slotEdit( int uid ) { 641void MainWindow::slotEdit( int uid ) {
642 if(m_syncing) { 642 if(m_syncing) {
643 QMessageBox::warning(this, tr("Todo"), 643 QMessageBox::warning(this, tr("Todo"),
644 tr("Can not edit data, currently syncing")); 644 tr("Can not edit data, currently syncing"));
645 return; 645 return;
646 } 646 }
647 647
648 OTodo todo = m_todoMgr.event( uid ); 648 OTodo todo = m_todoMgr.event( uid );
649 649
650 todo = currentEditor()->edit(this, todo ); 650 todo = currentEditor()->edit(this, todo );
651 651
652 /* if completed */ 652 /* if completed */
653 if ( currentEditor()->accepted() ) { 653 if ( currentEditor()->accepted() ) {
654 qWarning("Replacing now" ); 654 qWarning("Replacing now" );
655 m_todoMgr.update( todo.uid(), todo ); 655 m_todoMgr.update( todo.uid(), todo );
656 currentView()->replaceEvent( todo ); 656 currentView()->replaceEvent( todo );
657 /* a Category might have changed */ 657 /* a Category might have changed */
658 populateCategories(); 658 populateCategories();
659 } 659 }
660 660
661 raiseCurrentView(); 661 raiseCurrentView();
662} 662}
663/* 663/*
664void MainWindow::slotUpdate1( int uid, const SmallTodo& ev) { 664void MainWindow::slotUpdate1( int uid, const SmallTodo& ev) {
665 m_todoMgr.update( uid, ev ); 665 m_todoMgr.update( uid, ev );
666} 666}
667*/ 667*/
668void MainWindow::updateTodo( const OTodo& ev) { 668void MainWindow::updateTodo( const OTodo& ev) {
669 m_todoMgr.update( ev.uid() , ev ); 669 m_todoMgr.update( ev.uid() , ev );
670} 670}
671/* The view changed it's configuration 671/* The view changed it's configuration
672 * update the view menu 672 * update the view menu
673 */ 673 */
674void MainWindow::slotUpdate3( QWidget* ) { 674void MainWindow::slotUpdate3( QWidget* ) {
675 675
676} 676}
677void MainWindow::updateList() { 677void MainWindow::updateList() {
678 m_todoMgr.updateList(); 678 m_todoMgr.updateList();
679} 679}
680void MainWindow::setReadAhead( uint count ) {
681 if (m_todoMgr.todoDB() )
682 m_todoMgr.todoDB()->setReadAhead( count );
683}
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h
index 8d0c29f..5a18e64 100644
--- a/core/pim/todo/mainwindow.h
+++ b/core/pim/todo/mainwindow.h
@@ -1,176 +1,177 @@
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 Holger Freyther <zecke@handhelds.org> 3             .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
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 28
29#ifndef TODO_MAIN_WINDOW_H 29#ifndef TODO_MAIN_WINDOW_H
30#define TODO_MAIN_WINDOW_H 30#define TODO_MAIN_WINDOW_H
31 31
32#include <qlist.h> 32#include <qlist.h>
33#include <qmainwindow.h> 33#include <qmainwindow.h>
34 34
35#include <opie/otodoaccess.h> 35#include <opie/otodoaccess.h>
36#include <opie/otodo.h> 36#include <opie/otodo.h>
37 37
38#include "smalltodo.h" 38#include "smalltodo.h"
39#include "todoview.h" 39#include "todoview.h"
40#include "todomanager.h" 40#include "todomanager.h"
41 41
42class QPopupMenu; 42class QPopupMenu;
43class QMenuBar; 43class QMenuBar;
44class QToolBar; 44class QToolBar;
45class QAction; 45class QAction;
46class QWidgetStack; 46class QWidgetStack;
47class Ir; 47class Ir;
48 48
49 49
50namespace Todo { 50namespace Todo {
51 typedef TodoView View; 51 typedef TodoView View;
52 class TemplateManager; 52 class TemplateManager;
53 class Editor; 53 class Editor;
54 class TodoShow; 54 class TodoShow;
55 class TemplateEditor; 55 class TemplateEditor;
56 56
57 class MainWindow : public QMainWindow { 57 class MainWindow : public QMainWindow {
58 Q_OBJECT 58 Q_OBJECT
59 public: 59 public:
60 MainWindow( QWidget *parent = 0, 60 MainWindow( QWidget *parent = 0,
61 const char* name = 0 ); 61 const char* name = 0 );
62 ~MainWindow(); 62 ~MainWindow();
63 63
64 /** return a context menu for an OTodo */ 64 /** return a context menu for an OTodo */
65 QPopupMenu* contextMenu(int uid ); 65 QPopupMenu* contextMenu(int uid );
66 QPopupMenu* options(); 66 QPopupMenu* options();
67 QPopupMenu* edit(); 67 QPopupMenu* edit();
68 QPopupMenu* view(); 68 QPopupMenu* view();
69 QToolBar* toolbar(); 69 QToolBar* toolbar();
70 70
71 71
72 void updateList(); 72 void updateList();
73 OTodoAccess::List list()const; 73 OTodoAccess::List list()const;
74 OTodoAccess::List sorted( bool asc, int sortOrder ); 74 OTodoAccess::List sorted( bool asc, int sortOrder );
75 OTodoAccess::List sorted( bool asc, int sortOrder, int addFilter ); 75 OTodoAccess::List sorted( bool asc, int sortOrder, int addFilter );
76 76
77 OTodo event(int uid ); 77 OTodo event(int uid );
78 78
79 bool isSyncing()const; 79 bool isSyncing()const;
80 bool showCompleted()const; 80 bool showCompleted()const;
81 bool showDeadline()const; 81 bool showDeadline()const;
82 bool showOverDue()const; 82 bool showOverDue()const;
83 QString currentCategory()const; 83 QString currentCategory()const;
84 int currentCatId(); 84 int currentCatId();
85 TemplateManager* templateManager(); 85 TemplateManager* templateManager();
86 86
87 void updateTodo( const OTodo& ); 87 void updateTodo( const OTodo& );
88 void populateTemplates(); 88 void populateTemplates();
89 Editor* currentEditor(); 89 Editor* currentEditor();
90 void setReadAhead(uint count );
90private slots: 91private slots:
91 void populateCategories(); 92 void populateCategories();
92 void slotReload(); 93 void slotReload();
93 void slotFlush(); 94 void slotFlush();
94 95
95 protected: 96 protected:
96 void closeEvent( QCloseEvent* e ); 97 void closeEvent( QCloseEvent* e );
97 98
98 private: 99 private:
99 void receiveFile( const QString& filename ); 100 void receiveFile( const QString& filename );
100 void connectBase( ViewBase* ); 101 void connectBase( ViewBase* );
101 void initUI(); 102 void initUI();
102 void initActions(); 103 void initActions();
103 void initConfig(); 104 void initConfig();
104 void initViews(); 105 void initViews();
105 void initEditor(); 106 void initEditor();
106 void initShow(); 107 void initShow();
107 void initTemplate(); 108 void initTemplate();
108 void raiseCurrentView(); 109 void raiseCurrentView();
109 ViewBase* currentView(); 110 ViewBase* currentView();
110 ViewBase* m_curView; 111 ViewBase* m_curView;
111 Editor* m_curEdit; 112 Editor* m_curEdit;
112 TodoShow* currentShow(); 113 TodoShow* currentShow();
113 TodoShow* m_curShow; 114 TodoShow* m_curShow;
114 TemplateEditor* currentTemplateEditor(); 115 TemplateEditor* currentTemplateEditor();
115 TemplateEditor* m_curTempEd; 116 TemplateEditor* m_curTempEd;
116 117
117 QMenuBar* m_bar; 118 QMenuBar* m_bar;
118 QToolBar* m_tool; 119 QToolBar* m_tool;
119 QAction* m_editAction, 120 QAction* m_editAction,
120 *m_deleteAction, 121 *m_deleteAction,
121 *m_findAction, 122 *m_findAction,
122 *m_completedAction, 123 *m_completedAction,
123 *m_showDeadLineAction, 124 *m_showDeadLineAction,
124 *m_deleteAllAction, 125 *m_deleteAllAction,
125 *m_deleteCompleteAction, 126 *m_deleteCompleteAction,
126 *m_duplicateAction, 127 *m_duplicateAction,
127 *m_showOverDueAction, 128 *m_showOverDueAction,
128 *m_effectiveAction; 129 *m_effectiveAction;
129 QWidgetStack *m_stack; 130 QWidgetStack *m_stack;
130 QPopupMenu* m_catMenu, 131 QPopupMenu* m_catMenu,
131 *m_edit, 132 *m_edit,
132 *m_options, 133 *m_options,
133 *m_view, 134 *m_view,
134 *m_template; 135 *m_template;
135 136
136 bool m_syncing:1; 137 bool m_syncing:1;
137 bool m_deadline:1; 138 bool m_deadline:1;
138 bool m_completed:1; 139 bool m_completed:1;
139 bool m_overdue:1; 140 bool m_overdue:1;
140 TodoManager m_todoMgr; 141 TodoManager m_todoMgr;
141 QString m_curCat; 142 QString m_curCat;
142 QList<ViewBase> m_views; 143 QList<ViewBase> m_views;
143 uint m_counter; 144 uint m_counter;
144 TemplateManager* m_tempManager; 145 TemplateManager* m_tempManager;
145 146
146 private slots: 147 private slots:
147 void slotShow(int); 148 void slotShow(int);
148 void slotEdit(int); 149 void slotEdit(int);
149private slots: 150private slots:
150 void slotUpdate3( QWidget* ); 151 void slotUpdate3( QWidget* );
151 void slotNewFromTemplate(int id ); 152 void slotNewFromTemplate(int id );
152 void slotNew(); 153 void slotNew();
153 void slotDuplicate(); 154 void slotDuplicate();
154 void slotDelete(); 155 void slotDelete();
155 void slotDeleteAll(); 156 void slotDeleteAll();
156 void slotDeleteCompleted(); 157 void slotDeleteCompleted();
157 158
158 void slotEdit(); 159 void slotEdit();
159 void slotFind(); 160 void slotFind();
160 161
161 void setCategory( int ); 162 void setCategory( int );
162 163
163 void slotShowDeadLine( bool ); 164 void slotShowDeadLine( bool );
164 void slotShowCompleted( bool ); 165 void slotShowCompleted( bool );
165 166
166 void setDocument( const QString& ); 167 void setDocument( const QString& );
167 168
168 169
169 void slotBeam(); 170 void slotBeam();
170 void beamDone( Ir* ); 171 void beamDone( Ir* );
171 void slotShowDetails(); 172 void slotShowDetails();
172 void slotShowDue( bool ); 173 void slotShowDue( bool );
173 }; 174 };
174}; 175};
175 176
176#endif 177#endif
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp
index 5d82eb2..f4b898f 100644
--- a/core/pim/todo/tableview.cpp
+++ b/core/pim/todo/tableview.cpp
@@ -1,400 +1,450 @@
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 28
29#include <qtimer.h> 29#include <qtimer.h>
30#include <qpoint.h> 30#include <qpoint.h>
31#include <qpopupmenu.h> 31#include <qpopupmenu.h>
32 32
33#include "mainwindow.h" 33#include "mainwindow.h"
34//#include "tableitems.h" 34//#include "tableitems.h"
35#include "tableview.h" 35#include "tableview.h"
36 36
37using namespace Todo; 37using namespace Todo;
38 38
39namespace { 39namespace {
40 static const int BoxSize = 14; 40 static const int BoxSize = 14;
41 static const int RowHeight = 20; 41 static const int RowHeight = 20;
42} 42}
43 43
44 44
45TableView::TableView( MainWindow* window, QWidget* wid ) 45TableView::TableView( MainWindow* window, QWidget* wid )
46 : QTable( wid ), TodoView( window ) { 46 : QTable( wid ), TodoView( window ) {
47 setUpdatesEnabled( false ); 47 setUpdatesEnabled( false );
48 viewport()->setUpdatesEnabled( false ); 48 viewport()->setUpdatesEnabled( false );
49 m_enablePaint = false; 49 m_enablePaint = false;
50 setNumRows(0); 50 setNumRows(0);
51 setNumCols(4); 51 setNumCols(4);
52 52
53 setSorting( TRUE ); 53 setSorting( TRUE );
54 setSelectionMode( NoSelection ); 54 setSelectionMode( NoSelection );
55 setColumnStretchable( 2, TRUE ); 55 setColumnStretchable( 2, TRUE );
56 setColumnWidth(0, 20 ); 56 setColumnWidth(0, 20 );
57 setColumnWidth(1, 35 ); 57 setColumnWidth(1, 35 );
58 58
59 setLeftMargin( 0 ); 59 setLeftMargin( 0 );
60 verticalHeader()->hide(); 60 verticalHeader()->hide();
61 61
62 horizontalHeader()->setLabel(0, tr("C.") ); 62 horizontalHeader()->setLabel(0, tr("C.") );
63 horizontalHeader()->setLabel(1, tr("Prior.") ); 63 horizontalHeader()->setLabel(1, tr("Prior.") );
64 horizontalHeader()->setLabel(2, tr("Description" ) ); 64 horizontalHeader()->setLabel(2, tr("Description" ) );
65 65
66 setColumnStretchable(3, FALSE ); 66 setColumnStretchable(3, FALSE );
67 setColumnWidth(3, 20 ); 67 setColumnWidth(3, 20 );
68 horizontalHeader()->setLabel(3, tr("Deadline") ); 68 horizontalHeader()->setLabel(3, tr("Deadline") );
69 69
70 if ( todoWindow()->showDeadline() ) 70 if ( todoWindow()->showDeadline() )
71 showColumn( 3); 71 showColumn( 3);
72 else 72 else
73 hideColumn(3 ); 73 hideColumn(3 );
74 74
75 connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ), 75 connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ),
76 this, SLOT( slotClicked(int, int, int, const QPoint& ) ) ); 76 this, SLOT( slotClicked(int, int, int, const QPoint& ) ) );
77 connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ), 77 connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ),
78 this, SLOT( slotPressed(int, int, int, const QPoint& ) ) ); 78 this, SLOT( slotPressed(int, int, int, const QPoint& ) ) );
79 connect((QTable*)this, SIGNAL(valueChanged(int, int) ), 79 connect((QTable*)this, SIGNAL(valueChanged(int, int) ),
80 this, SLOT( slotValueChanged(int, int) ) ); 80 this, SLOT( slotValueChanged(int, int) ) );
81 connect((QTable*)this, SIGNAL(currentChanged(int, int) ), 81 connect((QTable*)this, SIGNAL(currentChanged(int, int) ),
82 this, SLOT( slotCurrentChanged(int, int) ) ); 82 this, SLOT( slotCurrentChanged(int, int) ) );
83 83
84 m_menuTimer = new QTimer( this ); 84 m_menuTimer = new QTimer( this );
85 connect( m_menuTimer, SIGNAL(timeout()), 85 connect( m_menuTimer, SIGNAL(timeout()),
86 this, SLOT(slotShowMenu()) ); 86 this, SLOT(slotShowMenu()) );
87 87
88 m_enablePaint = true; 88 m_enablePaint = true;
89 setUpdatesEnabled( true ); 89 setUpdatesEnabled( true );
90 viewport()->setUpdatesEnabled( true ); 90 viewport()->setUpdatesEnabled( true );
91 viewport()->update(); 91 viewport()->update();
92 setSortOrder( 0 ); 92 setSortOrder( 0 );
93 setAscending( TRUE ); 93 setAscending( TRUE );
94 m_first = true; 94 m_first = true;
95} 95}
96/* a new day has started 96/* a new day has started
97 * update the day 97 * update the day
98 */ 98 */
99void TableView::newDay() { 99void TableView::newDay() {
100 clear(); 100 clear();
101 updateView(); 101 updateView();
102} 102}
103TableView::~TableView() { 103TableView::~TableView() {
104 104
105} 105}
106void TableView::slotShowMenu() { 106void TableView::slotShowMenu() {
107 QPopupMenu *menu = todoWindow()->contextMenu( current() ); 107 QPopupMenu *menu = todoWindow()->contextMenu( current() );
108 menu->exec(QCursor::pos() ); 108 menu->exec(QCursor::pos() );
109 delete menu; 109 delete menu;
110} 110}
111QString TableView::type() const { 111QString TableView::type() const {
112 return QString::fromLatin1( tr("Table View") ); 112 return QString::fromLatin1( tr("Table View") );
113} 113}
114int TableView::current() { 114int TableView::current() {
115 int uid = sorted().uidAt(currentRow() ); 115 int uid = sorted().uidAt(currentRow() );
116 qWarning("uid %d", uid ); 116 qWarning("uid %d", uid );
117 return uid; 117 return uid;
118} 118}
119QString TableView::currentRepresentation() { 119QString TableView::currentRepresentation() {
120 return text( currentRow(), 2); 120 return text( currentRow(), 2);
121} 121}
122/* show overdue */ 122/* show overdue */
123void TableView::showOverDue( bool ) { 123void TableView::showOverDue( bool ) {
124 clear(); 124 clear();
125 updateView(); 125 updateView();
126} 126}
127 127
128void TableView::updateView( ) { 128void TableView::updateView( ) {
129 m_row = false;
130 startTimer( 2000 );
131 /* FIXME we want one page to be read!
132 *
133 * Calculate that screensize
134 */
135 todoWindow()->setReadAhead( 4 );
129 sort(); 136 sort();
130 OTodoAccess::List::Iterator it, end; 137 OTodoAccess::List::Iterator it, end;
131 it = sorted().begin(); 138 it = sorted().begin();
132 end = sorted().end(); 139 end = sorted().end();
133 140
134 qWarning("setTodos"); 141 qWarning("setTodos");
135 QTime time; 142 QTime time;
136 time.start(); 143 time.start();
137 m_enablePaint = false; 144 m_enablePaint = false;
138 setUpdatesEnabled( false ); 145 setUpdatesEnabled( false );
139 viewport()->setUpdatesEnabled( false ); 146 viewport()->setUpdatesEnabled( false );
140 147
141 QTime t; 148 QTime t;
142 t.start(); 149 t.start();
143 setNumRows( it.count() ); 150 setNumRows( it.count() );
144 int elc = time.elapsed(); 151 int elc = time.elapsed();
145 qWarning("Adding took %d", elc/1000 ); 152 qWarning("Adding took %d", elc/1000 );
146 setUpdatesEnabled( true ); 153 setUpdatesEnabled( true );
147 viewport()->setUpdatesEnabled( true ); 154 viewport()->setUpdatesEnabled( true );
148 viewport()->update(); 155 viewport()->update();
149 156
150 m_enablePaint = true; 157 m_enablePaint = true;
151 int el = time.elapsed(); 158 int el = time.elapsed();
152 qWarning("adding took %d", el/1000 ); 159 qWarning("adding took %d", el/1000 );
153} 160}
154void TableView::setTodo( int, const OTodo&) { 161void TableView::setTodo( int, const OTodo&) {
155 sort(); 162 sort();
156 163
157 /* repaint */ 164 /* repaint */
158 QTable::update(); 165 QTable::update();
159} 166}
160void TableView::addEvent( const OTodo&) { 167void TableView::addEvent( const OTodo&) {
161 sort(); 168 sort();
162 169
163 QTable::update(); 170 /* fix problems of not showing the 'Haken' */
171 QTable::repaint();
164} 172}
165/* 173/*
166 * find the event 174 * find the event
167 * and then replace the complete row 175 * and then replace the complete row
168 */ 176 */
169void TableView::replaceEvent( const OTodo& ev) { 177void TableView::replaceEvent( const OTodo& ev) {
170 addEvent( ev ); 178 addEvent( ev );
171} 179}
172/* 180/*
173 * re aligning table can be slow too 181 * re aligning table can be slow too
174 * FIXME: look what performs better 182 * FIXME: look what performs better
175 * either this or the old align table 183 * either this or the old align table
176 */ 184 */
177void TableView::removeEvent( int ) { 185void TableView::removeEvent( int ) {
178 updateView(); 186 updateView();
179} 187}
180void TableView::setShowCompleted( bool b) { 188void TableView::setShowCompleted( bool b) {
181 qWarning("Show Completed %d" + b ); 189 qWarning("Show Completed %d" + b );
182 updateView(); 190 updateView();
183} 191}
184void TableView::setShowDeadline( bool b) { 192void TableView::setShowDeadline( bool b) {
185 qWarning("Show DeadLine %d" + b ); 193 qWarning("Show DeadLine %d" + b );
186 if (b) 194 if (b)
187 showColumn(3 ); 195 showColumn(3 );
188 else 196 else
189 hideColumn(3 ); 197 hideColumn(3 );
190} 198}
191void TableView::setShowCategory( const QString& str) { 199void TableView::setShowCategory( const QString& str) {
192 qWarning("setShowCategory"); 200 qWarning("setShowCategory");
193 if ( str != m_oleCat || m_first ) 201 if ( str != m_oleCat || m_first )
194 updateView(); 202 updateView();
195 203
196 m_oleCat = str; 204 m_oleCat = str;
197 m_first = false; 205 m_first = false;
198 206
199} 207}
200void TableView::clear() { 208void TableView::clear() {
201 setNumRows(0); 209 setNumRows(0);
202} 210}
203void TableView::slotClicked(int row, int col, int, 211void TableView::slotClicked(int row, int col, int,
204 const QPoint& point) { 212 const QPoint& point) {
205 if ( !cellGeometry(row, col ).contains(point ) ) 213 if ( !cellGeometry(row, col ).contains(point ) )
206 return; 214 return;
207 215
208 int ui= sorted().uidAt( row ); 216 int ui= sorted().uidAt( row );
209 217
210 218
211 switch( col ) { 219 switch( col ) {
212 case 0:{ 220 case 0:{
213 int x = point.x() -columnPos( col ); 221 int x = point.x() -columnPos( col );
214 int y = point.y() -rowPos( row ); 222 int y = point.y() -rowPos( row );
215 int w = columnWidth( col ); 223 int w = columnWidth( col );
216 int h = rowHeight( row ); 224 int h = rowHeight( row );
217 if ( x >= ( w - BoxSize ) / 2 && 225 if ( x >= ( w - BoxSize ) / 2 &&
218 x <= ( w - BoxSize ) / 2 + BoxSize && 226 x <= ( w - BoxSize ) / 2 + BoxSize &&
219 y >= ( h - BoxSize ) / 2 && 227 y >= ( h - BoxSize ) / 2 &&
220 y <= ( h - BoxSize ) / 2 + BoxSize ) { 228 y <= ( h - BoxSize ) / 2 + BoxSize ) {
221 OTodo todo = sorted()[row]; 229 OTodo todo = sorted()[row];
222 todo.setCompleted( !todo.isCompleted() ); 230 todo.setCompleted( !todo.isCompleted() );
223 TodoView::update( todo.uid(), todo ); 231 TodoView::update( todo.uid(), todo );
224 updateView(); 232 updateView();
225 } 233 }
226 } 234 }
227 break; 235 break;
228 236
229 case 1: 237 case 1:
230 break; 238 break;
231 239
232 case 2: { 240 case 2: {
233 m_menuTimer->stop(); 241 m_menuTimer->stop();
234 showTodo( ui ); 242 showTodo( ui );
235 break; 243 break;
236 } 244 }
237 case 3: { 245 case 3: {
238 m_menuTimer->stop(); 246 m_menuTimer->stop();
239 TodoView::edit( ui ); 247 TodoView::edit( ui );
240 break; 248 break;
241 } 249 }
242 } 250 }
243 251
244 252
245} 253}
246void TableView::slotPressed(int row, int col, int, 254void TableView::slotPressed(int row, int col, int,
247 const QPoint& point) { 255 const QPoint& point) {
248 256
249 /* TextColumn column */ 257 /* TextColumn column */
250 if ( col == 2 && cellGeometry( row, col ).contains( point ) ) 258 if ( col == 2 && cellGeometry( row, col ).contains( point ) )
251 m_menuTimer->start( 750, TRUE ); 259 m_menuTimer->start( 750, TRUE );
252} 260}
253void TableView::slotValueChanged( int, int ) { 261void TableView::slotValueChanged( int, int ) {
254 qWarning("Value Changed"); 262 qWarning("Value Changed");
255} 263}
256void TableView::slotCurrentChanged(int, int ) { 264void TableView::slotCurrentChanged(int, int ) {
257 m_menuTimer->stop(); 265 m_menuTimer->stop();
258} 266}
259QWidget* TableView::widget() { 267QWidget* TableView::widget() {
260 return this; 268 return this;
261} 269}
262/* 270/*
263 * We need to overwrite sortColumn 271 * We need to overwrite sortColumn
264 * because we want to sort whole row 272 * because we want to sort whole row
265 * based 273 * based
266 * We event want to set the setOrder 274 * We event want to set the setOrder
267 * to a sort() and update() 275 * to a sort() and update()
268 */ 276 */
269void TableView::sortColumn( int col, bool asc, bool ) { 277void TableView::sortColumn( int col, bool asc, bool ) {
270 qWarning("bool %d", asc ); 278 qWarning("bool %d", asc );
271 setSortOrder( col ); 279 setSortOrder( col );
272 setAscending( asc ); 280 setAscending( asc );
273 updateView(); 281 updateView();
274} 282}
275void TableView::viewportPaintEvent( QPaintEvent* e) { 283void TableView::viewportPaintEvent( QPaintEvent* e) {
276 qWarning("Paint event" ); 284 qWarning("Paint event" );
277 if (m_enablePaint ) 285 if (m_enablePaint )
278 QTable::viewportPaintEvent( e ); 286 QTable::viewportPaintEvent( e );
279} 287}
280/* 288/*
281 * This segment is copyrighted by TT 289 * This segment is copyrighted by TT
282 * it was taken from their todolist 290 * it was taken from their todolist
283 * application this code is GPL 291 * application this code is GPL
284 */ 292 */
285void TableView::paintCell(QPainter* p, int row, int col, const QRect& cr, bool ) { 293void TableView::paintCell(QPainter* p, int row, int col, const QRect& cr, bool ) {
286 const QColorGroup &cg = colorGroup(); 294 const QColorGroup &cg = colorGroup();
287 295
288 p->save(); 296 p->save();
289 297
290 OTodo task = sorted()[row]; 298 OTodo task = sorted()[row];
291 299
292 p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) ); 300 p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) );
293 301
294 QPen op = p->pen(); 302 QPen op = p->pen();
295 p->setPen(cg.mid()); 303 p->setPen(cg.mid());
296 p->drawLine( 0, cr.height() - 1, cr.width() - 1, cr.height() - 1 ); 304 p->drawLine( 0, cr.height() - 1, cr.width() - 1, cr.height() - 1 );
297 p->drawLine( cr.width() - 1, 0, cr.width() - 1, cr.height() - 1 ); 305 p->drawLine( cr.width() - 1, 0, cr.width() - 1, cr.height() - 1 );
298 p->setPen(op); 306 p->setPen(op);
299 307
300 QFont f = p->font(); 308 QFont f = p->font();
301 QFontMetrics fm(f); 309 QFontMetrics fm(f);
302 310
303 switch(col) { 311 switch(col) {
304 case 0: 312 case 0:
305 { 313 {
306 // completed field 314 // completed field
307 int marg = ( cr.width() - BoxSize ) / 2; 315 int marg = ( cr.width() - BoxSize ) / 2;
308 int x = 0; 316 int x = 0;
309 int y = ( cr.height() - BoxSize ) / 2; 317 int y = ( cr.height() - BoxSize ) / 2;
310 p->setPen( QPen( cg.text() ) ); 318 p->setPen( QPen( cg.text() ) );
311 p->drawRect( x + marg, y, BoxSize, BoxSize ); 319 p->drawRect( x + marg, y, BoxSize, BoxSize );
312 p->drawRect( x + marg+1, y+1, BoxSize-2, BoxSize-2 ); 320 p->drawRect( x + marg+1, y+1, BoxSize-2, BoxSize-2 );
313 p->setPen( darkGreen ); 321 p->setPen( darkGreen );
314 x += 1; 322 x += 1;
315 y += 1; 323 y += 1;
316 if ( task.isCompleted() ) { 324 if ( task.isCompleted() ) {
317 QPointArray a( 9*2 ); 325 QPointArray a( 9*2 );
318 int i, xx, yy; 326 int i, xx, yy;
319 xx = x+2+marg; 327 xx = x+2+marg;
320 yy = y+4; 328 yy = y+4;
321 for ( i=0; i<4; i++ ) { 329 for ( i=0; i<4; i++ ) {
322 a.setPoint( 2*i, xx, yy ); 330 a.setPoint( 2*i, xx, yy );
323 a.setPoint( 2*i+1, xx, yy+2 ); 331 a.setPoint( 2*i+1, xx, yy+2 );
324 xx++; yy++; 332 xx++; yy++;
325 } 333 }
326 yy -= 2; 334 yy -= 2;
327 for ( i=4; i<9; i++ ) { 335 for ( i=4; i<9; i++ ) {
328 a.setPoint( 2*i, xx, yy ); 336 a.setPoint( 2*i, xx, yy );
329 a.setPoint( 2*i+1, xx, yy+2 ); 337 a.setPoint( 2*i+1, xx, yy+2 );
330 xx++; yy--; 338 xx++; yy--;
331 } 339 }
332 p->drawLineSegments( a ); 340 p->drawLineSegments( a );
333 } 341 }
334 } 342 }
335 break; 343 break;
336 case 1: 344 case 1:
337 // priority field 345 // priority field
338 { 346 {
339 QString text = QString::number(task.priority()); 347 QString text = QString::number(task.priority());
340 p->drawText(2,2 + fm.ascent(), text); 348 p->drawText(2,2 + fm.ascent(), text);
341 } 349 }
342 break; 350 break;
343 case 2: 351 case 2:
344 // description field 352 // description field
345 { 353 {
346 QString text = task.summary().isEmpty() ? 354 QString text = task.summary().isEmpty() ?
347 task.description() : 355 task.description() :
348 task.summary(); 356 task.summary();
349 p->drawText(2,2 + fm.ascent(), text); 357 p->drawText(2,2 + fm.ascent(), text);
350 } 358 }
351 break; 359 break;
352 case 3: 360 case 3:
353 { 361 {
354 QString text; 362 QString text;
355 if (task.hasDueDate()) { 363 if (task.hasDueDate()) {
356 text = "HAS"; 364 int off = QDate::currentDate().daysTo( task.dueDate() );
365 text = QString::number(off) + tr(" day(s)");
366 /*
367 * set color if not completed
368 */
369 if (!task.isCompleted() ) {
370 QColor color = Qt::black;
371 if ( off < 0 )
372 color = Qt::red;
373 else if ( off == 0 )
374 color = Qt::yellow;
375 else if ( off > 0 )
376 color = Qt::green;
377 p->setPen(color );
378 }
357 } else { 379 } else {
358 text = tr("None"); 380 text = tr("None");
359 } 381 }
360 p->drawText(2,2 + fm.ascent(), text); 382 p->drawText(2,2 + fm.ascent(), text);
361 } 383 }
362 break; 384 break;
363 } 385 }
364 p->restore(); 386 p->restore();
365} 387}
366QWidget* TableView::createEditor(int row, int col, bool )const { 388QWidget* TableView::createEditor(int row, int col, bool )const {
367 switch( col ) { 389 switch( col ) {
368 case 1: { 390 case 1: {
369 /* the priority stuff */ 391 /* the priority stuff */
370 QComboBox* combo = new QComboBox( viewport() ); 392 QComboBox* combo = new QComboBox( viewport() );
371 combo->insertItem( "1" ); 393 combo->insertItem( "1" );
372 combo->insertItem( "2" ); 394 combo->insertItem( "2" );
373 combo->insertItem( "3" ); 395 combo->insertItem( "3" );
374 combo->insertItem( "4" ); 396 combo->insertItem( "4" );
375 combo->insertItem( "5" ); 397 combo->insertItem( "5" );
376 combo->setCurrentItem( sorted()[row].priority()-1 ); 398 combo->setCurrentItem( sorted()[row].priority()-1 );
377 return combo; 399 return combo;
378 } 400 }
379 case 0: 401 case 0:
380 default: 402 default:
381 return 0l; 403 return 0l;
382 } 404 }
383} 405}
384void TableView::setCellContentFromEditor(int row, int col ) { 406void TableView::setCellContentFromEditor(int row, int col ) {
385 if ( col == 1 ) { 407 if ( col == 1 ) {
386 QWidget* wid = cellWidget(row, 1 ); 408 QWidget* wid = cellWidget(row, 1 );
387 if ( wid->inherits("QComboBox") ) { 409 if ( wid->inherits("QComboBox") ) {
388 int pri = ((QComboBox*)wid)->currentItem() + 1; 410 int pri = ((QComboBox*)wid)->currentItem() + 1;
389 OTodo todo = sorted()[row]; 411 OTodo todo = sorted()[row];
390 if ( todo.priority() != pri ) { 412 if ( todo.priority() != pri ) {
391 todo.setPriority( pri ); 413 todo.setPriority( pri );
392 TodoView::update( todo.uid(), todo ); 414 TodoView::update( todo.uid(), todo );
393 updateView(); 415 updateView();
394 } 416 }
395 } 417 }
396 } 418 }
397} 419}
398void TableView::slotPriority() { 420void TableView::slotPriority() {
399 setCellContentFromEditor( currentRow(), currentColumn() ); 421 setCellContentFromEditor( currentRow(), currentColumn() );
400} 422}
423/*
424 * We'll use the TimerEvent to read ahead or to keep the cahce always
425 * filled enough.
426 * We will try to read ahead 4 items in both ways
427 * up and down. On odd or even we will currentRow()+-4 or +-9
428 *
429 */
430void TableView::timerEvent( QTimerEvent* ev ) {
431 int row = currentRow();
432 qWarning("TimerEvent %d", row);
433 if ( m_row ) {
434 int ro = row-4;
435 if (ro < 0 ) ro = 0;
436 sorted()[ro];
437
438 ro = row+4;
439 sorted()[ro];
440 } else {
441 int ro = row + 8;
442 sorted()[ro];
443
444 ro = row-8;
445 if (ro < 0 ) ro = 0;
446 sorted()[ro];
447 }
448
449 m_row = !m_row;
450}
diff --git a/core/pim/todo/tableview.h b/core/pim/todo/tableview.h
index bf41aea..fe65ca9 100644
--- a/core/pim/todo/tableview.h
+++ b/core/pim/todo/tableview.h
@@ -1,100 +1,103 @@
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 28
29#ifndef OPIE_TABLE_VIEW_H 29#ifndef OPIE_TABLE_VIEW_H
30#define OPIE_TABLE_VIEW_H 30#define OPIE_TABLE_VIEW_H
31 31
32#include <qtable.h> 32#include <qtable.h>
33#include <qmap.h> 33#include <qmap.h>
34 34
35#include "tableitems.h" 35#include "tableitems.h"
36#include "todoview.h" 36#include "todoview.h"
37 37
38class QTimer; 38class QTimer;
39 39
40namespace Todo { 40namespace Todo {
41 class CheckItem; 41 class CheckItem;
42 class DueTextItem; 42 class DueTextItem;
43 class TableView : public QTable, public TodoView { 43 class TableView : public QTable, public TodoView {
44 Q_OBJECT 44 Q_OBJECT
45 public: 45 public:
46 TableView( MainWindow*, QWidget* parent ); 46 TableView( MainWindow*, QWidget* parent );
47 ~TableView(); 47 ~TableView();
48 48
49 49
50 QString type()const; 50 QString type()const;
51 int current(); 51 int current();
52 QString currentRepresentation(); 52 QString currentRepresentation();
53 53
54 void clear(); 54 void clear();
55 void showOverDue( bool ); 55 void showOverDue( bool );
56 void updateView(); 56 void updateView();
57 void setTodo( int uid, const OTodo& ); 57 void setTodo( int uid, const OTodo& );
58 void addEvent( const OTodo& event ); 58 void addEvent( const OTodo& event );
59 void replaceEvent( const OTodo& ); 59 void replaceEvent( const OTodo& );
60 void removeEvent( int uid ); 60 void removeEvent( int uid );
61 void setShowCompleted( bool ); 61 void setShowCompleted( bool );
62 void setShowDeadline( bool ); 62 void setShowDeadline( bool );
63 63
64 void setShowCategory(const QString& =QString::null ); 64 void setShowCategory(const QString& =QString::null );
65 void newDay(); 65 void newDay();
66 QWidget* widget(); 66 QWidget* widget();
67 void sortColumn(int, bool, bool ); 67 void sortColumn(int, bool, bool );
68 68
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 timerEvent( QTimerEvent* e );
85 QWidget* createEditor(int row, int col, bool initFromCell )const; 86 QWidget* createEditor(int row, int col, bool initFromCell )const;
86 void setCellContentFromEditor( int row, int col ); 87 void setCellContentFromEditor( int row, int col );
87 88
88private slots: 89private slots:
89 void slotShowMenu(); 90 void slotShowMenu();
90 void slotClicked(int, int, int, 91 void slotClicked(int, int, int,
91 const QPoint& ); 92 const QPoint& );
92 void slotPressed(int, int, int, 93 void slotPressed(int, int, int,
93 const QPoint& ); 94 const QPoint& );
94 void slotValueChanged(int, int); 95 void slotValueChanged(int, int);
95 void slotCurrentChanged(int, int ); 96 void slotCurrentChanged(int, int );
96 void slotPriority(); 97 void slotPriority();
98 private:
99 bool m_row : 1;
97 }; 100 };
98}; 101};
99 102
100#endif 103#endif