summaryrefslogtreecommitdiff
path: root/core/pim/todo/todotable.h
Unidiff
Diffstat (limited to 'core/pim/todo/todotable.h') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/todotable.h21
1 files changed, 11 insertions, 10 deletions
diff --git a/core/pim/todo/todotable.h b/core/pim/todo/todotable.h
index 4f3a064..2746ce7 100644
--- a/core/pim/todo/todotable.h
+++ b/core/pim/todo/todotable.h
@@ -1,207 +1,208 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#ifndef TODOTABLE_H 21#ifndef TODOTABLE_H
22#define TODOTABLE_H 22#define TODOTABLE_H
23 23
24#include <qpe/categories.h> 24#include <qpe/categories.h>
25#include <qpe/stringutil.h> 25#include <qpe/stringutil.h>
26#include <qpe/task.h> 26//#include <qpe/task.h>
27#include <opie/todoevent.h>
27 28
28#include <qtable.h> 29#include <qtable.h>
29#include <qmap.h> 30#include <qmap.h>
30#include <qguardedptr.h> 31#include <qguardedptr.h>
31 32
32class Node; 33class Node;
33class QComboBox; 34class QComboBox;
34class QTimer; 35class QTimer;
35 36
36class CheckItem : public QTableItem 37class CheckItem : public QTableItem
37{ 38{
38public: 39public:
39 CheckItem( QTable *t, const QString &sortkey ); 40 CheckItem( QTable *t, const QString &sortkey );
40 41
41 void setChecked( bool b ); 42 void setChecked( bool b );
42 void toggle(); 43 void toggle();
43 bool isChecked() const; 44 bool isChecked() const;
44 void setKey( const QString &key ) { sortKey = key; } 45 void setKey( const QString &key ) { sortKey = key; }
45 QString key() const; 46 QString key() const;
46 47
47 void paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected ); 48 void paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected );
48 49
49private: 50private:
50 bool checked; 51 bool checked;
51 QString sortKey; 52 QString sortKey;
52}; 53};
53 54
54class ComboItem : public QTableItem 55class ComboItem : public QTableItem
55{ 56{
56public: 57public:
57 ComboItem( QTable *t, EditType et ); 58 ComboItem( QTable *t, EditType et );
58 QWidget *createEditor() const; 59 QWidget *createEditor() const;
59 void setContentFromEditor( QWidget *w ); 60 void setContentFromEditor( QWidget *w );
60 void setText( const QString &s ); 61 void setText( const QString &s );
61 int alignment() const { return Qt::AlignCenter; } 62 int alignment() const { return Qt::AlignCenter; }
62 63
63 QString text() const; 64 QString text() const;
64 65
65private: 66private:
66 QGuardedPtr<QComboBox> cb; 67 QGuardedPtr<QComboBox> cb;
67 68
68}; 69};
69 70
70class TodoTextItem : public QTableItem 71class TodoTextItem : public QTableItem
71{ 72{
72public: 73public:
73 TodoTextItem( QTable *t, const QString & str ) 74 TodoTextItem( QTable *t, const QString & str )
74 :QTableItem( t, QTableItem::Never, str ) {} 75 :QTableItem( t, QTableItem::Never, str ) {}
75 76
76 QString key () const { return Qtopia::buildSortKey( text() ); } 77 QString key () const { return Qtopia::buildSortKey( text() ); }
77}; 78};
78 79
79 80
80 81
81enum journal_action { ACTION_ADD, ACTION_REMOVE, ACTION_REPLACE }; 82enum journal_action { ACTION_ADD, ACTION_REMOVE, ACTION_REPLACE };
82 83
83class TodoTable : public QTable 84class TodoTable : public QTable
84{ 85{
85 Q_OBJECT 86 Q_OBJECT
86 87
87public: 88public:
88 TodoTable( QWidget *parent = 0, const char * name = 0 ); 89 TodoTable( QWidget *parent = 0, const char * name = 0 );
89 void addEntry( const Task &todo ); 90 void addEntry( const ToDoEvent &todo );
90 void clearFindRow() { currFindRow = -2; } 91 void clearFindRow() { currFindRow = -2; }
91 92
92 Task currentEntry() const; 93 ToDoEvent currentEntry() const;
93 void replaceCurrentEntry( const Task &todo, bool fromTableItem = false ); 94 void replaceCurrentEntry( const ToDoEvent &todo, bool fromTableItem = false );
94 95
95 QStringList categories(); 96 QStringList categories();
96 97
97 void setShowCompleted( bool sc ) { showComp = sc; updateVisible(); } 98 void setShowCompleted( bool sc ) { showComp = sc; updateVisible(); }
98 bool showCompleted() const { return showComp; } 99 bool showCompleted() const { return showComp; }
99 100
100 void setShowCategory( const QString &c ) { showCat = c; updateVisible(); } 101 void setShowCategory( const QString &c ) { showCat = c; updateVisible(); }
101 const QString &showCategory() const { return showCat; } 102 const QString &showCategory() const { return showCat; }
102 int showCategoryId() const; 103 int showCategoryId() const;
103 104
104 bool save( const QString &fn ); 105 bool save( const QString &fn );
105 void load( const QString &fn ); 106 void load( const QString &fn );
106 void clear(); 107 void clear();
107 void removeCurrentEntry(); 108 void removeCurrentEntry();
108 109
109 void setPaintingEnabled( bool e ); 110 void setPaintingEnabled( bool e );
110 111
111 virtual void sortColumn( int col, bool ascending, bool /*wholeRows*/ ); 112 virtual void sortColumn( int col, bool ascending, bool /*wholeRows*/ );
112 113
113// int rowHeight( int ) const; 114// int rowHeight( int ) const;
114// int rowPos( int row ) const; 115// int rowPos( int row ) const;
115// virtual int rowAt( int pos ) const; 116// virtual int rowAt( int pos ) const;
116 117
117signals: 118signals:
118 void signalEdit(); 119 void signalEdit();
119 void signalDoneChanged( bool b ); 120 void signalDoneChanged( bool b );
120 void signalPriorityChanged( int i ); 121 void signalPriorityChanged( int i );
121 void signalShowMenu( const QPoint & ); 122 void signalShowMenu( const QPoint & );
122 void signalNotFound(); 123 void signalNotFound();
123 void signalWrapAround(); 124 void signalWrapAround();
124 125
125protected: 126protected:
126 void keyPressEvent( QKeyEvent *e ); 127 void keyPressEvent( QKeyEvent *e );
127 128
128private: 129private:
129 void updateVisible(); 130 void updateVisible();
130 void viewportPaintEvent( QPaintEvent * ); 131 void viewportPaintEvent( QPaintEvent * );
131 void internalAddEntries( QList<Task> &list); 132 void internalAddEntries( QList<ToDoEvent> &list);
132 inline void insertIntoTable( Task *todo, int row ); 133 inline void insertIntoTable( ToDoEvent *todo, int row );
133 void updateJournal( const Task &todo, journal_action action, int row = -1); 134 void updateJournal( const ToDoEvent &todo, journal_action action, int row = -1);
134 void mergeJournal(); 135 void mergeJournal();
135 void journalFreeReplaceEntry( const Task &todo, int row ); 136 void journalFreeReplaceEntry( const ToDoEvent &todo, int row );
136 void journalFreeRemoveEntry( int row ); 137 void journalFreeRemoveEntry( int row );
137 inline void realignTable( int row ); 138 inline void realignTable( int row );
138 void loadFile( const QString &strFile, bool fromJournal = false ); 139 void loadFile( const QString &strFile, bool fromJournal = false );
139 140
140private slots: 141private slots:
141 void slotClicked( int row, int col, int button, const QPoint &pos ); 142 void slotClicked( int row, int col, int button, const QPoint &pos );
142 void slotPressed( int row, int col, int button, const QPoint &pos ); 143 void slotPressed( int row, int col, int button, const QPoint &pos );
143 void slotCheckPriority(int row, int col ); 144 void slotCheckPriority(int row, int col );
144 void slotCurrentChanged(int row, int col ); 145 void slotCurrentChanged(int row, int col );
145 void slotDoFind( const QString &findString, bool caseSensetive, 146 void slotDoFind( const QString &findString, bool caseSensetive,
146 bool backwards, int category ); 147 bool backwards, int category );
147 void slotShowMenu(); 148 void slotShowMenu();
148 void rowHeightChanged( int row ); 149 void rowHeightChanged( int row );
149 150
150private: 151private:
151 friend class TodoWindow; 152 friend class TodoWindow;
152 153
153 QMap<CheckItem*, Task *> todoList; 154 QMap<CheckItem*, ToDoEvent *> todoList;
154 QStringList categoryList; 155 QStringList categoryList;
155 bool showComp; 156 bool showComp;
156 QString showCat; 157 QString showCat;
157 QTimer *menuTimer; 158 QTimer *menuTimer;
158 bool enablePainting; 159 bool enablePainting;
159 Categories mCat; 160 Categories mCat;
160 int currFindRow; 161 int currFindRow;
161}; 162};
162 163
163 164
164inline void TodoTable::insertIntoTable( Task *todo, int row ) 165inline void TodoTable::insertIntoTable( ToDoEvent *todo, int row )
165{ 166{
166 QString sortKey = (char) ((todo->isCompleted() ? 'a' : 'A') 167 QString sortKey = (char) ((todo->isCompleted() ? 'a' : 'A')
167 + todo->priority() ) 168 + todo->priority() )
168 + Qtopia::buildSortKey( todo->description() ); 169 + Qtopia::buildSortKey( todo->description() );
169 CheckItem *chk = new CheckItem( this, sortKey ); 170 CheckItem *chk = new CheckItem( this, sortKey );
170 chk->setChecked( todo->isCompleted() ); 171 chk->setChecked( todo->isCompleted() );
171 ComboItem *cmb = new ComboItem( this, QTableItem::WhenCurrent ); 172 ComboItem *cmb = new ComboItem( this, QTableItem::WhenCurrent );
172 cmb->setText( QString::number( todo->priority() ) ); 173 cmb->setText( QString::number( todo->priority() ) );
173 QTableItem *ti = new TodoTextItem( this, todo->description().left(40).simplifyWhiteSpace() ); 174 QTableItem *ti = new TodoTextItem( this, todo->description().left(40).simplifyWhiteSpace() );
174 ti->setReplaceable( false ); 175 ti->setReplaceable( false );
175 176
176 setItem( row, 0, chk ); 177 setItem( row, 0, chk );
177 setItem( row, 1, cmb ); 178 setItem( row, 1, cmb );
178 setItem( row, 2, ti ); 179 setItem( row, 2, ti );
179 180
180 todoList.insert( chk, todo ); 181 todoList.insert( chk, todo );
181} 182}
182 183
183inline void TodoTable::realignTable( int row ) 184inline void TodoTable::realignTable( int row )
184{ 185{
185 QTableItem *ti1, 186 QTableItem *ti1,
186 *ti2, 187 *ti2,
187 *ti3; 188 *ti3;
188 int totalRows = numRows(); 189 int totalRows = numRows();
189 for ( int curr = row; curr < totalRows - 1; curr++ ) { 190 for ( int curr = row; curr < totalRows - 1; curr++ ) {
190 // this is bad, we must take the item out and then 191 // this is bad, we must take the item out and then
191 // set it. In the end, it behaves no worse (time wise) 192 // set it. In the end, it behaves no worse (time wise)
192 // then the old way of saving the entries to file, clearing 193 // then the old way of saving the entries to file, clearing
193 // the table re-reading in the file and resetting the table 194 // the table re-reading in the file and resetting the table
194 ti1 = item( curr + 1, 0 ); 195 ti1 = item( curr + 1, 0 );
195 ti2 = item( curr + 1, 1 ); 196 ti2 = item( curr + 1, 1 );
196 ti3 = item( curr + 1, 2 ); 197 ti3 = item( curr + 1, 2 );
197 takeItem( ti1 ); 198 takeItem( ti1 );
198 takeItem( ti2 ); 199 takeItem( ti2 );
199 takeItem( ti3 ); 200 takeItem( ti3 );
200 setItem( curr, 0, ti1 ); 201 setItem( curr, 0, ti1 );
201 setItem( curr, 1, ti2 ); 202 setItem( curr, 1, ti2 );
202 setItem( curr, 2, ti3 ); 203 setItem( curr, 2, ti3 );
203 } 204 }
204 setNumRows( totalRows - 1 ); 205 setNumRows( totalRows - 1 );
205} 206}
206 207
207#endif 208#endif