summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/TODO3
-rw-r--r--core/pim/todo/mainwindow.cpp68
-rw-r--r--core/pim/todo/mainwindow.h16
-rw-r--r--core/pim/todo/opie-todo.control2
-rw-r--r--core/pim/todo/todo.pro6
-rw-r--r--core/pim/todo/todolabel.cc58
-rw-r--r--core/pim/todo/todolabel.h51
-rw-r--r--core/pim/todo/todotable.cpp24
-rw-r--r--core/pim/todo/todotable.h2
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
69TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) : 71TodoWindow::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
255void TodoWindow::slotNew() 271void 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
291TodoWindow::~TodoWindow() 308TodoWindow::~TodoWindow()
292{ 309{
293} 310}
294 311
295void TodoWindow::slotDelete() 312void 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}
322void TodoWindow::slotDeleteAll() 340void 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
347void TodoWindow::slotEdit() 366void 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}
374void TodoWindow::slotDuplicate() 393void 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}
387void TodoWindow::slotShowPopup( const QPoint &p ) 415void TodoWindow::slotShowPopup( const QPoint &p )
388{ 416{
389 contextMenu->popup( p ); 417 contextMenu->popup( p );
390} 418}
391 419
392void TodoWindow::showCompleted( bool s ) 420void 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
438void TodoWindow::populateCategories() 468void 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()
467void TodoWindow::flush() 498void TodoWindow::flush()
468{ 499{
469 syncing = TRUE; 500 syncing = TRUE;
470 table->save( todolistXMLFilename() ); 501 table->save( todolistXMLFilename() );
471} 502}
472 503
473void TodoWindow::closeEvent( QCloseEvent *e ) 504void 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
559void TodoWindow::beamDone( Ir *ir ) 595void 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 */
566void TodoWindow::showDeadline( bool s ) 601void 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}
607void TodoWindow::slotShowDetails()
608{
609 ToDoEvent event = table->currentEntry();
610 slotShowDetails( event );
611}
612void 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
27class TodoTable; 28class TodoTable;
28class QAction; 29class QAction;
29class QPopupMenu; 30class QPopupMenu;
30class Ir; 31class Ir;
31class OFontMenu; 32class OFontMenu;
33class TodoLabel;
34class ToDoDB;
35class QWidgetStack;
36class ToDoEvent;
32 37
33class TodoWindow : public QMainWindow 38class TodoWindow : public QMainWindow
34{ 39{
35 Q_OBJECT 40 Q_OBJECT
36 41
37public: 42public:
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
45protected slots: 50protected 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
64protected: 71protected:
65 void closeEvent( QCloseEvent *e ); 72 void closeEvent( QCloseEvent *e );
66 73
67private: 74private:
68 void populateCategories(); 75 void populateCategories();
76 //inline void switchToTable(); // move back to the normal view
69 77
70private: 78private:
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 @@
1Files: bin/todolist apps/Applications/todo.desktop 1Files: bin/todolist apps/Applications/todo.desktop
2Priority: optional 2Priority: optional
3Section: opie/applications 3Section: opie/applications
4Maintainer: Warwick Allison <warwick@trolltech.com> 4Maintainer: Holger 'zecke' Freyther <zecke@handhelds.org>
5Architecture: arm 5Architecture: arm
6Version: $QPE_VERSION-$SUB_VERSION 6Version: $QPE_VERSION-$SUB_VERSION
7Depends: opie-base ($QPE_VERSION) 7Depends: opie-base ($QPE_VERSION)
8Description: TODO-list manager 8Description: 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
15INCLUDEPATH += $(OPIEDIR)/include 17INCLUDEPATH += $(OPIEDIR)/include
16 DEPENDPATH+= $(OPIEDIR)/include 18 DEPENDPATH+= $(OPIEDIR)/include
17LIBS += -lqpe -lopie 19LIBS += -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
33TodoLabel::TodoLabel( QWidget *parent, const char *name )
34 : QTextView( parent, name )
35{
36}
37
38TodoLabel::~TodoLabel()
39{
40}
41
42void TodoLabel::init( const ToDoEvent &item )
43{
44 m_item = item;
45}
46
47void TodoLabel::sync()
48{
49 QString text = m_item.richText();
50 setText( text );
51}
52
53void 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
28class TodoLabel : public QTextView
29{
30 Q_OBJECT
31
32public:
33 TodoLabel( QWidget *parent, const char *name = 0 );
34 ~TodoLabel();
35
36public slots:
37 void init( const ToDoEvent &item);
38 void sync();
39
40signals:
41 void okPressed();
42
43protected:
44 void keyPressEvent( QKeyEvent * );
45
46private:
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
320void TodoTable::slotPressed( int row, int col, int, const QPoint &pos ) 326void 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
346ToDoEvent TodoTable::currentEntry() const 352ToDoEvent 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
138signals: 138signals:
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 & );
146protected: 146protected:
147 void keyPressEvent( QKeyEvent *e ); 147 void keyPressEvent( QKeyEvent *e );
148 148
149private: 149private:
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 );