summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/main.cpp2
-rw-r--r--core/pim/todo/mainwindow.cpp2
-rw-r--r--core/pim/todo/mainwindow.h2
3 files changed, 3 insertions, 3 deletions
diff --git a/core/pim/todo/main.cpp b/core/pim/todo/main.cpp
index aeae794..58ed45c 100644
--- a/core/pim/todo/main.cpp
+++ b/core/pim/todo/main.cpp
@@ -1,49 +1,49 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "mainwindow.h" 21#include "mainwindow.h"
22 22
23 23
24#include <qdatetime.h> 24#include <qdatetime.h>
25 25
26#include <qpe/qpeapplication.h> 26#include <qpe/qpeapplication.h>
27 27
28void myMessages( QtMsgType, const char* ) { 28void myMessages( QtMsgType, const char* ) {
29 29
30} 30}
31 31
32int main( int argc, char **argv ) 32int main( int argc, char **argv )
33{ 33{
34// qInstallMsgHandler( myMessages ); 34 qInstallMsgHandler( myMessages );
35 QPEApplication a( argc, argv ); 35 QPEApplication a( argc, argv );
36 36
37 QTime time; 37 QTime time;
38 time.start(); 38 time.start();
39 Todo::MainWindow mw; 39 Todo::MainWindow mw;
40 int t = time.elapsed(); 40 int t = time.elapsed();
41 qWarning("QTime %d", t/1000 ); 41 qWarning("QTime %d", t/1000 );
42 mw.setCaption("Opie Todolist"); 42 mw.setCaption("Opie Todolist");
43 QObject::connect( &a, SIGNAL( flush() ), &mw, SLOT( slotFlush() ) ); 43 QObject::connect( &a, SIGNAL( flush() ), &mw, SLOT( slotFlush() ) );
44 QObject::connect( &a, SIGNAL( reload() ), &mw, SLOT( slotReload() ) ); 44 QObject::connect( &a, SIGNAL( reload() ), &mw, SLOT( slotReload() ) );
45 45
46 a.showMainWidget(&mw); 46 a.showMainWidget(&mw);
47 47
48 return a.exec(); 48 return a.exec();
49} 49}
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp
index d328558..7810285 100644
--- a/core/pim/todo/mainwindow.cpp
+++ b/core/pim/todo/mainwindow.cpp
@@ -1,818 +1,818 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2002 <> 3             .=l. Copyright (c) 2002 <>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This program is free software; you can 5 _;:,     .>    :=|. This program is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under 6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU General Public 7:`=1 )Y*s>-.--   : the terms of the GNU General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License, 9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version. 10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_. 11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This program is distributed in the hope that 12    .i_,=:_.      -<s. This program is distributed in the hope that
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  -_. . .   )=.  = General Public License along with 21  -_. . .   )=.  = General Public License along with
22    --        :-=` this library; see the file COPYING.LIB. 22    --        :-=` this library; see the file COPYING.LIB.
23 If not, write to the Free Software Foundation, 23 If not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, 24 Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29#include <unistd.h> 29#include <unistd.h>
30 30
31#include <qmenubar.h> 31#include <qmenubar.h>
32#include <qmessagebox.h> 32#include <qmessagebox.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qpopupmenu.h> 34#include <qpopupmenu.h>
35#include <qwidgetstack.h> 35#include <qwidgetstack.h>
36#include <qaction.h> 36#include <qaction.h>
37#include <qtimer.h> 37#include <qtimer.h>
38#include <qvbox.h> 38#include <qvbox.h>
39#include <qlineedit.h> 39#include <qlineedit.h>
40#include <qwhatsthis.h> 40#include <qwhatsthis.h>
41 41
42#include <qpe/applnk.h> 42#include <qpe/applnk.h>
43#include <qpe/config.h> 43#include <qpe/config.h>
44#include <qpe/ir.h> 44#include <qpe/ir.h>
45#include <qpe/resource.h> 45#include <qpe/resource.h>
46#include <qpe/qpemessagebox.h> 46#include <qpe/qpemessagebox.h>
47#include <qpe/qpetoolbar.h> 47#include <qpe/qpetoolbar.h>
48 48
49#include <opie/orecur.h> 49#include <opie/orecur.h>
50#include <opie/otodoaccessvcal.h> 50#include <opie/otodoaccessvcal.h>
51 51
52#include "quickeditimpl.h" 52#include "quickeditimpl.h"
53#include "todotemplatemanager.h" 53#include "todotemplatemanager.h"
54#include "templateeditor.h" 54#include "templateeditor.h"
55#include "tableview.h" 55#include "tableview.h"
56 56
57#include "textviewshow.h" 57#include "textviewshow.h"
58#include "todoeditor.h" 58#include "todoeditor.h"
59#include "mainwindow.h" 59#include "mainwindow.h"
60 60
61 61
62using namespace Todo; 62using namespace Todo;
63 63
64MainWindow::MainWindow( QWidget* parent, 64MainWindow::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
118 a = new QAction( QWidget::tr("Delete..."), Resource::loadIconSet( "trash" ), 118 a = new QAction( QWidget::tr("Delete..."), Resource::loadIconSet( "trash" ),
119 QString::null, 0, this, 0 ); 119 QString::null, 0, this, 0 );
120 connect(a, SIGNAL(activated() ), 120 connect(a, SIGNAL(activated() ),
121 this, SLOT(slotDelete() ) ); 121 this, SLOT(slotDelete() ) );
122 a->setWhatsThis( QWidget::tr( "Click here to remove the current task." ) ); 122 a->setWhatsThis( QWidget::tr( "Click here to remove the current task." ) );
123 a->addTo( m_tool ); 123 a->addTo( m_tool );
124 a->addTo( m_edit ); 124 a->addTo( m_edit );
125 m_deleteAction = a; 125 m_deleteAction = a;
126 126
127 a = new QAction( QString::null, QWidget::tr("Delete all..."), 0, this, 0 ); 127 a = new QAction( QString::null, QWidget::tr("Delete all..."), 0, this, 0 );
128 connect(a, SIGNAL( activated() ), 128 connect(a, SIGNAL( activated() ),
129 this, SLOT( slotDeleteAll() ) ); 129 this, SLOT( slotDeleteAll() ) );
130 a->addTo(m_edit ); 130 a->addTo(m_edit );
131 m_deleteAllAction = a; 131 m_deleteAllAction = a;
132 132
133 a = new QAction( QString::null, QWidget::tr("Delete completed"), 133 a = new QAction( QString::null, QWidget::tr("Delete completed"),
134 0, this, 0 ); 134 0, this, 0 );
135 connect(a, SIGNAL( activated() ), 135 connect(a, SIGNAL( activated() ),
136 this, SLOT( slotDeleteCompleted() ) ); 136 this, SLOT( slotDeleteCompleted() ) );
137 a->addTo(m_edit ); 137 a->addTo(m_edit );
138 a->setEnabled( TRUE ); 138 a->setEnabled( TRUE );
139 m_deleteCompleteAction = a; 139 m_deleteCompleteAction = a;
140 140
141 m_edit->insertSeparator(); 141 m_edit->insertSeparator();
142 142
143 a = new QAction( QString::null, QWidget::tr("Duplicate"), 0, this, 0 ); 143 a = new QAction( QString::null, QWidget::tr("Duplicate"), 0, this, 0 );
144 connect(a, SIGNAL( activated() ), 144 connect(a, SIGNAL( activated() ),
145 this, SLOT( slotDuplicate() ) ); 145 this, SLOT( slotDuplicate() ) );
146 a->addTo(m_edit ); 146 a->addTo(m_edit );
147 m_duplicateAction = a; 147 m_duplicateAction = a;
148 148
149 m_edit->insertSeparator(); 149 m_edit->insertSeparator();
150 150
151 if ( Ir::supported() ) { 151 if ( Ir::supported() ) {
152 a = new QAction( QWidget::tr( "Beam" ), Resource::loadPixmap( "beam" ), QString::null, 0, this, 0 ); 152 a = new QAction( QWidget::tr( "Beam" ), Resource::loadPixmap( "beam" ), QString::null, 0, this, 0 );
153 connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); 153 connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) );
154 a->setWhatsThis( QWidget::tr( "Click here to send the current task to another device." ) ); 154 a->setWhatsThis( QWidget::tr( "Click here to send the current task to another device." ) );
155 a->addTo( m_edit ); 155 a->addTo( m_edit );
156 a->addTo( m_tool ); 156 a->addTo( m_tool );
157 } 157 }
158 158
159 // Options menu 159 // Options menu
160 a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), 160 a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ),
161 QString::null, 0, this, 0 ); 161 QString::null, 0, this, 0 );
162 connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); 162 connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) );
163 a->addTo( m_options ); 163 a->addTo( m_options );
164 m_findAction = a; 164 m_findAction = a;
165 165
166 m_options->insertSeparator(); 166 m_options->insertSeparator();
167 167
168 m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), 168 m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"),
169 0, this, 0, TRUE ); 169 0, this, 0, TRUE );
170 m_completedAction->addTo( m_options ); 170 m_completedAction->addTo( m_options );
171 m_completedAction->setOn( showCompleted() ); 171 m_completedAction->setOn( showCompleted() );
172 connect(m_completedAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowCompleted(bool) ) ); 172 connect(m_completedAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowCompleted(bool) ) );
173 173
174 a = new QAction( QString::null, QWidget::tr("Show only over-due tasks"), 174 a = new QAction( QString::null, QWidget::tr("Show only over-due tasks"),
175 0, this, 0, TRUE ); 175 0, this, 0, TRUE );
176 a->addTo( m_options ); 176 a->addTo( m_options );
177 a->setOn( showOverDue() ); 177 a->setOn( showOverDue() );
178 connect(a, SIGNAL(toggled(bool)), this, SLOT(slotShowDue(bool) ) ); 178 connect(a, SIGNAL(toggled(bool)), this, SLOT(slotShowDue(bool) ) );
179 179
180 m_showDeadLineAction = new QAction( QString::null, QWidget::tr("Show task deadlines"), 180 m_showDeadLineAction = new QAction( QString::null, QWidget::tr("Show task deadlines"),
181 0, this, 0, TRUE ); 181 0, this, 0, TRUE );
182 m_showDeadLineAction->addTo( m_options ); 182 m_showDeadLineAction->addTo( m_options );
183 m_showDeadLineAction->setOn( showDeadline() ); 183 m_showDeadLineAction->setOn( showDeadline() );
184 connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), this, SLOT( slotShowDeadLine( bool ) ) ); 184 connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), this, SLOT( slotShowDeadLine( bool ) ) );
185 185
186 m_showQuickTaskAction = new QAction( QString::null, QWidget::tr("Show quick task bar"), 186 m_showQuickTaskAction = new QAction( QString::null, QWidget::tr("Show quick task bar"),
187 0, this, 0, TRUE ); 187 0, this, 0, TRUE );
188 m_showQuickTaskAction->addTo( m_options ); 188 m_showQuickTaskAction->addTo( m_options );
189 m_showQuickTaskAction->setOn( showQuickTask() ); 189 m_showQuickTaskAction->setOn( showQuickTask() );
190 connect(m_showQuickTaskAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowQuickTask(bool) ) ); 190 connect(m_showQuickTaskAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowQuickTask(bool) ) );
191 191
192 m_options->insertSeparator(); 192 m_options->insertSeparator();
193 193
194 m_bar->insertItem( QWidget::tr("Data") ,m_edit ); 194 m_bar->insertItem( QWidget::tr("Data") ,m_edit );
195 m_bar->insertItem( QWidget::tr("Category"), m_catMenu ); 195 m_bar->insertItem( QWidget::tr("Category"), m_catMenu );
196 m_bar->insertItem( QWidget::tr("Options"), m_options ); 196 m_bar->insertItem( QWidget::tr("Options"), m_options );
197 197
198 m_curQuick = new QuickEditImpl( this, m_quicktask ); 198 m_curQuick = new QuickEditImpl( this, m_quicktask );
199 addToolBar( (QPEToolBar *)m_curQuick->widget(), QWidget::tr( "QuickEdit" ), QMainWindow::Top, TRUE ); 199 addToolBar( (QPEToolBar *)m_curQuick->widget(), QWidget::tr( "QuickEdit" ), QMainWindow::Top, TRUE );
200 m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); 200 m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) );
201 201
202} 202}
203/* m_curCat from Config */ 203/* m_curCat from Config */
204void MainWindow::initConfig() { 204void MainWindow::initConfig() {
205 Config config( "todo" ); 205 Config config( "todo" );
206 config.setGroup( "View" ); 206 config.setGroup( "View" );
207 m_completed = config.readBoolEntry( "ShowComplete", TRUE ); 207 m_completed = config.readBoolEntry( "ShowComplete", TRUE );
208 m_curCat = config.readEntry( "Category", QString::null ); 208 m_curCat = config.readEntry( "Category", QString::null );
209 m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); 209 m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE);
210 m_overdue = config.readBoolEntry("ShowOverDue", FALSE ); 210 m_overdue = config.readBoolEntry("ShowOverDue", FALSE );
211 m_quicktask = config.readBoolEntry("ShowQuickTask", TRUE); 211 m_quicktask = config.readBoolEntry("ShowQuickTask", TRUE);
212} 212}
213void MainWindow::initUI() { 213void MainWindow::initUI() {
214 m_stack = new QWidgetStack(this, "main stack"); 214 m_stack = new QWidgetStack(this, "main stack");
215 setCentralWidget( m_stack ); 215 setCentralWidget( m_stack );
216 216
217 setToolBarsMovable( FALSE ); 217 setToolBarsMovable( FALSE );
218 218
219 m_tool = new QPEToolBar( this ); 219 m_tool = new QPEToolBar( this );
220 m_tool->setHorizontalStretchable( TRUE ); 220 m_tool->setHorizontalStretchable( TRUE );
221 221
222 m_bar = new QMenuBar( m_tool ); 222 m_bar = new QMenuBar( m_tool );
223 223
224 /** QPopupMenu */ 224 /** QPopupMenu */
225 m_edit = new QPopupMenu( this ); 225 m_edit = new QPopupMenu( this );
226 m_options = new QPopupMenu( this ); 226 m_options = new QPopupMenu( this );
227 m_catMenu = new QPopupMenu( this ); 227 m_catMenu = new QPopupMenu( this );
228 m_template = new QPopupMenu( this ); 228 m_template = new QPopupMenu( this );
229 229
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, 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
279 } 279 }
280 280
281 return menu; 281 return menu;
282} 282}
283QPopupMenu* MainWindow::options() { 283QPopupMenu* MainWindow::options() {
284 qWarning("Options"); 284 qWarning("Options");
285 return m_options; 285 return m_options;
286} 286}
287QPopupMenu* MainWindow::edit() { 287QPopupMenu* MainWindow::edit() {
288 return m_edit; 288 return m_edit;
289} 289}
290QToolBar* MainWindow::toolbar() { 290QToolBar* MainWindow::toolbar() {
291 return m_tool; 291 return m_tool;
292} 292}
293OTodoAccess::List MainWindow::list()const { 293OTodoAccess::List MainWindow::list()const {
294 return m_todoMgr.list(); 294 return m_todoMgr.list();
295} 295}
296OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) { 296OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) {
297 int cat = 0; 297 int cat = 0;
298 if ( m_curCat != QWidget::tr("All Categories") ) 298 if ( m_curCat != QWidget::tr("All Categories") )
299 cat = currentCatId(); 299 cat = currentCatId();
300 300
301 int filter = 1; 301 int filter = 1;
302 302
303 if (!m_completed ) 303 if (!m_completed )
304 filter |= 4; 304 filter |= 4;
305 if (m_overdue) 305 if (m_overdue)
306 filter |= 2; 306 filter |= 2;
307 307
308 return m_todoMgr.sorted( asc, sortOrder, filter, cat ); 308 return m_todoMgr.sorted( asc, sortOrder, filter, cat );
309} 309}
310OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) { 310OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) {
311 int cat = 0; 311 int cat = 0;
312 if ( m_curCat != QWidget::tr("All Categories") ) 312 if ( m_curCat != QWidget::tr("All Categories") )
313 cat = currentCatId(); 313 cat = currentCatId();
314 314
315 return m_todoMgr.sorted(asc, sortOrder, addFilter, cat ); 315 return m_todoMgr.sorted(asc, sortOrder, addFilter, cat );
316} 316}
317OTodo MainWindow::event( int uid ) { 317OTodo MainWindow::event( int uid ) {
318 return m_todoMgr.event( uid ); 318 return m_todoMgr.event( uid );
319} 319}
320bool MainWindow::isSyncing()const { 320bool MainWindow::isSyncing()const {
321 return m_syncing; 321 return m_syncing;
322} 322}
323TemplateManager* MainWindow::templateManager() { 323TemplateManager* MainWindow::templateManager() {
324 return m_tempManager; 324 return m_tempManager;
325} 325}
326Editor* MainWindow::currentEditor() { 326Editor* MainWindow::currentEditor() {
327 return m_curEdit; 327 return m_curEdit;
328} 328}
329TodoShow* MainWindow::currentShow() { 329TodoShow* MainWindow::currentShow() {
330 return m_curShow; 330 return m_curShow;
331} 331}
332void MainWindow::slotReload() { 332void MainWindow::slotReload() {
333 m_todoMgr.reload(); 333 m_todoMgr.reload();
334 currentView()->updateView( ); 334 currentView()->updateView( );
335 raiseCurrentView(); 335 raiseCurrentView();
336} 336}
337void MainWindow::closeEvent( QCloseEvent* e ) { 337void MainWindow::closeEvent( QCloseEvent* e ) {
338 if (m_stack->visibleWidget() == currentShow()->widget() ) { 338 if (m_stack->visibleWidget() == currentShow()->widget() ) {
339 raiseCurrentView(); 339 raiseCurrentView();
340 e->ignore(); 340 e->ignore();
341 return; 341 return;
342 } 342 }
343 /* 343 /*
344 * we should have flushed and now we're still saving 344 * we should have flushed and now we're still saving
345 * so there is no need to flush 345 * so there is no need to flush
346 */ 346 */
347 if (m_syncing ) { 347 if (m_syncing ) {
348 e->accept(); 348 e->accept();
349 return; 349 return;
350 } 350 }
351 bool quit = false; 351 bool quit = false;
352 if ( m_todoMgr.saveAll() ){ 352 if ( m_todoMgr.saveAll() ){
353 qWarning("saved"); 353 qWarning("saved");
354 quit = true; 354 quit = true;
355 }else { 355 }else {
356 if ( QMessageBox::critical( this, QWidget::tr("Out of space"), 356 if ( QMessageBox::critical( this, QWidget::tr("Out of space"),
357 QWidget::tr("Todo was unable\n" 357 QWidget::tr("Todo was unable\n"
358 "to save your changes.\n" 358 "to save your changes.\n"
359 "Free up some space\n" 359 "Free up some space\n"
360 "and try again.\n" 360 "and try again.\n"
361 "\nQuit Anyway?"), 361 "\nQuit Anyway?"),
362 QMessageBox::Yes|QMessageBox::Escape, 362 QMessageBox::Yes|QMessageBox::Escape,
363 QMessageBox::No|QMessageBox::Default) 363 QMessageBox::No|QMessageBox::Default)
364 != QMessageBox::No ) { 364 != QMessageBox::No ) {
365 e->accept(); 365 e->accept();
366 quit = true; 366 quit = true;
367 }else 367 }else
368 e->ignore(); 368 e->ignore();
369 369
370 } 370 }
371 371
372 if (quit ) { 372 if (quit ) {
373 Config config( "todo" ); 373 Config config( "todo" );
374 config.setGroup( "View" ); 374 config.setGroup( "View" );
375 config.writeEntry( "ShowComplete", showCompleted() ); 375 config.writeEntry( "ShowComplete", showCompleted() );
376 config.writeEntry( "Category", currentCategory() ); 376 config.writeEntry( "Category", currentCategory() );
377 config.writeEntry( "ShowDeadLine", showDeadline()); 377 config.writeEntry( "ShowDeadLine", showDeadline());
378 config.writeEntry( "ShowOverDue", showOverDue() ); 378 config.writeEntry( "ShowOverDue", showOverDue() );
379 config.writeEntry( "ShowQuickTask", showQuickTask() ); 379 config.writeEntry( "ShowQuickTask", showQuickTask() );
380 /* save templates */ 380 /* save templates */
381 templateManager()->save(); 381 templateManager()->save();
382 e->accept(); 382 e->accept();
383 } 383 }
384} 384}
385void MainWindow::populateTemplates() { 385void MainWindow::populateTemplates() {
386 m_template->clear(); 386 m_template->clear();
387 QStringList list = templateManager()->templates(); 387 QStringList list = templateManager()->templates();
388 QStringList::Iterator it; 388 QStringList::Iterator it;
389 for ( it = list.begin(); it != list.end(); ++it ) { 389 for ( it = list.begin(); it != list.end(); ++it ) {
390 m_template->insertItem( (*it) ); 390 m_template->insertItem( (*it) );
391 } 391 }
392} 392}
393/* 393/*
394 * slotNewFromTemplate 394 * slotNewFromTemplate
395 * We use the edit widget to do 395 * We use the edit widget to do
396 * the config but we setUid(-1) 396 * the config but we setUid(-1)
397 * to get a new uid 397 * to get a new uid
398 */ 398 */
399/* 399/*
400 * first we get the name of the template 400 * first we get the name of the template
401 * then we will use the TemplateManager 401 * then we will use the TemplateManager
402 */ 402 */
403void MainWindow::slotNewFromTemplate( int id ) { 403void MainWindow::slotNewFromTemplate( int id ) {
404 QString name = m_template->text( id ); 404 QString name = m_template->text( id );
405 405
406 OTodo event = templateManager()->templateEvent( name ); 406 OTodo event = templateManager()->templateEvent( name );
407 event = currentEditor()->edit(this, 407 event = currentEditor()->edit(this,
408 event ); 408 event );
409 409
410 if ( currentEditor()->accepted() ) { 410 if ( currentEditor()->accepted() ) {
411 /* assign new todo */ 411 /* assign new todo */
412 event.setUid( -1 ); 412 event.setUid( -1 );
413 currentView()->addEvent( event ); 413 currentView()->addEvent( event );
414 m_todoMgr.add( event ); 414 m_todoMgr.add( event );
415 415
416 populateCategories(); 416 populateCategories();
417 } 417 }
418} 418}
419void MainWindow::slotNew() { 419void MainWindow::slotNew() {
420 create(); 420 create();
421} 421}
422void MainWindow::slotDuplicate() { 422void MainWindow::slotDuplicate() {
423 if(m_syncing) { 423 if(m_syncing) {
424 QMessageBox::warning(this, QWidget::tr("Todo"), 424 QMessageBox::warning(this, QWidget::tr("Todo"),
425 QWidget::tr("Can not edit data, currently syncing")); 425 QWidget::tr("Can not edit data, currently syncing"));
426 return; 426 return;
427 } 427 }
428 OTodo ev = m_todoMgr.event( currentView()->current() ); 428 OTodo ev = m_todoMgr.event( currentView()->current() );
429 /* let's generate a new uid */ 429 /* let's generate a new uid */
430 ev.setUid(-1); 430 ev.setUid(-1);
431 m_todoMgr.add( ev ); 431 m_todoMgr.add( ev );
432 432
433 currentView()->addEvent( ev ); 433 currentView()->addEvent( ev );
434 raiseCurrentView(); 434 raiseCurrentView();
435} 435}
436void MainWindow::slotDelete() { 436void MainWindow::slotDelete() {
437 if (!currentView()->current() ) 437 if (!currentView()->current() )
438 return; 438 return;
439 439
440 if(m_syncing) { 440 if(m_syncing) {
441 QMessageBox::warning(this, QWidget::tr("Todo"), 441 QMessageBox::warning(this, QWidget::tr("Todo"),
442 QWidget::tr("Can not edit data, currently syncing")); 442 QWidget::tr("Can not edit data, currently syncing"));
443 return; 443 return;
444 } 444 }
445 QString strName = currentView()->currentRepresentation(); 445 QString strName = currentView()->currentRepresentation();
446 if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), strName ) ) 446 if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), strName ) )
447 return; 447 return;
448 448
449 m_todoMgr.remove( currentView()->current() ); 449 m_todoMgr.remove( currentView()->current() );
450 currentView()->removeEvent( currentView()->current() ); 450 currentView()->removeEvent( currentView()->current() );
451 raiseCurrentView(); 451 raiseCurrentView();
452} 452}
453void MainWindow::slotDeleteAll() { 453void MainWindow::slotDeleteAll() {
454 if(m_syncing) { 454 if(m_syncing) {
455 QMessageBox::warning(this, QWidget::tr("Todo"), 455 QMessageBox::warning(this, QWidget::tr("Todo"),
456 QWidget::tr("Can not edit data, currently syncing")); 456 QWidget::tr("Can not edit data, currently syncing"));
457 return; 457 return;
458 } 458 }
459 459
460 460
461 if ( !QPEMessageBox::confirmDelete( this, QWidget::tr( "Todo" ), QWidget::tr("all tasks?") ) ) 461 if ( !QPEMessageBox::confirmDelete( this, QWidget::tr( "Todo" ), QWidget::tr("all tasks?") ) )
462 return; 462 return;
463 463
464 m_todoMgr.removeAll(); 464 m_todoMgr.removeAll();
465 currentView()->clear(); 465 currentView()->clear();
466 466
467 raiseCurrentView(); 467 raiseCurrentView();
468} 468}
469void MainWindow::slotDeleteCompleted() { 469void MainWindow::slotDeleteCompleted() {
470 if(m_syncing) { 470 if(m_syncing) {
471 QMessageBox::warning(this, QWidget::tr("Todo"), 471 QMessageBox::warning(this, QWidget::tr("Todo"),
472 QWidget::tr("Can not edit data, currently syncing")); 472 QWidget::tr("Can not edit data, currently syncing"));
473 return; 473 return;
474 } 474 }
475 475
476 if ( !QPEMessageBox::confirmDelete( this, QWidget::tr( "Todo" ), QWidget::tr("all completed tasks?") ) ) 476 if ( !QPEMessageBox::confirmDelete( this, QWidget::tr( "Todo" ), QWidget::tr("all completed tasks?") ) )
477 return; 477 return;
478 478
479 479
480 m_todoMgr.removeCompleted(); 480 m_todoMgr.removeCompleted();
481 currentView()->updateView( ); 481 currentView()->updateView( );
482} 482}
483void MainWindow::slotFind() { 483void MainWindow::slotFind() {
484 484
485} 485}
486void MainWindow::slotEdit() { 486void MainWindow::slotEdit() {
487 slotEdit( currentView()->current() ); 487 slotEdit( currentView()->current() );
488} 488}
489/* 489/*
490 * set the category 490 * set the category
491 */ 491 */
492void MainWindow::setCategory( int c) { 492void MainWindow::setCategory( int c) {
493 if ( c <= 0 ) return; 493 if ( c <= 0 ) return;
494 494
495 495
496 qWarning("Iterating over cats %d", c ); 496 qWarning("Iterating over cats %d", c );
497 for ( unsigned int i = 1; i < m_catMenu->count(); i++ ) 497 for ( unsigned int i = 1; i < m_catMenu->count(); i++ )
498 m_catMenu->setItemChecked(i, c == (int)i ); 498 m_catMenu->setItemChecked(i, c == (int)i );
499 499
500 if (c == 1 ) { 500 if (c == 1 ) {
501 m_curCat = QString::null; 501 m_curCat = QString::null;
502 setCaption( QWidget::tr("Todo") + " - " + QWidget::tr("All Categories" ) ); 502 setCaption( QWidget::tr("Todo") + " - " + QWidget::tr("All Categories" ) );
503 503
504 }else if ( c == (int)m_catMenu->count() - 1 ) { 504 }else if ( c == (int)m_catMenu->count() - 1 ) {
505 m_curCat = QWidget::tr("Unfiled"); 505 m_curCat = QWidget::tr("Unfiled");
506 setCaption( QWidget::tr("Todo") + " - " + QWidget::tr("Unfiled") ); 506 setCaption( QWidget::tr("Todo") + " - " + QWidget::tr("Unfiled") );
507 }else { 507 }else {
508 m_curCat = m_todoMgr.categories()[c-2]; 508 m_curCat = m_todoMgr.categories()[c-2];
509 setCaption( QWidget::tr("Todo") + " - " + m_curCat ); 509 setCaption( QWidget::tr("Todo") + " - " + m_curCat );
510 } 510 }
511 m_catMenu->setItemChecked( c, true ); 511 m_catMenu->setItemChecked( c, true );
512 512
513 currentView()->setShowCategory( m_curCat ); 513 currentView()->setShowCategory( m_curCat );
514 raiseCurrentView(); 514 raiseCurrentView();
515} 515}
516void MainWindow::slotShowDeadLine( bool dead) { 516void MainWindow::slotShowDeadLine( bool dead) {
517 m_deadline = dead; 517 m_deadline = dead;
518 currentView()->setShowDeadline( dead ); 518 currentView()->setShowDeadline( dead );
519} 519}
520void MainWindow::slotShowCompleted( bool show) { 520void MainWindow::slotShowCompleted( bool show) {
521 m_completed = show; 521 m_completed = show;
522 currentView()->setShowCompleted( m_completed ); 522 currentView()->setShowCompleted( m_completed );
523} 523}
524void MainWindow::slotShowQuickTask( bool show ) { 524void MainWindow::slotShowQuickTask( bool show ) {
525 m_quicktask = show; 525 m_quicktask = show;
526 if ( m_quicktask ) 526 if ( m_quicktask )
527 m_curQuick->widget()->show(); 527 m_curQuick->widget()->show();
528 else 528 else
529 m_curQuick->widget()->hide(); 529 m_curQuick->widget()->hide();
530} 530}
531bool MainWindow::showOverDue()const { 531bool MainWindow::showOverDue()const {
532 return m_overdue; 532 return m_overdue;
533} 533}
534void MainWindow::setDocument( const QString& fi) { 534void MainWindow::setDocument( const QString& fi) {
535 DocLnk doc(fi); 535 DocLnk doc(fi);
536 if (doc.isValid() ) 536 if (doc.isValid() )
537 receiveFile(doc.file() ); 537 receiveFile(doc.file() );
538 else 538 else
539 receiveFile(fi ); 539 receiveFile(fi );
540} 540}
541 541
542static const char *beamfile = "/tmp/opie-todo.vcs"; 542static const char *beamfile = "/tmp/opie-todo.vcs";
543void MainWindow::slotBeam() { 543void MainWindow::slotBeam() {
544 beam( currentView()->current() ); 544 beam( currentView()->current() );
545} 545}
546void MainWindow::beamDone( Ir* ir) { 546void MainWindow::beamDone( Ir* ir) {
547 delete ir; 547 delete ir;
548 ::unlink( beamfile ); 548 ::unlink( beamfile );
549} 549}
550void MainWindow::receiveFile( const QString& filename ) { 550void MainWindow::receiveFile( const QString& filename ) {
551 OTodoAccessVCal* cal = new OTodoAccessVCal(filename ); 551 OTodoAccessVCal* cal = new OTodoAccessVCal(filename );
552 OTodoAccess acc( cal ); 552 OTodoAccess acc( cal );
553 acc.load(); 553 acc.load();
554 OTodoAccess::List list = acc.allRecords(); 554 OTodoAccess::List list = acc.allRecords();
555 555
556 QString message = QWidget::tr("<P>%1 new tasks arrived.<p>Would you like to add them to your Todolist?").arg(list.count() ); 556 QString message = QWidget::tr("<P>%1 new tasks arrived.<p>Would you like to add them to your Todolist?").arg(list.count() );
557 557
558 if ( QMessageBox::information(this, QWidget::tr("New Tasks"), 558 if ( QMessageBox::information(this, QWidget::tr("New Tasks"),
559 message, QMessageBox::Ok, 559 message, QMessageBox::Ok,
560 QMessageBox::Cancel ) == QMessageBox::Ok ) { 560 QMessageBox::Cancel ) == QMessageBox::Ok ) {
561 OTodoAccess::List::Iterator it; 561 OTodoAccess::List::Iterator it;
562 for ( it = list.begin(); it != list.end(); ++it ) 562 for ( it = list.begin(); it != list.end(); ++it )
563 m_todoMgr.add( (*it) ); 563 m_todoMgr.add( (*it) );
564 564
565 currentView()->updateView(); 565 currentView()->updateView();
566 } 566 }
567} 567}
568 568
569void MainWindow::slotFlush() { 569void MainWindow::slotFlush() {
570 m_syncing = FALSE; 570 m_syncing = FALSE;
571 m_todoMgr.save(); 571 m_todoMgr.save();
572} 572}
573void MainWindow::slotShowDetails() { 573void MainWindow::slotShowDetails() {
574 slotShow( currentView()->current() ); 574 slotShow( currentView()->current() );
575} 575}
576/* 576/*
577 * populate the Categories 577 * populate the Categories
578 * Menu 578 * Menu
579 */ 579 */
580void MainWindow::populateCategories() { 580void MainWindow::populateCategories() {
581 m_todoMgr.load(); 581 m_todoMgr.load();
582 582
583 m_catMenu->clear(); 583 m_catMenu->clear();
584 int id, rememberId; 584 int id, rememberId;
585 id = 1; 585 id = 1;
586 rememberId = 1; 586 rememberId = 1;
587 587
588 m_catMenu->insertItem( QWidget::tr( "All Categories" ), id++ ); 588 m_catMenu->insertItem( QWidget::tr( "All Categories" ), id++ );
589 m_catMenu->insertSeparator(); 589 m_catMenu->insertSeparator();
590 QStringList categories = m_todoMgr.categories(); 590 QStringList categories = m_todoMgr.categories();
591 categories.append( QWidget::tr( "Unfiled" ) ); 591 categories.append( QWidget::tr( "Unfiled" ) );
592 for ( QStringList::Iterator it = categories.begin(); 592 for ( QStringList::Iterator it = categories.begin();
593 it != categories.end(); ++it ) { 593 it != categories.end(); ++it ) {
594 m_catMenu->insertItem( *it, id ); 594 m_catMenu->insertItem( *it, id );
595 if ( *it == currentCategory() ) 595 if ( *it == currentCategory() )
596 rememberId = id; 596 rememberId = id;
597 ++id; 597 ++id;
598 } 598 }
599 setCategory( rememberId ); 599 setCategory( rememberId );
600} 600}
601bool MainWindow::showCompleted()const { 601bool MainWindow::showCompleted()const {
602 return m_completed; 602 return m_completed;
603} 603}
604bool MainWindow::showDeadline()const { 604bool MainWindow::showDeadline()const {
605 return m_deadline; 605 return m_deadline;
606} 606}
607bool MainWindow::showQuickTask()const { 607bool MainWindow::showQuickTask()const {
608 return m_quicktask; 608 return m_quicktask;
609} 609}
610QString MainWindow::currentCategory()const { 610QString MainWindow::currentCategory()const {
611 return m_curCat; 611 return m_curCat;
612} 612}
613int MainWindow::currentCatId() { 613int MainWindow::currentCatId() {
614 return m_todoMgr.catId( m_curCat ); 614 return m_todoMgr.catId( m_curCat );
615} 615}
616ViewBase* MainWindow::currentView() { 616ViewBase* MainWindow::currentView() {
617 return m_curView; 617 return m_curView;
618} 618}
619void MainWindow::raiseCurrentView() { 619void MainWindow::raiseCurrentView() {
620 m_stack->raiseWidget( m_curView->widget() ); 620 m_stack->raiseWidget( m_curView->widget() );
621} 621}
622void MainWindow::slotShowDue(bool ov) { 622void MainWindow::slotShowDue(bool ov) {
623 m_overdue = ov; 623 m_overdue = ov;
624 currentView()->showOverDue( ov ); 624 currentView()->showOverDue( ov );
625 raiseCurrentView(); 625 raiseCurrentView();
626} 626}
627void MainWindow::slotShow( int uid ) { 627void MainWindow::slotShow( int uid ) {
628 qWarning("slotShow"); 628 qWarning("slotShow");
629 currentShow()->slotShow( event( uid ) ); 629 currentShow()->slotShow( event( uid ) );
630 m_stack->raiseWidget( currentShow()->widget() ); 630 m_stack->raiseWidget( currentShow()->widget() );
631} 631}
632void MainWindow::slotEdit( int uid ) { 632void MainWindow::slotEdit( int uid ) {
633 if(m_syncing) { 633 if(m_syncing) {
634 QMessageBox::warning(this, QWidget::tr("Todo"), 634 QMessageBox::warning(this, QWidget::tr("Todo"),
635 QWidget::tr("Can not edit data, currently syncing")); 635 QWidget::tr("Can not edit data, currently syncing"));
636 return; 636 return;
637 } 637 }
638 638
639 OTodo todo = m_todoMgr.event( uid ); 639 OTodo todo = m_todoMgr.event( uid );
640 640
641 todo = currentEditor()->edit(this, todo ); 641 todo = currentEditor()->edit(this, todo );
642 642
643 /* if completed */ 643 /* if completed */
644 if ( currentEditor()->accepted() ) { 644 if ( currentEditor()->accepted() ) {
645 qWarning("Replacing now" ); 645 qWarning("Replacing now" );
646 m_todoMgr.update( todo.uid(), todo ); 646 m_todoMgr.update( todo.uid(), todo );
647 currentView()->replaceEvent( todo ); 647 currentView()->replaceEvent( todo );
648 /* a Category might have changed */ 648 /* a Category might have changed */
649 populateCategories(); 649 populateCategories();
650 } 650 }
651 651
652 raiseCurrentView(); 652 raiseCurrentView();
653} 653}
654/* 654/*
655void MainWindow::slotUpdate1( int uid, const SmallTodo& ev) { 655void MainWindow::slotUpdate1( int uid, const SmallTodo& ev) {
656 m_todoMgr.update( uid, ev ); 656 m_todoMgr.update( uid, ev );
657} 657}
658*/ 658*/
659void MainWindow::updateTodo( const OTodo& ev) { 659void MainWindow::updateTodo( const OTodo& ev) {
660 m_todoMgr.update( ev.uid() , ev ); 660 m_todoMgr.update( ev.uid() , ev );
661} 661}
662/* The view changed it's configuration 662/* The view changed it's configuration
663 * update the view menu 663 * update the view menu
664 */ 664 */
665void MainWindow::slotUpdate3( QWidget* ) { 665void MainWindow::slotUpdate3( QWidget* ) {
666 666
667} 667}
668void MainWindow::updateList() { 668void MainWindow::updateList() {
669 m_todoMgr.updateList(); 669 m_todoMgr.updateList();
670} 670}
671void MainWindow::setReadAhead( uint count ) { 671void MainWindow::setReadAhead( uint count ) {
672 if (m_todoMgr.todoDB() ) 672 if (m_todoMgr.todoDB() )
673 m_todoMgr.todoDB()->setReadAhead( count ); 673 m_todoMgr.todoDB()->setReadAhead( count );
674} 674}
675void MainWindow::slotQuickEntered() { 675void MainWindow::slotQuickEntered() {
676 qWarning("entered"); 676 qWarning("entered");
677 OTodo todo = quickEditor()->todo(); 677 OTodo todo = quickEditor()->todo();
678 if (todo.isEmpty() ) 678 if (todo.isEmpty() )
679 return; 679 return;
680 680
681 m_todoMgr.add( todo ); 681 m_todoMgr.add( todo );
682 currentView()->addEvent( todo ); 682 currentView()->addEvent( todo );
683 raiseCurrentView(); 683 raiseCurrentView();
684} 684}
685QuickEditBase* MainWindow::quickEditor() { 685QuickEditBase* MainWindow::quickEditor() {
686 return m_curQuick; 686 return m_curQuick;
687} 687}
688void MainWindow::slotComplete( int uid ) { 688void MainWindow::slotComplete( int uid ) {
689 slotComplete( event(uid) ); 689 slotComplete( event(uid) );
690} 690}
691void MainWindow::slotComplete( const OTodo& todo ) { 691void MainWindow::slotComplete( const OTodo& todo ) {
692 OTodo to = todo; 692 OTodo to = todo;
693 to.setCompleted( !to.isCompleted() ); 693 to.setCompleted( !to.isCompleted() );
694 to.setCompletedDate( QDate::currentDate() ); 694 to.setCompletedDate( QDate::currentDate() );
695 695
696 /* 696 /*
697 * if the item does recur 697 * if the item does recur
698 * we need to spin it off 698 * we need to spin it off
699 * and update the items duedate to the next 699 * and update the items duedate to the next
700 * possible recurrance of this item... 700 * possible recurrance of this item...
701 * the spinned off one will loose the 701 * the spinned off one will loose the
702 */ 702 */
703 if ( to.recurrence().doesRecur() && to.isCompleted() ) { 703 if ( to.recurrence().doesRecur() && to.isCompleted() ) {
704 OTodo to2( to ); 704 OTodo to2( to );
705 705
706 /* the spinned off one won't recur anymore */ 706 /* the spinned off one won't recur anymore */
707 to.setRecurrence( ORecur() ); 707 to.setRecurrence( ORecur() );
708 708
709 ORecur rec = to2.recurrence(); 709 ORecur rec = to2.recurrence();
710 rec.setStart( to.dueDate() ); 710 rec.setStart( to.dueDate() );
711 to2.setRecurrence( rec ); 711 to2.setRecurrence( rec );
712 /* 712 /*
713 * if there is a next occurence 713 * if there is a next occurence
714 * from the duedate of the last recurrance 714 * from the duedate of the last recurrance
715 */ 715 */
716 QDate date; 716 QDate date;
717 if ( to2.recurrence().nextOcurrence( to2.dueDate().addDays(1), date ) ) { 717 if ( to2.recurrence().nextOcurrence( to2.dueDate().addDays(1), date ) ) {
718 QDate inval; 718 QDate inval;
719 /* generate a new uid for the old record */ 719 /* generate a new uid for the old record */
720 to.setUid( 1 ); 720 to.setUid( 1 );
721 721
722 /* add the old one cause it has a new UID here cause it was spin off */ 722 /* add the old one cause it has a new UID here cause it was spin off */
723 m_todoMgr.add( to ); 723 m_todoMgr.add( to );
724 724
725 /* 725 /*
726 * update the due date 726 * update the due date
727 * start date 727 * start date
728 * and complete date 728 * and complete date
729 */ 729 */
730 to2.setDueDate( date ); 730 to2.setDueDate( date );
731 to2.setStartDate( inval ); 731 to2.setStartDate( inval );
732 to2.setCompletedDate( inval ); 732 to2.setCompletedDate( inval );
733 to2.setCompleted( false ); 733 to2.setCompleted( false );
734 updateTodo( to2 ); 734 updateTodo( to2 );
735 }else 735 }else
736 updateTodo( to ); 736 updateTodo( to );
737 }else 737 }else
738 updateTodo( to ); 738 updateTodo( to );
739 739
740 currentView()->updateView(); 740 currentView()->updateView();
741 raiseCurrentView(); 741 raiseCurrentView();
742} 742}
743void MainWindow::flush() { 743void MainWindow::flush() {
744 slotFlush(); 744 slotFlush();
745} 745}
746void MainWindow::reload() { 746void MainWindow::reload() {
747 slotReload(); 747 slotReload();
748} 748}
749int MainWindow::create() { 749int MainWindow::create() {
750 int uid = 0; 750 int uid = 0;
751 if(m_syncing) { 751 if(m_syncing) {
752 QMessageBox::warning(this, QWidget::tr("Todo"), 752 QMessageBox::warning(this, QWidget::tr("Todo"),
753 QWidget::tr("Can not edit data, currently syncing")); 753 QWidget::tr("Can not edit data, currently syncing"));
754 return uid; 754 return uid;
755 } 755 }
756 756
757 757
758 OTodo todo = currentEditor()->newTodo( currentCatId(), 758 OTodo todo = currentEditor()->newTodo( currentCatId(),
759 this ); 759 this );
760 760
761 if ( currentEditor()->accepted() ) { 761 if ( currentEditor()->accepted() ) {
762 //todo.assignUid(); 762 //todo.assignUid();
763 uid = todo.uid(); 763 uid = todo.uid();
764 m_todoMgr.add( todo ); 764 m_todoMgr.add( todo );
765 currentView()->addEvent( todo ); 765 currentView()->addEvent( todo );
766 766
767 767
768 // I'm afraid we must call this every time now, otherwise 768 // I'm afraid we must call this every time now, otherwise
769 // spend expensive time comparing all these strings... 769 // spend expensive time comparing all these strings...
770 // but only call if we changed something -zecke 770 // but only call if we changed something -zecke
771 populateCategories(); 771 populateCategories();
772 } 772 }
773 raiseCurrentView( ); 773 raiseCurrentView( );
774 774
775 return uid; 775 return uid;
776} 776}
777/* delete it silently... */ 777/* delete it silently... */
778bool MainWindow::remove( int uid ) { 778bool MainWindow::remove( int uid ) {
779 if (m_syncing) return false; 779 if (m_syncing) return false;
780 780
781 return m_todoMgr.remove( uid ); 781 return m_todoMgr.remove( uid );
782} 782}
783void MainWindow::beam( int uid, int ) { 783void MainWindow::beam( int uid) {
784 ::unlink( beamfile ); 784 ::unlink( beamfile );
785 OTodo todo = event( uid ); 785 OTodo todo = event( uid );
786 OTodoAccessVCal* cal = new OTodoAccessVCal(QString::fromLatin1(beamfile) ); 786 OTodoAccessVCal* cal = new OTodoAccessVCal(QString::fromLatin1(beamfile) );
787 OTodoAccess acc( cal ); 787 OTodoAccess acc( cal );
788 acc.load(); 788 acc.load();
789 acc.add( todo ); 789 acc.add( todo );
790 acc.save(); 790 acc.save();
791 Ir* ir = new Ir(this ); 791 Ir* ir = new Ir(this );
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() { 816void MainWindow::slotReturnFromView() {
817 raiseCurrentView(); 817 raiseCurrentView();
818} 818}
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h
index f880505..434e969 100644
--- a/core/pim/todo/mainwindow.h
+++ b/core/pim/todo/mainwindow.h
@@ -1,201 +1,201 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 3             .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This program is free software; you can 5 _;:,     .>    :=|. This program is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under 6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU General Public 7:`=1 )Y*s>-.--   : the terms of the GNU General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License, 9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version. 10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_. 11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This program is distributed in the hope that 12    .i_,=:_.      -<s. This program is distributed in the hope that
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 28
29#ifndef TODO_MAIN_WINDOW_H 29#ifndef TODO_MAIN_WINDOW_H
30#define TODO_MAIN_WINDOW_H 30#define TODO_MAIN_WINDOW_H
31 31
32#include <qlist.h> 32#include <qlist.h>
33 33
34#include <opie/otodoaccess.h> 34#include <opie/otodoaccess.h>
35#include <opie/otodo.h> 35#include <opie/otodo.h>
36#include <opie/opimmainwindow.h> 36#include <opie/opimmainwindow.h>
37 37
38#include "smalltodo.h" 38#include "smalltodo.h"
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 friend class TodoShow; // avoid QObject
64 public: 64 public:
65 MainWindow( QWidget *parent = 0, 65 MainWindow( QWidget *parent = 0,
66 const char* name = 0 ); 66 const char* name = 0 );
67 ~MainWindow(); 67 ~MainWindow();
68 68
69 /** return a context menu for an OTodo */ 69 /** return a context menu for an OTodo */
70 QPopupMenu* contextMenu(int uid, bool doesRecur = FALSE ); 70 QPopupMenu* contextMenu(int uid, bool doesRecur = FALSE );
71 QPopupMenu* options(); 71 QPopupMenu* options();
72 QPopupMenu* edit(); 72 QPopupMenu* edit();
73 QToolBar* toolbar(); 73 QToolBar* toolbar();
74 74
75 75
76 void updateList(); 76 void updateList();
77 OTodoAccess::List list()const; 77 OTodoAccess::List list()const;
78 OTodoAccess::List sorted( bool asc, int sortOrder ); 78 OTodoAccess::List sorted( bool asc, int sortOrder );
79 OTodoAccess::List sorted( bool asc, int sortOrder, int addFilter ); 79 OTodoAccess::List sorted( bool asc, int sortOrder, int addFilter );
80 80
81 OTodo event(int uid ); 81 OTodo event(int uid );
82 82
83 bool isSyncing()const; 83 bool isSyncing()const;
84 bool showCompleted()const; 84 bool showCompleted()const;
85 bool showDeadline()const; 85 bool showDeadline()const;
86 bool showOverDue()const; 86 bool showOverDue()const;
87 bool showQuickTask()const; 87 bool showQuickTask()const;
88 QString currentCategory()const; 88 QString currentCategory()const;
89 int currentCatId(); 89 int currentCatId();
90 TemplateManager* templateManager(); 90 TemplateManager* templateManager();
91 QuickEditBase* quickEditor(); 91 QuickEditBase* quickEditor();
92 92
93 void updateTodo( const OTodo& ); 93 void updateTodo( const OTodo& );
94 void populateTemplates(); 94 void populateTemplates();
95 Editor* currentEditor(); 95 Editor* currentEditor();
96 void setReadAhead(uint count ); 96 void setReadAhead(uint count );
97private slots: 97private slots:
98 void slotQuickEntered(); 98 void slotQuickEntered();
99 void populateCategories(); 99 void populateCategories();
100 void slotReload(); 100 void slotReload();
101 void slotFlush(); 101 void slotFlush();
102 102
103 protected: 103 protected:
104 void closeEvent( QCloseEvent* e ); 104 void closeEvent( QCloseEvent* e );
105 105
106 private: 106 private:
107 void receiveFile( const QString& filename ); 107 void receiveFile( const QString& filename );
108 void connectBase( ViewBase* ); 108 void connectBase( ViewBase* );
109 void initUI(); 109 void initUI();
110 void initActions(); 110 void initActions();
111 void initConfig(); 111 void initConfig();
112 void initViews(); 112 void initViews();
113 void initEditor(); 113 void initEditor();
114 void initShow(); 114 void initShow();
115 void initTemplate(); 115 void initTemplate();
116 void raiseCurrentView(); 116 void raiseCurrentView();
117 ViewBase* currentView(); 117 ViewBase* currentView();
118 ViewBase* m_curView; 118 ViewBase* m_curView;
119 QuickEditBase* m_curQuick; 119 QuickEditBase* m_curQuick;
120 Editor* m_curEdit; 120 Editor* m_curEdit;
121 TodoShow* currentShow(); 121 TodoShow* currentShow();
122 TodoShow* m_curShow; 122 TodoShow* m_curShow;
123 TemplateEditor* currentTemplateEditor(); 123 TemplateEditor* currentTemplateEditor();
124 TemplateEditor* m_curTempEd; 124 TemplateEditor* m_curTempEd;
125 125
126 QMenuBar* m_bar; 126 QMenuBar* m_bar;
127 QToolBar* m_tool; 127 QToolBar* m_tool;
128 QAction* m_editAction, 128 QAction* m_editAction,
129 *m_deleteAction, 129 *m_deleteAction,
130 *m_findAction, 130 *m_findAction,
131 *m_completedAction, 131 *m_completedAction,
132 *m_showDeadLineAction, 132 *m_showDeadLineAction,
133 *m_deleteAllAction, 133 *m_deleteAllAction,
134 *m_deleteCompleteAction, 134 *m_deleteCompleteAction,
135 *m_duplicateAction, 135 *m_duplicateAction,
136 *m_showOverDueAction, 136 *m_showOverDueAction,
137 *m_showQuickTaskAction, 137 *m_showQuickTaskAction,
138 *m_effectiveAction; 138 *m_effectiveAction;
139 QWidgetStack *m_stack; 139 QWidgetStack *m_stack;
140 QPopupMenu* m_catMenu, 140 QPopupMenu* m_catMenu,
141 *m_edit, 141 *m_edit,
142 *m_options, 142 *m_options,
143 *m_template; 143 *m_template;
144 144
145 bool m_syncing:1; 145 bool m_syncing:1;
146 bool m_deadline:1; 146 bool m_deadline:1;
147 bool m_completed:1; 147 bool m_completed:1;
148 bool m_overdue:1; 148 bool m_overdue:1;
149 bool m_quicktask:1; 149 bool m_quicktask:1;
150 TodoManager m_todoMgr; 150 TodoManager m_todoMgr;
151 QString m_curCat; 151 QString m_curCat;
152 QList<ViewBase> m_views; 152 QList<ViewBase> m_views;
153 uint m_counter; 153 uint m_counter;
154 TemplateManager* m_tempManager; 154 TemplateManager* m_tempManager;
155 155
156 156
157 private slots: 157 private slots:
158 void slotShow(int); 158 void slotShow(int);
159 void slotEdit(int); 159 void slotEdit(int);
160 void slotUpdate3( QWidget* ); 160 void slotUpdate3( QWidget* );
161 void slotComplete( int uid ); 161 void slotComplete( int uid );
162 void slotComplete( const OTodo& ev ); 162 void slotComplete( const OTodo& ev );
163 void slotNewFromTemplate(int id ); 163 void slotNewFromTemplate(int id );
164 void slotNew(); 164 void slotNew();
165 void slotDuplicate(); 165 void slotDuplicate();
166 166
167 void slotDelete(); 167 void slotDelete();
168 void slotDeleteAll(); 168 void slotDeleteAll();
169 void slotDeleteCompleted(); 169 void slotDeleteCompleted();
170 170
171 void slotEdit(); 171 void slotEdit();
172 void slotFind(); 172 void slotFind();
173 173
174 void setCategory( int ); 174 void setCategory( int );
175 175
176 void slotShowDeadLine( bool ); 176 void slotShowDeadLine( bool );
177 void slotShowCompleted( bool ); 177 void slotShowCompleted( bool );
178 void slotShowQuickTask( bool ); 178 void slotShowQuickTask( bool );
179 179
180 void setDocument( const QString& ); 180 void setDocument( const QString& );
181 181
182 182
183 void slotBeam(); 183 void slotBeam();
184 void beamDone( Ir* ); 184 void beamDone( Ir* );
185 void slotShowDetails(); 185 void slotShowDetails();
186 void slotShowDue( bool ); 186 void slotShowDue( bool );
187 void slotReturnFromView(); // for TodoShow... 187 void slotReturnFromView(); // for TodoShow...
188 /* reimplementation from opimmainwindow */ 188 /* reimplementation from opimmainwindow */
189 protected slots: 189 protected slots:
190 void flush(); 190 void flush();
191 void reload(); 191 void reload();
192 int create(); 192 int create();
193 bool remove( int uid ); 193 bool remove( int uid );
194 void beam(int uid, int transport = IrDa ); 194 void beam(int uid);
195 void show( int uid ); 195 void show( int uid );
196 void edit( int uid ); 196 void edit( int uid );
197 void add( const OPimRecord& ); 197 void add( const OPimRecord& );
198 }; 198 };
199}; 199};
200 200
201#endif 201#endif