author | zecke <zecke> | 2002-10-25 22:12:35 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-10-25 22:12:35 (UTC) |
commit | b682e9d2276c10a5c26773c6797ba1ac176ea4cf (patch) (unidiff) | |
tree | 9780ad571f14943e3ad6c3ec34a4e787f8a85217 | |
parent | 595407074ac5724eb33aeb151ce27e38fbca21d5 (diff) | |
download | opie-b682e9d2276c10a5c26773c6797ba1ac176ea4cf.zip opie-b682e9d2276c10a5c26773c6797ba1ac176ea4cf.tar.gz opie-b682e9d2276c10a5c26773c6797ba1ac176ea4cf.tar.bz2 |
MainWindow i18n change 'Show only over due' to avoid misunderstanding
then 'share' and 'preload' the taskeditor
on first request it'll be created but on destroyed until Destruction
the interface. This will happen when the apps quits.
This should speed up editing and entering quite a lot
-rw-r--r-- | core/pim/todo/mainwindow.cpp | 2 | ||||
-rw-r--r-- | core/pim/todo/otaskeditor.cpp | 19 | ||||
-rw-r--r-- | core/pim/todo/otaskeditor.h | 7 | ||||
-rw-r--r-- | core/pim/todo/taskeditoroverviewimpl.cpp | 12 | ||||
-rw-r--r-- | core/pim/todo/todoeditor.cpp | 32 | ||||
-rw-r--r-- | core/pim/todo/todoeditor.h | 4 |
6 files changed, 59 insertions, 17 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index 71e6750..9b2423b 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp | |||
@@ -1,562 +1,562 @@ | |||
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 | 40 | ||
41 | #include <qpe/applnk.h> | 41 | #include <qpe/applnk.h> |
42 | #include <qpe/config.h> | 42 | #include <qpe/config.h> |
43 | #include <qpe/ir.h> | 43 | #include <qpe/ir.h> |
44 | #include <qpe/resource.h> | 44 | #include <qpe/resource.h> |
45 | #include <qpe/qpemessagebox.h> | 45 | #include <qpe/qpemessagebox.h> |
46 | 46 | ||
47 | #include <opie/otodoaccessvcal.h> | 47 | #include <opie/otodoaccessvcal.h> |
48 | 48 | ||
49 | #include "quickeditimpl.h" | 49 | #include "quickeditimpl.h" |
50 | #include "todotemplatemanager.h" | 50 | #include "todotemplatemanager.h" |
51 | #include "templateeditor.h" | 51 | #include "templateeditor.h" |
52 | #include "tableview.h" | 52 | #include "tableview.h" |
53 | 53 | ||
54 | #include "textviewshow.h" | 54 | #include "textviewshow.h" |
55 | #include "todoeditor.h" | 55 | #include "todoeditor.h" |
56 | #include "mainwindow.h" | 56 | #include "mainwindow.h" |
57 | 57 | ||
58 | 58 | ||
59 | using namespace Todo; | 59 | using namespace Todo; |
60 | 60 | ||
61 | MainWindow::MainWindow( QWidget* parent, | 61 | MainWindow::MainWindow( QWidget* parent, |
62 | const char* name ) { | 62 | const char* name ) { |
63 | 63 | ||
64 | m_syncing = false; | 64 | m_syncing = false; |
65 | m_counter = 0; | 65 | m_counter = 0; |
66 | m_tempManager = new TemplateManager(); | 66 | m_tempManager = new TemplateManager(); |
67 | m_tempManager->load(); | 67 | m_tempManager->load(); |
68 | 68 | ||
69 | initUI(); | 69 | initUI(); |
70 | initConfig(); | 70 | initConfig(); |
71 | initViews(); | 71 | initViews(); |
72 | initActions(); | 72 | initActions(); |
73 | initEditor(); | 73 | initEditor(); |
74 | initShow(); | 74 | initShow(); |
75 | initTemplate(); | 75 | initTemplate(); |
76 | 76 | ||
77 | populateTemplates(); | 77 | populateTemplates(); |
78 | raiseCurrentView(); | 78 | raiseCurrentView(); |
79 | QTimer::singleShot(0, this, SLOT(populateCategories() ) ); | 79 | QTimer::singleShot(0, this, SLOT(populateCategories() ) ); |
80 | } | 80 | } |
81 | void MainWindow::initTemplate() { | 81 | void MainWindow::initTemplate() { |
82 | m_curTempEd = new TemplateEditor( this, templateManager() ); | 82 | m_curTempEd = new TemplateEditor( this, templateManager() ); |
83 | } | 83 | } |
84 | void MainWindow::initActions() { | 84 | void MainWindow::initActions() { |
85 | QAction* a = new QAction( tr("New Task" ), Resource::loadPixmap( "new" ), | 85 | QAction* a = new QAction( tr("New Task" ), Resource::loadPixmap( "new" ), |
86 | QString::null, 0, this, 0 ); | 86 | QString::null, 0, this, 0 ); |
87 | connect(a, SIGNAL( activated() ), | 87 | connect(a, SIGNAL( activated() ), |
88 | this, SLOT( slotNew() ) ); | 88 | this, SLOT( slotNew() ) ); |
89 | a->addTo(m_tool ); | 89 | a->addTo(m_tool ); |
90 | a->addTo(m_edit ); | 90 | a->addTo(m_edit ); |
91 | 91 | ||
92 | a = new QAction( tr("Edit Task"), Resource::loadIconSet( "edit" ), | 92 | a = new QAction( tr("Edit Task"), Resource::loadIconSet( "edit" ), |
93 | QString::null, 0, this, 0 ); | 93 | QString::null, 0, this, 0 ); |
94 | connect(a, SIGNAL(activated() ), | 94 | connect(a, SIGNAL(activated() ), |
95 | this, SLOT( slotEdit() ) ); | 95 | this, SLOT( slotEdit() ) ); |
96 | a->addTo( m_tool ); | 96 | a->addTo( m_tool ); |
97 | a->addTo( m_edit ); | 97 | a->addTo( m_edit ); |
98 | m_editAction = a; | 98 | m_editAction = a; |
99 | 99 | ||
100 | a = new QAction( QString::null, tr("View Task"), 0, this, 0 ); | 100 | a = new QAction( QString::null, tr("View Task"), 0, this, 0 ); |
101 | connect(a, SIGNAL( activated() ), | 101 | connect(a, SIGNAL( activated() ), |
102 | this, SLOT( slotShowDetails() ) ); | 102 | this, SLOT( slotShowDetails() ) ); |
103 | a->addTo( m_edit ); | 103 | a->addTo( m_edit ); |
104 | 104 | ||
105 | m_edit->insertSeparator(); | 105 | m_edit->insertSeparator(); |
106 | 106 | ||
107 | a = new QAction( tr("Delete..."), Resource::loadIconSet( "trash" ), | 107 | a = new QAction( tr("Delete..."), Resource::loadIconSet( "trash" ), |
108 | QString::null, 0, this, 0 ); | 108 | QString::null, 0, this, 0 ); |
109 | connect(a, SIGNAL(activated() ), | 109 | connect(a, SIGNAL(activated() ), |
110 | this, SLOT(slotDelete() ) ); | 110 | this, SLOT(slotDelete() ) ); |
111 | a->addTo( m_tool ); | 111 | a->addTo( m_tool ); |
112 | a->addTo( m_edit ); | 112 | a->addTo( m_edit ); |
113 | m_deleteAction = a; | 113 | m_deleteAction = a; |
114 | 114 | ||
115 | a = new QAction( QString::null, tr("Delete all..."), 0, this, 0 ); | 115 | a = new QAction( QString::null, tr("Delete all..."), 0, this, 0 ); |
116 | connect(a, SIGNAL( activated() ), | 116 | connect(a, SIGNAL( activated() ), |
117 | this, SLOT( slotDeleteAll() ) ); | 117 | this, SLOT( slotDeleteAll() ) ); |
118 | a->addTo(m_edit ); | 118 | a->addTo(m_edit ); |
119 | m_deleteAllAction = a; | 119 | m_deleteAllAction = a; |
120 | 120 | ||
121 | a = new QAction( QString::null, tr("Delete completed"), | 121 | a = new QAction( QString::null, tr("Delete completed"), |
122 | 0, this, 0 ); | 122 | 0, this, 0 ); |
123 | connect(a, SIGNAL( activated() ), | 123 | connect(a, SIGNAL( activated() ), |
124 | this, SLOT( slotDeleteCompleted() ) ); | 124 | this, SLOT( slotDeleteCompleted() ) ); |
125 | a->addTo(m_edit ); | 125 | a->addTo(m_edit ); |
126 | a->setEnabled( TRUE ); | 126 | a->setEnabled( TRUE ); |
127 | m_deleteCompleteAction = a; | 127 | m_deleteCompleteAction = a; |
128 | 128 | ||
129 | m_edit->insertSeparator(); | 129 | m_edit->insertSeparator(); |
130 | 130 | ||
131 | a = new QAction( QString::null, tr("Duplicate"), 0, this, 0 ); | 131 | a = new QAction( QString::null, tr("Duplicate"), 0, this, 0 ); |
132 | connect(a, SIGNAL( activated() ), | 132 | connect(a, SIGNAL( activated() ), |
133 | this, SLOT( slotDuplicate() ) ); | 133 | this, SLOT( slotDuplicate() ) ); |
134 | a->addTo(m_edit ); | 134 | a->addTo(m_edit ); |
135 | m_duplicateAction = a; | 135 | m_duplicateAction = a; |
136 | 136 | ||
137 | m_edit->insertSeparator(); | 137 | m_edit->insertSeparator(); |
138 | 138 | ||
139 | if ( Ir::supported() ) { | 139 | if ( Ir::supported() ) { |
140 | a = new QAction( tr( "Beam" ), Resource::loadPixmap( "beam" ), | 140 | a = new QAction( tr( "Beam" ), Resource::loadPixmap( "beam" ), |
141 | QString::null, 0, this, 0 ); | 141 | QString::null, 0, this, 0 ); |
142 | connect( a, SIGNAL( activated() ), | 142 | connect( a, SIGNAL( activated() ), |
143 | this, SLOT( slotBeam() ) ); | 143 | this, SLOT( slotBeam() ) ); |
144 | a->addTo( m_edit ); | 144 | a->addTo( m_edit ); |
145 | a->addTo( m_tool ); | 145 | a->addTo( m_tool ); |
146 | } | 146 | } |
147 | 147 | ||
148 | a = new QAction( tr("Find"), Resource::loadIconSet( "mag" ), | 148 | a = new QAction( tr("Find"), Resource::loadIconSet( "mag" ), |
149 | QString::null, 0, this, 0 ); | 149 | QString::null, 0, this, 0 ); |
150 | connect(a, SIGNAL( activated() ), | 150 | connect(a, SIGNAL( activated() ), |
151 | this, SLOT( slotFind() ) ); | 151 | this, SLOT( slotFind() ) ); |
152 | a->addTo( m_options ); | 152 | a->addTo( m_options ); |
153 | m_findAction = a; | 153 | m_findAction = a; |
154 | 154 | ||
155 | m_options->insertSeparator(); | 155 | m_options->insertSeparator(); |
156 | 156 | ||
157 | m_completedAction = new QAction( QString::null, tr("Completed tasks"), | 157 | m_completedAction = new QAction( QString::null, tr("Completed tasks"), |
158 | 0, this, 0, TRUE ); | 158 | 0, this, 0, TRUE ); |
159 | m_completedAction->addTo( m_options ); | 159 | m_completedAction->addTo( m_options ); |
160 | m_completedAction->setOn( showCompleted() ); | 160 | m_completedAction->setOn( showCompleted() ); |
161 | connect(m_completedAction, SIGNAL( toggled(bool) ), | 161 | connect(m_completedAction, SIGNAL( toggled(bool) ), |
162 | this, SLOT(slotShowCompleted(bool) ) ); | 162 | this, SLOT(slotShowCompleted(bool) ) ); |
163 | 163 | ||
164 | m_showDeadLineAction = new QAction( QString::null, tr("Show Deadline"), | 164 | m_showDeadLineAction = new QAction( QString::null, tr("Show Deadline"), |
165 | 0, this, 0, TRUE ); | 165 | 0, this, 0, TRUE ); |
166 | m_showDeadLineAction->addTo( m_options ); | 166 | m_showDeadLineAction->addTo( m_options ); |
167 | m_showDeadLineAction->setOn( showDeadline() ); | 167 | m_showDeadLineAction->setOn( showDeadline() ); |
168 | connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), | 168 | connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), |
169 | this, SLOT( slotShowDeadLine( bool ) ) ); | 169 | this, SLOT( slotShowDeadLine( bool ) ) ); |
170 | 170 | ||
171 | m_options->insertSeparator(); | 171 | m_options->insertSeparator(); |
172 | 172 | ||
173 | m_bar->insertItem( tr("Data") ,m_edit ); | 173 | m_bar->insertItem( tr("Data") ,m_edit ); |
174 | m_bar->insertItem( tr("Category"), m_catMenu ); | 174 | m_bar->insertItem( tr("Category"), m_catMenu ); |
175 | m_bar->insertItem( tr("Options"), m_options ); | 175 | m_bar->insertItem( tr("Options"), m_options ); |
176 | 176 | ||
177 | /* initialize the view menu */ | 177 | /* initialize the view menu */ |
178 | a = new QAction( QString::null, tr("Show over due"), | 178 | a = new QAction( QString::null, tr("Show only over due"), |
179 | 0, this, 0, TRUE ); | 179 | 0, this, 0, TRUE ); |
180 | a->addTo( m_view ); | 180 | a->addTo( m_view ); |
181 | a->setOn( showOverDue() ); | 181 | a->setOn( showOverDue() ); |
182 | connect(a, SIGNAL(toggled(bool)), | 182 | connect(a, SIGNAL(toggled(bool)), |
183 | this, SLOT(slotShowDue(bool) ) ); | 183 | this, SLOT(slotShowDue(bool) ) ); |
184 | m_view->insertSeparator(); | 184 | m_view->insertSeparator(); |
185 | 185 | ||
186 | m_bar->insertItem( tr("View"), m_view ); | 186 | m_bar->insertItem( tr("View"), m_view ); |
187 | 187 | ||
188 | /* templates */ | 188 | /* templates */ |
189 | m_edit->insertItem(tr("New from template"), m_template, | 189 | m_edit->insertItem(tr("New from template"), m_template, |
190 | -1, 0 ); | 190 | -1, 0 ); |
191 | 191 | ||
192 | } | 192 | } |
193 | /* m_curCat from Config */ | 193 | /* m_curCat from Config */ |
194 | void MainWindow::initConfig() { | 194 | void MainWindow::initConfig() { |
195 | Config config( "todo" ); | 195 | Config config( "todo" ); |
196 | config.setGroup( "View" ); | 196 | config.setGroup( "View" ); |
197 | m_completed = config.readBoolEntry( "ShowComplete", TRUE ); | 197 | m_completed = config.readBoolEntry( "ShowComplete", TRUE ); |
198 | m_curCat = config.readEntry( "Category", QString::null ); | 198 | m_curCat = config.readEntry( "Category", QString::null ); |
199 | m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); | 199 | m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); |
200 | m_overdue = config.readBoolEntry("ShowOverDue", TRUE ); | 200 | m_overdue = config.readBoolEntry("ShowOverDue", TRUE ); |
201 | } | 201 | } |
202 | void MainWindow::initUI() { | 202 | void MainWindow::initUI() { |
203 | m_mainBox = new QVBox(this, "main box "); | 203 | m_mainBox = new QVBox(this, "main box "); |
204 | m_curQuick = new QuickEditImpl(this, m_mainBox ); | 204 | m_curQuick = new QuickEditImpl(this, m_mainBox ); |
205 | m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); | 205 | m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); |
206 | m_quickEdit.append( m_curQuick ); | 206 | m_quickEdit.append( m_curQuick ); |
207 | 207 | ||
208 | 208 | ||
209 | 209 | ||
210 | m_stack = new QWidgetStack(m_mainBox, "main stack"); | 210 | m_stack = new QWidgetStack(m_mainBox, "main stack"); |
211 | setCentralWidget( m_mainBox ); | 211 | setCentralWidget( m_mainBox ); |
212 | 212 | ||
213 | setToolBarsMovable( FALSE ); | 213 | setToolBarsMovable( FALSE ); |
214 | 214 | ||
215 | m_tool = new QToolBar( this ); | 215 | m_tool = new QToolBar( this ); |
216 | m_tool->setHorizontalStretchable( TRUE ); | 216 | m_tool->setHorizontalStretchable( TRUE ); |
217 | 217 | ||
218 | m_bar = new QMenuBar( m_tool ); | 218 | m_bar = new QMenuBar( m_tool ); |
219 | 219 | ||
220 | /** QPopupMenu */ | 220 | /** QPopupMenu */ |
221 | m_edit = new QPopupMenu( this ); | 221 | m_edit = new QPopupMenu( this ); |
222 | m_options = new QPopupMenu( this ); | 222 | m_options = new QPopupMenu( this ); |
223 | m_view = new QPopupMenu( this ); | 223 | m_view = new QPopupMenu( this ); |
224 | m_catMenu = new QPopupMenu( this ); | 224 | m_catMenu = new QPopupMenu( this ); |
225 | m_template = new QPopupMenu( this ); | 225 | m_template = new QPopupMenu( this ); |
226 | 226 | ||
227 | m_catMenu->setCheckable( TRUE ); | 227 | m_catMenu->setCheckable( TRUE ); |
228 | m_template->setCheckable( TRUE ); | 228 | m_template->setCheckable( TRUE ); |
229 | 229 | ||
230 | connect(m_catMenu, SIGNAL(activated(int) ), | 230 | connect(m_catMenu, SIGNAL(activated(int) ), |
231 | this, SLOT(setCategory(int) ) ); | 231 | this, SLOT(setCategory(int) ) ); |
232 | connect(m_template, SIGNAL(activated(int) ), | 232 | connect(m_template, SIGNAL(activated(int) ), |
233 | this, SLOT(slotNewFromTemplate(int) ) ); | 233 | this, SLOT(slotNewFromTemplate(int) ) ); |
234 | } | 234 | } |
235 | void MainWindow::initViews() { | 235 | void MainWindow::initViews() { |
236 | TableView* tableView = new TableView( this, m_stack ); | 236 | TableView* tableView = new TableView( this, m_stack ); |
237 | m_stack->addWidget( tableView, m_counter++ ); | 237 | m_stack->addWidget( tableView, m_counter++ ); |
238 | m_views.append( tableView ); | 238 | m_views.append( tableView ); |
239 | m_curView = tableView; | 239 | m_curView = tableView; |
240 | connectBase( tableView ); | 240 | connectBase( tableView ); |
241 | /* add QString type + QString configname to | 241 | /* add QString type + QString configname to |
242 | * the View menu | 242 | * the View menu |
243 | * and subdirs for multiple views | 243 | * and subdirs for multiple views |
244 | */ | 244 | */ |
245 | } | 245 | } |
246 | void MainWindow::initEditor() { | 246 | void MainWindow::initEditor() { |
247 | m_curEdit = new Editor(); | 247 | m_curEdit = new Editor(); |
248 | } | 248 | } |
249 | void MainWindow::initShow() { | 249 | void MainWindow::initShow() { |
250 | m_curShow = new TextViewShow(this); | 250 | m_curShow = new TextViewShow(this); |
251 | m_stack->addWidget( m_curShow->widget() , m_counter++ ); | 251 | m_stack->addWidget( m_curShow->widget() , m_counter++ ); |
252 | } | 252 | } |
253 | MainWindow::~MainWindow() { | 253 | MainWindow::~MainWindow() { |
254 | delete templateManager(); | 254 | delete templateManager(); |
255 | } | 255 | } |
256 | void MainWindow::connectBase( ViewBase* base) { | 256 | void MainWindow::connectBase( ViewBase* base) { |
257 | base->connectShow( this, SLOT(slotShow(int) ) ); | 257 | base->connectShow( this, SLOT(slotShow(int) ) ); |
258 | base->connectEdit( this, SLOT(slotEdit(int) ) ); | 258 | base->connectEdit( this, SLOT(slotEdit(int) ) ); |
259 | base->connectUpdateSmall( this, | 259 | base->connectUpdateSmall( this, |
260 | SLOT(slotUpate1(int, const Todo::SmallTodo&) )); | 260 | SLOT(slotUpate1(int, const Todo::SmallTodo&) )); |
261 | base->connectUpdateBig( this, | 261 | base->connectUpdateBig( this, |
262 | SLOT(slotUpate2(int, const OTodo& ) ) ); | 262 | SLOT(slotUpate2(int, const OTodo& ) ) ); |
263 | base->connectUpdateView( this, SLOT(slotUpdate3( QWidget* ) ) ) ; | 263 | base->connectUpdateView( this, SLOT(slotUpdate3( QWidget* ) ) ) ; |
264 | base->connectRemove(&m_todoMgr, | 264 | base->connectRemove(&m_todoMgr, |
265 | SLOT(remove(int)) ); | 265 | SLOT(remove(int)) ); |
266 | } | 266 | } |
267 | QPopupMenu* MainWindow::contextMenu( int uid ) { | 267 | QPopupMenu* MainWindow::contextMenu( int uid ) { |
268 | QPopupMenu* menu = new QPopupMenu(); | 268 | QPopupMenu* menu = new QPopupMenu(); |
269 | 269 | ||
270 | m_editAction->addTo( menu ); | 270 | m_editAction->addTo( menu ); |
271 | m_deleteAction->addTo( menu ); | 271 | m_deleteAction->addTo( menu ); |
272 | m_duplicateAction->addTo( menu ); | 272 | m_duplicateAction->addTo( menu ); |
273 | menu->insertSeparator(); | 273 | menu->insertSeparator(); |
274 | 274 | ||
275 | return menu; | 275 | return menu; |
276 | } | 276 | } |
277 | QPopupMenu* MainWindow::options() { | 277 | QPopupMenu* MainWindow::options() { |
278 | qWarning("Options"); | 278 | qWarning("Options"); |
279 | return m_options; | 279 | return m_options; |
280 | } | 280 | } |
281 | QPopupMenu* MainWindow::edit() { | 281 | QPopupMenu* MainWindow::edit() { |
282 | return m_edit; | 282 | return m_edit; |
283 | } | 283 | } |
284 | QPopupMenu* MainWindow::view() { | 284 | QPopupMenu* MainWindow::view() { |
285 | return m_view; | 285 | return m_view; |
286 | } | 286 | } |
287 | QToolBar* MainWindow::toolbar() { | 287 | QToolBar* MainWindow::toolbar() { |
288 | return m_tool; | 288 | return m_tool; |
289 | } | 289 | } |
290 | OTodoAccess::List MainWindow::list()const { | 290 | OTodoAccess::List MainWindow::list()const { |
291 | return m_todoMgr.list(); | 291 | return m_todoMgr.list(); |
292 | } | 292 | } |
293 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) { | 293 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) { |
294 | int cat = 0; | 294 | int cat = 0; |
295 | if ( m_curCat != tr("All Categories") ) | 295 | if ( m_curCat != tr("All Categories") ) |
296 | cat = currentCatId(); | 296 | cat = currentCatId(); |
297 | 297 | ||
298 | int filter = 1; | 298 | int filter = 1; |
299 | 299 | ||
300 | if (!m_completed ) | 300 | if (!m_completed ) |
301 | filter |= 4; | 301 | filter |= 4; |
302 | if (m_overdue) | 302 | if (m_overdue) |
303 | filter |= 2; | 303 | filter |= 2; |
304 | 304 | ||
305 | return m_todoMgr.sorted( asc, sortOrder, filter, cat ); | 305 | return m_todoMgr.sorted( asc, sortOrder, filter, cat ); |
306 | } | 306 | } |
307 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) { | 307 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) { |
308 | int cat = 0; | 308 | int cat = 0; |
309 | if ( m_curCat != tr("All Categories") ) | 309 | if ( m_curCat != tr("All Categories") ) |
310 | cat = currentCatId(); | 310 | cat = currentCatId(); |
311 | 311 | ||
312 | return m_todoMgr.sorted(asc, sortOrder, addFilter, cat ); | 312 | return m_todoMgr.sorted(asc, sortOrder, addFilter, cat ); |
313 | } | 313 | } |
314 | OTodo MainWindow::event( int uid ) { | 314 | OTodo MainWindow::event( int uid ) { |
315 | return m_todoMgr.event( uid ); | 315 | return m_todoMgr.event( uid ); |
316 | } | 316 | } |
317 | bool MainWindow::isSyncing()const { | 317 | bool MainWindow::isSyncing()const { |
318 | return m_syncing; | 318 | return m_syncing; |
319 | } | 319 | } |
320 | TemplateManager* MainWindow::templateManager() { | 320 | TemplateManager* MainWindow::templateManager() { |
321 | return m_tempManager; | 321 | return m_tempManager; |
322 | } | 322 | } |
323 | Editor* MainWindow::currentEditor() { | 323 | Editor* MainWindow::currentEditor() { |
324 | return m_curEdit; | 324 | return m_curEdit; |
325 | } | 325 | } |
326 | TodoShow* MainWindow::currentShow() { | 326 | TodoShow* MainWindow::currentShow() { |
327 | return m_curShow; | 327 | return m_curShow; |
328 | } | 328 | } |
329 | void MainWindow::slotReload() { | 329 | void MainWindow::slotReload() { |
330 | m_todoMgr.reload(); | 330 | m_todoMgr.reload(); |
331 | currentView()->updateView( ); | 331 | currentView()->updateView( ); |
332 | raiseCurrentView(); | 332 | raiseCurrentView(); |
333 | } | 333 | } |
334 | void MainWindow::closeEvent( QCloseEvent* e ) { | 334 | void MainWindow::closeEvent( QCloseEvent* e ) { |
335 | if (m_stack->visibleWidget() == currentShow()->widget() ) { | 335 | if (m_stack->visibleWidget() == currentShow()->widget() ) { |
336 | raiseCurrentView(); | 336 | raiseCurrentView(); |
337 | e->ignore(); | 337 | e->ignore(); |
338 | return; | 338 | return; |
339 | } | 339 | } |
340 | /* | 340 | /* |
341 | * we should have flushed and now we're still saving | 341 | * we should have flushed and now we're still saving |
342 | * so there is no need to flush | 342 | * so there is no need to flush |
343 | */ | 343 | */ |
344 | if (m_syncing ) { | 344 | if (m_syncing ) { |
345 | e->accept(); | 345 | e->accept(); |
346 | return; | 346 | return; |
347 | } | 347 | } |
348 | bool quit = false; | 348 | bool quit = false; |
349 | if ( m_todoMgr.saveAll() ){ | 349 | if ( m_todoMgr.saveAll() ){ |
350 | qWarning("saved"); | 350 | qWarning("saved"); |
351 | quit = true; | 351 | quit = true; |
352 | }else { | 352 | }else { |
353 | if ( QMessageBox::critical( this, tr("Out of space"), | 353 | if ( QMessageBox::critical( this, tr("Out of space"), |
354 | tr("Todo was unable\n" | 354 | tr("Todo was unable\n" |
355 | "to save your changes.\n" | 355 | "to save your changes.\n" |
356 | "Free up some space\n" | 356 | "Free up some space\n" |
357 | "and try again.\n" | 357 | "and try again.\n" |
358 | "\nQuit Anyway?"), | 358 | "\nQuit Anyway?"), |
359 | QMessageBox::Yes|QMessageBox::Escape, | 359 | QMessageBox::Yes|QMessageBox::Escape, |
360 | QMessageBox::No|QMessageBox::Default) | 360 | QMessageBox::No|QMessageBox::Default) |
361 | != QMessageBox::No ) { | 361 | != QMessageBox::No ) { |
362 | e->accept(); | 362 | e->accept(); |
363 | quit = true; | 363 | quit = true; |
364 | }else | 364 | }else |
365 | e->ignore(); | 365 | e->ignore(); |
366 | 366 | ||
367 | } | 367 | } |
368 | 368 | ||
369 | if (quit ) { | 369 | if (quit ) { |
370 | Config config( "todo" ); | 370 | Config config( "todo" ); |
371 | config.setGroup( "View" ); | 371 | config.setGroup( "View" ); |
372 | config.writeEntry( "ShowComplete", showCompleted() ); | 372 | config.writeEntry( "ShowComplete", showCompleted() ); |
373 | config.writeEntry( "Category", currentCategory() ); | 373 | config.writeEntry( "Category", currentCategory() ); |
374 | config.writeEntry( "ShowDeadLine", showDeadline()); | 374 | config.writeEntry( "ShowDeadLine", showDeadline()); |
375 | config.writeEntry( "ShowOverDue", showOverDue() ); | 375 | config.writeEntry( "ShowOverDue", showOverDue() ); |
376 | /* svae templates */ | 376 | /* svae templates */ |
377 | templateManager()->save(); | 377 | templateManager()->save(); |
378 | e->accept(); | 378 | e->accept(); |
379 | } | 379 | } |
380 | } | 380 | } |
381 | void MainWindow::populateTemplates() { | 381 | void MainWindow::populateTemplates() { |
382 | m_template->clear(); | 382 | m_template->clear(); |
383 | QStringList list = templateManager()->templates(); | 383 | QStringList list = templateManager()->templates(); |
384 | QStringList::Iterator it; | 384 | QStringList::Iterator it; |
385 | for ( it = list.begin(); it != list.end(); ++it ) { | 385 | for ( it = list.begin(); it != list.end(); ++it ) { |
386 | m_template->insertItem( (*it) ); | 386 | m_template->insertItem( (*it) ); |
387 | } | 387 | } |
388 | } | 388 | } |
389 | /* | 389 | /* |
390 | * slotNewFromTemplate | 390 | * slotNewFromTemplate |
391 | * We use the edit widget to do | 391 | * We use the edit widget to do |
392 | * the config but we setUid(-1) | 392 | * the config but we setUid(-1) |
393 | * to get a new uid | 393 | * to get a new uid |
394 | */ | 394 | */ |
395 | /* | 395 | /* |
396 | * first we get the name of the template | 396 | * first we get the name of the template |
397 | * then we will use the TemplateManager | 397 | * then we will use the TemplateManager |
398 | */ | 398 | */ |
399 | void MainWindow::slotNewFromTemplate( int id ) { | 399 | void MainWindow::slotNewFromTemplate( int id ) { |
400 | QString name = m_template->text( id ); | 400 | QString name = m_template->text( id ); |
401 | 401 | ||
402 | OTodo event = templateManager()->templateEvent( name ); | 402 | OTodo event = templateManager()->templateEvent( name ); |
403 | event = currentEditor()->edit(this, | 403 | event = currentEditor()->edit(this, |
404 | event ); | 404 | event ); |
405 | 405 | ||
406 | if ( currentEditor()->accepted() ) { | 406 | if ( currentEditor()->accepted() ) { |
407 | /* assign new todo */ | 407 | /* assign new todo */ |
408 | event.setUid( -1 ); | 408 | event.setUid( -1 ); |
409 | currentView()->addEvent( event ); | 409 | currentView()->addEvent( event ); |
410 | m_todoMgr.add( event ); | 410 | m_todoMgr.add( event ); |
411 | 411 | ||
412 | populateCategories(); | 412 | populateCategories(); |
413 | } | 413 | } |
414 | } | 414 | } |
415 | void MainWindow::slotNew() { | 415 | void MainWindow::slotNew() { |
416 | if(m_syncing) { | 416 | if(m_syncing) { |
417 | QMessageBox::warning(this, tr("Todo"), | 417 | QMessageBox::warning(this, tr("Todo"), |
418 | tr("Can not edit data, currently syncing")); | 418 | tr("Can not edit data, currently syncing")); |
419 | return; | 419 | return; |
420 | } | 420 | } |
421 | 421 | ||
422 | 422 | ||
423 | OTodo todo = currentEditor()->newTodo( currentCatId(), | 423 | OTodo todo = currentEditor()->newTodo( currentCatId(), |
424 | this ); | 424 | this ); |
425 | 425 | ||
426 | if ( currentEditor()->accepted() ) { | 426 | if ( currentEditor()->accepted() ) { |
427 | //todo.assignUid(); | 427 | //todo.assignUid(); |
428 | m_todoMgr.add( todo ); | 428 | m_todoMgr.add( todo ); |
429 | currentView()->addEvent( todo ); | 429 | currentView()->addEvent( todo ); |
430 | 430 | ||
431 | 431 | ||
432 | // I'm afraid we must call this every time now, otherwise | 432 | // I'm afraid we must call this every time now, otherwise |
433 | // spend expensive time comparing all these strings... | 433 | // spend expensive time comparing all these strings... |
434 | // but only call if we changed something -zecke | 434 | // but only call if we changed something -zecke |
435 | populateCategories(); | 435 | populateCategories(); |
436 | } | 436 | } |
437 | raiseCurrentView( ); | 437 | raiseCurrentView( ); |
438 | } | 438 | } |
439 | void MainWindow::slotDuplicate() { | 439 | void MainWindow::slotDuplicate() { |
440 | if(m_syncing) { | 440 | if(m_syncing) { |
441 | QMessageBox::warning(this, tr("Todo"), | 441 | QMessageBox::warning(this, tr("Todo"), |
442 | tr("Can not edit data, currently syncing")); | 442 | tr("Can not edit data, currently syncing")); |
443 | return; | 443 | return; |
444 | } | 444 | } |
445 | OTodo ev = m_todoMgr.event( currentView()->current() ); | 445 | OTodo ev = m_todoMgr.event( currentView()->current() ); |
446 | /* let's generate a new uid */ | 446 | /* let's generate a new uid */ |
447 | ev.setUid(-1); | 447 | ev.setUid(-1); |
448 | m_todoMgr.add( ev ); | 448 | m_todoMgr.add( ev ); |
449 | 449 | ||
450 | currentView()->addEvent( ev ); | 450 | currentView()->addEvent( ev ); |
451 | raiseCurrentView(); | 451 | raiseCurrentView(); |
452 | } | 452 | } |
453 | void MainWindow::slotDelete() { | 453 | void MainWindow::slotDelete() { |
454 | if (!currentView()->current() ) | 454 | if (!currentView()->current() ) |
455 | return; | 455 | return; |
456 | 456 | ||
457 | if(m_syncing) { | 457 | if(m_syncing) { |
458 | QMessageBox::warning(this, tr("Todo"), | 458 | QMessageBox::warning(this, tr("Todo"), |
459 | tr("Can not edit data, currently syncing")); | 459 | tr("Can not edit data, currently syncing")); |
460 | return; | 460 | return; |
461 | } | 461 | } |
462 | QString strName = currentView()->currentRepresentation(); | 462 | QString strName = currentView()->currentRepresentation(); |
463 | if (!QPEMessageBox::confirmDelete(this, tr("Todo"), strName ) ) | 463 | if (!QPEMessageBox::confirmDelete(this, tr("Todo"), strName ) ) |
464 | return; | 464 | return; |
465 | 465 | ||
466 | m_todoMgr.remove( currentView()->current() ); | 466 | m_todoMgr.remove( currentView()->current() ); |
467 | currentView()->removeEvent( currentView()->current() ); | 467 | currentView()->removeEvent( currentView()->current() ); |
468 | raiseCurrentView(); | 468 | raiseCurrentView(); |
469 | } | 469 | } |
470 | void MainWindow::slotDeleteAll() { | 470 | void MainWindow::slotDeleteAll() { |
471 | if(m_syncing) { | 471 | if(m_syncing) { |
472 | QMessageBox::warning(this, tr("Todo"), | 472 | QMessageBox::warning(this, tr("Todo"), |
473 | tr("Can not edit data, currently syncing")); | 473 | tr("Can not edit data, currently syncing")); |
474 | return; | 474 | return; |
475 | } | 475 | } |
476 | 476 | ||
477 | //QString strName = table->text( table->currentRow(), 2 ).left( 30 ); | 477 | //QString strName = table->text( table->currentRow(), 2 ).left( 30 ); |
478 | 478 | ||
479 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("all tasks?") ) ) | 479 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("all tasks?") ) ) |
480 | return; | 480 | return; |
481 | 481 | ||
482 | m_todoMgr.removeAll(); | 482 | m_todoMgr.removeAll(); |
483 | currentView()->clear(); | 483 | currentView()->clear(); |
484 | 484 | ||
485 | raiseCurrentView(); | 485 | raiseCurrentView(); |
486 | } | 486 | } |
487 | void MainWindow::slotDeleteCompleted() { | 487 | void MainWindow::slotDeleteCompleted() { |
488 | if(m_syncing) { | 488 | if(m_syncing) { |
489 | QMessageBox::warning(this, tr("Todo"), | 489 | QMessageBox::warning(this, tr("Todo"), |
490 | tr("Can not edit data, currently syncing")); | 490 | tr("Can not edit data, currently syncing")); |
491 | return; | 491 | return; |
492 | } | 492 | } |
493 | 493 | ||
494 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("all completed tasks?") ) ) | 494 | if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("all completed tasks?") ) ) |
495 | return; | 495 | return; |
496 | 496 | ||
497 | // FIXME | 497 | // FIXME |
498 | //m_todoMgr.remove( currentView()->completed() ); | 498 | //m_todoMgr.remove( currentView()->completed() ); |
499 | currentView()->updateView( ); | 499 | currentView()->updateView( ); |
500 | } | 500 | } |
501 | void MainWindow::slotFind() { | 501 | void MainWindow::slotFind() { |
502 | 502 | ||
503 | } | 503 | } |
504 | void MainWindow::slotEdit() { | 504 | void MainWindow::slotEdit() { |
505 | slotEdit( currentView()->current() ); | 505 | slotEdit( currentView()->current() ); |
506 | } | 506 | } |
507 | /* | 507 | /* |
508 | * set the category | 508 | * set the category |
509 | */ | 509 | */ |
510 | void MainWindow::setCategory( int c) { | 510 | void MainWindow::setCategory( int c) { |
511 | if ( c <= 0 ) return; | 511 | if ( c <= 0 ) return; |
512 | 512 | ||
513 | 513 | ||
514 | qWarning("Iterating over cats %d", c ); | 514 | qWarning("Iterating over cats %d", c ); |
515 | for ( unsigned int i = 1; i < m_catMenu->count(); i++ ) | 515 | for ( unsigned int i = 1; i < m_catMenu->count(); i++ ) |
516 | m_catMenu->setItemChecked(i, c == (int)i ); | 516 | m_catMenu->setItemChecked(i, c == (int)i ); |
517 | 517 | ||
518 | if (c == 1 ) { | 518 | if (c == 1 ) { |
519 | m_curCat = QString::null; | 519 | m_curCat = QString::null; |
520 | setCaption( tr("Todo") + " - " + tr("All Categories" ) ); | 520 | setCaption( tr("Todo") + " - " + tr("All Categories" ) ); |
521 | 521 | ||
522 | }else if ( c == (int)m_catMenu->count() - 1 ) { | 522 | }else if ( c == (int)m_catMenu->count() - 1 ) { |
523 | m_curCat = tr("Unfiled"); | 523 | m_curCat = tr("Unfiled"); |
524 | setCaption( tr("Todo") + " - " + tr("Unfiled") ); | 524 | setCaption( tr("Todo") + " - " + tr("Unfiled") ); |
525 | }else { | 525 | }else { |
526 | m_curCat = m_todoMgr.categories()[c-2]; | 526 | m_curCat = m_todoMgr.categories()[c-2]; |
527 | setCaption( tr("Todo") + " - " + m_curCat ); | 527 | setCaption( tr("Todo") + " - " + m_curCat ); |
528 | } | 528 | } |
529 | m_catMenu->setItemChecked( c, true ); | 529 | m_catMenu->setItemChecked( c, true ); |
530 | 530 | ||
531 | currentView()->setShowCategory( m_curCat ); | 531 | currentView()->setShowCategory( m_curCat ); |
532 | raiseCurrentView(); | 532 | raiseCurrentView(); |
533 | } | 533 | } |
534 | void MainWindow::slotShowDeadLine( bool dead) { | 534 | void MainWindow::slotShowDeadLine( bool dead) { |
535 | m_deadline = dead; | 535 | m_deadline = dead; |
536 | currentView()->setShowDeadline( dead ); | 536 | currentView()->setShowDeadline( dead ); |
537 | } | 537 | } |
538 | void MainWindow::slotShowCompleted( bool show) { | 538 | void MainWindow::slotShowCompleted( bool show) { |
539 | m_completed = show; | 539 | m_completed = show; |
540 | currentView()->setShowCompleted( m_completed ); | 540 | currentView()->setShowCompleted( m_completed ); |
541 | } | 541 | } |
542 | bool MainWindow::showOverDue()const { | 542 | bool MainWindow::showOverDue()const { |
543 | return m_overdue; | 543 | return m_overdue; |
544 | } | 544 | } |
545 | void MainWindow::setDocument( const QString& fi) { | 545 | void MainWindow::setDocument( const QString& fi) { |
546 | DocLnk doc(fi); | 546 | DocLnk doc(fi); |
547 | if (doc.isValid() ) | 547 | if (doc.isValid() ) |
548 | receiveFile(doc.file() ); | 548 | receiveFile(doc.file() ); |
549 | else | 549 | else |
550 | receiveFile(fi ); | 550 | receiveFile(fi ); |
551 | } | 551 | } |
552 | 552 | ||
553 | static const char *beamfile = "/tmp/opie-todo.vcs"; | 553 | static const char *beamfile = "/tmp/opie-todo.vcs"; |
554 | void MainWindow::slotBeam() { | 554 | void MainWindow::slotBeam() { |
555 | ::unlink( beamfile ); | 555 | ::unlink( beamfile ); |
556 | OTodo todo = event( currentView()->current() ); | 556 | OTodo todo = event( currentView()->current() ); |
557 | OTodoAccessVCal* cal = new OTodoAccessVCal(QString::fromLatin1(beamfile) ); | 557 | OTodoAccessVCal* cal = new OTodoAccessVCal(QString::fromLatin1(beamfile) ); |
558 | OTodoAccess acc( cal ); | 558 | OTodoAccess acc( cal ); |
559 | acc.load(); | 559 | acc.load(); |
560 | acc.add( todo ); | 560 | acc.add( todo ); |
561 | acc.save(); | 561 | acc.save(); |
562 | Ir* ir = new Ir(this ); | 562 | Ir* ir = new Ir(this ); |
diff --git a/core/pim/todo/otaskeditor.cpp b/core/pim/todo/otaskeditor.cpp index e8e922f..1a68eb5 100644 --- a/core/pim/todo/otaskeditor.cpp +++ b/core/pim/todo/otaskeditor.cpp | |||
@@ -1,83 +1,90 @@ | |||
1 | #include <qdatetime.h> | 1 | #include <qdatetime.h> |
2 | #include <qlayout.h> | 2 | #include <qlayout.h> |
3 | #include <qlabel.h> | 3 | #include <qlabel.h> |
4 | #include <qmultilineedit.h> | 4 | #include <qmultilineedit.h> |
5 | 5 | ||
6 | #include <opie/orecurrancewidget.h> | 6 | #include <opie/orecurrancewidget.h> |
7 | 7 | ||
8 | #include "taskeditoroverviewimpl.h" | 8 | #include "taskeditoroverviewimpl.h" |
9 | #include "taskeditoradvanced.h" | 9 | #include "taskeditoradvanced.h" |
10 | #include "taskeditoralarms.h" | 10 | #include "taskeditoralarms.h" |
11 | 11 | ||
12 | #include "otaskeditor.h" | 12 | #include "otaskeditor.h" |
13 | 13 | ||
14 | OTaskEditor::OTaskEditor(int cur) | 14 | OTaskEditor::OTaskEditor(int cur) |
15 | : QDialog(0, 0, TRUE ) { | 15 | : QDialog(0, 0, TRUE ) { |
16 | init(); | 16 | init(); |
17 | OTodo to; | 17 | init( cur ); |
18 | to.setCategories( cur ); | ||
19 | load(to); | ||
20 | m_uid = 1; // generate a new one | ||
21 | } | 18 | } |
22 | OTaskEditor::OTaskEditor( const OTodo& to) | 19 | OTaskEditor::OTaskEditor( const OTodo& to) |
23 | : QDialog(0, 0, TRUE ) { | 20 | : QDialog(0, 0, TRUE ) { |
24 | init(); | 21 | init(); |
25 | load( to ); | 22 | init( to ); |
26 | m_uid = to.uid(); | ||
27 | } | 23 | } |
28 | OTaskEditor::~OTaskEditor() { | 24 | OTaskEditor::~OTaskEditor() { |
29 | 25 | ||
30 | } | 26 | } |
27 | void OTaskEditor::init( int cur ) { | ||
28 | OTodo to; | ||
29 | if ( cur != 0 ) | ||
30 | to.setCategories( cur ); | ||
31 | load(to); | ||
32 | m_uid = 1; // generate a new one | ||
33 | } | ||
34 | void OTaskEditor::init( const OTodo& to ) { | ||
35 | load( to ); | ||
36 | m_uid = to.uid(); | ||
37 | } | ||
31 | OTodo OTaskEditor::todo()const{ | 38 | OTodo OTaskEditor::todo()const{ |
32 | qWarning("saving!"); | 39 | qWarning("saving!"); |
33 | OTodo to; | 40 | OTodo to; |
34 | to.setUid(m_uid ); | 41 | to.setUid(m_uid ); |
35 | m_overView->save( to ); | 42 | m_overView->save( to ); |
36 | to.setDescription( m_line->text() ); | 43 | to.setDescription( m_line->text() ); |
37 | 44 | ||
38 | return to; | 45 | return to; |
39 | } | 46 | } |
40 | void OTaskEditor::load(const OTodo& to) { | 47 | void OTaskEditor::load(const OTodo& to) { |
41 | m_overView->load( to ); | 48 | m_overView->load( to ); |
42 | m_line->setText( to.description() ); | 49 | m_line->setText( to.description() ); |
43 | } | 50 | } |
44 | void OTaskEditor::init() { | 51 | void OTaskEditor::init() { |
45 | QVBoxLayout* lay = new QVBoxLayout(this); | 52 | QVBoxLayout* lay = new QVBoxLayout(this); |
46 | setCaption("Task Editor"); | 53 | setCaption("Task Editor"); |
47 | m_tab = new OTabWidget(this); | 54 | m_tab = new OTabWidget(this); |
48 | 55 | ||
49 | /* | 56 | /* |
50 | * Add the Widgets | 57 | * Add the Widgets |
51 | */ | 58 | */ |
52 | m_overView = new TaskEditorOverViewImpl(m_tab ); | 59 | m_overView = new TaskEditorOverViewImpl(m_tab ); |
53 | m_tab->addTab( m_overView, QString::null, tr("Overview") ); | 60 | m_tab->addTab( m_overView, QString::null, tr("Overview") ); |
54 | 61 | ||
55 | m_adv = new TaskEditorAdvanced( m_tab ); | 62 | m_adv = new TaskEditorAdvanced( m_tab ); |
56 | m_line = new QMultiLineEdit(m_adv ); | 63 | m_line = new QMultiLineEdit(m_adv ); |
57 | QLabel* label = new QLabel(m_adv ); | 64 | QLabel* label = new QLabel(m_adv ); |
58 | label->setText( tr("Description") ); | 65 | label->setText( tr("Description") ); |
59 | ((QGridLayout*) m_adv->layout() )->addWidget( label,3, 0 ); | 66 | ((QGridLayout*) m_adv->layout() )->addWidget( label,3, 0 ); |
60 | ((QGridLayout*) m_adv->layout())->addWidget( m_line,4,0 ); | 67 | ((QGridLayout*) m_adv->layout())->addWidget( m_line,4,0 ); |
61 | m_tab->addTab( m_adv, QString::null, tr("Advanced") ); | 68 | m_tab->addTab( m_adv, QString::null, tr("Advanced") ); |
62 | 69 | ||
63 | m_alarm = new TaskEditorAlarms( m_tab ); | 70 | m_alarm = new TaskEditorAlarms( m_tab ); |
64 | m_tab->addTab( m_alarm, QString::null, tr("Alarms") ); | 71 | m_tab->addTab( m_alarm, QString::null, tr("Alarms") ); |
65 | 72 | ||
66 | m_remind = new TaskEditorAlarms( m_tab ); | 73 | m_remind = new TaskEditorAlarms( m_tab ); |
67 | m_tab->addTab( m_remind, QString::null, tr("Reminders") ); | 74 | m_tab->addTab( m_remind, QString::null, tr("Reminders") ); |
68 | 75 | ||
69 | QLabel* lbl = new QLabel(m_tab ); | 76 | QLabel* lbl = new QLabel(m_tab ); |
70 | lbl->setText( tr("X-Ref") ); | 77 | lbl->setText( tr("X-Ref") ); |
71 | m_tab->addTab( lbl, QString::null, tr("X-Ref") ); | 78 | m_tab->addTab( lbl, QString::null, tr("X-Ref") ); |
72 | 79 | ||
73 | m_rec = new ORecurranceWidget( true, QDate::currentDate(), this ); | 80 | m_rec = new ORecurranceWidget( true, QDate::currentDate(), this ); |
74 | m_tab->addTab( m_rec, QString::null, tr("Recurrance") ); | 81 | m_tab->addTab( m_rec, QString::null, tr("Recurrance") ); |
75 | 82 | ||
76 | lay->addWidget(m_tab ); | 83 | lay->addWidget(m_tab ); |
77 | 84 | ||
78 | /* signal and slots */ | 85 | /* signal and slots */ |
79 | connect(m_overView, SIGNAL(recurranceEnabled(bool) ), | 86 | connect(m_overView, SIGNAL(recurranceEnabled(bool) ), |
80 | m_rec, SLOT(setEnabled(bool) ) ); | 87 | m_rec, SLOT(setEnabled(bool) ) ); |
81 | 88 | ||
82 | m_tab->setCurrentTab( m_overView ); | 89 | m_tab->setCurrentTab( m_overView ); |
83 | } | 90 | } |
diff --git a/core/pim/todo/otaskeditor.h b/core/pim/todo/otaskeditor.h index 5842fdc..bcbd543 100644 --- a/core/pim/todo/otaskeditor.h +++ b/core/pim/todo/otaskeditor.h | |||
@@ -1,37 +1,44 @@ | |||
1 | #ifndef OPIE_TASK_EDITOR_H | 1 | #ifndef OPIE_TASK_EDITOR_H |
2 | #define OPIE_TASK_EDITOR_H | 2 | #define OPIE_TASK_EDITOR_H |
3 | 3 | ||
4 | #include <qdialog.h> | 4 | #include <qdialog.h> |
5 | 5 | ||
6 | #include <opie/otodo.h> | 6 | #include <opie/otodo.h> |
7 | #include <opie/otabwidget.h> | 7 | #include <opie/otabwidget.h> |
8 | 8 | ||
9 | class TaskEditorOverViewImpl; | 9 | class TaskEditorOverViewImpl; |
10 | class TaskEditorAdvanced; | 10 | class TaskEditorAdvanced; |
11 | class TaskEditorAlarms; | 11 | class TaskEditorAlarms; |
12 | class ORecurranceWidget; | 12 | class ORecurranceWidget; |
13 | class QMultiLineEdit; | 13 | class QMultiLineEdit; |
14 | class OTaskEditor : public QDialog { | 14 | class OTaskEditor : public QDialog { |
15 | Q_OBJECT | 15 | Q_OBJECT |
16 | public: | 16 | public: |
17 | OTaskEditor(int cur); | 17 | OTaskEditor(int cur); |
18 | OTaskEditor( const OTodo& todo ); | 18 | OTaskEditor( const OTodo& todo ); |
19 | ~OTaskEditor(); | 19 | ~OTaskEditor(); |
20 | 20 | ||
21 | /* | ||
22 | * same as the c'tor but this gives us the | ||
23 | * power to 'preload' the dialog | ||
24 | */ | ||
25 | void init( int cur ); | ||
26 | void init( const OTodo& todo ); | ||
27 | |||
21 | OTodo todo()const; | 28 | OTodo todo()const; |
22 | private: | 29 | private: |
23 | void load( const OTodo& ); | 30 | void load( const OTodo& ); |
24 | void init(); | 31 | void init(); |
25 | 32 | ||
26 | OTabWidget *m_tab; | 33 | OTabWidget *m_tab; |
27 | TaskEditorOverViewImpl* m_overView; | 34 | TaskEditorOverViewImpl* m_overView; |
28 | TaskEditorAdvanced *m_adv; | 35 | TaskEditorAdvanced *m_adv; |
29 | TaskEditorAlarms *m_alarm; | 36 | TaskEditorAlarms *m_alarm; |
30 | TaskEditorAlarms* m_remind; | 37 | TaskEditorAlarms* m_remind; |
31 | ORecurranceWidget* m_rec; | 38 | ORecurranceWidget* m_rec; |
32 | QMultiLineEdit* m_line; | 39 | QMultiLineEdit* m_line; |
33 | int m_uid; | 40 | int m_uid; |
34 | 41 | ||
35 | }; | 42 | }; |
36 | 43 | ||
37 | #endif | 44 | #endif |
diff --git a/core/pim/todo/taskeditoroverviewimpl.cpp b/core/pim/todo/taskeditoroverviewimpl.cpp index b9b2ae6..c10ad40 100644 --- a/core/pim/todo/taskeditoroverviewimpl.cpp +++ b/core/pim/todo/taskeditoroverviewimpl.cpp | |||
@@ -1,169 +1,181 @@ | |||
1 | #include <qapplication.h> | 1 | #include <qapplication.h> |
2 | #include <qcheckbox.h> | 2 | #include <qcheckbox.h> |
3 | #include <qcombobox.h> | 3 | #include <qcombobox.h> |
4 | #include <qpopupmenu.h> | 4 | #include <qpopupmenu.h> |
5 | 5 | ||
6 | #include <qpe/datebookmonth.h> | 6 | #include <qpe/datebookmonth.h> |
7 | #include <qpe/categoryselect.h> | 7 | #include <qpe/categoryselect.h> |
8 | #include <qpe/timestring.h> | 8 | #include <qpe/timestring.h> |
9 | 9 | ||
10 | #include "taskeditoroverviewimpl.h" | 10 | #include "taskeditoroverviewimpl.h" |
11 | 11 | ||
12 | /* | 12 | /* |
13 | * we need to hack | 13 | * we need to hack |
14 | */ | 14 | */ |
15 | 15 | ||
16 | TaskEditorOverViewImpl::TaskEditorOverViewImpl( QWidget* parent, const char* name ) | 16 | TaskEditorOverViewImpl::TaskEditorOverViewImpl( QWidget* parent, const char* name ) |
17 | : TaskEditorOverView( parent, name ) { | 17 | : TaskEditorOverView( parent, name ) { |
18 | init(); | 18 | init(); |
19 | } | 19 | } |
20 | TaskEditorOverViewImpl::~TaskEditorOverViewImpl() { | 20 | TaskEditorOverViewImpl::~TaskEditorOverViewImpl() { |
21 | } | 21 | } |
22 | void TaskEditorOverViewImpl::load( const OTodo& todo) { | 22 | void TaskEditorOverViewImpl::load( const OTodo& todo) { |
23 | /* | ||
24 | * now that we're 'preloaded' we | ||
25 | * need to disable the buttons | ||
26 | * holding the dat | ||
27 | */ | ||
28 | btnDue-> setEnabled( FALSE ); | ||
29 | btnComp-> setEnabled( FALSE ); | ||
30 | btnStart->setEnabled( FALSE ); | ||
31 | |||
32 | |||
23 | QDate date = QDate::currentDate(); | 33 | QDate date = QDate::currentDate(); |
24 | QString str = TimeString::longDateString( date ); | 34 | QString str = TimeString::longDateString( date ); |
25 | 35 | ||
26 | emit recurranceEnabled( FALSE ); | 36 | emit recurranceEnabled( FALSE ); |
27 | ckbStart->setChecked( FALSE ); | 37 | ckbStart->setChecked( FALSE ); |
28 | btnStart->setText( str ); | 38 | btnStart->setText( str ); |
29 | 39 | ||
30 | ckbComp->setChecked( FALSE ); | 40 | ckbComp->setChecked( FALSE ); |
31 | btnComp->setText( str ); | 41 | btnComp->setText( str ); |
32 | 42 | ||
33 | cmbProgress->setCurrentItem( todo.progress()/20 ); | 43 | cmbProgress->setCurrentItem( todo.progress()/20 ); |
34 | cmbSum->insertItem( todo.summary(), 0 ); | 44 | cmbSum->insertItem( todo.summary(), 0 ); |
35 | cmbSum->setCurrentItem( 0 ); | 45 | cmbSum->setCurrentItem( 0 ); |
36 | 46 | ||
37 | ckbDue->setChecked( todo.hasDueDate() ); | 47 | ckbDue->setChecked( todo.hasDueDate() ); |
38 | btnDue->setText( TimeString::longDateString( todo.dueDate() ) ); | 48 | btnDue->setText( TimeString::longDateString( todo.dueDate() ) ); |
39 | 49 | ||
40 | cmbPrio->setCurrentItem( todo.priority() -1 ); | 50 | cmbPrio->setCurrentItem( todo.priority() -1 ); |
41 | ckbCompleted->setChecked( todo.isCompleted() ); | 51 | ckbCompleted->setChecked( todo.isCompleted() ); |
42 | 52 | ||
43 | comboCategory->setCategories( todo.categories(), "Todo List", tr("Todo List") ); | 53 | comboCategory->setCategories( todo.categories(), "Todo List", tr("Todo List") ); |
44 | 54 | ||
45 | } | 55 | } |
46 | void TaskEditorOverViewImpl::save( OTodo& to) { | 56 | void TaskEditorOverViewImpl::save( OTodo& to) { |
47 | qWarning("save it now"); | 57 | qWarning("save it now"); |
48 | if ( ckbDue->isChecked() ) { | 58 | if ( ckbDue->isChecked() ) { |
49 | to.setDueDate( m_due ); | 59 | to.setDueDate( m_due ); |
50 | to.setHasDueDate( true ); | 60 | to.setHasDueDate( true ); |
51 | }else | 61 | }else |
52 | to.setHasDueDate( false ); | 62 | to.setHasDueDate( false ); |
53 | if ( comboCategory->currentCategory() != -1 ) { | 63 | if ( comboCategory->currentCategory() != -1 ) { |
54 | QArray<int> arr = comboCategory->currentCategories(); | 64 | QArray<int> arr = comboCategory->currentCategories(); |
55 | to.setCategories( arr ); | 65 | to.setCategories( arr ); |
56 | } | 66 | } |
57 | to.setPriority( cmbPrio->currentItem() + 1 ); | 67 | to.setPriority( cmbPrio->currentItem() + 1 ); |
58 | to.setCompleted( ckbCompleted->isChecked() ); | 68 | to.setCompleted( ckbCompleted->isChecked() ); |
59 | to.setSummary( cmbSum->currentText() ); | 69 | to.setSummary( cmbSum->currentText() ); |
60 | to.setProgress( cmbProgress->currentItem() * 20 ); | 70 | to.setProgress( cmbProgress->currentItem() * 20 ); |
61 | } | 71 | } |
62 | /* | 72 | /* |
63 | * here we will init the basic view | 73 | * here we will init the basic view |
64 | * one Popup for each Date Button | 74 | * one Popup for each Date Button |
65 | * and some other signal and slots connection | 75 | * and some other signal and slots connection |
66 | */ | 76 | */ |
67 | void TaskEditorOverViewImpl::init() { | 77 | void TaskEditorOverViewImpl::init() { |
68 | QDate curDate = QDate::currentDate(); | 78 | QDate curDate = QDate::currentDate(); |
69 | m_start = m_comp = m_due = curDate; | 79 | m_start = m_comp = m_due = curDate; |
70 | QString str = TimeString::longDateString( curDate ); | 80 | QString str = TimeString::longDateString( curDate ); |
71 | 81 | ||
82 | |||
83 | |||
72 | /* Start Date Picker */ | 84 | /* Start Date Picker */ |
73 | m_startPop = new QPopupMenu(this); | 85 | m_startPop = new QPopupMenu(this); |
74 | m_startBook = new DateBookMonth(m_startPop, 0, TRUE ); | 86 | m_startBook = new DateBookMonth(m_startPop, 0, TRUE ); |
75 | m_startPop->insertItem( m_startBook ); | 87 | m_startPop->insertItem( m_startBook ); |
76 | connect( m_startBook, SIGNAL( dateClicked(int, int, int) ), | 88 | connect( m_startBook, SIGNAL( dateClicked(int, int, int) ), |
77 | this, SLOT(slotStartChanged(int, int, int) ) ); | 89 | this, SLOT(slotStartChanged(int, int, int) ) ); |
78 | 90 | ||
79 | 91 | ||
80 | /* Due Date Picker */ | 92 | /* Due Date Picker */ |
81 | m_duePop = new QPopupMenu(this); | 93 | m_duePop = new QPopupMenu(this); |
82 | m_dueBook = new DateBookMonth(m_duePop, 0, TRUE ); | 94 | m_dueBook = new DateBookMonth(m_duePop, 0, TRUE ); |
83 | m_duePop->insertItem( m_dueBook ); | 95 | m_duePop->insertItem( m_dueBook ); |
84 | connect( m_dueBook, SIGNAL( dateClicked(int, int, int) ), | 96 | connect( m_dueBook, SIGNAL( dateClicked(int, int, int) ), |
85 | this, SLOT(slotDueChanged(int, int, int) ) ); | 97 | this, SLOT(slotDueChanged(int, int, int) ) ); |
86 | 98 | ||
87 | m_compPop = new QPopupMenu(this); | 99 | m_compPop = new QPopupMenu(this); |
88 | m_compBook = new DateBookMonth(m_compPop, 0, TRUE ); | 100 | m_compBook = new DateBookMonth(m_compPop, 0, TRUE ); |
89 | m_compPop->insertItem(m_compBook ); | 101 | m_compPop->insertItem(m_compBook ); |
90 | connect( m_compBook, SIGNAL(dateClicked(int, int, int) ), | 102 | connect( m_compBook, SIGNAL(dateClicked(int, int, int) ), |
91 | this, SLOT(slotCompletedChanged(int, int, int) ) ); | 103 | this, SLOT(slotCompletedChanged(int, int, int) ) ); |
92 | 104 | ||
93 | 105 | ||
94 | /* | 106 | /* |
95 | * another part of the hack | 107 | * another part of the hack |
96 | * it's deprecated in Qt2 but | 108 | * it's deprecated in Qt2 but |
97 | * still available in my qt-copy of Qt3.1beta2 | 109 | * still available in my qt-copy of Qt3.1beta2 |
98 | */ | 110 | */ |
99 | btnDue->setIsMenuButton( TRUE ); | 111 | btnDue->setIsMenuButton( TRUE ); |
100 | btnStart->setIsMenuButton( TRUE ); | 112 | btnStart->setIsMenuButton( TRUE ); |
101 | btnComp->setIsMenuButton( TRUE ); | 113 | btnComp->setIsMenuButton( TRUE ); |
102 | 114 | ||
103 | /* now connect the hack */ | 115 | /* now connect the hack */ |
104 | connect(btnDue, SIGNAL(clicked() ), | 116 | connect(btnDue, SIGNAL(clicked() ), |
105 | this, SLOT(hackySlotHack2() ) ); | 117 | this, SLOT(hackySlotHack2() ) ); |
106 | connect(btnStart, SIGNAL(clicked() ), | 118 | connect(btnStart, SIGNAL(clicked() ), |
107 | this, SLOT(hackySlotHack1() ) ); | 119 | this, SLOT(hackySlotHack1() ) ); |
108 | connect(btnComp, SIGNAL(clicked() ), | 120 | connect(btnComp, SIGNAL(clicked() ), |
109 | this, SLOT(hackySlotHack3() ) ); | 121 | this, SLOT(hackySlotHack3() ) ); |
110 | 122 | ||
111 | /* recurrance */ | 123 | /* recurrance */ |
112 | connect(CheckBox7, SIGNAL(clicked() ), | 124 | connect(CheckBox7, SIGNAL(clicked() ), |
113 | this, SLOT(slotRecClicked() ) ); | 125 | this, SLOT(slotRecClicked() ) ); |
114 | } | 126 | } |
115 | 127 | ||
116 | void TaskEditorOverViewImpl::slotStartChecked() { | 128 | void TaskEditorOverViewImpl::slotStartChecked() { |
117 | qWarning("slotStartChecked"); | 129 | qWarning("slotStartChecked"); |
118 | btnStart->setEnabled( ckbStart->isChecked() ); | 130 | btnStart->setEnabled( ckbStart->isChecked() ); |
119 | } | 131 | } |
120 | void TaskEditorOverViewImpl::slotStartChanged(int y, int m, int d) { | 132 | void TaskEditorOverViewImpl::slotStartChanged(int y, int m, int d) { |
121 | m_start.setYMD( y, m, d ); | 133 | m_start.setYMD( y, m, d ); |
122 | btnStart->setText( TimeString::longDateString( m_start ) ); | 134 | btnStart->setText( TimeString::longDateString( m_start ) ); |
123 | } | 135 | } |
124 | void TaskEditorOverViewImpl::slotDueChecked() { | 136 | void TaskEditorOverViewImpl::slotDueChecked() { |
125 | btnDue->setEnabled( ckbDue->isChecked() ); | 137 | btnDue->setEnabled( ckbDue->isChecked() ); |
126 | qWarning("slotDueChecked"); | 138 | qWarning("slotDueChecked"); |
127 | } | 139 | } |
128 | void TaskEditorOverViewImpl::slotDueChanged(int y, int m, int d ) { | 140 | void TaskEditorOverViewImpl::slotDueChanged(int y, int m, int d ) { |
129 | m_due.setYMD(y, m, d ); | 141 | m_due.setYMD(y, m, d ); |
130 | btnDue->setText( TimeString::longDateString( m_due ) ); | 142 | btnDue->setText( TimeString::longDateString( m_due ) ); |
131 | } | 143 | } |
132 | void TaskEditorOverViewImpl::slotCompletedChecked() { | 144 | void TaskEditorOverViewImpl::slotCompletedChecked() { |
133 | btnComp->setEnabled( ckbComp->isChecked() ); | 145 | btnComp->setEnabled( ckbComp->isChecked() ); |
134 | qWarning("slotCompletedChecked"); | 146 | qWarning("slotCompletedChecked"); |
135 | } | 147 | } |
136 | void TaskEditorOverViewImpl::slotCompletedChanged(int y, int m, int d) { | 148 | void TaskEditorOverViewImpl::slotCompletedChanged(int y, int m, int d) { |
137 | m_comp.setYMD( y, m, d ); | 149 | m_comp.setYMD( y, m, d ); |
138 | btnComp->setText( TimeString::longDateString( m_comp ) ); | 150 | btnComp->setText( TimeString::longDateString( m_comp ) ); |
139 | } | 151 | } |
140 | /* | 152 | /* |
141 | * called by a button pressed event... | 153 | * called by a button pressed event... |
142 | * three slots to avoid ugly name() tests | 154 | * three slots to avoid ugly name() tests |
143 | * to sender() | 155 | * to sender() |
144 | */ | 156 | */ |
145 | void TaskEditorOverViewImpl::hackySlotHack1() { | 157 | void TaskEditorOverViewImpl::hackySlotHack1() { |
146 | btnStart->setDown( FALSE ); | 158 | btnStart->setDown( FALSE ); |
147 | popup( btnStart, m_startPop ); | 159 | popup( btnStart, m_startPop ); |
148 | } | 160 | } |
149 | void TaskEditorOverViewImpl::hackySlotHack2() { | 161 | void TaskEditorOverViewImpl::hackySlotHack2() { |
150 | btnDue->setDown( FALSE ); | 162 | btnDue->setDown( FALSE ); |
151 | popup( btnDue, m_duePop ); | 163 | popup( btnDue, m_duePop ); |
152 | } | 164 | } |
153 | void TaskEditorOverViewImpl::hackySlotHack3() { | 165 | void TaskEditorOverViewImpl::hackySlotHack3() { |
154 | btnComp->setDown( FALSE ); | 166 | btnComp->setDown( FALSE ); |
155 | popup( btnComp, m_compPop ); | 167 | popup( btnComp, m_compPop ); |
156 | } | 168 | } |
157 | void TaskEditorOverViewImpl::slotRecClicked() { | 169 | void TaskEditorOverViewImpl::slotRecClicked() { |
158 | qWarning("enabled recurrance"); | 170 | qWarning("enabled recurrance"); |
159 | emit recurranceEnabled( CheckBox7->isChecked() ); | 171 | emit recurranceEnabled( CheckBox7->isChecked() ); |
160 | } | 172 | } |
161 | /* | 173 | /* |
162 | * GPL from TT QPushButton code | 174 | * GPL from TT QPushButton code |
163 | */ | 175 | */ |
164 | void TaskEditorOverViewImpl::popup( QPushButton* pu, QPopupMenu* pop) { | 176 | void TaskEditorOverViewImpl::popup( QPushButton* pu, QPopupMenu* pop) { |
165 | if ( pu->mapToGlobal( QPoint(0, pu->rect().bottom() ) ).y() + pop->sizeHint().height() <= qApp->desktop()->height() ) | 177 | if ( pu->mapToGlobal( QPoint(0, pu->rect().bottom() ) ).y() + pop->sizeHint().height() <= qApp->desktop()->height() ) |
166 | pop->exec( pu->mapToGlobal( pu->rect().bottomLeft() ) ); | 178 | pop->exec( pu->mapToGlobal( pu->rect().bottomLeft() ) ); |
167 | else | 179 | else |
168 | pop->exec( pu->mapToGlobal( pu->rect().topLeft() - QPoint(0, pu->sizeHint().height() ) ) ); | 180 | pop->exec( pu->mapToGlobal( pu->rect().topLeft() - QPoint(0, pu->sizeHint().height() ) ) ); |
169 | } | 181 | } |
diff --git a/core/pim/todo/todoeditor.cpp b/core/pim/todo/todoeditor.cpp index e19ab8d..9b8c5cb 100644 --- a/core/pim/todo/todoeditor.cpp +++ b/core/pim/todo/todoeditor.cpp | |||
@@ -1,55 +1,67 @@ | |||
1 | 1 | ||
2 | #include "otaskeditor.h" | 2 | #include "otaskeditor.h" |
3 | #include "todoeditor.h" | 3 | #include "todoeditor.h" |
4 | 4 | ||
5 | using namespace Todo; | 5 | using namespace Todo; |
6 | 6 | ||
7 | Editor::Editor() { | 7 | Editor::Editor() { |
8 | m_accepted = false; | 8 | m_accepted = false; |
9 | m_self = 0l; | ||
9 | } | 10 | } |
10 | Editor::~Editor() { | 11 | Editor::~Editor() { |
12 | delete m_self; | ||
13 | m_self = 0; | ||
11 | } | 14 | } |
12 | OTodo Editor::newTodo( int cur, | 15 | OTodo Editor::newTodo( int cur, |
13 | QWidget* par) { | 16 | QWidget*) { |
14 | 17 | ||
15 | OTaskEditor e( cur); | 18 | OTaskEditor *e = self(); |
19 | e->setCaption( QObject::tr("Enter Task") ); | ||
20 | e->init( cur ); | ||
16 | 21 | ||
17 | 22 | ||
18 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) | 23 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) |
19 | e.showMaximized(); | 24 | e->showMaximized(); |
20 | #endif | 25 | #endif |
21 | 26 | ||
22 | int ret = e.exec(); | 27 | int ret = e->exec(); |
23 | if ( QDialog::Accepted == ret ) { | 28 | if ( QDialog::Accepted == ret ) { |
24 | m_accepted = true; | 29 | m_accepted = true; |
25 | }else | 30 | }else |
26 | m_accepted = false; | 31 | m_accepted = false; |
27 | 32 | ||
28 | OTodo ev = e.todo(); | 33 | OTodo ev = e->todo(); |
29 | qWarning("Todo uid"); | 34 | qWarning("Todo uid"); |
30 | qWarning("Todo %s %d %d", ev.summary().latin1(), ev.progress(), ev.isCompleted() ); | 35 | qWarning("Todo %s %d %d", ev.summary().latin1(), ev.progress(), ev.isCompleted() ); |
31 | ev.setUid(1); | 36 | ev.setUid(1); |
32 | 37 | ||
33 | return ev; | 38 | return ev; |
34 | } | 39 | } |
35 | OTodo Editor::edit( QWidget *wid, | 40 | OTodo Editor::edit( QWidget *wid, |
36 | const OTodo& todo ) { | 41 | const OTodo& todo ) { |
37 | OTaskEditor e( todo ); | 42 | OTaskEditor *e = self(); |
38 | e.setCaption( QObject::tr( "Edit Task" ) ); | 43 | e->init( todo ); |
44 | e->setCaption( QObject::tr( "Edit Task" ) ); | ||
39 | 45 | ||
40 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) | 46 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) |
41 | e.showMaximized(); | 47 | e->showMaximized(); |
42 | #endif | 48 | #endif |
43 | int ret = e.exec(); | 49 | int ret = e->exec(); |
44 | 50 | ||
45 | OTodo ev = e.todo(); | 51 | OTodo ev = e->todo(); |
46 | if ( ret == QDialog::Accepted ) | 52 | if ( ret == QDialog::Accepted ) |
47 | m_accepted = true; | 53 | m_accepted = true; |
48 | else | 54 | else |
49 | m_accepted = false; | 55 | m_accepted = false; |
50 | 56 | ||
51 | return ev; | 57 | return ev; |
52 | } | 58 | } |
53 | bool Editor::accepted()const { | 59 | bool Editor::accepted()const { |
54 | return m_accepted; | 60 | return m_accepted; |
55 | } | 61 | } |
62 | OTaskEditor* Editor::self() { | ||
63 | if (!m_self ) | ||
64 | m_self = new OTaskEditor(0); | ||
65 | |||
66 | return m_self; | ||
67 | } | ||
diff --git a/core/pim/todo/todoeditor.h b/core/pim/todo/todoeditor.h index bbfdcb5..fe30634 100644 --- a/core/pim/todo/todoeditor.h +++ b/core/pim/todo/todoeditor.h | |||
@@ -1,25 +1,29 @@ | |||
1 | #ifndef OPIE_TODO_EDITOR_H | 1 | #ifndef OPIE_TODO_EDITOR_H |
2 | #define OPIE_TODO_EDITOR_H | 2 | #define OPIE_TODO_EDITOR_H |
3 | 3 | ||
4 | #include <opie/otodo.h> | 4 | #include <opie/otodo.h> |
5 | 5 | ||
6 | 6 | ||
7 | class OTaskEditor; | ||
7 | namespace Todo { | 8 | namespace Todo { |
8 | class Editor { | 9 | class Editor { |
9 | public: | 10 | public: |
10 | Editor(); | 11 | Editor(); |
11 | ~Editor(); | 12 | ~Editor(); |
12 | 13 | ||
13 | OTodo newTodo( int currentCatId, | 14 | OTodo newTodo( int currentCatId, |
14 | QWidget* par ); | 15 | QWidget* par ); |
15 | OTodo edit( QWidget* par, | 16 | OTodo edit( QWidget* par, |
16 | const OTodo& ev = OTodo() ); | 17 | const OTodo& ev = OTodo() ); |
17 | 18 | ||
18 | 19 | ||
19 | bool accepted()const; | 20 | bool accepted()const; |
21 | protected: | ||
22 | OTaskEditor* self(); | ||
20 | private: | 23 | private: |
21 | bool m_accepted: 1; | 24 | bool m_accepted: 1; |
25 | OTaskEditor* m_self; | ||
22 | }; | 26 | }; |
23 | }; | 27 | }; |
24 | 28 | ||
25 | #endif | 29 | #endif |