-rw-r--r-- | core/pim/todo/TODO | 3 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.cpp | 68 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.h | 16 | ||||
-rw-r--r-- | core/pim/todo/opie-todo.control | 2 | ||||
-rw-r--r-- | core/pim/todo/todo.pro | 6 | ||||
-rw-r--r-- | core/pim/todo/todolabel.cc | 58 | ||||
-rw-r--r-- | core/pim/todo/todolabel.h | 51 | ||||
-rw-r--r-- | core/pim/todo/todotable.cpp | 24 | ||||
-rw-r--r-- | core/pim/todo/todotable.h | 2 |
9 files changed, 202 insertions, 28 deletions
diff --git a/core/pim/todo/TODO b/core/pim/todo/TODO index 7601dd2..b00450c 100644 --- a/core/pim/todo/TODO +++ b/core/pim/todo/TODO | |||
@@ -1,4 +1 @@ | |||
1 | -fix the journal (wip ) | ||
2 | -fix day wrapping update all DueDateItems | ||
3 | -when checking the C. box update the deadline | -when checking the C. box update the deadline | |
4 | -TodoLabel : public TextView | ||
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index fc17c5f..d3f4cb4 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp | |||
@@ -1,12 +1,12 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | Copyright (C) 2002 zecke | 3 | ** Copyright (C) 2002 zecke |
4 | Copyright (C) 2002 Stefan Eilers | 4 | ** Copyright (C) 2002 Stefan Eilers (se, eilers.stefan@epost.de) |
5 | ** | 5 | ** |
6 | ** This file is part of Qtopia Environment. | 6 | ** This file is part of Qtopia Environment. |
7 | ** | 7 | ** |
8 | ** This file may be distributed and/or modified under the terms of the | 8 | ** This file may be distributed and/or modified under the terms of the |
9 | ** GNU General Public License version 2 as published by the Free Software | 9 | ** GNU General Public License version 2 as published by the Free Software |
10 | ** Foundation and appearing in the file LICENSE.GPL included in the | 10 | ** Foundation and appearing in the file LICENSE.GPL included in the |
11 | ** packaging of this file. | 11 | ** packaging of this file. |
12 | ** | 12 | ** |
@@ -20,16 +20,17 @@ | |||
20 | ** | 20 | ** |
21 | **********************************************************************/ | 21 | **********************************************************************/ |
22 | 22 | ||
23 | #define QTOPIA_INTERNAL_FD | 23 | #define QTOPIA_INTERNAL_FD |
24 | 24 | ||
25 | #include "mainwindow.h" | 25 | #include "mainwindow.h" |
26 | #include "todoentryimpl.h" | 26 | #include "todoentryimpl.h" |
27 | #include "todotable.h" | 27 | #include "todotable.h" |
28 | #include "todolabel.h" | ||
28 | 29 | ||
29 | #include <opie/tododb.h> | 30 | #include <opie/tododb.h> |
30 | #include <opie/todovcalresource.h> | 31 | #include <opie/todovcalresource.h> |
31 | #include <opie/ofontmenu.h> | 32 | #include <opie/ofontmenu.h> |
32 | 33 | ||
33 | #include <qpe/qpeapplication.h> | 34 | #include <qpe/qpeapplication.h> |
34 | #include <qpe/config.h> | 35 | #include <qpe/config.h> |
35 | #include <qpe/finddialog.h> | 36 | #include <qpe/finddialog.h> |
@@ -43,16 +44,17 @@ | |||
43 | 44 | ||
44 | #include <qaction.h> | 45 | #include <qaction.h> |
45 | #include <qarray.h> | 46 | #include <qarray.h> |
46 | #include <qdatastream.h> | 47 | #include <qdatastream.h> |
47 | #include <qdatetime.h> | 48 | #include <qdatetime.h> |
48 | #include <qfile.h> | 49 | #include <qfile.h> |
49 | #include <qmessagebox.h> | 50 | #include <qmessagebox.h> |
50 | #include <qpopupmenu.h> | 51 | #include <qpopupmenu.h> |
52 | #include <qwidgetstack.h> | ||
51 | 53 | ||
52 | #include <sys/stat.h> | 54 | #include <sys/stat.h> |
53 | #include <sys/types.h> | 55 | #include <sys/types.h> |
54 | #include <fcntl.h> | 56 | #include <fcntl.h> |
55 | #include <unistd.h> | 57 | #include <unistd.h> |
56 | 58 | ||
57 | #include <stdlib.h> | 59 | #include <stdlib.h> |
58 | 60 | ||
@@ -66,17 +68,18 @@ static QString categoriesXMLFilename() | |||
66 | return Global::applicationFileName("todolist","categories.xml"); | 68 | return Global::applicationFileName("todolist","categories.xml"); |
67 | } | 69 | } |
68 | 70 | ||
69 | TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : | 71 | TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : |
70 | QMainWindow( parent, name, f ), syncing(FALSE) | 72 | QMainWindow( parent, name, f ), syncing(FALSE) |
71 | { | 73 | { |
72 | // QTime t; | 74 | // QTime t; |
73 | // t.start(); | 75 | // t.start(); |
74 | 76 | mView = 0l; | |
77 | mStack = new QWidgetStack(this, "main stack"); | ||
75 | setCaption( tr("Todo") ); | 78 | setCaption( tr("Todo") ); |
76 | QString str; | 79 | QString str; |
77 | table = new TodoTable( this ); | 80 | table = new TodoTable( this ); |
78 | table->setColumnWidth( 2, 10 ); | 81 | table->setColumnWidth( 2, 10 ); |
79 | table->setPaintingEnabled( FALSE ); | 82 | table->setPaintingEnabled( FALSE ); |
80 | table->setUpdatesEnabled( FALSE ); | 83 | table->setUpdatesEnabled( FALSE ); |
81 | table->viewport()->setUpdatesEnabled( FALSE ); | 84 | table->viewport()->setUpdatesEnabled( FALSE ); |
82 | 85 | ||
@@ -96,17 +99,19 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : | |||
96 | str = categoriesXMLFilename(); | 99 | str = categoriesXMLFilename(); |
97 | if ( str.isNull() ) | 100 | if ( str.isNull() ) |
98 | QMessageBox::critical( this, | 101 | QMessageBox::critical( this, |
99 | tr( "Out of Space" ), | 102 | tr( "Out of Space" ), |
100 | tr( "Unable to create startup files\n" | 103 | tr( "Unable to create startup files\n" |
101 | "Free up some space\n" | 104 | "Free up some space\n" |
102 | "before you enter any data") ); | 105 | "before you enter any data") ); |
103 | 106 | ||
104 | setCentralWidget( table ); | 107 | mStack->addWidget(table, 1 ); |
108 | mStack->raiseWidget( 1 ); | ||
109 | setCentralWidget( mStack ); | ||
105 | setToolBarsMovable( FALSE ); | 110 | setToolBarsMovable( FALSE ); |
106 | 111 | ||
107 | // qDebug("after load: t=%d", t.elapsed() ); | 112 | // qDebug("after load: t=%d", t.elapsed() ); |
108 | 113 | ||
109 | Config config( "todo" ); | 114 | Config config( "todo" ); |
110 | config.setGroup( "View" ); | 115 | config.setGroup( "View" ); |
111 | bool complete = config.readBoolEntry( "ShowComplete", true ); | 116 | bool complete = config.readBoolEntry( "ShowComplete", true ); |
112 | table->setShowCompleted( complete ); | 117 | table->setShowCompleted( complete ); |
@@ -141,16 +146,23 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : | |||
141 | QString::null, 0, this, 0 ); | 146 | QString::null, 0, this, 0 ); |
142 | connect( a, SIGNAL( activated() ), | 147 | connect( a, SIGNAL( activated() ), |
143 | this, SLOT( slotEdit() ) ); | 148 | this, SLOT( slotEdit() ) ); |
144 | a->addTo( bar ); | 149 | a->addTo( bar ); |
145 | a->addTo( edit ); | 150 | a->addTo( edit ); |
146 | a->addTo( contextMenu ); | 151 | a->addTo( contextMenu ); |
147 | a->setEnabled( FALSE ); | 152 | a->setEnabled( FALSE ); |
148 | editAction = a; | 153 | editAction = a; |
154 | |||
155 | a = new QAction( QString::null, tr("View Task"), 0, this, 0 ); | ||
156 | a->addTo( edit ); | ||
157 | a->addTo( contextMenu ); | ||
158 | connect( a, SIGNAL( activated() ), | ||
159 | this, SLOT(slotShowDetails() ) ); | ||
160 | |||
149 | edit->insertSeparator(); | 161 | edit->insertSeparator(); |
150 | 162 | ||
151 | a = new QAction( tr( "Delete..." ), Resource::loadIconSet( "trash" ), | 163 | a = new QAction( tr( "Delete..." ), Resource::loadIconSet( "trash" ), |
152 | QString::null, 0, this, 0 ); | 164 | QString::null, 0, this, 0 ); |
153 | connect( a, SIGNAL( activated() ), | 165 | connect( a, SIGNAL( activated() ), |
154 | this, SLOT( slotDelete() ) ); | 166 | this, SLOT( slotDelete() ) ); |
155 | a->addTo( bar ); | 167 | a->addTo( bar ); |
156 | a->addTo( edit ); | 168 | a->addTo( edit ); |
@@ -171,18 +183,20 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : | |||
171 | 183 | ||
172 | edit->insertSeparator(); | 184 | edit->insertSeparator(); |
173 | a = new QAction( QString::null, tr("Duplicate" ), 0, this, 0 ); | 185 | a = new QAction( QString::null, tr("Duplicate" ), 0, this, 0 ); |
174 | connect(a, SIGNAL( activated() ), | 186 | connect(a, SIGNAL( activated() ), |
175 | this, SLOT( slotDuplicate() ) ); | 187 | this, SLOT( slotDuplicate() ) ); |
176 | a->addTo(edit ); | 188 | a->addTo(edit ); |
177 | a->setEnabled( FALSE ); | 189 | a->setEnabled( FALSE ); |
178 | duplicateAction = a; | 190 | duplicateAction = a; |
179 | |||
180 | edit->insertSeparator(); | 191 | edit->insertSeparator(); |
192 | |||
193 | |||
194 | |||
181 | if ( Ir::supported() ) { | 195 | if ( Ir::supported() ) { |
182 | a = new QAction( tr( "Beam" ), Resource::loadPixmap( "beam" ), | 196 | a = new QAction( tr( "Beam" ), Resource::loadPixmap( "beam" ), |
183 | QString::null, 0, this, 0 ); | 197 | QString::null, 0, this, 0 ); |
184 | connect( a, SIGNAL( activated() ), | 198 | connect( a, SIGNAL( activated() ), |
185 | this, SLOT( slotBeam() ) ); | 199 | this, SLOT( slotBeam() ) ); |
186 | a->addTo( edit ); | 200 | a->addTo( edit ); |
187 | a->addTo( bar ); | 201 | a->addTo( bar ); |
188 | } | 202 | } |
@@ -244,16 +258,18 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : | |||
244 | table->viewport()->setUpdatesEnabled( TRUE ); | 258 | table->viewport()->setUpdatesEnabled( TRUE ); |
245 | 259 | ||
246 | connect( completedAction, SIGNAL( toggled(bool) ), this, SLOT( showCompleted(bool) ) ); | 260 | connect( completedAction, SIGNAL( toggled(bool) ), this, SLOT( showCompleted(bool) ) ); |
247 | connect( showdeadlineAction, SIGNAL( toggled(bool) ), this, SLOT( showDeadline(bool) ) ); | 261 | connect( showdeadlineAction, SIGNAL( toggled(bool) ), this, SLOT( showDeadline(bool) ) ); |
248 | connect( catMenu, SIGNAL(activated(int)), this, SLOT(setCategory(int)) ); | 262 | connect( catMenu, SIGNAL(activated(int)), this, SLOT(setCategory(int)) ); |
249 | connect( table, SIGNAL( currentChanged( int, int ) ), | 263 | connect( table, SIGNAL( currentChanged( int, int ) ), |
250 | this, SLOT( currentEntryChanged( int, int ) ) ); | 264 | this, SLOT( currentEntryChanged( int, int ) ) ); |
251 | 265 | ||
266 | connect( table, SIGNAL(showDetails(const ToDoEvent &) ), | ||
267 | this, SLOT(slotShowDetails(const ToDoEvent & ) ) ); | ||
252 | // qDebug("done: t=%d", t.elapsed() ); | 268 | // qDebug("done: t=%d", t.elapsed() ); |
253 | } | 269 | } |
254 | 270 | ||
255 | void TodoWindow::slotNew() | 271 | void TodoWindow::slotNew() |
256 | { | 272 | { |
257 | if(syncing) { | 273 | if(syncing) { |
258 | QMessageBox::warning(this, tr("Todo"), | 274 | QMessageBox::warning(this, tr("Todo"), |
259 | tr("Can not edit data, currently syncing")); | 275 | tr("Can not edit data, currently syncing")); |
@@ -281,16 +297,17 @@ void TodoWindow::slotNew() | |||
281 | //todo.assignUid(); | 297 | //todo.assignUid(); |
282 | table->addEntry( todo ); | 298 | table->addEntry( todo ); |
283 | table->setPaintingEnabled( true ); | 299 | table->setPaintingEnabled( true ); |
284 | findAction->setEnabled( TRUE ); | 300 | findAction->setEnabled( TRUE ); |
285 | } | 301 | } |
286 | // I'm afraid we must call this every time now, otherwise | 302 | // I'm afraid we must call this every time now, otherwise |
287 | // spend expensive time comparing all these strings... | 303 | // spend expensive time comparing all these strings... |
288 | populateCategories(); | 304 | populateCategories(); |
305 | mStack->raiseWidget(1 ); | ||
289 | } | 306 | } |
290 | 307 | ||
291 | TodoWindow::~TodoWindow() | 308 | TodoWindow::~TodoWindow() |
292 | { | 309 | { |
293 | } | 310 | } |
294 | 311 | ||
295 | void TodoWindow::slotDelete() | 312 | void TodoWindow::slotDelete() |
296 | { | 313 | { |
@@ -313,40 +330,42 @@ void TodoWindow::slotDelete() | |||
313 | table->setPaintingEnabled( false ); | 330 | table->setPaintingEnabled( false ); |
314 | table->removeCurrentEntry(); | 331 | table->removeCurrentEntry(); |
315 | table->setPaintingEnabled( true ); | 332 | table->setPaintingEnabled( true ); |
316 | 333 | ||
317 | if ( table->numRows() == 0 ) { | 334 | if ( table->numRows() == 0 ) { |
318 | currentEntryChanged( -1, 0 ); | 335 | currentEntryChanged( -1, 0 ); |
319 | findAction->setEnabled( FALSE ); | 336 | findAction->setEnabled( FALSE ); |
320 | } | 337 | } |
338 | mStack->raiseWidget(1); | ||
321 | } | 339 | } |
322 | void TodoWindow::slotDeleteAll() | 340 | void TodoWindow::slotDeleteAll() |
323 | { | 341 | { |
324 | if(syncing) { | 342 | if(syncing) { |
325 | QMessageBox::warning(this, tr("Todo"), | 343 | QMessageBox::warning(this, tr("Todo"), |
326 | tr("Can not edit data, currently syncing")); | 344 | tr("Can not edit data, currently syncing")); |
327 | return; | 345 | return; |
328 | } | 346 | } |
329 | 347 | ||
330 | //QString strName = table->text( table->currentRow(), 2 ).left( 30 ); | 348 | //QString strName = table->text( table->currentRow(), 2 ).left( 30 ); |
331 | 349 | ||
332 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("Should I delete all tasks?") ) ) | 350 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("Delete all tasks?") ) ) |
333 | return; | 351 | return; |
334 | 352 | ||
335 | 353 | ||
336 | 354 | ||
337 | table->setPaintingEnabled( false ); | 355 | table->setPaintingEnabled( false ); |
338 | table->removeAllEntries(); | 356 | table->removeAllEntries(); |
339 | table->setPaintingEnabled( true ); | 357 | table->setPaintingEnabled( true ); |
340 | 358 | ||
341 | if ( table->numRows() == 0 ) { | 359 | if ( table->numRows() == 0 ) { |
342 | currentEntryChanged( -1, 0 ); | 360 | currentEntryChanged( -1, 0 ); |
343 | findAction->setEnabled( FALSE ); | 361 | findAction->setEnabled( FALSE ); |
344 | } | 362 | } |
363 | mStack->raiseWidget(1 ); | ||
345 | } | 364 | } |
346 | 365 | ||
347 | void TodoWindow::slotEdit() | 366 | void TodoWindow::slotEdit() |
348 | { | 367 | { |
349 | if(syncing) { | 368 | if(syncing) { |
350 | QMessageBox::warning(this, tr("Todo"), | 369 | QMessageBox::warning(this, tr("Todo"), |
351 | tr("Can not edit data, currently syncing")); | 370 | tr("Can not edit data, currently syncing")); |
352 | return; | 371 | return; |
@@ -364,30 +383,39 @@ void TodoWindow::slotEdit() | |||
364 | 383 | ||
365 | if ( ret == QDialog::Accepted ) { | 384 | if ( ret == QDialog::Accepted ) { |
366 | table->setPaintingEnabled( false ); | 385 | table->setPaintingEnabled( false ); |
367 | todo = e.todoEntry(); | 386 | todo = e.todoEntry(); |
368 | table->replaceCurrentEntry( todo ); | 387 | table->replaceCurrentEntry( todo ); |
369 | table->setPaintingEnabled( true ); | 388 | table->setPaintingEnabled( true ); |
370 | } | 389 | } |
371 | populateCategories(); | 390 | populateCategories(); |
372 | 391 | mStack->raiseWidget( 1 ); | |
373 | } | 392 | } |
374 | void TodoWindow::slotDuplicate() | 393 | void TodoWindow::slotDuplicate() |
375 | { | 394 | { |
376 | if(syncing) { | 395 | if(syncing) { |
377 | QMessageBox::warning(this, tr("Todo"), | 396 | QMessageBox::warning(this, tr("Todo"), |
378 | tr("Can not edit data, currently syncing")); | 397 | tr("Can not edit data, currently syncing")); |
379 | return; | 398 | return; |
380 | } | 399 | } |
381 | ToDoEvent ev = table->currentEntry(); | 400 | ToDoEvent ev = table->currentEntry(); |
382 | ToDoEvent ev2 = ToDoEvent( ev ); | 401 | ToDoEvent ev2 = ToDoEvent( ev ); // what about the uid |
402 | int uid; | ||
403 | { // uid | ||
404 | Qtopia::UidGen *uidgen = new Qtopia::UidGen(); | ||
405 | uid = uidgen->generate(); | ||
406 | delete uidgen; | ||
407 | } | ||
408 | ev2.setUid( uid ); | ||
383 | table->setPaintingEnabled( false ); | 409 | table->setPaintingEnabled( false ); |
384 | table->addEntry( ev2 ); | 410 | table->addEntry( ev2 ); |
385 | table->setPaintingEnabled( true ); | 411 | table->setPaintingEnabled( true ); |
412 | |||
413 | mStack->raiseWidget( 1 ); | ||
386 | } | 414 | } |
387 | void TodoWindow::slotShowPopup( const QPoint &p ) | 415 | void TodoWindow::slotShowPopup( const QPoint &p ) |
388 | { | 416 | { |
389 | contextMenu->popup( p ); | 417 | contextMenu->popup( p ); |
390 | } | 418 | } |
391 | 419 | ||
392 | void TodoWindow::showCompleted( bool s ) | 420 | void TodoWindow::showCompleted( bool s ) |
393 | { | 421 | { |
@@ -428,23 +456,26 @@ void TodoWindow::setCategory( int c ) | |||
428 | table->setShowCategory( tr( "Unfiled" ) ); | 456 | table->setShowCategory( tr( "Unfiled" ) ); |
429 | setCaption( tr("Todo") + " - " + tr( "Unfiled" ) ); | 457 | setCaption( tr("Todo") + " - " + tr( "Unfiled" ) ); |
430 | } else { | 458 | } else { |
431 | QString cat = table->categories()[c - 2]; | 459 | QString cat = table->categories()[c - 2]; |
432 | table->setShowCategory( cat ); | 460 | table->setShowCategory( cat ); |
433 | setCaption( tr("Todo") + " - " + cat ); | 461 | setCaption( tr("Todo") + " - " + cat ); |
434 | } | 462 | } |
435 | table->setPaintingEnabled( true ); | 463 | table->setPaintingEnabled( true ); |
464 | |||
465 | mStack->raiseWidget( 1 ); | ||
436 | } | 466 | } |
437 | 467 | ||
438 | void TodoWindow::populateCategories() | 468 | void TodoWindow::populateCategories() |
439 | { | 469 | { |
440 | catMenu->clear(); | 470 | catMenu->clear(); |
441 | int id, rememberId; | 471 | int id, rememberId; |
442 | id = 1; | 472 | id = 1; |
473 | rememberId = 0; | ||
443 | catMenu->insertItem( tr( "All Categories" ), id++ ); | 474 | catMenu->insertItem( tr( "All Categories" ), id++ ); |
444 | catMenu->insertSeparator(); | 475 | catMenu->insertSeparator(); |
445 | QStringList categories = table->categories(); | 476 | QStringList categories = table->categories(); |
446 | categories.append( tr( "Unfiled" ) ); | 477 | categories.append( tr( "Unfiled" ) ); |
447 | for ( QStringList::Iterator it = categories.begin(); | 478 | for ( QStringList::Iterator it = categories.begin(); |
448 | it != categories.end(); ++it ) { | 479 | it != categories.end(); ++it ) { |
449 | catMenu->insertItem( *it, id ); | 480 | catMenu->insertItem( *it, id ); |
450 | if ( *it == table->showCategory() ) | 481 | if ( *it == table->showCategory() ) |
@@ -467,16 +498,21 @@ void TodoWindow::reload() | |||
467 | void TodoWindow::flush() | 498 | void TodoWindow::flush() |
468 | { | 499 | { |
469 | syncing = TRUE; | 500 | syncing = TRUE; |
470 | table->save( todolistXMLFilename() ); | 501 | table->save( todolistXMLFilename() ); |
471 | } | 502 | } |
472 | 503 | ||
473 | void TodoWindow::closeEvent( QCloseEvent *e ) | 504 | void TodoWindow::closeEvent( QCloseEvent *e ) |
474 | { | 505 | { |
506 | if( mStack->visibleWidget() != table ){ | ||
507 | mStack->raiseWidget( 1 ); | ||
508 | e->ignore(); | ||
509 | return; | ||
510 | } | ||
475 | if(syncing) { | 511 | if(syncing) { |
476 | /* no need to save if in the middle of syncing */ | 512 | /* no need to save if in the middle of syncing */ |
477 | e->accept(); | 513 | e->accept(); |
478 | return; | 514 | return; |
479 | } | 515 | } |
480 | 516 | ||
481 | if ( table->save( todolistXMLFilename() ) ) { | 517 | if ( table->save( todolistXMLFilename() ) ) { |
482 | e->accept(); | 518 | e->accept(); |
@@ -557,15 +593,29 @@ void TodoWindow::slotBeam() | |||
557 | } | 593 | } |
558 | 594 | ||
559 | void TodoWindow::beamDone( Ir *ir ) | 595 | void TodoWindow::beamDone( Ir *ir ) |
560 | { | 596 | { |
561 | delete ir; | 597 | delete ir; |
562 | unlink( beamfile ); | 598 | unlink( beamfile ); |
563 | } | 599 | } |
564 | 600 | ||
565 | /* added 20.01.2k2 by se */ | ||
566 | void TodoWindow::showDeadline( bool s ) | 601 | void TodoWindow::showDeadline( bool s ) |
567 | { | 602 | { |
568 | table->setPaintingEnabled( false ); | 603 | table->setPaintingEnabled( false ); |
569 | table->setShowDeadline( s ); | 604 | table->setShowDeadline( s ); |
570 | table->setPaintingEnabled( true ); | 605 | table->setPaintingEnabled( true ); |
571 | } | 606 | } |
607 | void TodoWindow::slotShowDetails() | ||
608 | { | ||
609 | ToDoEvent event = table->currentEntry(); | ||
610 | slotShowDetails( event ); | ||
611 | } | ||
612 | void TodoWindow::slotShowDetails( const ToDoEvent &event ) | ||
613 | { | ||
614 | if( mView == 0l ){ | ||
615 | mView = new TodoLabel(mStack); | ||
616 | mStack->addWidget( mView, 2 ); | ||
617 | } | ||
618 | mView->init( event ); | ||
619 | mView->sync(); | ||
620 | mStack->raiseWidget( 2); | ||
621 | } | ||
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h index b9172e1..f62ec6e 100644 --- a/core/pim/todo/mainwindow.h +++ b/core/pim/todo/mainwindow.h | |||
@@ -1,10 +1,11 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org> | 2 | ** Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org> |
3 | ** Copyright (C) 2002 by Stefan Eilers (se, eilers.stefan@epost.de) | ||
3 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 4 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
4 | ** | 5 | ** |
5 | ** This file is part of Qtopia and Opi Environment. | 6 | ** This file is part of Qtopia and Opi Environment. |
6 | ** | 7 | ** |
7 | ** This file may be distributed and/or modified under the terms of the | 8 | ** This file may be distributed and/or modified under the terms of the |
8 | ** GNU General Public License version 2 as published by the Free Software | 9 | ** GNU General Public License version 2 as published by the Free Software |
9 | ** Foundation and appearing in the file LICENSE.GPL included in the | 10 | ** Foundation and appearing in the file LICENSE.GPL included in the |
10 | ** packaging of this file. | 11 | ** packaging of this file. |
@@ -24,16 +25,20 @@ | |||
24 | 25 | ||
25 | #include <qmainwindow.h> | 26 | #include <qmainwindow.h> |
26 | 27 | ||
27 | class TodoTable; | 28 | class TodoTable; |
28 | class QAction; | 29 | class QAction; |
29 | class QPopupMenu; | 30 | class QPopupMenu; |
30 | class Ir; | 31 | class Ir; |
31 | class OFontMenu; | 32 | class OFontMenu; |
33 | class TodoLabel; | ||
34 | class ToDoDB; | ||
35 | class QWidgetStack; | ||
36 | class ToDoEvent; | ||
32 | 37 | ||
33 | class TodoWindow : public QMainWindow | 38 | class TodoWindow : public QMainWindow |
34 | { | 39 | { |
35 | Q_OBJECT | 40 | Q_OBJECT |
36 | 41 | ||
37 | public: | 42 | public: |
38 | TodoWindow( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | 43 | TodoWindow( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); |
39 | ~TodoWindow(); | 44 | ~TodoWindow(); |
@@ -44,43 +49,48 @@ public slots: | |||
44 | 49 | ||
45 | protected slots: | 50 | protected slots: |
46 | void slotNew(); | 51 | void slotNew(); |
47 | void slotDelete(); | 52 | void slotDelete(); |
48 | void slotEdit(); | 53 | void slotEdit(); |
49 | void slotShowPopup( const QPoint & ); | 54 | void slotShowPopup( const QPoint & ); |
50 | void showCompleted( bool ); | 55 | void showCompleted( bool ); |
51 | 56 | ||
52 | /* added 20.01.2k2 by se */ | ||
53 | void showDeadline( bool ); | 57 | void showDeadline( bool ); |
54 | 58 | ||
59 | void slotShowDetails(const ToDoEvent &event ); | ||
60 | void slotShowDetails(); | ||
61 | |||
55 | void currentEntryChanged( int r, int c ); | 62 | void currentEntryChanged( int r, int c ); |
56 | void setCategory( int ); | 63 | void setCategory( int ); |
57 | void slotFind(); | 64 | void slotFind(); |
58 | void setDocument( const QString & ); | 65 | void setDocument( const QString & ); |
59 | void slotBeam(); | 66 | void slotBeam(); |
60 | void beamDone( Ir * ); | 67 | void beamDone( Ir * ); |
61 | void slotDeleteAll(); | 68 | void slotDeleteAll(); |
62 | void slotDuplicate(); | 69 | void slotDuplicate(); |
63 | 70 | ||
64 | protected: | 71 | protected: |
65 | void closeEvent( QCloseEvent *e ); | 72 | void closeEvent( QCloseEvent *e ); |
66 | 73 | ||
67 | private: | 74 | private: |
68 | void populateCategories(); | 75 | void populateCategories(); |
76 | //inline void switchToTable(); // move back to the normal view | ||
69 | 77 | ||
70 | private: | 78 | private: |
71 | TodoTable *table; | 79 | TodoTable *table; |
80 | TodoLabel *mView; | ||
72 | QAction *editAction, | 81 | QAction *editAction, |
73 | *deleteAction, | 82 | *deleteAction, |
74 | *findAction, | 83 | *findAction, |
75 | *completedAction, | 84 | *completedAction, |
76 | *showdeadlineAction, | 85 | *showdeadlineAction, |
77 | *deleteAllAction, | 86 | *deleteAllAction, |
78 | *duplicateAction; | 87 | *duplicateAction; |
79 | QPopupMenu *contextMenu, *catMenu; | 88 | QPopupMenu *contextMenu, *catMenu; |
89 | QWidgetStack *mStack; | ||
80 | 90 | ||
81 | bool syncing; | 91 | bool syncing; |
82 | }; | 92 | }; |
83 | 93 | ||
84 | #endif | 94 | #endif |
85 | 95 | ||
86 | 96 | ||
diff --git a/core/pim/todo/opie-todo.control b/core/pim/todo/opie-todo.control index cb9b110..71929af 100644 --- a/core/pim/todo/opie-todo.control +++ b/core/pim/todo/opie-todo.control | |||
@@ -1,9 +1,9 @@ | |||
1 | Files: bin/todolist apps/Applications/todo.desktop | 1 | Files: bin/todolist apps/Applications/todo.desktop |
2 | Priority: optional | 2 | Priority: optional |
3 | Section: opie/applications | 3 | Section: opie/applications |
4 | Maintainer: Warwick Allison <warwick@trolltech.com> | 4 | Maintainer: Holger 'zecke' Freyther <zecke@handhelds.org> |
5 | Architecture: arm | 5 | Architecture: arm |
6 | Version: $QPE_VERSION-$SUB_VERSION | 6 | Version: $QPE_VERSION-$SUB_VERSION |
7 | Depends: opie-base ($QPE_VERSION) | 7 | Depends: opie-base ($QPE_VERSION) |
8 | Description: TODO-list manager | 8 | Description: TODO-list manager |
9 | A Todo-list manager for the Opie environment. | 9 | A Todo-list manager for the Opie environment. |
diff --git a/core/pim/todo/todo.pro b/core/pim/todo/todo.pro index a46fb47..a365081 100644 --- a/core/pim/todo/todo.pro +++ b/core/pim/todo/todo.pro | |||
@@ -1,18 +1,20 @@ | |||
1 | TEMPLATE= app | 1 | TEMPLATE= app |
2 | CONFIG = qt warn_on release | 2 | CONFIG = qt warn_on release |
3 | DESTDIR = $(OPIEDIR)/bin | 3 | DESTDIR = $(OPIEDIR)/bin |
4 | HEADERS= mainwindow.h \ | 4 | HEADERS= mainwindow.h \ |
5 | todotable.h \ | 5 | todotable.h \ |
6 | todoentryimpl.h | 6 | todoentryimpl.h \ |
7 | todolabel.h | ||
7 | SOURCES= main.cpp \ | 8 | SOURCES= main.cpp \ |
8 | mainwindow.cpp \ | 9 | mainwindow.cpp \ |
9 | todotable.cpp \ | 10 | todotable.cpp \ |
10 | todoentryimpl.cpp | 11 | todoentryimpl.cpp \ |
12 | todolabel.cc | ||
11 | 13 | ||
12 | INTERFACES= todoentry.ui | 14 | INTERFACES= todoentry.ui |
13 | 15 | ||
14 | TARGET = todolist | 16 | TARGET = todolist |
15 | INCLUDEPATH += $(OPIEDIR)/include | 17 | INCLUDEPATH += $(OPIEDIR)/include |
16 | DEPENDPATH+= $(OPIEDIR)/include | 18 | DEPENDPATH+= $(OPIEDIR)/include |
17 | LIBS += -lqpe -lopie | 19 | LIBS += -lqpe -lopie |
18 | 20 | ||
diff --git a/core/pim/todo/todolabel.cc b/core/pim/todo/todolabel.cc new file mode 100644 index 0000000..4ce3499 --- a/dev/null +++ b/core/pim/todo/todolabel.cc | |||
@@ -0,0 +1,58 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2002 by Stefan Eilers (se, eilers.stefan@epost.de) | ||
3 | ** Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org> | ||
4 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | ||
5 | ** | ||
6 | ** This file is part of the Qtopia Environment. | ||
7 | ** | ||
8 | ** This file may be distributed and/or modified under the terms of the | ||
9 | ** GNU General Public License version 2 as published by the Free Software | ||
10 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
11 | ** packaging of this file. | ||
12 | ** | ||
13 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
14 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
15 | ** | ||
16 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
17 | ** | ||
18 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
19 | ** not clear to you. | ||
20 | ** | ||
21 | **********************************************************************/ | ||
22 | |||
23 | |||
24 | |||
25 | #include <qpe/stringutil.h> | ||
26 | |||
27 | #include <qregexp.h> | ||
28 | #include <qstylesheet.h> | ||
29 | |||
30 | |||
31 | #include "todolabel.h" | ||
32 | |||
33 | TodoLabel::TodoLabel( QWidget *parent, const char *name ) | ||
34 | : QTextView( parent, name ) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | TodoLabel::~TodoLabel() | ||
39 | { | ||
40 | } | ||
41 | |||
42 | void TodoLabel::init( const ToDoEvent &item ) | ||
43 | { | ||
44 | m_item = item; | ||
45 | } | ||
46 | |||
47 | void TodoLabel::sync() | ||
48 | { | ||
49 | QString text = m_item.richText(); | ||
50 | setText( text ); | ||
51 | } | ||
52 | |||
53 | void TodoLabel::keyPressEvent( QKeyEvent *e ) | ||
54 | { | ||
55 | if ( e->key() == Qt::Key_F33 ) { | ||
56 | emit okPressed(); | ||
57 | } | ||
58 | } | ||
diff --git a/core/pim/todo/todolabel.h b/core/pim/todo/todolabel.h new file mode 100644 index 0000000..b6d67af --- a/dev/null +++ b/core/pim/todo/todolabel.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2002 by Stefan Eilers (se, eilers.stefan@epost.de) | ||
3 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | ||
4 | ** | ||
5 | ** This file is part of the Qtopia Environment. | ||
6 | ** | ||
7 | ** This file may be distributed and/or modified under the terms of the | ||
8 | ** GNU General Public License version 2 as published by the Free Software | ||
9 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
10 | ** packaging of this file. | ||
11 | ** | ||
12 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
13 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
14 | ** | ||
15 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
16 | ** | ||
17 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
18 | ** not clear to you. | ||
19 | ** | ||
20 | **********************************************************************/ | ||
21 | #ifndef TODOLABEL_H | ||
22 | #define TODOLABEL_H | ||
23 | |||
24 | #include <opie/todoevent.h> | ||
25 | |||
26 | #include <qtextview.h> | ||
27 | |||
28 | class TodoLabel : public QTextView | ||
29 | { | ||
30 | Q_OBJECT | ||
31 | |||
32 | public: | ||
33 | TodoLabel( QWidget *parent, const char *name = 0 ); | ||
34 | ~TodoLabel(); | ||
35 | |||
36 | public slots: | ||
37 | void init( const ToDoEvent &item); | ||
38 | void sync(); | ||
39 | |||
40 | signals: | ||
41 | void okPressed(); | ||
42 | |||
43 | protected: | ||
44 | void keyPressEvent( QKeyEvent * ); | ||
45 | |||
46 | private: | ||
47 | ToDoEvent m_item; | ||
48 | |||
49 | }; | ||
50 | |||
51 | #endif | ||
diff --git a/core/pim/todo/todotable.cpp b/core/pim/todo/todotable.cpp index d0bc61c..753c036 100644 --- a/core/pim/todo/todotable.cpp +++ b/core/pim/todo/todotable.cpp | |||
@@ -300,25 +300,31 @@ void TodoTable::slotClicked( int row, int col, int, const QPoint &pos ) | |||
300 | } | 300 | } |
301 | emit signalDoneChanged( i->isChecked() ); | 301 | emit signalDoneChanged( i->isChecked() ); |
302 | } | 302 | } |
303 | } | 303 | } |
304 | break; | 304 | break; |
305 | case 1: | 305 | case 1: |
306 | break; | 306 | break; |
307 | case 2: | 307 | case 2: |
308 | // may as well edit it... | 308 | // may as well edit it... |
309 | // menuTimer->stop(); | 309 | // menuTimer->stop(); |
310 | // emit signalEdit(); | 310 | // emit signalEdit(); |
311 | // fall through | 311 | // Show detailed view of the selected entry |
312 | case 3: | 312 | { |
313 | // may as well edit it... | ||
314 | menuTimer->stop(); | 313 | menuTimer->stop(); |
315 | // emit signalEdit(); | 314 | ToDoEvent *todo = todoList[static_cast<CheckItem*>(item(row, 0))]; |
316 | break; | 315 | emit showDetails( *todo ); |
316 | } | ||
317 | break; | ||
318 | case 3: | ||
319 | // may as well edit it... | ||
320 | menuTimer->stop(); | ||
321 | // emit signalEdit(); | ||
322 | break; | ||
317 | } | 323 | } |
318 | } | 324 | } |
319 | 325 | ||
320 | void TodoTable::slotPressed( int row, int col, int, const QPoint &pos ) | 326 | void TodoTable::slotPressed( int row, int col, int, const QPoint &pos ) |
321 | { | 327 | { |
322 | if ( col == 2 && cellGeometry( row, col ).contains(pos) ) | 328 | if ( col == 2 && cellGeometry( row, col ).contains(pos) ) |
323 | menuTimer->start( 750, TRUE ); | 329 | menuTimer->start( 750, TRUE ); |
324 | } | 330 | } |
@@ -340,17 +346,17 @@ void TodoTable::internalAddEntries( QList<ToDoEvent> &list ) | |||
340 | ToDoEvent *it; | 346 | ToDoEvent *it; |
341 | for ( it = list.first(); it; it = list.next() ) | 347 | for ( it = list.first(); it; it = list.next() ) |
342 | insertIntoTable( it, row++ ); | 348 | insertIntoTable( it, row++ ); |
343 | } | 349 | } |
344 | 350 | ||
345 | 351 | ||
346 | ToDoEvent TodoTable::currentEntry() const | 352 | ToDoEvent TodoTable::currentEntry() const |
347 | { | 353 | { |
348 | printf ("in currentEntry\n"); | 354 | //qWarning ("in currentEntry\n"); |
349 | 355 | ||
350 | QTableItem *i = item( currentRow(), 0 ); | 356 | QTableItem *i = item( currentRow(), 0 ); |
351 | if ( !i || rowHeight( currentRow() ) <= 0 ) | 357 | if ( !i || rowHeight( currentRow() ) <= 0 ) |
352 | return ToDoEvent(); | 358 | return ToDoEvent(); |
353 | ToDoEvent *todo = todoList[(CheckItem*)i]; | 359 | ToDoEvent *todo = todoList[(CheckItem*)i]; |
354 | todo->setCompleted( ( (CheckItem*)item( currentRow(), 0 ) )->isChecked() ); | 360 | todo->setCompleted( ( (CheckItem*)item( currentRow(), 0 ) )->isChecked() ); |
355 | todo->setPriority( ( (ComboItem*)item( currentRow(), 1 ) )->text().toInt() ); | 361 | todo->setPriority( ( (ComboItem*)item( currentRow(), 1 ) )->text().toInt() ); |
356 | return *todo; | 362 | return *todo; |
diff --git a/core/pim/todo/todotable.h b/core/pim/todo/todotable.h index 458e07a..2f6e635 100644 --- a/core/pim/todo/todotable.h +++ b/core/pim/todo/todotable.h | |||
@@ -137,17 +137,17 @@ public: | |||
137 | 137 | ||
138 | signals: | 138 | signals: |
139 | void signalEdit(); | 139 | void signalEdit(); |
140 | void signalDoneChanged( bool b ); | 140 | void signalDoneChanged( bool b ); |
141 | void signalPriorityChanged( int i ); | 141 | void signalPriorityChanged( int i ); |
142 | void signalShowMenu( const QPoint & ); | 142 | void signalShowMenu( const QPoint & ); |
143 | void signalNotFound(); | 143 | void signalNotFound(); |
144 | void signalWrapAround(); | 144 | void signalWrapAround(); |
145 | 145 | void showDetails( const ToDoEvent & ); | |
146 | protected: | 146 | protected: |
147 | void keyPressEvent( QKeyEvent *e ); | 147 | void keyPressEvent( QKeyEvent *e ); |
148 | 148 | ||
149 | private: | 149 | private: |
150 | void updateVisible(); | 150 | void updateVisible(); |
151 | void viewportPaintEvent( QPaintEvent * ); | 151 | void viewportPaintEvent( QPaintEvent * ); |
152 | void internalAddEntries( QList<ToDoEvent> &list); | 152 | void internalAddEntries( QList<ToDoEvent> &list); |
153 | inline void insertIntoTable( ToDoEvent *todo, int row ); | 153 | inline void insertIntoTable( ToDoEvent *todo, int row ); |