summaryrefslogtreecommitdiff
authorzecke <zecke>2003-02-11 18:42:42 (UTC)
committer zecke <zecke>2003-02-11 18:42:42 (UTC)
commit986afbabdd7c291f2fcbecd865e8c7075623bbf8 (patch) (unidiff)
tree7b00ad1e26a47666c05b7040d2218d134f698007
parentcb85b004afe2750733cef1663961539f6a3968e6 (diff)
downloadopie-986afbabdd7c291f2fcbecd865e8c7075623bbf8.zip
opie-986afbabdd7c291f2fcbecd865e8c7075623bbf8.tar.gz
opie-986afbabdd7c291f2fcbecd865e8c7075623bbf8.tar.bz2
Add switching the views with the ActionKey..
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/mainwindow.cpp9
-rw-r--r--core/pim/todo/mainwindow.h2
-rw-r--r--core/pim/todo/tableview.cpp21
-rw-r--r--core/pim/todo/tableview.h1
-rw-r--r--core/pim/todo/textviewshow.cpp17
-rw-r--r--core/pim/todo/textviewshow.h5
-rw-r--r--core/pim/todo/todoshow.cpp9
-rw-r--r--core/pim/todo/todoshow.h7
8 files changed, 58 insertions, 13 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp
index c90166b..d328558 100644
--- a/core/pim/todo/mainwindow.cpp
+++ b/core/pim/todo/mainwindow.cpp
@@ -65,53 +65,53 @@ MainWindow::MainWindow( QWidget* parent,
65 const char* name ) 65 const char* name )
66 : OPimMainWindow( "Todolist", parent, name, WType_TopLevel | WStyle_ContextHelp ) 66 : OPimMainWindow( "Todolist", parent, name, WType_TopLevel | WStyle_ContextHelp )
67{ 67{
68 m_syncing = false; 68 m_syncing = false;
69 m_counter = 0; 69 m_counter = 0;
70 m_tempManager = new TemplateManager(); 70 m_tempManager = new TemplateManager();
71 m_tempManager->load(); 71 m_tempManager->load();
72 72
73 initUI(); 73 initUI();
74 initConfig(); 74 initConfig();
75 initViews(); 75 initViews();
76 initActions(); 76 initActions();
77 initEditor(); 77 initEditor();
78 initShow(); 78 initShow();
79 initTemplate(); 79 initTemplate();
80 80
81 populateTemplates(); 81 populateTemplates();
82 raiseCurrentView(); 82 raiseCurrentView();
83 QTimer::singleShot(0, this, SLOT(populateCategories() ) ); 83 QTimer::singleShot(0, this, SLOT(populateCategories() ) );
84} 84}
85void MainWindow::initTemplate() { 85void MainWindow::initTemplate() {
86 m_curTempEd = new TemplateEditor( this, templateManager() ); 86 m_curTempEd = new TemplateEditor( this, templateManager() );
87} 87}
88void MainWindow::initActions() { 88void MainWindow::initActions() {
89 89
90 // Data menu 90 // Data menu
91 m_edit->insertItem(QWidget::tr("New from template"), m_template, 91 m_edit->insertItem(QWidget::tr("New from template"), m_template,
92 -1, 0 ); 92 -1, 0 );
93 93
94 QAction* a = new QAction( QWidget::tr("New Task" ), Resource::loadPixmap( "new" ), 94 QAction* a = new QAction( QWidget::tr("New Task" ), Resource::loadPixmap( "new" ),
95 QString::null, 0, this, 0 ); 95 QString::null, 0, this, 0 );
96 connect(a, SIGNAL( activated() ), 96 connect(a, SIGNAL( activated() ),
97 this, SLOT( slotNew() ) ); 97 this, SLOT( slotNew() ) );
98 a->setWhatsThis( QWidget::tr( "Click here to create a new task." ) ); 98 a->setWhatsThis( QWidget::tr( "Click here to create a new task." ) );
99 a->addTo(m_tool ); 99 a->addTo(m_tool );
100 a->addTo(m_edit ); 100 a->addTo(m_edit );
101 101
102 a = new QAction( QWidget::tr("Edit Task"), Resource::loadIconSet( "edit" ), 102 a = new QAction( QWidget::tr("Edit Task"), Resource::loadIconSet( "edit" ),
103 QString::null, 0, this, 0 ); 103 QString::null, 0, this, 0 );
104 connect(a, SIGNAL(activated() ), 104 connect(a, SIGNAL(activated() ),
105 this, SLOT( slotEdit() ) ); 105 this, SLOT( slotEdit() ) );
106 a->setWhatsThis( QWidget::tr( "Click here to modify the current task." ) ); 106 a->setWhatsThis( QWidget::tr( "Click here to modify the current task." ) );
107 a->addTo( m_tool ); 107 a->addTo( m_tool );
108 a->addTo( m_edit ); 108 a->addTo( m_edit );
109 m_editAction = a; 109 m_editAction = a;
110 110
111 a = new QAction( QString::null, QWidget::tr("View Task"), 0, this, 0 ); 111 a = new QAction( QString::null, QWidget::tr("View Task"), 0, this, 0 );
112 connect(a, SIGNAL( activated() ), 112 connect(a, SIGNAL( activated() ),
113 this, SLOT( slotShowDetails() ) ); 113 this, SLOT( slotShowDetails() ) );
114 a->addTo( m_edit ); 114 a->addTo( m_edit );
115 115
116 m_edit->insertSeparator(); 116 m_edit->insertSeparator();
117 117
@@ -230,49 +230,49 @@ void MainWindow::initUI() {
230 m_catMenu->setCheckable( TRUE ); 230 m_catMenu->setCheckable( TRUE );
231 m_template->setCheckable( TRUE ); 231 m_template->setCheckable( TRUE );
232 232
233 connect(m_catMenu, SIGNAL(activated(int) ), 233 connect(m_catMenu, SIGNAL(activated(int) ),
234 this, SLOT(setCategory(int) ) ); 234 this, SLOT(setCategory(int) ) );
235 connect(m_template, SIGNAL(activated(int) ), 235 connect(m_template, SIGNAL(activated(int) ),
236 this, SLOT(slotNewFromTemplate(int) ) ); 236 this, SLOT(slotNewFromTemplate(int) ) );
237} 237}
238void MainWindow::initViews() { 238void MainWindow::initViews() {
239 TableView* tableView = new TableView( this, m_stack ); 239 TableView* tableView = new TableView( this, m_stack );
240 QWhatsThis::add( tableView, QWidget::tr( "This is a listing of all current tasks.\n\nThe list displays the following information:\n1. Completed - A green checkmark indicates task is completed. Click here to complete a task.\n2. Priority - a graphical representation of task priority. Double-click here to modify.\n3. Description - description of task. Click here to select the task.\n4. Deadline - shows when task is due. This column can be shown or hidden by selecting Options->'Show task deadlines' from the menu above." ) ); 240 QWhatsThis::add( tableView, QWidget::tr( "This is a listing of all current tasks.\n\nThe list displays the following information:\n1. Completed - A green checkmark indicates task is completed. Click here to complete a task.\n2. Priority - a graphical representation of task priority. Double-click here to modify.\n3. Description - description of task. Click here to select the task.\n4. Deadline - shows when task is due. This column can be shown or hidden by selecting Options->'Show task deadlines' from the menu above." ) );
241 m_stack->addWidget( tableView, m_counter++ ); 241 m_stack->addWidget( tableView, m_counter++ );
242 m_views.append( tableView ); 242 m_views.append( tableView );
243 m_curView = tableView; 243 m_curView = tableView;
244 connectBase( tableView ); 244 connectBase( tableView );
245 /* add QString type + QString configname to 245 /* add QString type + QString configname to
246 * the View menu 246 * the View menu
247 * and subdirs for multiple views 247 * and subdirs for multiple views
248 */ 248 */
249} 249}
250void MainWindow::initEditor() { 250void MainWindow::initEditor() {
251 m_curEdit = new Editor(); 251 m_curEdit = new Editor();
252} 252}
253void MainWindow::initShow() { 253void MainWindow::initShow() {
254 m_curShow = new TextViewShow(this); 254 m_curShow = new TextViewShow(this, this);
255 m_stack->addWidget( m_curShow->widget() , m_counter++ ); 255 m_stack->addWidget( m_curShow->widget() , m_counter++ );
256} 256}
257MainWindow::~MainWindow() { 257MainWindow::~MainWindow() {
258 delete templateManager(); 258 delete templateManager();
259} 259}
260void MainWindow::connectBase( ViewBase* ) { 260void MainWindow::connectBase( ViewBase* ) {
261 // once templates and signals mix we'll use it again 261 // once templates and signals mix we'll use it again
262} 262}
263QPopupMenu* MainWindow::contextMenu( int , bool recur ) { 263QPopupMenu* MainWindow::contextMenu( int , bool recur ) {
264 QPopupMenu* menu = new QPopupMenu(); 264 QPopupMenu* menu = new QPopupMenu();
265 265
266 m_editAction->addTo( menu ); 266 m_editAction->addTo( menu );
267 m_deleteAction->addTo( menu ); 267 m_deleteAction->addTo( menu );
268 m_duplicateAction->addTo( menu ); 268 m_duplicateAction->addTo( menu );
269 269
270 menu->insertSeparator(); 270 menu->insertSeparator();
271 271
272 /* 272 /*
273 * if this event recurs we allow 273 * if this event recurs we allow
274 * to detach it. 274 * to detach it.
275 * remove all 275 * remove all
276 */ 276 */
277 if ( recur ) { 277 if ( recur ) {
278 ; // FIXME 278 ; // FIXME
@@ -792,24 +792,27 @@ void MainWindow::beam( int uid, int ) {
792 connect(ir, SIGNAL(done(Ir*) ), 792 connect(ir, SIGNAL(done(Ir*) ),
793 this, SLOT(beamDone(Ir*) ) ); 793 this, SLOT(beamDone(Ir*) ) );
794 ir->send( beamfile, todo.summary(), "text/x-vCalendar" ); 794 ir->send( beamfile, todo.summary(), "text/x-vCalendar" );
795} 795}
796void MainWindow::show( int uid ) { 796void MainWindow::show( int uid ) {
797 slotShow( uid ); 797 slotShow( uid );
798} 798}
799void MainWindow::edit( int uid ) { 799void MainWindow::edit( int uid ) {
800 slotEdit( uid ); 800 slotEdit( uid );
801} 801}
802void MainWindow::add( const OPimRecord& rec) { 802void MainWindow::add( const OPimRecord& rec) {
803 if ( rec.rtti() != OTodo::rtti() ) return; 803 if ( rec.rtti() != OTodo::rtti() ) return;
804 804
805 const OTodo& todo = static_cast<const OTodo&>(rec); 805 const OTodo& todo = static_cast<const OTodo&>(rec);
806 806
807 m_todoMgr.add(todo ); 807 m_todoMgr.add(todo );
808 currentView()->addEvent( todo ); 808 currentView()->addEvent( todo );
809 809
810 810
811 // I'm afraid we must call this every time now, otherwise 811 // I'm afraid we must call this every time now, otherwise
812 // spend expensive time comparing all these strings... 812 // spend expensive time comparing all these strings...
813 // but only call if we changed something -zecke 813 // but only call if we changed something -zecke
814 populateCategories(); 814 populateCategories();
815} 815}
816void MainWindow::slotReturnFromView() {
817 raiseCurrentView();
818}
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h
index d756d64..f880505 100644
--- a/core/pim/todo/mainwindow.h
+++ b/core/pim/todo/mainwindow.h
@@ -39,48 +39,49 @@
39#include "todoview.h" 39#include "todoview.h"
40#include "quickedit.h" 40#include "quickedit.h"
41#include "todomanager.h" 41#include "todomanager.h"
42 42
43class QPopupMenu; 43class QPopupMenu;
44class QMenuBar; 44class QMenuBar;
45class QToolBar; 45class QToolBar;
46class QAction; 46class QAction;
47class QWidgetStack; 47class QWidgetStack;
48class Ir; 48class Ir;
49class QVBox; 49class QVBox;
50class QLineEdit; 50class QLineEdit;
51 51
52namespace Todo { 52namespace Todo {
53 typedef TodoView View; 53 typedef TodoView View;
54 class TemplateManager; 54 class TemplateManager;
55 class Editor; 55 class Editor;
56 class TodoShow; 56 class TodoShow;
57 class TemplateEditor; 57 class TemplateEditor;
58 struct QuickEditBase; 58 struct QuickEditBase;
59 59
60 class MainWindow : public OPimMainWindow { 60 class MainWindow : public OPimMainWindow {
61 Q_OBJECT 61 Q_OBJECT
62 friend class TodoView; // avoid QObject here.... 62 friend class TodoView; // avoid QObject here....
63 friend class TodoShow; // avoid QObject
63 public: 64 public:
64 MainWindow( QWidget *parent = 0, 65 MainWindow( QWidget *parent = 0,
65 const char* name = 0 ); 66 const char* name = 0 );
66 ~MainWindow(); 67 ~MainWindow();
67 68
68 /** return a context menu for an OTodo */ 69 /** return a context menu for an OTodo */
69 QPopupMenu* contextMenu(int uid, bool doesRecur = FALSE ); 70 QPopupMenu* contextMenu(int uid, bool doesRecur = FALSE );
70 QPopupMenu* options(); 71 QPopupMenu* options();
71 QPopupMenu* edit(); 72 QPopupMenu* edit();
72 QToolBar* toolbar(); 73 QToolBar* toolbar();
73 74
74 75
75 void updateList(); 76 void updateList();
76 OTodoAccess::List list()const; 77 OTodoAccess::List list()const;
77 OTodoAccess::List sorted( bool asc, int sortOrder ); 78 OTodoAccess::List sorted( bool asc, int sortOrder );
78 OTodoAccess::List sorted( bool asc, int sortOrder, int addFilter ); 79 OTodoAccess::List sorted( bool asc, int sortOrder, int addFilter );
79 80
80 OTodo event(int uid ); 81 OTodo event(int uid );
81 82
82 bool isSyncing()const; 83 bool isSyncing()const;
83 bool showCompleted()const; 84 bool showCompleted()const;
84 bool showDeadline()const; 85 bool showDeadline()const;
85 bool showOverDue()const; 86 bool showOverDue()const;
86 bool showQuickTask()const; 87 bool showQuickTask()const;
@@ -162,38 +163,39 @@ private slots:
162 void slotNewFromTemplate(int id ); 163 void slotNewFromTemplate(int id );
163 void slotNew(); 164 void slotNew();
164 void slotDuplicate(); 165 void slotDuplicate();
165 166
166 void slotDelete(); 167 void slotDelete();
167 void slotDeleteAll(); 168 void slotDeleteAll();
168 void slotDeleteCompleted(); 169 void slotDeleteCompleted();
169 170
170 void slotEdit(); 171 void slotEdit();
171 void slotFind(); 172 void slotFind();
172 173
173 void setCategory( int ); 174 void setCategory( int );
174 175
175 void slotShowDeadLine( bool ); 176 void slotShowDeadLine( bool );
176 void slotShowCompleted( bool ); 177 void slotShowCompleted( bool );
177 void slotShowQuickTask( bool ); 178 void slotShowQuickTask( bool );
178 179
179 void setDocument( const QString& ); 180 void setDocument( const QString& );
180 181
181 182
182 void slotBeam(); 183 void slotBeam();
183 void beamDone( Ir* ); 184 void beamDone( Ir* );
184 void slotShowDetails(); 185 void slotShowDetails();
185 void slotShowDue( bool ); 186 void slotShowDue( bool );
187 void slotReturnFromView(); // for TodoShow...
186 /* reimplementation from opimmainwindow */ 188 /* reimplementation from opimmainwindow */
187 protected slots: 189 protected slots:
188 void flush(); 190 void flush();
189 void reload(); 191 void reload();
190 int create(); 192 int create();
191 bool remove( int uid ); 193 bool remove( int uid );
192 void beam(int uid, int transport = IrDa ); 194 void beam(int uid, int transport = IrDa );
193 void show( int uid ); 195 void show( int uid );
194 void edit( int uid ); 196 void edit( int uid );
195 void add( const OPimRecord& ); 197 void add( const OPimRecord& );
196 }; 198 };
197}; 199};
198 200
199#endif 201#endif
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp
index 61d1edd..cec8b5e 100644
--- a/core/pim/todo/tableview.cpp
+++ b/core/pim/todo/tableview.cpp
@@ -38,76 +38,76 @@
38#include <qpe/resource.h> 38#include <qpe/resource.h>
39 39
40#include <opie/orecur.h> 40#include <opie/orecur.h>
41 41
42#include "mainwindow.h" 42#include "mainwindow.h"
43//#include "tableitems.h" 43//#include "tableitems.h"
44#include "tableview.h" 44#include "tableview.h"
45 45
46using namespace Todo; 46using namespace Todo;
47 47
48namespace { 48namespace {
49 static const int BoxSize = 14; 49 static const int BoxSize = 14;
50 static const int RowHeight = 20; 50 static const int RowHeight = 20;
51} 51}
52 52
53 53
54void TableView::initConfig() { 54void TableView::initConfig() {
55 Config config( "todo" ); 55 Config config( "todo" );
56 config.setGroup( "Options" ); 56 config.setGroup( "Options" );
57 m_completeStrokeWidth = config.readNumEntry( "CompleteStrokeWidth", 8 ); 57 m_completeStrokeWidth = config.readNumEntry( "CompleteStrokeWidth", 8 );
58} 58}
59 59
60TableView::TableView( MainWindow* window, QWidget* wid ) 60TableView::TableView( MainWindow* window, QWidget* wid )
61 : QTable( wid ), TodoView( window ) { 61 : QTable( wid ), TodoView( window ) {
62 62
63 // Load icons 63 // Load icons
64 // TODO - probably should be done globally somewhere else, 64 // TODO - probably should be done globally somewhere else,
65 // see also quickeditimpl.cpp/h, taskeditoroverview.cpp/h 65 // see also quickeditimpl.cpp/h, taskeditoroverview.cpp/h
66 m_pic_completed = Resource::loadPixmap( "todo/completed" ); 66 m_pic_completed = Resource::loadPixmap( "todo/completed" );
67 QString namestr; 67 QString namestr;
68 for ( unsigned int i = 1; i < 6; i++ ) { 68 for ( unsigned int i = 1; i < 6; i++ ) {
69 namestr = "todo/priority"; 69 namestr = "todo/priority";
70 namestr.append( QString::number( i ) ); 70 namestr.append( QString::number( i ) );
71 m_pic_priority[ i - 1 ] = Resource::loadPixmap( namestr ); 71 m_pic_priority[ i - 1 ] = Resource::loadPixmap( namestr );
72 } 72 }
73 73
74 setUpdatesEnabled( false ); 74 setUpdatesEnabled( false );
75 viewport()->setUpdatesEnabled( false ); 75 viewport()->setUpdatesEnabled( false );
76 m_enablePaint = false; 76 m_enablePaint = false;
77 setNumRows(0); 77 setNumRows(0);
78 setNumCols(4); 78 setNumCols(4);
79 79
80 horizontalHeader()->setLabel( 0, QWidget::tr("C.") ); 80 horizontalHeader()->setLabel( 0, QWidget::tr("C.") );
81 horizontalHeader()->setLabel( 1, QWidget::tr("Priority") ); 81 horizontalHeader()->setLabel( 1, QWidget::tr("Priority") );
82 horizontalHeader()->setLabel( 2, QWidget::tr("Description" ) ); 82 horizontalHeader()->setLabel( 2, QWidget::tr("Description" ) );
83 horizontalHeader()->setLabel( 3, QWidget::tr("Deadline") ); 83 horizontalHeader()->setLabel( 3, QWidget::tr("Deadline") );
84 84
85 setShowDeadline( todoWindow()->showDeadline() ); 85 setShowDeadline( todoWindow()->showDeadline() );
86 86
87 setSorting( TRUE ); 87 setSorting( TRUE );
88 setSelectionMode( NoSelection ); 88 setSelectionMode( NoSelection );
89 89
90 setLeftMargin( 0 ); 90 setLeftMargin( 0 );
91 verticalHeader()->hide(); 91 verticalHeader()->hide();
92 92
93 connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ), 93 connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ),
94 this, SLOT( slotClicked(int, int, int, const QPoint& ) ) ); 94 this, SLOT( slotClicked(int, int, int, const QPoint& ) ) );
95 connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ), 95 connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ),
96 this, SLOT( slotPressed(int, int, int, const QPoint& ) ) ); 96 this, SLOT( slotPressed(int, int, int, const QPoint& ) ) );
97 connect((QTable*)this, SIGNAL(valueChanged(int, int) ), 97 connect((QTable*)this, SIGNAL(valueChanged(int, int) ),
98 this, SLOT( slotValueChanged(int, int) ) ); 98 this, SLOT( slotValueChanged(int, int) ) );
99 connect((QTable*)this, SIGNAL(currentChanged(int, int) ), 99 connect((QTable*)this, SIGNAL(currentChanged(int, int) ),
100 this, SLOT( slotCurrentChanged(int, int) ) ); 100 this, SLOT( slotCurrentChanged(int, int) ) );
101 101
102 m_menuTimer = new QTimer( this ); 102 m_menuTimer = new QTimer( this );
103 connect( m_menuTimer, SIGNAL(timeout()), 103 connect( m_menuTimer, SIGNAL(timeout()),
104 this, SLOT(slotShowMenu()) ); 104 this, SLOT(slotShowMenu()) );
105 105
106 m_enablePaint = true; 106 m_enablePaint = true;
107 setUpdatesEnabled( true ); 107 setUpdatesEnabled( true );
108 viewport()->setUpdatesEnabled( true ); 108 viewport()->setUpdatesEnabled( true );
109 viewport()->update(); 109 viewport()->update();
110 setSortOrder( 0 ); 110 setSortOrder( 0 );
111 setAscending( TRUE ); 111 setAscending( TRUE );
112 m_first = true; 112 m_first = true;
113 113
@@ -347,49 +347,49 @@ void TableView::paintCell(QPainter* p, int row, int col, const QRect& cr, bool
347 347
348 // Paint grid 348 // Paint grid
349 //p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) ); 349 //p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) );
350 //QPen op = p->pen(); 350 //QPen op = p->pen();
351 //p->setPen(cg.mid()); 351 //p->setPen(cg.mid());
352 //p->drawLine( 0, cr.height() - 1, cr.width() - 1, cr.height() - 1 ); 352 //p->drawLine( 0, cr.height() - 1, cr.width() - 1, cr.height() - 1 );
353 //p->drawLine( cr.width() - 1, 0, cr.width() - 1, cr.height() - 1 ); 353 //p->drawLine( cr.width() - 1, 0, cr.width() - 1, cr.height() - 1 );
354 //p->setPen(op); 354 //p->setPen(op);
355 355
356 QFont f = p->font(); 356 QFont f = p->font();
357 QFontMetrics fm(f); 357 QFontMetrics fm(f);
358 358
359 int marg = ( cr.width() - BoxSize ) / 2; 359 int marg = ( cr.width() - BoxSize ) / 2;
360 int x = 0; 360 int x = 0;
361 int y = ( cr.height() - BoxSize ) / 2; 361 int y = ( cr.height() - BoxSize ) / 2;
362 362
363 switch(col) { 363 switch(col) {
364 case 0: // completed field 364 case 0: // completed field
365 { 365 {
366 //p->setPen( QPen( cg.text() ) ); 366 //p->setPen( QPen( cg.text() ) );
367 //p->drawRect( x + marg, y, BoxSize, BoxSize ); 367 //p->drawRect( x + marg, y, BoxSize, BoxSize );
368 //p->drawRect( x + marg+1, y+1, BoxSize-2, BoxSize-2 ); 368 //p->drawRect( x + marg+1, y+1, BoxSize-2, BoxSize-2 );
369 if ( task.isCompleted() ) { 369 if ( task.isCompleted() ) {
370 p->drawPixmap( x + marg, y, m_pic_completed ); 370 p->drawPixmap( x + marg, y, m_pic_completed );
371 } 371 }
372 } 372 }
373 break; 373 break;
374 case 1: // priority field 374 case 1: // priority field
375 { 375 {
376 p->drawPixmap( x + marg, y, m_pic_priority[ task.priority() - 1 ] ); 376 p->drawPixmap( x + marg, y, m_pic_priority[ task.priority() - 1 ] );
377 } 377 }
378 break; 378 break;
379 case 2: // description field 379 case 2: // description field
380 { 380 {
381 QString text = task.summary().isEmpty() ? 381 QString text = task.summary().isEmpty() ?
382 task.description().left(20) : 382 task.description().left(20) :
383 task.summary(); 383 task.summary();
384 p->drawText(2,2 + fm.ascent(), text); 384 p->drawText(2,2 + fm.ascent(), text);
385 } 385 }
386 break; 386 break;
387 case 3: 387 case 3:
388 { 388 {
389 QString text; 389 QString text;
390 if (task.hasDueDate()) { 390 if (task.hasDueDate()) {
391 int off = QDate::currentDate().daysTo( task.dueDate() ); 391 int off = QDate::currentDate().daysTo( task.dueDate() );
392 text = tr( "%1 day(s)").arg(QString::number(off)); 392 text = tr( "%1 day(s)").arg(QString::number(off));
393 /* 393 /*
394 * set color if not completed 394 * set color if not completed
395 */ 395 */
@@ -448,49 +448,49 @@ void TableView::setCellContentFromEditor(int row, int col ) {
448 } 448 }
449 }else if ( col == 2) { 449 }else if ( col == 2) {
450 QWidget* wid = cellWidget(row, 2); 450 QWidget* wid = cellWidget(row, 2);
451 if ( wid->inherits("QLineEdit") ) { 451 if ( wid->inherits("QLineEdit") ) {
452 QString text = ((QLineEdit*)wid)->text(); 452 QString text = ((QLineEdit*)wid)->text();
453 OTodo todo = sorted()[row]; 453 OTodo todo = sorted()[row];
454 if ( todo.summary() != text ) { 454 if ( todo.summary() != text ) {
455 todo.setSummary( text ); 455 todo.setSummary( text );
456 TodoView::update( todo.uid(), todo ); 456 TodoView::update( todo.uid(), todo );
457 updateView(); 457 updateView();
458 } 458 }
459 } 459 }
460 } 460 }
461} 461}
462void TableView::slotPriority() { 462void TableView::slotPriority() {
463 setCellContentFromEditor( currentRow(), currentColumn() ); 463 setCellContentFromEditor( currentRow(), currentColumn() );
464} 464}
465/* 465/*
466 * We'll use the TimerEvent to read ahead or to keep the cahce always 466 * We'll use the TimerEvent to read ahead or to keep the cahce always
467 * filled enough. 467 * filled enough.
468 * We will try to read ahead 4 items in both ways 468 * We will try to read ahead 4 items in both ways
469 * up and down. On odd or even we will currentRow()+-4 or +-9 469 * up and down. On odd or even we will currentRow()+-4 or +-9
470 * 470 *
471 */ 471 */
472void TableView::timerEvent( QTimerEvent* ev ) { 472void TableView::timerEvent( QTimerEvent* ) {
473// qWarning("sorted %d", sorted().count() ); 473// qWarning("sorted %d", sorted().count() );
474 if (sorted().count() == 0 ) 474 if (sorted().count() == 0 )
475 return; 475 return;
476 476
477 int row = currentRow(); 477 int row = currentRow();
478 if ( m_row ) { 478 if ( m_row ) {
479 int ro = row-4; 479 int ro = row-4;
480 if (ro < 0 ) ro = 0; 480 if (ro < 0 ) ro = 0;
481 sorted()[ro]; 481 sorted()[ro];
482 482
483 ro = row+4; 483 ro = row+4;
484 sorted()[ro]; 484 sorted()[ro];
485 } else { 485 } else {
486 int ro = row + 8; 486 int ro = row + 8;
487 sorted()[ro]; 487 sorted()[ro];
488 488
489 ro = row-8; 489 ro = row-8;
490 if (ro < 0 ) ro = 0; 490 if (ro < 0 ) ro = 0;
491 sorted()[ro]; 491 sorted()[ro];
492 } 492 }
493 493
494 m_row = !m_row; 494 m_row = !m_row;
495} 495}
496 496
@@ -509,24 +509,35 @@ void TableView::timerEvent( QTimerEvent* ev ) {
509 * BUG: When clicking on the Due column and it's scrollable 509 * BUG: When clicking on the Due column and it's scrollable
510 * the todo is marked as completed... 510 * the todo is marked as completed...
511 * REASON: QTable is doing auto scrolling which leads to a move 511 * REASON: QTable is doing auto scrolling which leads to a move
512 * in the x coordinate and this way it's able to pass the 512 * in the x coordinate and this way it's able to pass the
513 * m_completeStrokeWidth criteria 513 * m_completeStrokeWidth criteria
514 * WORKAROUND: strike through needs to strike through the same 514 * WORKAROUND: strike through needs to strike through the same
515 * row and two columns! 515 * row and two columns!
516 */ 516 */
517void TableView::contentsMouseReleaseEvent( QMouseEvent* e) { 517void TableView::contentsMouseReleaseEvent( QMouseEvent* e) {
518 int row = rowAt(m_prevP.y()); 518 int row = rowAt(m_prevP.y());
519 int colOld = columnAt(m_prevP.x() ); 519 int colOld = columnAt(m_prevP.x() );
520 int colNew = columnAt(e->x() ); 520 int colNew = columnAt(e->x() );
521 qWarning("colNew: %d colOld: %d", colNew, colOld ); 521 qWarning("colNew: %d colOld: %d", colNew, colOld );
522 if ( row == rowAt( e->y() ) && row != -1 && 522 if ( row == rowAt( e->y() ) && row != -1 &&
523 colOld != colNew ) { 523 colOld != colNew ) {
524 TodoView::complete( sorted()[row] ); 524 TodoView::complete( sorted()[row] );
525 return; 525 return;
526 } 526 }
527 QTable::contentsMouseReleaseEvent( e ); 527 QTable::contentsMouseReleaseEvent( e );
528} 528}
529void TableView::contentsMouseMoveEvent( QMouseEvent* e ) { 529void TableView::contentsMouseMoveEvent( QMouseEvent* e ) {
530 m_menuTimer->stop(); 530 m_menuTimer->stop();
531 QTable::contentsMouseMoveEvent( e ); 531 QTable::contentsMouseMoveEvent( e );
532} 532}
533void TableView::keyPressEvent( QKeyEvent* event) {
534 switch( event->key() ) {
535 case Qt::Key_F33:
536 case Qt::Key_Enter:
537 case Qt::Key_Return:
538 showTodo( sorted().uidAt( currentRow() ) );
539 break;
540 default:
541 QTable::keyPressEvent( event );
542 }
543}
diff --git a/core/pim/todo/tableview.h b/core/pim/todo/tableview.h
index 2b6ea2b..689c496 100644
--- a/core/pim/todo/tableview.h
+++ b/core/pim/todo/tableview.h
@@ -64,48 +64,49 @@ namespace Todo {
64 void setShowCategory(const QString& =QString::null ); 64 void setShowCategory(const QString& =QString::null );
65 void newDay(); 65 void newDay();
66 QWidget* widget(); 66 QWidget* widget();
67 void sortColumn(int, bool, bool ); 67 void sortColumn(int, bool, bool );
68 68
69 /* 69 /*
70 * we do our drawing ourselves 70 * we do our drawing ourselves
71 * because we don't want to have 71 * because we don't want to have
72 * 40.000 QTableItems for 10.000 72 * 40.000 QTableItems for 10.000
73 * OTodos where we only show 10 at a time! 73 * OTodos where we only show 10 at a time!
74 */ 74 */
75 void paintCell(QPainter* p, int row, int col, const QRect&, bool ); 75 void paintCell(QPainter* p, int row, int col, const QRect&, bool );
76 private: 76 private:
77 /* reimplented for internal reasons */ 77 /* reimplented for internal reasons */
78 void viewportPaintEvent( QPaintEvent* ); 78 void viewportPaintEvent( QPaintEvent* );
79 QTimer *m_menuTimer; 79 QTimer *m_menuTimer;
80 bool m_enablePaint:1; 80 bool m_enablePaint:1;
81 QString m_oleCat; 81 QString m_oleCat;
82 bool m_first : 1; 82 bool m_first : 1;
83 83
84 QPixmap m_pic_completed; 84 QPixmap m_pic_completed;
85 QPixmap m_pic_priority[ 5 ]; 85 QPixmap m_pic_priority[ 5 ];
86 86
87 protected: 87 protected:
88 void keyPressEvent( QKeyEvent* );
88 void contentsMouseReleaseEvent( QMouseEvent* ); 89 void contentsMouseReleaseEvent( QMouseEvent* );
89 void contentsMouseMoveEvent( QMouseEvent* ); 90 void contentsMouseMoveEvent( QMouseEvent* );
90 void timerEvent( QTimerEvent* e ); 91 void timerEvent( QTimerEvent* e );
91 QWidget* createEditor(int row, int col, bool initFromCell )const; 92 QWidget* createEditor(int row, int col, bool initFromCell )const;
92 void setCellContentFromEditor( int row, int col ); 93 void setCellContentFromEditor( int row, int col );
93 94
94private slots: 95private slots:
95 void slotShowMenu(); 96 void slotShowMenu();
96 void slotClicked(int, int, int, 97 void slotClicked(int, int, int,
97 const QPoint& ); 98 const QPoint& );
98 void slotPressed(int, int, int, 99 void slotPressed(int, int, int,
99 const QPoint& ); 100 const QPoint& );
100 void slotValueChanged(int, int); 101 void slotValueChanged(int, int);
101 void slotCurrentChanged(int, int ); 102 void slotCurrentChanged(int, int );
102 void slotPriority(); 103 void slotPriority();
103 private: 104 private:
104 void initConfig(); 105 void initConfig();
105 int m_completeStrokeWidth; 106 int m_completeStrokeWidth;
106 bool m_row : 1; 107 bool m_row : 1;
107 QPoint m_prevP; 108 QPoint m_prevP;
108 }; 109 };
109}; 110};
110 111
111#endif 112#endif
diff --git a/core/pim/todo/textviewshow.cpp b/core/pim/todo/textviewshow.cpp
index 24c8c0e..fe8a9c8 100644
--- a/core/pim/todo/textviewshow.cpp
+++ b/core/pim/todo/textviewshow.cpp
@@ -1,19 +1,32 @@
1#include "mainwindow.h"
1#include "textviewshow.h" 2#include "textviewshow.h"
2 3
3using namespace Todo; 4using namespace Todo;
4 5
5TextViewShow::TextViewShow( QWidget* parent) 6TextViewShow::TextViewShow( QWidget* parent, MainWindow* win)
6 : QTextView( parent ), TodoShow() { 7 : QTextView( parent ), TodoShow(win) {
7 8
8} 9}
9TextViewShow::~TextViewShow() { 10TextViewShow::~TextViewShow() {
10} 11}
11QString TextViewShow::type()const { 12QString TextViewShow::type()const {
12 return QString::fromLatin1("TextViewShow"); 13 return QString::fromLatin1("TextViewShow");
13} 14}
14void TextViewShow::slotShow( const OTodo& ev ) { 15void TextViewShow::slotShow( const OTodo& ev ) {
15 setText( ev.toRichText() ); 16 setText( ev.toRichText() );
16} 17}
17QWidget* TextViewShow::widget() { 18QWidget* TextViewShow::widget() {
18 return this; 19 return this;
19} 20}
21void TextViewShow::keyPressEvent( QKeyEvent* event ) {
22 switch( event->key() ) {
23 case Qt::Key_F33:
24 case Qt::Key_Enter:
25 case Qt::Key_Return:
26 escapeView();
27 break;
28 default:
29 QTextView::keyPressEvent( event );
30 break;
31 }
32}
diff --git a/core/pim/todo/textviewshow.h b/core/pim/todo/textviewshow.h
index f58026b..498de81 100644
--- a/core/pim/todo/textviewshow.h
+++ b/core/pim/todo/textviewshow.h
@@ -1,17 +1,20 @@
1#include <qtextview.h> 1#include <qtextview.h>
2 2
3#include "todoshow.h" 3#include "todoshow.h"
4 4
5namespace Todo { 5namespace Todo {
6 6
7 class TextViewShow : public QTextView, public TodoShow { 7 class TextViewShow : public QTextView, public TodoShow {
8 public: 8 public:
9 TextViewShow( QWidget* parent ); 9 TextViewShow( QWidget* parent, MainWindow* );
10 ~TextViewShow(); 10 ~TextViewShow();
11 11
12 QString type()const; 12 QString type()const;
13 void slotShow( const OTodo& ev ); 13 void slotShow( const OTodo& ev );
14 QWidget* widget(); 14 QWidget* widget();
15 15
16 protected:
17 void keyPressEvent( QKeyEvent* );
18
16 }; 19 };
17}; 20};
diff --git a/core/pim/todo/todoshow.cpp b/core/pim/todo/todoshow.cpp
index c84a08f..4dbc9aa 100644
--- a/core/pim/todo/todoshow.cpp
+++ b/core/pim/todo/todoshow.cpp
@@ -1,9 +1,16 @@
1
2#include "mainwindow.h"
1#include "todoshow.h" 3#include "todoshow.h"
2 4
3using namespace Todo; 5using namespace Todo;
4 6
5TodoShow::TodoShow() { 7TodoShow::TodoShow(MainWindow* win) {
8 m_win = win;
6} 9}
7TodoShow::~TodoShow() { 10TodoShow::~TodoShow() {
8} 11}
12void TodoShow::escapeView() {
13 if (m_win )
14 m_win->slotReturnFromView();
15}
9 16
diff --git a/core/pim/todo/todoshow.h b/core/pim/todo/todoshow.h
index 198e9ae..7267b13 100644
--- a/core/pim/todo/todoshow.h
+++ b/core/pim/todo/todoshow.h
@@ -13,41 +13,46 @@
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of 14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
17..}^=.=       =       ; Library General Public License for more 17..}^=.=       =       ; Library General Public License for more
18++=   -.     .`     .: details. 18++=   -.     .`     .: details.
19 :     =  ...= . :.=- 19 :     =  ...= . :.=-
20 -.   .:....=;==+<; You should have received a copy of the GNU 20 -.   .:....=;==+<; You should have received a copy of the GNU
21  -_. . .   )=.  = Library General Public License along with 21  -_. . .   )=.  = Library General Public License along with
22    --        :-=` this library; see the file COPYING.LIB. 22    --        :-=` this library; see the file COPYING.LIB.
23 If not, write to the Free Software Foundation, 23 If not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, 24 Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28#ifndef TODO_TODO_SHOW_H 28#ifndef TODO_TODO_SHOW_H
29#define TODO_TODO_SHOW_H 29#define TODO_TODO_SHOW_H
30 30
31#include <qstring.h> 31#include <qstring.h>
32#include <qwidget.h> 32#include <qwidget.h>
33 33
34#include <opie/otodo.h> 34#include <opie/otodo.h>
35 35
36namespace Todo { 36namespace Todo {
37 class MainWindow;
37 /** 38 /**
38 * TodoShow is the baseclass of 39 * TodoShow is the baseclass of
39 * of all TodoShows. 40 * of all TodoShows.
40 * The first implementation is a QTextView 41 * The first implementation is a QTextView
41 * implementation showing the Todo as richtext 42 * implementation showing the Todo as richtext
42 */ 43 */
43 class TodoShow { 44 class TodoShow {
44 public: 45 public:
45 TodoShow(); 46 TodoShow( MainWindow* win);
46 virtual ~TodoShow(); 47 virtual ~TodoShow();
47 virtual QString type()const = 0; 48 virtual QString type()const = 0;
48 virtual void slotShow( const OTodo& ev ) = 0; 49 virtual void slotShow( const OTodo& ev ) = 0;
49 virtual QWidget* widget() = 0; 50 virtual QWidget* widget() = 0;
51 protected:
52 void escapeView();
53 private:
54 MainWindow *m_win;
50 }; 55 };
51}; 56};
52 57
53#endif 58#endif