-rw-r--r-- | core/pim/todo/mainwindow.cpp | 32 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.h | 6 | ||||
-rw-r--r-- | core/pim/todo/tableview.cpp | 16 | ||||
-rw-r--r-- | core/pim/todo/tableview.h | 3 | ||||
-rw-r--r-- | core/pim/todo/todomanager.cpp | 11 | ||||
-rw-r--r-- | core/pim/todo/todomanager.h | 5 | ||||
-rw-r--r-- | core/pim/todo/todoview.cpp | 25 | ||||
-rw-r--r-- | core/pim/todo/todoview.h | 18 |
8 files changed, 78 insertions, 38 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index a8f4c9c..47c0160 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp | |||
@@ -196,139 +196,155 @@ void MainWindow::initConfig() { | |||
196 | void MainWindow::initUI() { | 196 | void MainWindow::initUI() { |
197 | m_stack = new QWidgetStack(this, "main stack"); | 197 | m_stack = new QWidgetStack(this, "main stack"); |
198 | setCentralWidget( m_stack ); | 198 | setCentralWidget( m_stack ); |
199 | 199 | ||
200 | setToolBarsMovable( FALSE ); | 200 | setToolBarsMovable( FALSE ); |
201 | 201 | ||
202 | m_tool = new QToolBar( this ); | 202 | m_tool = new QToolBar( this ); |
203 | m_tool->setHorizontalStretchable( TRUE ); | 203 | m_tool->setHorizontalStretchable( TRUE ); |
204 | 204 | ||
205 | m_bar = new QMenuBar( m_tool ); | 205 | m_bar = new QMenuBar( m_tool ); |
206 | 206 | ||
207 | /** QPopupMenu */ | 207 | /** QPopupMenu */ |
208 | m_edit = new QPopupMenu( this ); | 208 | m_edit = new QPopupMenu( this ); |
209 | m_options = new QPopupMenu( this ); | 209 | m_options = new QPopupMenu( this ); |
210 | m_view = new QPopupMenu( this ); | 210 | m_view = new QPopupMenu( this ); |
211 | m_catMenu = new QPopupMenu( this ); | 211 | m_catMenu = new QPopupMenu( this ); |
212 | m_template = new QPopupMenu( this ); | 212 | m_template = new QPopupMenu( this ); |
213 | 213 | ||
214 | m_catMenu->setCheckable( TRUE ); | 214 | m_catMenu->setCheckable( TRUE ); |
215 | m_template->setCheckable( TRUE ); | 215 | m_template->setCheckable( TRUE ); |
216 | 216 | ||
217 | connect(m_catMenu, SIGNAL(activated(int) ), | 217 | connect(m_catMenu, SIGNAL(activated(int) ), |
218 | this, SLOT(setCategory(int) ) ); | 218 | this, SLOT(setCategory(int) ) ); |
219 | connect(m_template, SIGNAL(activated(int) ), | 219 | connect(m_template, SIGNAL(activated(int) ), |
220 | this, SLOT(slotNewFromTemplate(int) ) ); | 220 | this, SLOT(slotNewFromTemplate(int) ) ); |
221 | } | 221 | } |
222 | void MainWindow::initViews() { | 222 | void MainWindow::initViews() { |
223 | TableView* tableView = new TableView( this, this ); | 223 | TableView* tableView = new TableView( this, this ); |
224 | m_stack->addWidget( tableView, m_counter++ ); | 224 | m_stack->addWidget( tableView, m_counter++ ); |
225 | m_views.append( tableView ); | 225 | m_views.append( tableView ); |
226 | m_curView = tableView; | 226 | m_curView = tableView; |
227 | connectBase( tableView ); | 227 | connectBase( tableView ); |
228 | // tableView->setTodos( begin(), end() ); we call populateCategories | ||
229 | |||
230 | /* add QString type + QString configname to | 228 | /* add QString type + QString configname to |
231 | * the View menu | 229 | * the View menu |
232 | * and subdirs for multiple views | 230 | * and subdirs for multiple views |
233 | */ | 231 | */ |
234 | } | 232 | } |
235 | void MainWindow::initEditor() { | 233 | void MainWindow::initEditor() { |
236 | m_curEdit = new Editor(); | 234 | m_curEdit = new Editor(); |
237 | } | 235 | } |
238 | void MainWindow::initShow() { | 236 | void MainWindow::initShow() { |
239 | m_curShow = new TextViewShow(this); | 237 | m_curShow = new TextViewShow(this); |
240 | m_stack->addWidget( m_curShow->widget() , m_counter++ ); | 238 | m_stack->addWidget( m_curShow->widget() , m_counter++ ); |
241 | } | 239 | } |
242 | MainWindow::~MainWindow() { | 240 | MainWindow::~MainWindow() { |
243 | delete templateManager(); | 241 | delete templateManager(); |
244 | } | 242 | } |
245 | void MainWindow::connectBase( ViewBase* base) { | 243 | void MainWindow::connectBase( ViewBase* base) { |
246 | base->connectShow( this, SLOT(slotShow(int) ) ); | 244 | base->connectShow( this, SLOT(slotShow(int) ) ); |
247 | base->connectEdit( this, SLOT(slotEdit(int) ) ); | 245 | base->connectEdit( this, SLOT(slotEdit(int) ) ); |
248 | base->connectUpdateSmall( this, | 246 | base->connectUpdateSmall( this, |
249 | SLOT(slotUpate1(int, const Todo::SmallTodo&) )); | 247 | SLOT(slotUpate1(int, const Todo::SmallTodo&) )); |
250 | base->connectUpdateBig( this, | 248 | base->connectUpdateBig( this, |
251 | SLOT(slotUpate2(int, const OTodo& ) ) ); | 249 | SLOT(slotUpate2(int, const OTodo& ) ) ); |
252 | base->connectUpdateView( this, SLOT(slotUpdate3( QWidget* ) ) ) ; | 250 | base->connectUpdateView( this, SLOT(slotUpdate3( QWidget* ) ) ) ; |
253 | base->connectRemove(&m_todoMgr, | 251 | base->connectRemove(&m_todoMgr, |
254 | SLOT(remove(int)) ); | 252 | SLOT(remove(int)) ); |
255 | } | 253 | } |
256 | QPopupMenu* MainWindow::contextMenu( int uid ) { | 254 | QPopupMenu* MainWindow::contextMenu( int uid ) { |
257 | QPopupMenu* menu = new QPopupMenu(); | 255 | QPopupMenu* menu = new QPopupMenu(); |
258 | 256 | ||
259 | m_editAction->addTo( menu ); | 257 | m_editAction->addTo( menu ); |
260 | m_deleteAction->addTo( menu ); | 258 | m_deleteAction->addTo( menu ); |
261 | m_duplicateAction->addTo( menu ); | 259 | m_duplicateAction->addTo( menu ); |
262 | menu->insertSeparator(); | 260 | menu->insertSeparator(); |
263 | 261 | ||
264 | return menu; | 262 | return menu; |
265 | } | 263 | } |
266 | QPopupMenu* MainWindow::options() { | 264 | QPopupMenu* MainWindow::options() { |
267 | qWarning("Options"); | 265 | qWarning("Options"); |
268 | return m_options; | 266 | return m_options; |
269 | } | 267 | } |
270 | QPopupMenu* MainWindow::edit() { | 268 | QPopupMenu* MainWindow::edit() { |
271 | return m_edit; | 269 | return m_edit; |
272 | } | 270 | } |
273 | QPopupMenu* MainWindow::view() { | 271 | QPopupMenu* MainWindow::view() { |
274 | return m_view; | 272 | return m_view; |
275 | } | 273 | } |
276 | QToolBar* MainWindow::toolbar() { | 274 | QToolBar* MainWindow::toolbar() { |
277 | return m_tool; | 275 | return m_tool; |
278 | } | 276 | } |
279 | OTodoAccess::List::Iterator MainWindow::begin() { | 277 | OTodoAccess::List MainWindow::list()const { |
280 | return m_todoMgr.begin(); | 278 | return m_todoMgr.list(); |
279 | } | ||
280 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) { | ||
281 | int cat = 0; | ||
282 | if ( m_curCat == tr("All Categories") ) | ||
283 | cat = currentCatId(); | ||
284 | |||
285 | int filter = 1; | ||
286 | |||
287 | if (!m_completed ) | ||
288 | filter |= 4; | ||
289 | if (m_overdue) | ||
290 | filter |= 2; | ||
291 | |||
292 | return m_todoMgr.sorted( asc, sortOrder, filter, cat ); | ||
281 | } | 293 | } |
282 | OTodoAccess::List::Iterator MainWindow::end() { | 294 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) { |
283 | return m_todoMgr.end(); | 295 | int cat = 0; |
296 | if ( m_curCat == tr("All Categories") ) | ||
297 | cat = currentCatId(); | ||
298 | |||
299 | return m_todoMgr.sorted(asc, sortOrder, addFilter, cat ); | ||
284 | } | 300 | } |
285 | OTodo MainWindow::event( int uid ) { | 301 | OTodo MainWindow::event( int uid ) { |
286 | return m_todoMgr.event( uid ); | 302 | return m_todoMgr.event( uid ); |
287 | } | 303 | } |
288 | bool MainWindow::isSyncing()const { | 304 | bool MainWindow::isSyncing()const { |
289 | return m_syncing; | 305 | return m_syncing; |
290 | } | 306 | } |
291 | TemplateManager* MainWindow::templateManager() { | 307 | TemplateManager* MainWindow::templateManager() { |
292 | return m_tempManager; | 308 | return m_tempManager; |
293 | } | 309 | } |
294 | Editor* MainWindow::currentEditor() { | 310 | Editor* MainWindow::currentEditor() { |
295 | return m_curEdit; | 311 | return m_curEdit; |
296 | } | 312 | } |
297 | TodoShow* MainWindow::currentShow() { | 313 | TodoShow* MainWindow::currentShow() { |
298 | return m_curShow; | 314 | return m_curShow; |
299 | } | 315 | } |
300 | void MainWindow::slotReload() { | 316 | void MainWindow::slotReload() { |
301 | m_todoMgr.reload(); | 317 | m_todoMgr.reload(); |
302 | currentView()->setTodos( begin(), end() ); | 318 | currentView()->updateView( ); |
303 | raiseCurrentView(); | 319 | raiseCurrentView(); |
304 | } | 320 | } |
305 | void MainWindow::closeEvent( QCloseEvent* e ) { | 321 | void MainWindow::closeEvent( QCloseEvent* e ) { |
306 | if (m_stack->visibleWidget() == currentShow()->widget() ) { | 322 | if (m_stack->visibleWidget() == currentShow()->widget() ) { |
307 | raiseCurrentView(); | 323 | raiseCurrentView(); |
308 | e->ignore(); | 324 | e->ignore(); |
309 | return; | 325 | return; |
310 | } | 326 | } |
311 | /* | 327 | /* |
312 | * we should have flushed and now we're still saving | 328 | * we should have flushed and now we're still saving |
313 | * so there is no need to flush | 329 | * so there is no need to flush |
314 | */ | 330 | */ |
315 | if (m_syncing ) { | 331 | if (m_syncing ) { |
316 | e->accept(); | 332 | e->accept(); |
317 | return; | 333 | return; |
318 | } | 334 | } |
319 | bool quit = false; | 335 | bool quit = false; |
320 | if ( m_todoMgr.saveAll() ){ | 336 | if ( m_todoMgr.saveAll() ){ |
321 | qWarning("saved"); | 337 | qWarning("saved"); |
322 | quit = true; | 338 | quit = true; |
323 | }else { | 339 | }else { |
324 | if ( QMessageBox::critical( this, tr("Out of space"), | 340 | if ( QMessageBox::critical( this, tr("Out of space"), |
325 | tr("Todo was unable\n" | 341 | tr("Todo was unable\n" |
326 | "to save your changes.\n" | 342 | "to save your changes.\n" |
327 | "Free up some space\n" | 343 | "Free up some space\n" |
328 | "and try again.\n" | 344 | "and try again.\n" |
329 | "\nQuit Anyway?"), | 345 | "\nQuit Anyway?"), |
330 | QMessageBox::Yes|QMessageBox::Escape, | 346 | QMessageBox::Yes|QMessageBox::Escape, |
331 | QMessageBox::No|QMessageBox::Default) | 347 | QMessageBox::No|QMessageBox::Default) |
332 | != QMessageBox::No ) { | 348 | != QMessageBox::No ) { |
333 | e->accept(); | 349 | e->accept(); |
334 | quit = true; | 350 | quit = true; |
@@ -437,65 +453,65 @@ void MainWindow::slotDelete() { | |||
437 | m_todoMgr.remove( currentView()->current() ); | 453 | m_todoMgr.remove( currentView()->current() ); |
438 | currentView()->removeEvent( currentView()->current() ); | 454 | currentView()->removeEvent( currentView()->current() ); |
439 | raiseCurrentView(); | 455 | raiseCurrentView(); |
440 | } | 456 | } |
441 | void MainWindow::slotDeleteAll() { | 457 | void MainWindow::slotDeleteAll() { |
442 | if(m_syncing) { | 458 | if(m_syncing) { |
443 | QMessageBox::warning(this, tr("Todo"), | 459 | QMessageBox::warning(this, tr("Todo"), |
444 | tr("Can not edit data, currently syncing")); | 460 | tr("Can not edit data, currently syncing")); |
445 | return; | 461 | return; |
446 | } | 462 | } |
447 | 463 | ||
448 | //QString strName = table->text( table->currentRow(), 2 ).left( 30 ); | 464 | //QString strName = table->text( table->currentRow(), 2 ).left( 30 ); |
449 | 465 | ||
450 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("all tasks?") ) ) | 466 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("all tasks?") ) ) |
451 | return; | 467 | return; |
452 | 468 | ||
453 | m_todoMgr.removeAll(); | 469 | m_todoMgr.removeAll(); |
454 | currentView()->clear(); | 470 | currentView()->clear(); |
455 | 471 | ||
456 | raiseCurrentView(); | 472 | raiseCurrentView(); |
457 | } | 473 | } |
458 | void MainWindow::slotDeleteCompleted() { | 474 | void MainWindow::slotDeleteCompleted() { |
459 | if(m_syncing) { | 475 | if(m_syncing) { |
460 | QMessageBox::warning(this, tr("Todo"), | 476 | QMessageBox::warning(this, tr("Todo"), |
461 | tr("Can not edit data, currently syncing")); | 477 | tr("Can not edit data, currently syncing")); |
462 | return; | 478 | return; |
463 | } | 479 | } |
464 | 480 | ||
465 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("all completed tasks?") ) ) | 481 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("all completed tasks?") ) ) |
466 | return; | 482 | return; |
467 | 483 | ||
468 | m_todoMgr.remove( currentView()->completed() ); | 484 | m_todoMgr.remove( currentView()->completed() ); |
469 | currentView()->setTodos( begin(), end() ); | 485 | currentView()->updateView( ); |
470 | } | 486 | } |
471 | void MainWindow::slotFind() { | 487 | void MainWindow::slotFind() { |
472 | 488 | ||
473 | } | 489 | } |
474 | void MainWindow::slotEdit() { | 490 | void MainWindow::slotEdit() { |
475 | slotEdit( currentView()->current() ); | 491 | slotEdit( currentView()->current() ); |
476 | } | 492 | } |
477 | /* | 493 | /* |
478 | * set the category | 494 | * set the category |
479 | */ | 495 | */ |
480 | void MainWindow::setCategory( int c) { | 496 | void MainWindow::setCategory( int c) { |
481 | if ( c <= 0 ) return; | 497 | if ( c <= 0 ) return; |
482 | 498 | ||
483 | qWarning("Iterating over cats %d", c ); | 499 | qWarning("Iterating over cats %d", c ); |
484 | for ( unsigned int i = 1; i < m_catMenu->count(); i++ ) | 500 | for ( unsigned int i = 1; i < m_catMenu->count(); i++ ) |
485 | m_catMenu->setItemChecked(i, c == (int)i ); | 501 | m_catMenu->setItemChecked(i, c == (int)i ); |
486 | 502 | ||
487 | if (c == 1 ) { | 503 | if (c == 1 ) { |
488 | m_curCat = QString::null; | 504 | m_curCat = QString::null; |
489 | setCaption( tr("Todo") + " - " + tr("All Categories" ) ); | 505 | setCaption( tr("Todo") + " - " + tr("All Categories" ) ); |
490 | 506 | ||
491 | }else if ( c == (int)m_catMenu->count() - 1 ) { | 507 | }else if ( c == (int)m_catMenu->count() - 1 ) { |
492 | m_curCat = tr("Unfiled"); | 508 | m_curCat = tr("Unfiled"); |
493 | setCaption( tr("Todo") + " - " + tr("Unfiled") ); | 509 | setCaption( tr("Todo") + " - " + tr("Unfiled") ); |
494 | }else { | 510 | }else { |
495 | m_curCat = m_todoMgr.categories()[c-2]; | 511 | m_curCat = m_todoMgr.categories()[c-2]; |
496 | setCaption( tr("Todo") + " - " + m_curCat ); | 512 | setCaption( tr("Todo") + " - " + m_curCat ); |
497 | } | 513 | } |
498 | m_catMenu->setItemChecked( c, true ); | 514 | m_catMenu->setItemChecked( c, true ); |
499 | currentView()->setShowCategory( m_curCat ); | 515 | currentView()->setShowCategory( m_curCat ); |
500 | raiseCurrentView(); | 516 | raiseCurrentView(); |
501 | } | 517 | } |
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h index 43666f0..598c3af 100644 --- a/core/pim/todo/mainwindow.h +++ b/core/pim/todo/mainwindow.h | |||
@@ -41,67 +41,67 @@ | |||
41 | 41 | ||
42 | class QPopupMenu; | 42 | class QPopupMenu; |
43 | class QMenuBar; | 43 | class QMenuBar; |
44 | class QToolBar; | 44 | class QToolBar; |
45 | class QAction; | 45 | class QAction; |
46 | class QWidgetStack; | 46 | class QWidgetStack; |
47 | class Ir; | 47 | class Ir; |
48 | 48 | ||
49 | 49 | ||
50 | namespace Todo { | 50 | namespace 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::Iterator begin(); | 73 | OTodoAccess::List list()const; |
74 | OTodoAccess::List::Iterator end(); | 74 | OTodoAccess::List sorted( bool asc, int sortOrder ); |
75 | // OTodoAccess::List::Iterator &iterator(); | 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 | private slots: | 90 | private slots: |
91 | void populateCategories(); | 91 | void populateCategories(); |
92 | void slotReload(); | 92 | void slotReload(); |
93 | void slotFlush(); | 93 | void slotFlush(); |
94 | 94 | ||
95 | protected: | 95 | protected: |
96 | void closeEvent( QCloseEvent* e ); | 96 | void closeEvent( QCloseEvent* e ); |
97 | 97 | ||
98 | private: | 98 | private: |
99 | void connectBase( ViewBase* ); | 99 | void connectBase( ViewBase* ); |
100 | void initUI(); | 100 | void initUI(); |
101 | void initActions(); | 101 | void initActions(); |
102 | void initConfig(); | 102 | void initConfig(); |
103 | void initViews(); | 103 | void initViews(); |
104 | void initEditor(); | 104 | void initEditor(); |
105 | void initShow(); | 105 | void initShow(); |
106 | void initTemplate(); | 106 | void initTemplate(); |
107 | void raiseCurrentView(); | 107 | void raiseCurrentView(); |
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index 8cd2e7e..097af39 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp | |||
@@ -61,117 +61,119 @@ TableView::TableView( MainWindow* window, QWidget* wid ) | |||
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 | */ |
91 | void TableView::newDay() { | 91 | void TableView::newDay() { |
92 | clear(); | 92 | clear(); |
93 | setTodos( begin(),end() ); | 93 | updateView(); |
94 | } | 94 | } |
95 | TableView::~TableView() { | 95 | TableView::~TableView() { |
96 | 96 | ||
97 | } | 97 | } |
98 | void TableView::slotShowMenu() { | 98 | void 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 | } |
103 | OTodo TableView::find(int uid ) { | 103 | OTodo TableView::find(int uid ) { |
104 | OTodo ev = TodoView::event( uid ); | 104 | OTodo ev = TodoView::event( uid ); |
105 | return ev; | 105 | return ev; |
106 | } | 106 | } |
107 | void TableView::updateFromTable( const OTodo& ev, CheckItem* item ) { | 107 | void 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 | } |
124 | QString TableView::type() const { | 124 | QString TableView::type() const { |
125 | return QString::fromLatin1( tr("Table View") ); | 125 | return QString::fromLatin1( tr("Table View") ); |
126 | } | 126 | } |
127 | int TableView::current() { | 127 | int 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 | } |
135 | QString TableView::currentRepresentation() { | 135 | QString TableView::currentRepresentation() { |
136 | return text( currentRow(), 2); | 136 | return text( currentRow(), 2); |
137 | } | 137 | } |
138 | /* show overdue */ | 138 | /* show overdue */ |
139 | void TableView::showOverDue( bool ) { | 139 | void TableView::showOverDue( bool ) { |
140 | clear(); | 140 | clear(); |
141 | setTodos( begin(), end() ); | 141 | updateView(); |
142 | } | 142 | } |
143 | 143 | ||
144 | void TableView::setTodos( OTodoAccess::List::Iterator it, | 144 | void TableView::updateView( ) { |
145 | OTodoAccess::List::Iterator end ) { | 145 | OTodoAccess::List::Iterator it, end; |
146 | it = list().begin(); | ||
147 | end = list().end(); | ||
146 | qWarning("setTodos"); | 148 | qWarning("setTodos"); |
147 | QTime time; | 149 | QTime time; |
148 | time.start(); | 150 | time.start(); |
149 | m_enablePaint = false; | 151 | m_enablePaint = false; |
150 | setUpdatesEnabled( false ); | 152 | setUpdatesEnabled( false ); |
151 | viewport()->setUpdatesEnabled( false ); | 153 | viewport()->setUpdatesEnabled( false ); |
152 | clear(); | 154 | clear(); |
153 | QString currentCat = todoWindow()->currentCategory(); | 155 | QString currentCat = todoWindow()->currentCategory(); |
154 | bool showCompleted = todoWindow()->showCompleted(); | 156 | bool showCompleted = todoWindow()->showCompleted(); |
155 | bool showOverDue = todoWindow()->showOverDue(); | 157 | bool showOverDue = todoWindow()->showOverDue(); |
156 | qWarning( "Current Category:" + todoWindow()->currentCategory() ); | 158 | qWarning( "Current Category:" + todoWindow()->currentCategory() ); |
157 | int id = todoWindow()->currentCatId(); | 159 | int id = todoWindow()->currentCatId(); |
158 | QTime t; | 160 | QTime t; |
159 | t.start(); | 161 | t.start(); |
160 | setNumRows( it.count() ); | 162 | setNumRows( it.count() ); |
161 | uint i = 0; | 163 | uint i = 0; |
162 | for (; it != end; ++it ) { | 164 | for (; it != end; ++it ) { |
163 | OTodo todo = (*it); | 165 | OTodo todo = (*it); |
164 | /* test if the categories match */ | 166 | /* test if the categories match */ |
165 | if ( !currentCat.isEmpty() && | 167 | if ( !currentCat.isEmpty() && |
166 | !todo.categories().contains( id ) ) { | 168 | !todo.categories().contains( id ) ) { |
167 | continue; | 169 | continue; |
168 | } | 170 | } |
169 | /* the item is completed but we shouldn't show it */ | 171 | /* the item is completed but we shouldn't show it */ |
170 | if ( !showCompleted && todo.isCompleted() ) { | 172 | if ( !showCompleted && todo.isCompleted() ) { |
171 | qWarning("isCompleted "); | 173 | qWarning("isCompleted "); |
172 | continue; | 174 | continue; |
173 | } | 175 | } |
174 | /* the item is not overdue but we should only show overdue */ | 176 | /* the item is not overdue but we should only show overdue */ |
175 | if ( showOverDue && !todo.isOverdue() ) { | 177 | if ( showOverDue && !todo.isOverdue() ) { |
176 | continue; | 178 | continue; |
177 | } | 179 | } |
@@ -204,80 +206,80 @@ void TableView::setTodo( int uid, const OTodo& ev ) { | |||
204 | QString sum = ev.summary(); | 206 | QString sum = ev.summary(); |
205 | setText(row, 2, sum.isEmpty() ? | 207 | setText(row, 2, sum.isEmpty() ? |
206 | ev.description().left(40).simplifyWhiteSpace() : | 208 | ev.description().left(40).simplifyWhiteSpace() : |
207 | sum ); | 209 | sum ); |
208 | 210 | ||
209 | /* update priority */ | 211 | /* update priority */ |
210 | setText(row, 1, QString::number( ev.priority() ) ); | 212 | setText(row, 1, QString::number( ev.priority() ) ); |
211 | 213 | ||
212 | /* update DueDate */ | 214 | /* update DueDate */ |
213 | DueTextItem *due = dueItem( row ); | 215 | DueTextItem *due = dueItem( row ); |
214 | due->setToDoEvent( ev ); | 216 | due->setToDoEvent( ev ); |
215 | } | 217 | } |
216 | } | 218 | } |
217 | void TableView::addEvent( const OTodo& ev) { | 219 | void TableView::addEvent( const OTodo& ev) { |
218 | int row= numRows(); | 220 | int row= numRows(); |
219 | setNumRows( row + 1 ); | 221 | setNumRows( row + 1 ); |
220 | insertTodo( ev, row ); | 222 | insertTodo( ev, row ); |
221 | } | 223 | } |
222 | /* | 224 | /* |
223 | * find the event | 225 | * find the event |
224 | * and then replace the complete row | 226 | * and then replace the complete row |
225 | */ | 227 | */ |
226 | void TableView::replaceEvent( const OTodo& ev) { | 228 | void TableView::replaceEvent( const OTodo& ev) { |
227 | setTodo( ev.uid(), ev ); | 229 | setTodo( ev.uid(), ev ); |
228 | } | 230 | } |
229 | /* | 231 | /* |
230 | * re aligning table can be slow too | 232 | * re aligning table can be slow too |
231 | * FIXME: look what performs better | 233 | * FIXME: look what performs better |
232 | * either this or the old align table | 234 | * either this or the old align table |
233 | */ | 235 | */ |
234 | void TableView::removeEvent( int ) { | 236 | void TableView::removeEvent( int ) { |
235 | clear(); | 237 | clear(); |
236 | setTodos( begin(), end() ); | 238 | updateView(); |
237 | } | 239 | } |
238 | void TableView::setShowCompleted( bool b) { | 240 | void TableView::setShowCompleted( bool b) { |
239 | qWarning("Show Completed %d" + b ); | 241 | qWarning("Show Completed %d" + b ); |
240 | setTodos( begin(), end() ); | 242 | updateView(); |
241 | } | 243 | } |
242 | void TableView::setShowDeadline( bool b) { | 244 | void TableView::setShowDeadline( bool b) { |
243 | qWarning("Show DeadLine %d" + b ); | 245 | qWarning("Show DeadLine %d" + b ); |
244 | if (b) | 246 | if (b) |
245 | showColumn(3 ); | 247 | showColumn(3 ); |
246 | else | 248 | else |
247 | hideColumn(3 ); | 249 | hideColumn(3 ); |
248 | } | 250 | } |
249 | void TableView::setShowCategory( const QString& ) { | 251 | void TableView::setShowCategory( const QString& ) { |
250 | qWarning("setShowCategory"); | 252 | qWarning("setShowCategory"); |
251 | setTodos( begin(), end() ); | 253 | updateView(); |
252 | } | 254 | } |
253 | void TableView::clear() { | 255 | void TableView::clear() { |
254 | m_cache.clear(); | 256 | m_cache.clear(); |
255 | int rows = numRows(); | 257 | int rows = numRows(); |
256 | for (int r = 0; r < rows; r++ ) { | 258 | for (int r = 0; r < rows; r++ ) { |
257 | for (int c = 0; c < numCols(); c++ ) { | 259 | for (int c = 0; c < numCols(); c++ ) { |
258 | if ( cellWidget(r, c) ) | 260 | if ( cellWidget(r, c) ) |
259 | clearCellWidget(r, c ); | 261 | clearCellWidget(r, c ); |
260 | clearCell(r, c); | 262 | clearCell(r, c); |
261 | } | 263 | } |
262 | } | 264 | } |
263 | setNumRows( 0); | 265 | setNumRows( 0); |
264 | } | 266 | } |
265 | QArray<int> TableView::completed() { | 267 | QArray<int> TableView::completed() { |
266 | int row = numRows(); | 268 | int row = numRows(); |
267 | QArray<int> ids( row ); | 269 | QArray<int> ids( row ); |
268 | 270 | ||
269 | int j=0; | 271 | int j=0; |
270 | for (int i = 0; i < row; i++ ) { | 272 | for (int i = 0; i < row; i++ ) { |
271 | CheckItem* item = checkItem(i ); | 273 | CheckItem* item = checkItem(i ); |
272 | if (item->isChecked() ) { | 274 | if (item->isChecked() ) { |
273 | ids[j] = item->uid(); | 275 | ids[j] = item->uid(); |
274 | j++; | 276 | j++; |
275 | } | 277 | } |
276 | } | 278 | } |
277 | ids.resize( j ); | 279 | ids.resize( j ); |
278 | return ids; | 280 | return ids; |
279 | } | 281 | } |
280 | void TableView::slotClicked(int row, int col, int, | 282 | void TableView::slotClicked(int row, int col, int, |
281 | const QPoint& point) { | 283 | const QPoint& point) { |
282 | if ( !cellGeometry(row, col ).contains(point ) ) | 284 | if ( !cellGeometry(row, col ).contains(point ) ) |
283 | return; | 285 | return; |
diff --git a/core/pim/todo/tableview.h b/core/pim/todo/tableview.h index 721b40b..1fa21b2 100644 --- a/core/pim/todo/tableview.h +++ b/core/pim/todo/tableview.h | |||
@@ -25,66 +25,65 @@ | |||
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 | ||
38 | class QTimer; | 38 | class QTimer; |
39 | 39 | ||
40 | namespace Todo { | 40 | namespace 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 | void updateFromTable( const OTodo&, CheckItem* = 0 ); | 49 | void updateFromTable( const OTodo&, CheckItem* = 0 ); |
50 | OTodo find(int uid); | 50 | OTodo find(int uid); |
51 | 51 | ||
52 | QString type()const; | 52 | QString type()const; |
53 | int current(); | 53 | int current(); |
54 | QString currentRepresentation(); | 54 | QString currentRepresentation(); |
55 | 55 | ||
56 | void showOverDue( bool ); | 56 | void showOverDue( bool ); |
57 | void setTodos( OTodoAccess::List::Iterator it, | 57 | void updateView(); |
58 | OTodoAccess::List::Iterator end ); | ||
59 | void setTodo( int uid, const OTodo& ); | 58 | void setTodo( int uid, const OTodo& ); |
60 | void addEvent( const OTodo& event ); | 59 | void addEvent( const OTodo& event ); |
61 | void replaceEvent( const OTodo& ); | 60 | void replaceEvent( const OTodo& ); |
62 | void removeEvent( int uid ); | 61 | void removeEvent( int uid ); |
63 | void setShowCompleted( bool ); | 62 | void setShowCompleted( bool ); |
64 | void setShowDeadline( bool ); | 63 | void setShowDeadline( bool ); |
65 | 64 | ||
66 | void setShowCategory(const QString& =QString::null ); | 65 | void setShowCategory(const QString& =QString::null ); |
67 | void clear(); | 66 | void clear(); |
68 | void newDay(); | 67 | void newDay(); |
69 | QArray<int> completed(); | 68 | QArray<int> completed(); |
70 | QWidget* widget(); | 69 | QWidget* widget(); |
71 | void sortColumn(int, bool, bool ); | 70 | void sortColumn(int, bool, bool ); |
72 | private: | 71 | private: |
73 | /* reimplented for internal reasons */ | 72 | /* reimplented for internal reasons */ |
74 | void viewportPaintEvent( QPaintEvent* ); | 73 | void viewportPaintEvent( QPaintEvent* ); |
75 | inline void insertTodo( const OTodo&, int row ); | 74 | inline void insertTodo( const OTodo&, int row ); |
76 | CheckItem* checkItem( int row ); | 75 | CheckItem* checkItem( int row ); |
77 | DueTextItem* dueItem( int row ); | 76 | DueTextItem* dueItem( int row ); |
78 | QTimer *m_menuTimer; | 77 | QTimer *m_menuTimer; |
79 | QMap<int, CheckItem*> m_cache; | 78 | QMap<int, CheckItem*> m_cache; |
80 | bool m_enablePaint:1; | 79 | bool m_enablePaint:1; |
81 | 80 | ||
82 | private slots: | 81 | private slots: |
83 | void slotShowMenu(); | 82 | void slotShowMenu(); |
84 | void slotClicked(int, int, int, | 83 | void slotClicked(int, int, int, |
85 | const QPoint& ); | 84 | const QPoint& ); |
86 | void slotPressed(int, int, int, | 85 | void slotPressed(int, int, int, |
87 | const QPoint& ); | 86 | const QPoint& ); |
88 | void slotValueChanged(int, int); | 87 | void slotValueChanged(int, int); |
89 | void slotCurrentChanged(int, int ); | 88 | void slotCurrentChanged(int, int ); |
90 | }; | 89 | }; |
diff --git a/core/pim/todo/todomanager.cpp b/core/pim/todo/todomanager.cpp index 8e3fa88..ebf9e8a 100644 --- a/core/pim/todo/todomanager.cpp +++ b/core/pim/todo/todomanager.cpp | |||
@@ -20,73 +20,72 @@ | |||
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 <qdatetime.h> | 28 | #include <qdatetime.h> |
29 | #include <qpe/categoryselect.h> | 29 | #include <qpe/categoryselect.h> |
30 | 30 | ||
31 | #include "todomanager.h" | 31 | #include "todomanager.h" |
32 | 32 | ||
33 | using namespace Todo; | 33 | using namespace Todo; |
34 | 34 | ||
35 | TodoManager::TodoManager( QObject *obj ) | 35 | TodoManager::TodoManager( QObject *obj ) |
36 | : QObject( obj ) { | 36 | : QObject( obj ) { |
37 | m_db = 0l; | 37 | m_db = 0l; |
38 | QTime time; | 38 | QTime time; |
39 | time.start(); | 39 | time.start(); |
40 | int el = time.elapsed(); | 40 | int el = time.elapsed(); |
41 | qWarning("QTimer for loading %d", el/1000 ); | 41 | qWarning("QTimer for loading %d", el/1000 ); |
42 | } | 42 | } |
43 | TodoManager::~TodoManager() { | 43 | TodoManager::~TodoManager() { |
44 | delete m_db; | 44 | delete m_db; |
45 | } | 45 | } |
46 | OTodo TodoManager::event(int uid ) { | 46 | OTodo TodoManager::event(int uid ) { |
47 | return m_db->find( uid ); | 47 | return m_db->find( uid ); |
48 | } | 48 | } |
49 | void TodoManager::updateList() { | 49 | void TodoManager::updateList() { |
50 | m_list = m_db->allRecords(); | 50 | m_list = m_db->allRecords(); |
51 | } | 51 | } |
52 | OTodoAccess::List::Iterator TodoManager::begin() { | 52 | OTodoAccess::List TodoManager::list() const{ |
53 | m_it = m_list.begin(); | 53 | return m_list; |
54 | return m_it; | ||
55 | } | 54 | } |
56 | OTodoAccess::List::Iterator TodoManager::end() { | 55 | OTodoAccess::List TodoManager::sorted( bool asc, int so, int f, int cat ) { |
57 | return m_list.end(); | 56 | return m_db->sorted( asc, so, f, cat ); |
58 | } | 57 | } |
59 | OTodoAccess::List::Iterator TodoManager::overDue() { | 58 | OTodoAccess::List::Iterator TodoManager::overDue() { |
60 | int filter = 2 & 1; | 59 | int filter = 2 | 1; |
61 | m_list = m_db->sorted(m_asc, m_sortOrder, filter, m_ca ); | 60 | m_list = m_db->sorted(m_asc, m_sortOrder, filter, m_ca ); |
62 | m_it = m_list.begin(); | 61 | m_it = m_list.begin(); |
63 | return m_it; | 62 | return m_it; |
64 | } | 63 | } |
65 | OTodoAccess::List::Iterator TodoManager::fromTo( const QDate& start, | 64 | OTodoAccess::List::Iterator TodoManager::fromTo( const QDate& start, |
66 | const QDate& end ) { | 65 | const QDate& end ) { |
67 | m_list = m_db->effectiveToDos( start, end ); | 66 | m_list = m_db->effectiveToDos( start, end ); |
68 | m_it = m_list.begin(); | 67 | m_it = m_list.begin(); |
69 | return m_it; | 68 | return m_it; |
70 | } | 69 | } |
71 | OTodoAccess::List::Iterator TodoManager::query( const OTodo& ev, int query ) { | 70 | OTodoAccess::List::Iterator TodoManager::query( const OTodo& ev, int query ) { |
72 | m_list = m_db->queryByExample( ev, query ); | 71 | m_list = m_db->queryByExample( ev, query ); |
73 | m_it = m_list.begin(); | 72 | m_it = m_list.begin(); |
74 | return m_it; | 73 | return m_it; |
75 | } | 74 | } |
76 | OTodoAccess* TodoManager::todoDB() { | 75 | OTodoAccess* TodoManager::todoDB() { |
77 | return m_db; | 76 | return m_db; |
78 | } | 77 | } |
79 | void TodoManager::add( const OTodo& ev ) { | 78 | void TodoManager::add( const OTodo& ev ) { |
80 | m_db->add( ev ); | 79 | m_db->add( ev ); |
81 | } | 80 | } |
82 | void TodoManager::update( int, const SmallTodo& ) { | 81 | void TodoManager::update( int, const SmallTodo& ) { |
83 | 82 | ||
84 | } | 83 | } |
85 | void TodoManager::update( int, const OTodo& ev) { | 84 | void TodoManager::update( int, const OTodo& ev) { |
86 | m_db->replace( ev ); | 85 | m_db->replace( ev ); |
87 | } | 86 | } |
88 | void TodoManager::remove( int uid ) { | 87 | void TodoManager::remove( int uid ) { |
89 | m_db->remove( uid ); | 88 | m_db->remove( uid ); |
90 | } | 89 | } |
91 | void TodoManager::removeAll() { | 90 | void TodoManager::removeAll() { |
92 | m_db->clear(); | 91 | m_db->clear(); |
diff --git a/core/pim/todo/todomanager.h b/core/pim/todo/todomanager.h index 1f9e288..b03b598 100644 --- a/core/pim/todo/todomanager.h +++ b/core/pim/todo/todomanager.h | |||
@@ -27,67 +27,66 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #ifndef OPIE_TODO_MANAGER_H | 29 | #ifndef OPIE_TODO_MANAGER_H |
30 | #define OPIE_TODO_MANAGER_H | 30 | #define OPIE_TODO_MANAGER_H |
31 | 31 | ||
32 | #include <qarray.h> | 32 | #include <qarray.h> |
33 | #include <qobject.h> | 33 | #include <qobject.h> |
34 | #include <qstring.h> | 34 | #include <qstring.h> |
35 | 35 | ||
36 | #include <qpe/categories.h> | 36 | #include <qpe/categories.h> |
37 | 37 | ||
38 | #include <opie/otodo.h> | 38 | #include <opie/otodo.h> |
39 | #include <opie/otodoaccess.h> | 39 | #include <opie/otodoaccess.h> |
40 | 40 | ||
41 | #include "smalltodo.h" | 41 | #include "smalltodo.h" |
42 | 42 | ||
43 | 43 | ||
44 | namespace Todo { | 44 | namespace Todo { |
45 | class TodoManager : public QObject{ | 45 | class TodoManager : public QObject{ |
46 | Q_OBJECT | 46 | Q_OBJECT |
47 | public: | 47 | public: |
48 | bool isLoaded()const; | 48 | bool isLoaded()const; |
49 | void load(); | 49 | void load(); |
50 | TodoManager(QObject* obj = 0); | 50 | TodoManager(QObject* obj = 0); |
51 | ~TodoManager(); | 51 | ~TodoManager(); |
52 | 52 | ||
53 | QStringList categories()/*const*/; | 53 | QStringList categories()/*const*/; |
54 | int catId(const QString&); | 54 | int catId(const QString&); |
55 | OTodo event(int uid ); | 55 | OTodo event(int uid ); |
56 | 56 | ||
57 | void updateList(); | 57 | void updateList(); |
58 | /** returns the iterator sorted if set sorted*/ | 58 | /** returns the iterator sorted if set sorted*/ |
59 | OTodoAccess::List::Iterator begin(); | 59 | OTodoAccess::List list()const; |
60 | OTodoAccess::List::Iterator end(); | 60 | OTodoAccess::List sorted( bool asc, int so, int f, int cat ); |
61 | OTodoAccess::List& list(); | ||
62 | 61 | ||
63 | OTodoAccess::List::Iterator overDue(); | 62 | OTodoAccess::List::Iterator overDue(); |
64 | OTodoAccess::List::Iterator fromTo( const QDate& start, | 63 | OTodoAccess::List::Iterator fromTo( const QDate& start, |
65 | const QDate& end ); | 64 | const QDate& end ); |
66 | OTodoAccess::List::Iterator query( const OTodo& ev, int query ); | 65 | OTodoAccess::List::Iterator query( const OTodo& ev, int query ); |
67 | 66 | ||
68 | void setCategory( bool sort, int category = -1); | 67 | void setCategory( bool sort, int category = -1); |
69 | void setShowOverDue( bool show ); | 68 | void setShowOverDue( bool show ); |
70 | void setSortOrder( int sortOrder ); | 69 | void setSortOrder( int sortOrder ); |
71 | void setSortASC( bool ); | 70 | void setSortASC( bool ); |
72 | void sort(); | 71 | void sort(); |
73 | 72 | ||
74 | OTodoAccess* todoDB(); | 73 | OTodoAccess* todoDB(); |
75 | bool saveAll(); | 74 | bool saveAll(); |
76 | 75 | ||
77 | 76 | ||
78 | signals: | 77 | signals: |
79 | void update(); | 78 | void update(); |
80 | void updateCategories(); | 79 | void updateCategories(); |
81 | 80 | ||
82 | public slots: | 81 | public slots: |
83 | void add( const OTodo& ); | 82 | void add( const OTodo& ); |
84 | void update( int uid, const SmallTodo& ); | 83 | void update( int uid, const SmallTodo& ); |
85 | void update( int uid, const OTodo& ); | 84 | void update( int uid, const OTodo& ); |
86 | void remove( int uid ); | 85 | void remove( int uid ); |
87 | void remove( const QArray<int>& ); | 86 | void remove( const QArray<int>& ); |
88 | void removeAll(); | 87 | void removeAll(); |
89 | void reload(); | 88 | void reload(); |
90 | void save(); | 89 | void save(); |
91 | 90 | ||
92 | private: | 91 | private: |
93 | OTodoAccess* m_db; | 92 | OTodoAccess* m_db; |
diff --git a/core/pim/todo/todoview.cpp b/core/pim/todo/todoview.cpp index 5362b23..b77baed 100644 --- a/core/pim/todo/todoview.cpp +++ b/core/pim/todo/todoview.cpp | |||
@@ -1,62 +1,77 @@ | |||
1 | #include "mainwindow.h" | 1 | #include "mainwindow.h" |
2 | 2 | ||
3 | #include "todoview.h" | 3 | #include "todoview.h" |
4 | 4 | ||
5 | using namespace Todo; | 5 | using namespace Todo; |
6 | 6 | ||
7 | TodoView::TodoView( MainWindow* win ) | 7 | TodoView::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; | ||
12 | m_sortOrder = -1; | ||
11 | } | 13 | } |
12 | TodoView::~TodoView() { | 14 | TodoView::~TodoView() { |
13 | delete hack; | 15 | delete hack; |
14 | }; | 16 | }; |
15 | 17 | ||
16 | void TodoView::connectShow(QObject* obj, | 18 | void TodoView::connectShow(QObject* obj, |
17 | const char* slot ) { | 19 | const char* slot ) { |
18 | QObject::connect( hack, SIGNAL(showTodo(int) ), | 20 | QObject::connect( hack, SIGNAL(showTodo(int) ), |
19 | obj, slot ); | 21 | obj, slot ); |
20 | } | 22 | } |
21 | void TodoView::connectEdit( QObject* obj, | 23 | void TodoView::connectEdit( QObject* obj, |
22 | const char* slot ) { | 24 | const char* slot ) { |
23 | QObject::connect( hack, SIGNAL(edit(int) ), | 25 | QObject::connect( hack, SIGNAL(edit(int) ), |
24 | obj, slot ); | 26 | obj, slot ); |
25 | } | 27 | } |
26 | void TodoView::connectUpdateSmall( QObject* obj, | 28 | void TodoView::connectUpdateSmall( QObject* obj, |
27 | const char* slot ) { | 29 | const char* slot ) { |
28 | QObject::connect( hack, SIGNAL(update(int, const Todo::SmallTodo& ) ), | 30 | QObject::connect( hack, SIGNAL(update(int, const Todo::SmallTodo& ) ), |
29 | obj, slot ); | 31 | obj, slot ); |
30 | } | 32 | } |
31 | void TodoView::connectUpdateBig( QObject* obj, | 33 | void TodoView::connectUpdateBig( QObject* obj, |
32 | const char* slot ) { | 34 | const char* slot ) { |
33 | QObject::connect( hack, SIGNAL(update(int, const OTodo& ) ), | 35 | QObject::connect( hack, SIGNAL(update(int, const OTodo& ) ), |
34 | obj, slot ); | 36 | obj, slot ); |
35 | } | 37 | } |
36 | void TodoView::connectUpdateView( QObject* obj, | 38 | void TodoView::connectUpdateView( QObject* obj, |
37 | const char* slot ) { | 39 | const char* slot ) { |
38 | QObject::connect( hack, SIGNAL(update(QWidget*) ), | 40 | QObject::connect( hack, SIGNAL(update(QWidget*) ), |
39 | obj, slot ); | 41 | obj, slot ); |
40 | } | 42 | } |
41 | void TodoView::connectRemove( QObject* obj, | 43 | void TodoView::connectRemove( QObject* obj, |
42 | const char* slot ) { | 44 | const char* slot ) { |
43 | QObject::connect( hack, SIGNAL(remove(int) ), | 45 | QObject::connect( hack, SIGNAL(remove(int) ), |
44 | obj, slot ); | 46 | obj, slot ); |
45 | } | 47 | } |
46 | MainWindow* TodoView::todoWindow() { | 48 | MainWindow* TodoView::todoWindow() { |
47 | return m_main; | 49 | return m_main; |
48 | } | 50 | } |
49 | 51 | ||
50 | OTodo TodoView::event(int uid ) { return m_main->event( uid ); } | 52 | OTodo TodoView::event(int uid ) { return m_main->event( uid ); } |
51 | OTodoAccess::List::Iterator TodoView::begin() { | 53 | OTodoAccess::List TodoView::list(){ |
52 | m_main->updateList(); | 54 | todoWindow()->updateList(); |
53 | return m_main->begin(); | 55 | return todoWindow()->list(); |
56 | } | ||
57 | OTodoAccess::List TodoView::sorted(){ | ||
58 | return m_sort; | ||
59 | } | ||
60 | void TodoView::sort() { | ||
61 | m_sort = todoWindow()->sorted(m_asc,m_sortOrder ); | ||
62 | } | ||
63 | void TodoView::sort(int sort) { | ||
64 | m_sort = todoWindow()->sorted(m_asc, m_sortOrder, sort ); | ||
65 | } | ||
66 | void TodoView::setSortOrder( int order ) { | ||
67 | m_sortOrder = order; | ||
68 | } | ||
69 | void TodoView::setAscending( bool b ) { | ||
70 | m_asc = b; | ||
54 | } | 71 | } |
55 | OTodoAccess::List::Iterator TodoView::end() { return m_main->end(); } | ||
56 | |||
57 | void TodoView::update(int uid, const SmallTodo& to ) { | 72 | void TodoView::update(int uid, const SmallTodo& to ) { |
58 | //m_main->slotUpate1( uid, to ); | 73 | //m_main->slotUpate1( uid, to ); |
59 | } | 74 | } |
60 | void TodoView::update(int uid, const OTodo& ev ) { | 75 | void TodoView::update(int uid, const OTodo& ev ) { |
61 | m_main->updateTodo( ev ); | 76 | m_main->updateTodo( ev ); |
62 | } | 77 | } |
diff --git a/core/pim/todo/todoview.h b/core/pim/todo/todoview.h index e4985a7..81ace3a 100644 --- a/core/pim/todo/todoview.h +++ b/core/pim/todo/todoview.h | |||
@@ -60,119 +60,129 @@ namespace Todo { | |||
60 | void emitUpdate( int uid, | 60 | void emitUpdate( int uid, |
61 | const OTodo& ev ){ | 61 | const OTodo& ev ){ |
62 | emit update(uid, ev ); | 62 | emit update(uid, ev ); |
63 | } | 63 | } |
64 | void emitRemove( int uid ) { | 64 | void emitRemove( int uid ) { |
65 | emit remove( uid ); | 65 | emit remove( uid ); |
66 | } | 66 | } |
67 | void emitUpdate( QWidget* wid ) { | 67 | void emitUpdate( QWidget* wid ) { |
68 | emit update( wid ); | 68 | emit update( wid ); |
69 | } | 69 | } |
70 | signals: | 70 | signals: |
71 | void showTodo(int uid ); | 71 | void showTodo(int uid ); |
72 | void edit(int uid ); | 72 | void edit(int uid ); |
73 | void update( int uid, const Todo::SmallTodo& ); | 73 | void update( int uid, const Todo::SmallTodo& ); |
74 | void update( int uid, const OTodo& ); | 74 | void update( int uid, const OTodo& ); |
75 | /* sorry you need to cast */; | 75 | /* sorry you need to cast */; |
76 | void update( QWidget* wid ); | 76 | void update( QWidget* wid ); |
77 | void remove( int uid ); | 77 | void remove( int uid ); |
78 | 78 | ||
79 | }; | 79 | }; |
80 | class MainWindow; | 80 | class MainWindow; |
81 | 81 | ||
82 | /** | 82 | /** |
83 | * due to inheretince problems we need this base class | 83 | * due to inheretince problems we need this base class |
84 | */ | 84 | */ |
85 | class ViewBase { | 85 | class ViewBase { |
86 | public: | 86 | public: |
87 | virtual QWidget* widget() = 0; | 87 | virtual QWidget* widget() = 0; |
88 | virtual QString type()const = 0; | 88 | virtual QString type()const = 0; |
89 | virtual int current() = 0; | 89 | virtual int current() = 0; |
90 | virtual QString currentRepresentation() = 0; | 90 | virtual QString currentRepresentation() = 0; |
91 | virtual void showOverDue( bool ) = 0; | 91 | virtual void showOverDue( bool ) = 0; |
92 | virtual void setTodos( OTodoAccess::List::Iterator it, | 92 | |
93 | OTodoAccess::List::Iterator end ) = 0; | 93 | /* |
94 | * update the view | ||
95 | */ | ||
96 | virtual void updateView() = 0; | ||
94 | 97 | ||
95 | virtual void addEvent( const OTodo& ) = 0; | 98 | virtual void addEvent( const OTodo& ) = 0; |
96 | virtual void replaceEvent( const OTodo& ) = 0; | 99 | virtual void replaceEvent( const OTodo& ) = 0; |
97 | virtual void removeEvent( int uid ) = 0; | 100 | virtual void removeEvent( int uid ) = 0; |
98 | virtual void setShowCompleted( bool ) = 0; | 101 | virtual void setShowCompleted( bool ) = 0; |
99 | virtual void setShowDeadline( bool ) = 0; | 102 | virtual void setShowDeadline( bool ) = 0; |
100 | virtual void setShowCategory( const QString& = QString::null ) = 0; | 103 | virtual void setShowCategory( const QString& = QString::null ) = 0; |
101 | virtual void clear() = 0; | 104 | virtual void clear() = 0; |
102 | virtual QArray<int> completed() = 0; | 105 | virtual QArray<int> completed() = 0; |
103 | virtual void newDay() = 0; | 106 | virtual void newDay() = 0; |
104 | 107 | ||
105 | virtual void connectShow( QObject*, const char* ) = 0; | 108 | virtual void connectShow( QObject*, const char* ) = 0; |
106 | virtual void connectEdit( QObject*, const char* ) = 0; | 109 | virtual void connectEdit( QObject*, const char* ) = 0; |
107 | virtual void connectUpdateSmall( QObject*, const char* ) = 0; | 110 | virtual void connectUpdateSmall( QObject*, const char* ) = 0; |
108 | virtual void connectUpdateBig( QObject*, const char* ) = 0; | 111 | virtual void connectUpdateBig( QObject*, const char* ) = 0; |
109 | virtual void connectUpdateView( QObject*, const char*) = 0; | 112 | virtual void connectUpdateView( QObject*, const char*) = 0; |
110 | virtual void connectRemove( QObject*, const char* ) = 0; | 113 | virtual void connectRemove( QObject*, const char* ) = 0; |
111 | 114 | ||
112 | }; | 115 | }; |
113 | 116 | ||
114 | /** | 117 | /** |
115 | * A base class for all TodoView which are showing | 118 | * A base class for all TodoView which are showing |
116 | * a list of todos. | 119 | * a list of todos. |
117 | * Either in a QTable, QListView or any other QWidget | 120 | * Either in a QTable, QListView or any other QWidget |
118 | * derived class | 121 | * derived class |
119 | * Through the MainWindow( dispatcher ) one can access | 122 | * Through the MainWindow( dispatcher ) one can access |
120 | * the relevant informations | 123 | * the relevant informations |
121 | * | 124 | * |
122 | * It's not possible to have signal and slots from within | 125 | * It's not possible to have signal and slots from within |
123 | * templates this way you've to register for a signal | 126 | * templates this way you've to register for a signal |
124 | */ | 127 | */ |
125 | class TodoView : public ViewBase{ | 128 | class TodoView : public ViewBase{ |
126 | 129 | ||
127 | public: | 130 | public: |
128 | /** | 131 | /** |
129 | * c'tor | 132 | * c'tor |
130 | */ | 133 | */ |
131 | TodoView( MainWindow* win ); | 134 | TodoView( MainWindow* win ); |
132 | 135 | ||
133 | /** | 136 | /** |
134 | *d'tor | 137 | *d'tor |
135 | */ | 138 | */ |
136 | virtual ~TodoView(); | 139 | virtual ~TodoView(); |
137 | 140 | ||
138 | /* connect to the show signal */ | 141 | /* connect to the show signal */ |
139 | void connectShow(QObject* obj, | 142 | void connectShow(QObject* obj, |
140 | const char* slot ); | 143 | const char* slot ); |
141 | 144 | ||
142 | /* connect to edit */ | 145 | /* connect to edit */ |
143 | void connectEdit( QObject* obj, | 146 | void connectEdit( QObject* obj, |
144 | const char* slot ); | 147 | const char* slot ); |
145 | void connectUpdateSmall( QObject* obj, | 148 | void connectUpdateSmall( QObject* obj, |
146 | const char* slot ); | 149 | const char* slot ); |
147 | void connectUpdateBig( QObject* obj, | 150 | void connectUpdateBig( QObject* obj, |
148 | const char* slot ) ; | 151 | const char* slot ) ; |
149 | void connectUpdateView( QObject* obj, | 152 | void connectUpdateView( QObject* obj, |
150 | const char* slot ); | 153 | const char* slot ); |
151 | void connectRemove( QObject* obj, | 154 | void connectRemove( QObject* obj, |
152 | const char* slot ); | 155 | const char* slot ); |
153 | protected: | 156 | protected: |
154 | MainWindow* todoWindow(); | 157 | MainWindow* todoWindow(); |
155 | OTodo event(int uid ); | 158 | OTodo event(int uid ); |
156 | OTodoAccess::List::Iterator begin(); | 159 | OTodoAccess::List list(); |
157 | OTodoAccess::List::Iterator end(); | 160 | OTodoAccess::List sorted(); |
161 | void sort(); | ||
162 | void sort(int sort ); | ||
163 | void setSortOrder( int order ); | ||
164 | void setAscending( bool ); | ||
158 | 165 | ||
159 | /* | 166 | /* |
160 | These things needs to be implemented | 167 | These things needs to be implemented |
161 | in a implementation | 168 | in a implementation |
162 | signals: | 169 | signals: |
163 | */ | 170 | */ |
164 | protected: | 171 | protected: |
165 | void showTodo( int uid ) { hack->emitShow(uid); } | 172 | void showTodo( int uid ) { hack->emitShow(uid); } |
166 | void edit( int uid ) { hack->emitEdit(uid); } | 173 | void edit( int uid ) { hack->emitEdit(uid); } |
167 | void update(int uid, const SmallTodo& to ); | 174 | void update(int uid, const SmallTodo& to ); |
168 | void update(int uid, const OTodo& ev); | 175 | void update(int uid, const OTodo& ev); |
169 | void remove( int uid ) { | 176 | void remove( int uid ) { |
170 | hack->emitRemove( uid ); | 177 | hack->emitRemove( uid ); |
171 | } | 178 | } |
172 | private: | 179 | private: |
173 | InternQtHack* hack; | 180 | InternQtHack* hack; |
174 | MainWindow *m_main; | 181 | MainWindow *m_main; |
182 | OTodoAccess::List m_sort; | ||
183 | bool m_asc : 1; | ||
184 | int m_sortOrder; | ||
175 | }; | 185 | }; |
176 | }; | 186 | }; |
177 | 187 | ||
178 | #endif | 188 | #endif |