summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-07 14:59:17 (UTC)
committer zecke <zecke>2002-10-07 14:59:17 (UTC)
commit645b377506fb32f4519e70d43c020084943debae (patch) (unidiff)
tree95398d3a8aeb0342e08732c203eda5098beb92cb
parenta7b03f9c31f515747663f07b6665744369e57ba8 (diff)
downloadopie-645b377506fb32f4519e70d43c020084943debae.zip
opie-645b377506fb32f4519e70d43c020084943debae.tar.gz
opie-645b377506fb32f4519e70d43c020084943debae.tar.bz2
Switch to sorted stuff for TableView as default
Stefan it's safe
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/tableview.cpp7
-rw-r--r--core/pim/todo/todoview.cpp1
2 files changed, 6 insertions, 2 deletions
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp
index 097af39..eaaf1bc 100644
--- a/core/pim/todo/tableview.cpp
+++ b/core/pim/todo/tableview.cpp
@@ -17,259 +17,262 @@
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
39 39
40TableView::TableView( MainWindow* window, QWidget* wid ) 40TableView::TableView( MainWindow* window, QWidget* wid )
41 : QTable( wid ), TodoView( window ) { 41 : QTable( wid ), TodoView( window ) {
42 setUpdatesEnabled( false ); 42 setUpdatesEnabled( false );
43 viewport()->setUpdatesEnabled( false ); 43 viewport()->setUpdatesEnabled( false );
44 m_enablePaint = false; 44 m_enablePaint = false;
45 setNumRows(0); 45 setNumRows(0);
46 setNumCols(4); 46 setNumCols(4);
47 47
48 setSorting( TRUE ); 48 setSorting( TRUE );
49 setSelectionMode( NoSelection ); 49 setSelectionMode( NoSelection );
50 setColumnStretchable( 2, TRUE ); 50 setColumnStretchable( 2, TRUE );
51 setColumnWidth(0, 20 ); 51 setColumnWidth(0, 20 );
52 setColumnWidth(1, 35 ); 52 setColumnWidth(1, 35 );
53 53
54 setLeftMargin( 0 ); 54 setLeftMargin( 0 );
55 verticalHeader()->hide(); 55 verticalHeader()->hide();
56 56
57 horizontalHeader()->setLabel(0, tr("C.") ); 57 horizontalHeader()->setLabel(0, tr("C.") );
58 horizontalHeader()->setLabel(1, tr("Prior.") ); 58 horizontalHeader()->setLabel(1, tr("Prior.") );
59 horizontalHeader()->setLabel(2, tr("Description" ) ); 59 horizontalHeader()->setLabel(2, tr("Description" ) );
60 60
61 setColumnStretchable(3, FALSE ); 61 setColumnStretchable(3, FALSE );
62 setColumnWidth(3, 20 ); 62 setColumnWidth(3, 20 );
63 horizontalHeader()->setLabel(3, tr("Deadline") ); 63 horizontalHeader()->setLabel(3, tr("Deadline") );
64 64
65 if ( todoWindow()->showDeadline() ) 65 if ( todoWindow()->showDeadline() )
66 showColumn( 3); 66 showColumn( 3);
67 else 67 else
68 hideColumn(3 ); 68 hideColumn(3 );
69 69
70 connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ), 70 connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ),
71 this, SLOT( slotClicked(int, int, int, const QPoint& ) ) ); 71 this, SLOT( slotClicked(int, int, int, const QPoint& ) ) );
72 connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ), 72 connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ),
73 this, SLOT( slotPressed(int, int, int, const QPoint& ) ) ); 73 this, SLOT( slotPressed(int, int, int, const QPoint& ) ) );
74 connect((QTable*)this, SIGNAL(valueChanged(int, int) ), 74 connect((QTable*)this, SIGNAL(valueChanged(int, int) ),
75 this, SLOT( slotValueChanged(int, int) ) ); 75 this, SLOT( slotValueChanged(int, int) ) );
76 connect((QTable*)this, SIGNAL(currentChanged(int, int) ), 76 connect((QTable*)this, SIGNAL(currentChanged(int, int) ),
77 this, SLOT( slotCurrentChanged(int, int) ) ); 77 this, SLOT( slotCurrentChanged(int, int) ) );
78 78
79 m_menuTimer = new QTimer( this ); 79 m_menuTimer = new QTimer( this );
80 connect( m_menuTimer, SIGNAL(timeout()), 80 connect( m_menuTimer, SIGNAL(timeout()),
81 this, SLOT(slotShowMenu()) ); 81 this, SLOT(slotShowMenu()) );
82 82
83 m_enablePaint = true; 83 m_enablePaint = true;
84 setUpdatesEnabled( true ); 84 setUpdatesEnabled( true );
85 viewport()->setUpdatesEnabled( true ); 85 viewport()->setUpdatesEnabled( true );
86 viewport()->update(); 86 viewport()->update();
87} 87}
88/* a new day has started 88/* a new day has started
89 * update the day 89 * update the day
90 */ 90 */
91void TableView::newDay() { 91void TableView::newDay() {
92 clear(); 92 clear();
93 updateView(); 93 updateView();
94} 94}
95TableView::~TableView() { 95TableView::~TableView() {
96 96
97} 97}
98void TableView::slotShowMenu() { 98void TableView::slotShowMenu() {
99 QPopupMenu *menu = todoWindow()->contextMenu( current() ); 99 QPopupMenu *menu = todoWindow()->contextMenu( current() );
100 menu->exec(QCursor::pos() ); 100 menu->exec(QCursor::pos() );
101 delete menu; 101 delete menu;
102} 102}
103OTodo TableView::find(int uid ) { 103OTodo TableView::find(int uid ) {
104 OTodo ev = TodoView::event( uid ); 104 OTodo ev = TodoView::event( uid );
105 return ev; 105 return ev;
106} 106}
107void TableView::updateFromTable( const OTodo& ev, CheckItem* item ) { 107void TableView::updateFromTable( const OTodo& ev, CheckItem* item ) {
108 TodoView::update( ev.uid(), ev ); 108 TodoView::update( ev.uid(), ev );
109 109
110 /* update the other columns */ 110 /* update the other columns */
111 /* if completed or not we need to update 111 /* if completed or not we need to update
112 * the table 112 * the table
113 * 113 *
114 * We've two cases 114 * We've two cases
115 * either item or !item 115 * either item or !item
116 * this makes cases more easy 116 * this makes cases more easy
117 */ 117 */
118 if ( !item ) { 118 if ( !item ) {
119 item = m_cache[ev.uid()]; 119 item = m_cache[ev.uid()];
120 } 120 }
121 DueTextItem *due = dueItem( item->row() ); 121 DueTextItem *due = dueItem( item->row() );
122 due->setCompleted( ev.isCompleted() ); 122 due->setCompleted( ev.isCompleted() );
123} 123}
124QString TableView::type() const { 124QString TableView::type() const {
125 return QString::fromLatin1( tr("Table View") ); 125 return QString::fromLatin1( tr("Table View") );
126} 126}
127int TableView::current() { 127int TableView::current() {
128 int cur = 0; 128 int cur = 0;
129 CheckItem* i = checkItem( currentRow() ); 129 CheckItem* i = checkItem( currentRow() );
130 if (i ) 130 if (i )
131 cur = i->uid(); 131 cur = i->uid();
132 132
133 return cur; 133 return cur;
134} 134}
135QString TableView::currentRepresentation() { 135QString TableView::currentRepresentation() {
136 return text( currentRow(), 2); 136 return text( currentRow(), 2);
137} 137}
138/* show overdue */ 138/* show overdue */
139void TableView::showOverDue( bool ) { 139void TableView::showOverDue( bool ) {
140 clear(); 140 clear();
141 updateView(); 141 updateView();
142} 142}
143 143
144void TableView::updateView( ) { 144void TableView::updateView( ) {
145 setSortOrder( 0 );
146 setAscending( true );
147 sort();
145 OTodoAccess::List::Iterator it, end; 148 OTodoAccess::List::Iterator it, end;
146 it = list().begin(); 149 it = sorted().begin();
147 end = list().end(); 150 end = sorted().end();
148 qWarning("setTodos"); 151 qWarning("setTodos");
149 QTime time; 152 QTime time;
150 time.start(); 153 time.start();
151 m_enablePaint = false; 154 m_enablePaint = false;
152 setUpdatesEnabled( false ); 155 setUpdatesEnabled( false );
153 viewport()->setUpdatesEnabled( false ); 156 viewport()->setUpdatesEnabled( false );
154 clear(); 157 clear();
155 QString currentCat = todoWindow()->currentCategory(); 158 QString currentCat = todoWindow()->currentCategory();
156 bool showCompleted = todoWindow()->showCompleted(); 159 bool showCompleted = todoWindow()->showCompleted();
157 bool showOverDue = todoWindow()->showOverDue(); 160 bool showOverDue = todoWindow()->showOverDue();
158 qWarning( "Current Category:" + todoWindow()->currentCategory() ); 161 qWarning( "Current Category:" + todoWindow()->currentCategory() );
159 int id = todoWindow()->currentCatId(); 162 int id = todoWindow()->currentCatId();
160 QTime t; 163 QTime t;
161 t.start(); 164 t.start();
162 setNumRows( it.count() ); 165 setNumRows( it.count() );
163 uint i = 0; 166 uint i = 0;
164 for (; it != end; ++it ) { 167 for (; it != end; ++it ) {
165 OTodo todo = (*it); 168 OTodo todo = (*it);
166 /* test if the categories match */ 169 /* test if the categories match */
167 if ( !currentCat.isEmpty() && 170 if ( !currentCat.isEmpty() &&
168 !todo.categories().contains( id ) ) { 171 !todo.categories().contains( id ) ) {
169 continue; 172 continue;
170 } 173 }
171 /* the item is completed but we shouldn't show it */ 174 /* the item is completed but we shouldn't show it */
172 if ( !showCompleted && todo.isCompleted() ) { 175 if ( !showCompleted && todo.isCompleted() ) {
173 qWarning("isCompleted "); 176 qWarning("isCompleted ");
174 continue; 177 continue;
175 } 178 }
176 /* the item is not overdue but we should only show overdue */ 179 /* the item is not overdue but we should only show overdue */
177 if ( showOverDue && !todo.isOverdue() ) { 180 if ( showOverDue && !todo.isOverdue() ) {
178 continue; 181 continue;
179 } 182 }
180 /* now it's fine to add it */ 183 /* now it's fine to add it */
181 insertTodo( todo, i ); 184 insertTodo( todo, i );
182 i++; 185 i++;
183 } 186 }
184 setNumRows( i ); 187 setNumRows( i );
185 int elc = time.elapsed(); 188 int elc = time.elapsed();
186 qWarning("Adding took %d", elc/1000 ); 189 qWarning("Adding took %d", elc/1000 );
187 setUpdatesEnabled( true ); 190 setUpdatesEnabled( true );
188 viewport()->setUpdatesEnabled( true ); 191 viewport()->setUpdatesEnabled( true );
189 viewport()->update(); 192 viewport()->update();
190 m_enablePaint = true; 193 m_enablePaint = true;
191 int el = time.elapsed(); 194 int el = time.elapsed();
192 qWarning("adding took %d", el/1000 ); 195 qWarning("adding took %d", el/1000 );
193} 196}
194void TableView::setTodo( int uid, const OTodo& ev ) { 197void TableView::setTodo( int uid, const OTodo& ev ) {
195 QMap<int, CheckItem*>::Iterator it = m_cache.find( uid ); 198 QMap<int, CheckItem*>::Iterator it = m_cache.find( uid );
196 199
197 if ( it != m_cache.end() ) { 200 if ( it != m_cache.end() ) {
198 int row = it.data()->row(); 201 int row = it.data()->row();
199 202
200 /* update checked */ 203 /* update checked */
201 CheckItem* check = checkItem(row ); 204 CheckItem* check = checkItem(row );
202 if (check) 205 if (check)
203 check->setChecked( ev.isCompleted() ); 206 check->setChecked( ev.isCompleted() );
204 207
205 /* update the text */ 208 /* update the text */
206 QString sum = ev.summary(); 209 QString sum = ev.summary();
207 setText(row, 2, sum.isEmpty() ? 210 setText(row, 2, sum.isEmpty() ?
208 ev.description().left(40).simplifyWhiteSpace() : 211 ev.description().left(40).simplifyWhiteSpace() :
209 sum ); 212 sum );
210 213
211 /* update priority */ 214 /* update priority */
212 setText(row, 1, QString::number( ev.priority() ) ); 215 setText(row, 1, QString::number( ev.priority() ) );
213 216
214 /* update DueDate */ 217 /* update DueDate */
215 DueTextItem *due = dueItem( row ); 218 DueTextItem *due = dueItem( row );
216 due->setToDoEvent( ev ); 219 due->setToDoEvent( ev );
217 } 220 }
218} 221}
219void TableView::addEvent( const OTodo& ev) { 222void TableView::addEvent( const OTodo& ev) {
220 int row= numRows(); 223 int row= numRows();
221 setNumRows( row + 1 ); 224 setNumRows( row + 1 );
222 insertTodo( ev, row ); 225 insertTodo( ev, row );
223} 226}
224/* 227/*
225 * find the event 228 * find the event
226 * and then replace the complete row 229 * and then replace the complete row
227 */ 230 */
228void TableView::replaceEvent( const OTodo& ev) { 231void TableView::replaceEvent( const OTodo& ev) {
229 setTodo( ev.uid(), ev ); 232 setTodo( ev.uid(), ev );
230} 233}
231/* 234/*
232 * re aligning table can be slow too 235 * re aligning table can be slow too
233 * FIXME: look what performs better 236 * FIXME: look what performs better
234 * either this or the old align table 237 * either this or the old align table
235 */ 238 */
236void TableView::removeEvent( int ) { 239void TableView::removeEvent( int ) {
237 clear(); 240 clear();
238 updateView(); 241 updateView();
239} 242}
240void TableView::setShowCompleted( bool b) { 243void TableView::setShowCompleted( bool b) {
241 qWarning("Show Completed %d" + b ); 244 qWarning("Show Completed %d" + b );
242 updateView(); 245 updateView();
243} 246}
244void TableView::setShowDeadline( bool b) { 247void TableView::setShowDeadline( bool b) {
245 qWarning("Show DeadLine %d" + b ); 248 qWarning("Show DeadLine %d" + b );
246 if (b) 249 if (b)
247 showColumn(3 ); 250 showColumn(3 );
248 else 251 else
249 hideColumn(3 ); 252 hideColumn(3 );
250} 253}
251void TableView::setShowCategory( const QString& ) { 254void TableView::setShowCategory( const QString& ) {
252 qWarning("setShowCategory"); 255 qWarning("setShowCategory");
253 updateView(); 256 updateView();
254} 257}
255void TableView::clear() { 258void TableView::clear() {
256 m_cache.clear(); 259 m_cache.clear();
257 int rows = numRows(); 260 int rows = numRows();
258 for (int r = 0; r < rows; r++ ) { 261 for (int r = 0; r < rows; r++ ) {
259 for (int c = 0; c < numCols(); c++ ) { 262 for (int c = 0; c < numCols(); c++ ) {
260 if ( cellWidget(r, c) ) 263 if ( cellWidget(r, c) )
261 clearCellWidget(r, c ); 264 clearCellWidget(r, c );
262 clearCell(r, c); 265 clearCell(r, c);
263 } 266 }
264 } 267 }
265 setNumRows( 0); 268 setNumRows( 0);
266} 269}
267QArray<int> TableView::completed() { 270QArray<int> TableView::completed() {
268 int row = numRows(); 271 int row = numRows();
269 QArray<int> ids( row ); 272 QArray<int> ids( row );
270 273
271 int j=0; 274 int j=0;
272 for (int i = 0; i < row; i++ ) { 275 for (int i = 0; i < row; i++ ) {
273 CheckItem* item = checkItem(i ); 276 CheckItem* item = checkItem(i );
274 if (item->isChecked() ) { 277 if (item->isChecked() ) {
275 ids[j] = item->uid(); 278 ids[j] = item->uid();
diff --git a/core/pim/todo/todoview.cpp b/core/pim/todo/todoview.cpp
index b77baed..06eaaa9 100644
--- a/core/pim/todo/todoview.cpp
+++ b/core/pim/todo/todoview.cpp
@@ -1,77 +1,78 @@
1#include "mainwindow.h" 1#include "mainwindow.h"
2 2
3#include "todoview.h" 3#include "todoview.h"
4 4
5using namespace Todo; 5using namespace Todo;
6 6
7TodoView::TodoView( MainWindow* win ) 7TodoView::TodoView( MainWindow* win )
8 : m_main( win ) 8 : m_main( win )
9{ 9{
10 hack = new InternQtHack; 10 hack = new InternQtHack;
11 m_asc = false; 11 m_asc = false;
12 m_sortOrder = -1; 12 m_sortOrder = -1;
13} 13}
14TodoView::~TodoView() { 14TodoView::~TodoView() {
15 delete hack; 15 delete hack;
16}; 16};
17 17
18void TodoView::connectShow(QObject* obj, 18void TodoView::connectShow(QObject* obj,
19 const char* slot ) { 19 const char* slot ) {
20 QObject::connect( hack, SIGNAL(showTodo(int) ), 20 QObject::connect( hack, SIGNAL(showTodo(int) ),
21 obj, slot ); 21 obj, slot );
22} 22}
23void TodoView::connectEdit( QObject* obj, 23void TodoView::connectEdit( QObject* obj,
24 const char* slot ) { 24 const char* slot ) {
25 QObject::connect( hack, SIGNAL(edit(int) ), 25 QObject::connect( hack, SIGNAL(edit(int) ),
26 obj, slot ); 26 obj, slot );
27} 27}
28void TodoView::connectUpdateSmall( QObject* obj, 28void TodoView::connectUpdateSmall( QObject* obj,
29 const char* slot ) { 29 const char* slot ) {
30 QObject::connect( hack, SIGNAL(update(int, const Todo::SmallTodo& ) ), 30 QObject::connect( hack, SIGNAL(update(int, const Todo::SmallTodo& ) ),
31 obj, slot ); 31 obj, slot );
32} 32}
33void TodoView::connectUpdateBig( QObject* obj, 33void TodoView::connectUpdateBig( QObject* obj,
34 const char* slot ) { 34 const char* slot ) {
35 QObject::connect( hack, SIGNAL(update(int, const OTodo& ) ), 35 QObject::connect( hack, SIGNAL(update(int, const OTodo& ) ),
36 obj, slot ); 36 obj, slot );
37} 37}
38void TodoView::connectUpdateView( QObject* obj, 38void TodoView::connectUpdateView( QObject* obj,
39 const char* slot ) { 39 const char* slot ) {
40 QObject::connect( hack, SIGNAL(update(QWidget*) ), 40 QObject::connect( hack, SIGNAL(update(QWidget*) ),
41 obj, slot ); 41 obj, slot );
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(){ 57OTodoAccess::List TodoView::sorted(){
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} 63}
63void TodoView::sort(int sort) { 64void TodoView::sort(int sort) {
64 m_sort = todoWindow()->sorted(m_asc, m_sortOrder, sort ); 65 m_sort = todoWindow()->sorted(m_asc, m_sortOrder, sort );
65} 66}
66void TodoView::setSortOrder( int order ) { 67void TodoView::setSortOrder( int order ) {
67 m_sortOrder = order; 68 m_sortOrder = order;
68} 69}
69void TodoView::setAscending( bool b ) { 70void TodoView::setAscending( bool b ) {
70 m_asc = b; 71 m_asc = b;
71} 72}
72void TodoView::update(int uid, const SmallTodo& to ) { 73void TodoView::update(int uid, const SmallTodo& to ) {
73 //m_main->slotUpate1( uid, to ); 74 //m_main->slotUpate1( uid, to );
74} 75}
75void TodoView::update(int uid, const OTodo& ev ) { 76void TodoView::update(int uid, const OTodo& ev ) {
76 m_main->updateTodo( ev ); 77 m_main->updateTodo( ev );
77} 78}