-rw-r--r-- | core/pim/todo/mainwindow.cpp | 7 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.h | 4 | ||||
-rw-r--r-- | core/pim/todo/tableview.cpp | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index ecb4e40..ad7899f 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp | |||
@@ -1,503 +1,508 @@ | |||
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 <qpushbutton.h> | 35 | #include <qpushbutton.h> |
36 | #include <qwidgetstack.h> | 36 | #include <qwidgetstack.h> |
37 | #include <qaction.h> | 37 | #include <qaction.h> |
38 | #include <qtimer.h> | 38 | #include <qtimer.h> |
39 | #include <qvbox.h> | 39 | #include <qvbox.h> |
40 | #include <qlayout.h> | 40 | #include <qlayout.h> |
41 | #include <qlineedit.h> | 41 | #include <qlineedit.h> |
42 | #include <qwhatsthis.h> | 42 | #include <qwhatsthis.h> |
43 | 43 | ||
44 | #include <qpe/applnk.h> | 44 | #include <qpe/applnk.h> |
45 | #include <qpe/config.h> | 45 | #include <qpe/config.h> |
46 | #include <qpe/ir.h> | 46 | #include <qpe/ir.h> |
47 | #include <qpe/resource.h> | 47 | #include <qpe/resource.h> |
48 | #include <qpe/qpemessagebox.h> | 48 | #include <qpe/qpemessagebox.h> |
49 | #include <qpe/alarmserver.h> | 49 | #include <qpe/alarmserver.h> |
50 | #include <qpe/timestring.h> | 50 | #include <qpe/timestring.h> |
51 | #include <qpe/qpeapplication.h> | 51 | #include <qpe/qpeapplication.h> |
52 | 52 | ||
53 | #include <opie/orecur.h> | 53 | #include <opie/orecur.h> |
54 | #include <opie/opimnotifymanager.h> | 54 | #include <opie/opimnotifymanager.h> |
55 | #include <opie/otodoaccessvcal.h> | 55 | #include <opie/otodoaccessvcal.h> |
56 | #include <opie/owidgetstack.h> | ||
56 | 57 | ||
57 | #include <opie/oapplicationfactory.h> | 58 | #include <opie/oapplicationfactory.h> |
58 | 59 | ||
59 | #include "quickeditimpl.h" | 60 | #include "quickeditimpl.h" |
60 | #include "todotemplatemanager.h" | 61 | #include "todotemplatemanager.h" |
61 | #include "templateeditor.h" | 62 | #include "templateeditor.h" |
62 | #include "tableview.h" | 63 | #include "tableview.h" |
63 | 64 | ||
64 | #include "textviewshow.h" | 65 | #include "textviewshow.h" |
65 | #include "todoeditor.h" | 66 | #include "todoeditor.h" |
66 | #include "mainwindow.h" | 67 | #include "mainwindow.h" |
67 | 68 | ||
68 | OPIE_EXPORT_APP( OApplicationFactory<Todo::MainWindow> ) | 69 | OPIE_EXPORT_APP( OApplicationFactory<Todo::MainWindow> ) |
69 | 70 | ||
70 | using namespace Todo; | 71 | using namespace Todo; |
71 | 72 | ||
72 | MainWindow::MainWindow( QWidget* parent, | 73 | MainWindow::MainWindow( QWidget* parent, |
73 | const char* name, WFlags ) | 74 | const char* name, WFlags ) |
74 | : OPimMainWindow( "Todolist", parent, name, WType_TopLevel | WStyle_ContextHelp ) | 75 | : OPimMainWindow( "Todolist", parent, name, WType_TopLevel | WStyle_ContextHelp ) |
75 | { | 76 | { |
77 | if (!name) | ||
78 | setName("todo window"); | ||
79 | |||
76 | m_syncing = false; | 80 | m_syncing = false; |
77 | m_showing = false; | 81 | m_showing = false; |
78 | m_counter = 0; | 82 | m_counter = 0; |
79 | m_tempManager = new TemplateManager(); | 83 | m_tempManager = new TemplateManager(); |
80 | m_tempManager->load(); | 84 | m_tempManager->load(); |
81 | 85 | ||
82 | initUI(); | 86 | initUI(); |
83 | initConfig(); | 87 | initConfig(); |
84 | initViews(); | 88 | initViews(); |
85 | initActions(); | 89 | initActions(); |
86 | initEditor(); | 90 | initEditor(); |
87 | initShow(); | 91 | initShow(); |
88 | initTemplate(); | 92 | initTemplate(); |
89 | 93 | ||
90 | populateTemplates(); | 94 | populateTemplates(); |
91 | raiseCurrentView(); | 95 | raiseCurrentView(); |
92 | QTimer::singleShot(0, this, SLOT(populateCategories() ) ); | 96 | QTimer::singleShot(0, this, SLOT(populateCategories() ) ); |
93 | } | 97 | } |
94 | void MainWindow::initTemplate() { | 98 | void MainWindow::initTemplate() { |
95 | m_curTempEd = new TemplateEditor( this, templateManager() ); | 99 | m_curTempEd = new TemplateEditor( this, templateManager() ); |
96 | } | 100 | } |
97 | void MainWindow::initActions() { | 101 | void MainWindow::initActions() { |
98 | 102 | ||
99 | // Data menu | 103 | // Data menu |
100 | m_edit->insertItem(QWidget::tr("New from template"), m_template, | 104 | m_edit->insertItem(QWidget::tr("New from template"), m_template, |
101 | -1, 0 ); | 105 | -1, 0 ); |
102 | 106 | ||
103 | QAction* a = new QAction( QWidget::tr("New Task" ), Resource::loadPixmap( "new" ), | 107 | QAction* a = new QAction( QWidget::tr("New Task" ), Resource::loadPixmap( "new" ), |
104 | QString::null, 0, this, 0 ); | 108 | QString::null, 0, this, 0 ); |
105 | connect(a, SIGNAL( activated() ), | 109 | connect(a, SIGNAL( activated() ), |
106 | this, SLOT( slotNew() ) ); | 110 | this, SLOT( slotNew() ) ); |
107 | a->setWhatsThis( QWidget::tr( "Click here to create a new task." ) ); | 111 | a->setWhatsThis( QWidget::tr( "Click here to create a new task." ) ); |
108 | a->addTo(m_tool ); | 112 | a->addTo(m_tool ); |
109 | a->addTo(m_edit ); | 113 | a->addTo(m_edit ); |
110 | 114 | ||
111 | a = new QAction( QWidget::tr("Edit Task"), Resource::loadIconSet( "edit" ), | 115 | a = new QAction( QWidget::tr("Edit Task"), Resource::loadIconSet( "edit" ), |
112 | QString::null, 0, this, 0 ); | 116 | QString::null, 0, this, 0 ); |
113 | connect(a, SIGNAL(activated() ), | 117 | connect(a, SIGNAL(activated() ), |
114 | this, SLOT( slotEdit() ) ); | 118 | this, SLOT( slotEdit() ) ); |
115 | a->setWhatsThis( QWidget::tr( "Click here to modify the current task." ) ); | 119 | a->setWhatsThis( QWidget::tr( "Click here to modify the current task." ) ); |
116 | a->addTo( m_tool ); | 120 | a->addTo( m_tool ); |
117 | a->addTo( m_edit ); | 121 | a->addTo( m_edit ); |
118 | m_editAction = a; | 122 | m_editAction = a; |
119 | 123 | ||
120 | a = new QAction( QString::null, QWidget::tr("View Task"), 0, this, 0 ); | 124 | a = new QAction( QString::null, QWidget::tr("View Task"), 0, this, 0 ); |
121 | connect(a, SIGNAL( activated() ), | 125 | connect(a, SIGNAL( activated() ), |
122 | this, SLOT( slotShowDetails() ) ); | 126 | this, SLOT( slotShowDetails() ) ); |
123 | a->addTo( m_edit ); | 127 | a->addTo( m_edit ); |
124 | 128 | ||
125 | m_edit->insertSeparator(); | 129 | m_edit->insertSeparator(); |
126 | 130 | ||
127 | a = new QAction( QWidget::tr("Delete..."), Resource::loadIconSet( "trash" ), | 131 | a = new QAction( QWidget::tr("Delete..."), Resource::loadIconSet( "trash" ), |
128 | QString::null, 0, this, 0 ); | 132 | QString::null, 0, this, 0 ); |
129 | connect(a, SIGNAL(activated() ), | 133 | connect(a, SIGNAL(activated() ), |
130 | this, SLOT(slotDelete() ) ); | 134 | this, SLOT(slotDelete() ) ); |
131 | a->setWhatsThis( QWidget::tr( "Click here to remove the current task." ) ); | 135 | a->setWhatsThis( QWidget::tr( "Click here to remove the current task." ) ); |
132 | a->addTo( m_tool ); | 136 | a->addTo( m_tool ); |
133 | a->addTo( m_edit ); | 137 | a->addTo( m_edit ); |
134 | m_deleteAction = a; | 138 | m_deleteAction = a; |
135 | 139 | ||
136 | a = new QAction( QString::null, QWidget::tr("Delete all..."), 0, this, 0 ); | 140 | a = new QAction( QString::null, QWidget::tr("Delete all..."), 0, this, 0 ); |
137 | connect(a, SIGNAL( activated() ), | 141 | connect(a, SIGNAL( activated() ), |
138 | this, SLOT( slotDeleteAll() ) ); | 142 | this, SLOT( slotDeleteAll() ) ); |
139 | a->addTo(m_edit ); | 143 | a->addTo(m_edit ); |
140 | m_deleteAllAction = a; | 144 | m_deleteAllAction = a; |
141 | 145 | ||
142 | a = new QAction( QString::null, QWidget::tr("Delete completed"), | 146 | a = new QAction( QString::null, QWidget::tr("Delete completed"), |
143 | 0, this, 0 ); | 147 | 0, this, 0 ); |
144 | connect(a, SIGNAL( activated() ), | 148 | connect(a, SIGNAL( activated() ), |
145 | this, SLOT( slotDeleteCompleted() ) ); | 149 | this, SLOT( slotDeleteCompleted() ) ); |
146 | a->addTo(m_edit ); | 150 | a->addTo(m_edit ); |
147 | a->setEnabled( TRUE ); | 151 | a->setEnabled( TRUE ); |
148 | m_deleteCompleteAction = a; | 152 | m_deleteCompleteAction = a; |
149 | 153 | ||
150 | m_edit->insertSeparator(); | 154 | m_edit->insertSeparator(); |
151 | 155 | ||
152 | a = new QAction( QString::null, QWidget::tr("Duplicate"), 0, this, 0 ); | 156 | a = new QAction( QString::null, QWidget::tr("Duplicate"), 0, this, 0 ); |
153 | connect(a, SIGNAL( activated() ), | 157 | connect(a, SIGNAL( activated() ), |
154 | this, SLOT( slotDuplicate() ) ); | 158 | this, SLOT( slotDuplicate() ) ); |
155 | a->addTo(m_edit ); | 159 | a->addTo(m_edit ); |
156 | m_duplicateAction = a; | 160 | m_duplicateAction = a; |
157 | 161 | ||
158 | m_edit->insertSeparator(); | 162 | m_edit->insertSeparator(); |
159 | 163 | ||
160 | if ( Ir::supported() ) { | 164 | if ( Ir::supported() ) { |
161 | a = new QAction( QWidget::tr( "Beam" ), Resource::loadPixmap( "beam" ), QString::null, 0, this, 0 ); | 165 | a = new QAction( QWidget::tr( "Beam" ), Resource::loadPixmap( "beam" ), QString::null, 0, this, 0 ); |
162 | connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); | 166 | connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); |
163 | a->setWhatsThis( QWidget::tr( "Click here to send the current task to another device." ) ); | 167 | a->setWhatsThis( QWidget::tr( "Click here to send the current task to another device." ) ); |
164 | a->addTo( m_edit ); | 168 | a->addTo( m_edit ); |
165 | a->addTo( m_tool ); | 169 | a->addTo( m_tool ); |
166 | } | 170 | } |
167 | 171 | ||
168 | #if 0 | 172 | #if 0 |
169 | // Options menu | 173 | // Options menu |
170 | a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), | 174 | a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), |
171 | QString::null, 0, this, 0 ); | 175 | QString::null, 0, this, 0 ); |
172 | connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); | 176 | connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); |
173 | a->addTo( m_options ); | 177 | a->addTo( m_options ); |
174 | m_findAction = a; | 178 | m_findAction = a; |
175 | 179 | ||
176 | 180 | ||
177 | m_options->insertSeparator(); | 181 | m_options->insertSeparator(); |
178 | #endif | 182 | #endif |
179 | 183 | ||
180 | m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), | 184 | m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), |
181 | 0, this, 0, TRUE ); | 185 | 0, this, 0, TRUE ); |
182 | m_completedAction->addTo( m_options ); | 186 | m_completedAction->addTo( m_options ); |
183 | m_completedAction->setOn( showCompleted() ); | 187 | m_completedAction->setOn( showCompleted() ); |
184 | connect(m_completedAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowCompleted(bool) ) ); | 188 | connect(m_completedAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowCompleted(bool) ) ); |
185 | 189 | ||
186 | a = new QAction( QString::null, QWidget::tr("Show only over-due tasks"), | 190 | a = new QAction( QString::null, QWidget::tr("Show only over-due tasks"), |
187 | 0, this, 0, TRUE ); | 191 | 0, this, 0, TRUE ); |
188 | a->addTo( m_options ); | 192 | a->addTo( m_options ); |
189 | a->setOn( showOverDue() ); | 193 | a->setOn( showOverDue() ); |
190 | connect(a, SIGNAL(toggled(bool)), this, SLOT(slotShowDue(bool) ) ); | 194 | connect(a, SIGNAL(toggled(bool)), this, SLOT(slotShowDue(bool) ) ); |
191 | 195 | ||
192 | m_showDeadLineAction = new QAction( QString::null, QWidget::tr("Show task deadlines"), | 196 | m_showDeadLineAction = new QAction( QString::null, QWidget::tr("Show task deadlines"), |
193 | 0, this, 0, TRUE ); | 197 | 0, this, 0, TRUE ); |
194 | m_showDeadLineAction->addTo( m_options ); | 198 | m_showDeadLineAction->addTo( m_options ); |
195 | m_showDeadLineAction->setOn( showDeadline() ); | 199 | m_showDeadLineAction->setOn( showDeadline() ); |
196 | connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), this, SLOT( slotShowDeadLine( bool ) ) ); | 200 | connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), this, SLOT( slotShowDeadLine( bool ) ) ); |
197 | 201 | ||
198 | m_showQuickTaskAction = new QAction( QString::null, QWidget::tr("Show quick task bar"), | 202 | m_showQuickTaskAction = new QAction( QString::null, QWidget::tr("Show quick task bar"), |
199 | 0, this, 0, TRUE ); | 203 | 0, this, 0, TRUE ); |
200 | m_showQuickTaskAction->addTo( m_options ); | 204 | m_showQuickTaskAction->addTo( m_options ); |
201 | m_showQuickTaskAction->setOn( showQuickTask() ); | 205 | m_showQuickTaskAction->setOn( showQuickTask() ); |
202 | connect(m_showQuickTaskAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowQuickTask(bool) ) ); | 206 | connect(m_showQuickTaskAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowQuickTask(bool) ) ); |
203 | 207 | ||
204 | m_options->insertSeparator(); | 208 | m_options->insertSeparator(); |
205 | 209 | ||
206 | m_bar->insertItem( QWidget::tr("Data") ,m_edit ); | 210 | m_bar->insertItem( QWidget::tr("Data") ,m_edit ); |
207 | m_bar->insertItem( QWidget::tr("Category"), m_catMenu ); | 211 | m_bar->insertItem( QWidget::tr("Category"), m_catMenu ); |
208 | m_bar->insertItem( QWidget::tr("Options"), m_options ); | 212 | m_bar->insertItem( QWidget::tr("Options"), m_options ); |
209 | 213 | ||
210 | m_curQuick = new QuickEditImpl( this, m_quicktask ); | 214 | m_curQuick = new QuickEditImpl( this, m_quicktask ); |
211 | addToolBar( (QPEToolBar *)m_curQuick->widget(), QWidget::tr( "QuickEdit" ), QMainWindow::Top, TRUE ); | 215 | addToolBar( (QPEToolBar *)m_curQuick->widget(), QWidget::tr( "QuickEdit" ), QMainWindow::Top, TRUE ); |
212 | m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); | 216 | m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); |
213 | 217 | ||
214 | } | 218 | } |
215 | /* m_curCat from Config */ | 219 | /* m_curCat from Config */ |
216 | void MainWindow::initConfig() { | 220 | void MainWindow::initConfig() { |
217 | Config config( "todo" ); | 221 | Config config( "todo" ); |
218 | config.setGroup( "View" ); | 222 | config.setGroup( "View" ); |
219 | m_completed = config.readBoolEntry( "ShowComplete", TRUE ); | 223 | m_completed = config.readBoolEntry( "ShowComplete", TRUE ); |
220 | m_curCat = config.readEntry( "Category", QString::null ); | 224 | m_curCat = config.readEntry( "Category", QString::null ); |
221 | m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); | 225 | m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); |
222 | m_overdue = config.readBoolEntry("ShowOverDue", FALSE ); | 226 | m_overdue = config.readBoolEntry("ShowOverDue", FALSE ); |
223 | m_quicktask = config.readBoolEntry("ShowQuickTask", TRUE); | 227 | m_quicktask = config.readBoolEntry("ShowQuickTask", TRUE); |
224 | } | 228 | } |
225 | void MainWindow::initUI() { | 229 | void MainWindow::initUI() { |
226 | 230 | ||
227 | m_stack = new QWidgetStack(this, "main stack"); | 231 | m_stack = new OWidgetStack(this, "main stack"); |
228 | 232 | ||
229 | setCentralWidget( m_stack ); | 233 | setCentralWidget( m_stack ); |
230 | 234 | ||
231 | setToolBarsMovable( FALSE ); | 235 | setToolBarsMovable( FALSE ); |
232 | 236 | ||
233 | QToolBar *menubarholder = new QToolBar( this ); | 237 | QToolBar *menubarholder = new QToolBar( this ); |
234 | menubarholder->setHorizontalStretchable( TRUE ); | 238 | menubarholder->setHorizontalStretchable( TRUE ); |
235 | m_bar = new QMenuBar( menubarholder ); | 239 | m_bar = new QMenuBar( menubarholder ); |
236 | 240 | ||
237 | m_tool = new QToolBar( this ); | 241 | m_tool = new QToolBar( this ); |
238 | 242 | ||
239 | /** QPopupMenu */ | 243 | /** QPopupMenu */ |
240 | m_edit = new QPopupMenu( this ); | 244 | m_edit = new QPopupMenu( this ); |
241 | m_options = new QPopupMenu( this ); | 245 | m_options = new QPopupMenu( this ); |
242 | m_catMenu = new QPopupMenu( this ); | 246 | m_catMenu = new QPopupMenu( this ); |
243 | m_template = new QPopupMenu( this ); | 247 | m_template = new QPopupMenu( this ); |
244 | 248 | ||
245 | m_catMenu->setCheckable( TRUE ); | 249 | m_catMenu->setCheckable( TRUE ); |
246 | m_template->setCheckable( TRUE ); | 250 | m_template->setCheckable( TRUE ); |
247 | 251 | ||
248 | connect(m_catMenu, SIGNAL(activated(int) ), | 252 | connect(m_catMenu, SIGNAL(activated(int) ), |
249 | this, SLOT(setCategory(int) ) ); | 253 | this, SLOT(setCategory(int) ) ); |
250 | connect(m_template, SIGNAL(activated(int) ), | 254 | connect(m_template, SIGNAL(activated(int) ), |
251 | this, SLOT(slotNewFromTemplate(int) ) ); | 255 | this, SLOT(slotNewFromTemplate(int) ) ); |
252 | } | 256 | } |
253 | void MainWindow::initViews() { | 257 | void MainWindow::initViews() { |
254 | 258 | ||
255 | TableView* tableView = new TableView( this, m_stack ); | 259 | TableView* tableView = new TableView( this, m_stack ); |
256 | 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." ) ); | 260 | 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." ) ); |
257 | m_stack->addWidget( tableView, m_counter++ ); | 261 | m_stack->addWidget( tableView, m_counter++ ); |
258 | m_views.append( tableView ); | 262 | m_views.append( tableView ); |
259 | m_curView = tableView; | 263 | m_curView = tableView; |
260 | connectBase( tableView ); | 264 | connectBase( tableView ); |
261 | /* add QString type + QString configname to | 265 | /* add QString type + QString configname to |
262 | * the View menu | 266 | * the View menu |
263 | * and subdirs for multiple views | 267 | * and subdirs for multiple views |
264 | */ | 268 | */ |
265 | } | 269 | } |
266 | void MainWindow::initEditor() { | 270 | void MainWindow::initEditor() { |
267 | m_curEdit = new Editor(); | 271 | m_curEdit = new Editor(); |
268 | } | 272 | } |
269 | void MainWindow::initShow() { | 273 | void MainWindow::initShow() { |
270 | m_curShow = new TextViewShow(this, this); | 274 | m_curShow = new TextViewShow(this, this); |
271 | m_stack->addWidget( m_curShow->widget() , m_counter++ ); | 275 | m_stack->addWidget( m_curShow->widget() , m_counter++ ); |
272 | } | 276 | } |
273 | MainWindow::~MainWindow() { | 277 | MainWindow::~MainWindow() { |
274 | delete templateManager(); | 278 | delete templateManager(); |
275 | } | 279 | } |
276 | void MainWindow::connectBase( ViewBase* ) { | 280 | void MainWindow::connectBase( ViewBase* ) { |
277 | // once templates and signals mix we'll use it again | 281 | // once templates and signals mix we'll use it again |
278 | } | 282 | } |
279 | QPopupMenu* MainWindow::contextMenu( int , bool recur ) { | 283 | QPopupMenu* MainWindow::contextMenu( int , bool recur ) { |
280 | QPopupMenu* menu = new QPopupMenu(); | 284 | QPopupMenu* menu = new QPopupMenu(); |
281 | 285 | ||
282 | m_editAction->addTo( menu ); | 286 | m_editAction->addTo( menu ); |
283 | m_deleteAction->addTo( menu ); | 287 | m_deleteAction->addTo( menu ); |
284 | m_duplicateAction->addTo( menu ); | 288 | m_duplicateAction->addTo( menu ); |
285 | 289 | ||
286 | menu->insertSeparator(); | 290 | menu->insertSeparator(); |
287 | 291 | ||
288 | /* | 292 | /* |
289 | * if this event recurs we allow | 293 | * if this event recurs we allow |
290 | * to detach it. | 294 | * to detach it. |
291 | * remove all | 295 | * remove all |
292 | */ | 296 | */ |
293 | if ( recur ) { | 297 | if ( recur ) { |
294 | ; // FIXME | 298 | ; // FIXME |
295 | } | 299 | } |
296 | 300 | ||
297 | return menu; | 301 | return menu; |
298 | } | 302 | } |
299 | QPopupMenu* MainWindow::options() { | 303 | QPopupMenu* MainWindow::options() { |
300 | qWarning("Options"); | 304 | qWarning("Options"); |
301 | return m_options; | 305 | return m_options; |
302 | } | 306 | } |
303 | QPopupMenu* MainWindow::edit() { | 307 | QPopupMenu* MainWindow::edit() { |
304 | return m_edit; | 308 | return m_edit; |
305 | } | 309 | } |
306 | QToolBar* MainWindow::toolbar() { | 310 | QToolBar* MainWindow::toolbar() { |
307 | return m_tool; | 311 | return m_tool; |
308 | } | 312 | } |
309 | OTodoAccess::List MainWindow::list()const { | 313 | OTodoAccess::List MainWindow::list()const { |
310 | return m_todoMgr.list(); | 314 | return m_todoMgr.list(); |
311 | } | 315 | } |
312 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) { | 316 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) { |
313 | int cat = 0; | 317 | int cat = 0; |
314 | if ( m_curCat != QWidget::tr("All Categories") ) | 318 | if ( m_curCat != QWidget::tr("All Categories") ) |
315 | cat = currentCatId(); | 319 | cat = currentCatId(); |
316 | if ( m_curCat == QWidget::tr("Unfiled") ) | 320 | if ( m_curCat == QWidget::tr("Unfiled") ) |
317 | cat = -1; | 321 | cat = -1; |
318 | 322 | ||
319 | qWarning(" Category %d %s", cat, m_curCat.latin1() ); | 323 | qWarning(" Category %d %s", cat, m_curCat.latin1() ); |
320 | 324 | ||
321 | int filter = 1; | 325 | int filter = 1; |
322 | 326 | ||
323 | if (!m_completed ) | 327 | if (!m_completed ) |
324 | filter |= 4; | 328 | filter |= 4; |
325 | if (m_overdue) | 329 | if (m_overdue) |
326 | filter |= 2; | 330 | filter |= 2; |
327 | 331 | ||
328 | return m_todoMgr.sorted( asc, sortOrder, filter, cat ); | 332 | return m_todoMgr.sorted( asc, sortOrder, filter, cat ); |
329 | } | 333 | } |
330 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) { | 334 | OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) { |
331 | int cat = 0; | 335 | int cat = 0; |
332 | if ( m_curCat != QWidget::tr("All Categories") ) | 336 | if ( m_curCat != QWidget::tr("All Categories") ) |
333 | cat = currentCatId(); | 337 | cat = currentCatId(); |
334 | 338 | ||
335 | if ( m_curCat == QWidget::tr("Unfiled") ) | 339 | if ( m_curCat == QWidget::tr("Unfiled") ) |
336 | cat = -1; | 340 | cat = -1; |
337 | 341 | ||
338 | return m_todoMgr.sorted(asc, sortOrder, addFilter, cat ); | 342 | return m_todoMgr.sorted(asc, sortOrder, addFilter, cat ); |
339 | } | 343 | } |
340 | OTodo MainWindow::event( int uid ) { | 344 | OTodo MainWindow::event( int uid ) { |
341 | return m_todoMgr.event( uid ); | 345 | return m_todoMgr.event( uid ); |
342 | } | 346 | } |
343 | bool MainWindow::isSyncing()const { | 347 | bool MainWindow::isSyncing()const { |
344 | return m_syncing; | 348 | return m_syncing; |
345 | } | 349 | } |
346 | TemplateManager* MainWindow::templateManager() { | 350 | TemplateManager* MainWindow::templateManager() { |
347 | return m_tempManager; | 351 | return m_tempManager; |
348 | } | 352 | } |
349 | Editor* MainWindow::currentEditor() { | 353 | Editor* MainWindow::currentEditor() { |
350 | return m_curEdit; | 354 | return m_curEdit; |
351 | } | 355 | } |
352 | TodoShow* MainWindow::currentShow() { | 356 | TodoShow* MainWindow::currentShow() { |
353 | return m_curShow; | 357 | return m_curShow; |
354 | } | 358 | } |
355 | void MainWindow::slotReload() { | 359 | void MainWindow::slotReload() { |
356 | m_syncing = FALSE; | 360 | m_syncing = FALSE; |
357 | m_todoMgr.reload(); | 361 | m_todoMgr.reload(); |
358 | currentView()->updateView( ); | 362 | currentView()->updateView( ); |
359 | raiseCurrentView(); | 363 | raiseCurrentView(); |
360 | } | 364 | } |
361 | void MainWindow::closeEvent( QCloseEvent* e ) { | 365 | void MainWindow::closeEvent( QCloseEvent* e ) { |
362 | if (m_stack->visibleWidget() == currentShow()->widget() ) { | 366 | if (m_stack->visibleWidget() == currentShow()->widget() ) { |
363 | m_showing = false; | 367 | m_showing = false; |
364 | raiseCurrentView(); | 368 | raiseCurrentView(); |
365 | e->ignore(); | 369 | e->ignore(); |
366 | return; | 370 | return; |
367 | } | 371 | } |
368 | /* | 372 | /* |
369 | * we should have flushed and now we're still saving | 373 | * we should have flushed and now we're still saving |
370 | * so there is no need to flush | 374 | * so there is no need to flush |
371 | */ | 375 | */ |
372 | if (m_syncing ) { | 376 | if (m_syncing ) { |
373 | e->accept(); | 377 | e->accept(); |
374 | return; | 378 | return; |
375 | } | 379 | } |
376 | bool quit = false; | 380 | bool quit = false; |
377 | if ( m_todoMgr.saveAll() ){ | 381 | if ( m_todoMgr.saveAll() ){ |
378 | qWarning("saved"); | 382 | qWarning("saved"); |
379 | quit = true; | 383 | quit = true; |
380 | }else { | 384 | }else { |
381 | if ( QMessageBox::critical( this, QWidget::tr("Out of space"), | 385 | if ( QMessageBox::critical( this, QWidget::tr("Out of space"), |
382 | QWidget::tr("Todo was unable\n" | 386 | QWidget::tr("Todo was unable\n" |
383 | "to save your changes.\n" | 387 | "to save your changes.\n" |
384 | "Free up some space\n" | 388 | "Free up some space\n" |
385 | "and try again.\n" | 389 | "and try again.\n" |
386 | "\nQuit Anyway?"), | 390 | "\nQuit Anyway?"), |
387 | QMessageBox::Yes|QMessageBox::Escape, | 391 | QMessageBox::Yes|QMessageBox::Escape, |
388 | QMessageBox::No|QMessageBox::Default) | 392 | QMessageBox::No|QMessageBox::Default) |
389 | != QMessageBox::No ) { | 393 | != QMessageBox::No ) { |
390 | e->accept(); | 394 | e->accept(); |
391 | quit = true; | 395 | quit = true; |
392 | }else | 396 | }else |
393 | e->ignore(); | 397 | e->ignore(); |
394 | 398 | ||
395 | } | 399 | } |
396 | 400 | ||
397 | if (quit ) { | 401 | if (quit ) { |
398 | Config config( "todo" ); | 402 | Config config( "todo" ); |
399 | config.setGroup( "View" ); | 403 | config.setGroup( "View" ); |
400 | config.writeEntry( "ShowComplete", showCompleted() ); | 404 | config.writeEntry( "ShowComplete", showCompleted() ); |
401 | config.writeEntry( "Category", currentCategory() ); | 405 | config.writeEntry( "Category", currentCategory() ); |
402 | config.writeEntry( "ShowDeadLine", showDeadline()); | 406 | config.writeEntry( "ShowDeadLine", showDeadline()); |
403 | config.writeEntry( "ShowOverDue", showOverDue() ); | 407 | config.writeEntry( "ShowOverDue", showOverDue() ); |
404 | config.writeEntry( "ShowQuickTask", showQuickTask() ); | 408 | config.writeEntry( "ShowQuickTask", showQuickTask() ); |
405 | /* save templates */ | 409 | /* save templates */ |
406 | templateManager()->save(); | 410 | templateManager()->save(); |
407 | e->accept(); | 411 | e->accept(); |
412 | qApp->quit(); | ||
408 | } | 413 | } |
409 | } | 414 | } |
410 | void MainWindow::populateTemplates() { | 415 | void MainWindow::populateTemplates() { |
411 | m_template->clear(); | 416 | m_template->clear(); |
412 | QStringList list = templateManager()->templates(); | 417 | QStringList list = templateManager()->templates(); |
413 | QStringList::Iterator it; | 418 | QStringList::Iterator it; |
414 | for ( it = list.begin(); it != list.end(); ++it ) { | 419 | for ( it = list.begin(); it != list.end(); ++it ) { |
415 | m_template->insertItem( (*it) ); | 420 | m_template->insertItem( (*it) ); |
416 | } | 421 | } |
417 | } | 422 | } |
418 | /* | 423 | /* |
419 | * slotNewFromTemplate | 424 | * slotNewFromTemplate |
420 | * We use the edit widget to do | 425 | * We use the edit widget to do |
421 | * the config but we setUid(1) | 426 | * the config but we setUid(1) |
422 | * to get a new uid | 427 | * to get a new uid |
423 | */ | 428 | */ |
424 | /* | 429 | /* |
425 | * first we get the name of the template | 430 | * first we get the name of the template |
426 | * then we will use the TemplateManager | 431 | * then we will use the TemplateManager |
427 | */ | 432 | */ |
428 | void MainWindow::slotNewFromTemplate( int id ) { | 433 | void MainWindow::slotNewFromTemplate( int id ) { |
429 | QString name = m_template->text( id ); | 434 | QString name = m_template->text( id ); |
430 | 435 | ||
431 | OTodo event = templateManager()->templateEvent( name ); | 436 | OTodo event = templateManager()->templateEvent( name ); |
432 | event = currentEditor()->edit(this, | 437 | event = currentEditor()->edit(this, |
433 | event ); | 438 | event ); |
434 | 439 | ||
435 | if ( currentEditor()->accepted() ) { | 440 | if ( currentEditor()->accepted() ) { |
436 | /* assign new todo */ | 441 | /* assign new todo */ |
437 | event.setUid( 1 ); | 442 | event.setUid( 1 ); |
438 | handleAlarms( OTodo(), event ); | 443 | handleAlarms( OTodo(), event ); |
439 | m_todoMgr.add( event ); | 444 | m_todoMgr.add( event ); |
440 | currentView()->addEvent( event ); | 445 | currentView()->addEvent( event ); |
441 | 446 | ||
442 | populateCategories(); | 447 | populateCategories(); |
443 | } | 448 | } |
444 | raiseCurrentView(); | 449 | raiseCurrentView(); |
445 | } | 450 | } |
446 | void MainWindow::slotNew() { | 451 | void MainWindow::slotNew() { |
447 | create(); | 452 | create(); |
448 | } | 453 | } |
449 | void MainWindow::slotDuplicate() { | 454 | void MainWindow::slotDuplicate() { |
450 | if(m_syncing) { | 455 | if(m_syncing) { |
451 | QMessageBox::warning(this, QWidget::tr("Todo"), | 456 | QMessageBox::warning(this, QWidget::tr("Todo"), |
452 | QWidget::tr("Data can not be edited, currently syncing")); | 457 | QWidget::tr("Data can not be edited, currently syncing")); |
453 | return; | 458 | return; |
454 | } | 459 | } |
455 | OTodo ev = m_todoMgr.event( currentView()->current() ); | 460 | OTodo ev = m_todoMgr.event( currentView()->current() ); |
456 | /* let's generate a new uid */ | 461 | /* let's generate a new uid */ |
457 | ev.setUid(1); | 462 | ev.setUid(1); |
458 | m_todoMgr.add( ev ); | 463 | m_todoMgr.add( ev ); |
459 | 464 | ||
460 | currentView()->addEvent( ev ); | 465 | currentView()->addEvent( ev ); |
461 | raiseCurrentView(); | 466 | raiseCurrentView(); |
462 | } | 467 | } |
463 | void MainWindow::slotDelete() { | 468 | void MainWindow::slotDelete() { |
464 | if (!currentView()->current() ) | 469 | if (!currentView()->current() ) |
465 | return; | 470 | return; |
466 | 471 | ||
467 | if(m_syncing) { | 472 | if(m_syncing) { |
468 | QMessageBox::warning(this, QWidget::tr("Todo"), | 473 | QMessageBox::warning(this, QWidget::tr("Todo"), |
469 | QWidget::tr("Data can not be edited, currently syncing")); | 474 | QWidget::tr("Data can not be edited, currently syncing")); |
470 | return; | 475 | return; |
471 | } | 476 | } |
472 | QString strName = currentView()->currentRepresentation(); | 477 | QString strName = currentView()->currentRepresentation(); |
473 | if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), strName ) ) | 478 | if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), strName ) ) |
474 | return; | 479 | return; |
475 | 480 | ||
476 | handleAlarms( m_todoMgr.event( currentView()->current() ), OTodo() ); | 481 | handleAlarms( m_todoMgr.event( currentView()->current() ), OTodo() ); |
477 | m_todoMgr.remove( currentView()->current() ); | 482 | m_todoMgr.remove( currentView()->current() ); |
478 | currentView()->removeEvent( currentView()->current() ); | 483 | currentView()->removeEvent( currentView()->current() ); |
479 | raiseCurrentView(); | 484 | raiseCurrentView(); |
480 | } | 485 | } |
481 | void MainWindow::slotDelete(int uid ) { | 486 | void MainWindow::slotDelete(int uid ) { |
482 | if( uid == 0 ) return; | 487 | if( uid == 0 ) return; |
483 | if(m_syncing) { | 488 | if(m_syncing) { |
484 | QMessageBox::warning(this, QWidget::tr("Todo"), | 489 | QMessageBox::warning(this, QWidget::tr("Todo"), |
485 | QWidget::tr("Data can not be edited, currently syncing")); | 490 | QWidget::tr("Data can not be edited, currently syncing")); |
486 | return; | 491 | return; |
487 | } | 492 | } |
488 | OTodo to = m_todoMgr.event(uid); | 493 | OTodo to = m_todoMgr.event(uid); |
489 | if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), to.toShortText() ) ) | 494 | if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), to.toShortText() ) ) |
490 | return; | 495 | return; |
491 | 496 | ||
492 | handleAlarms(to, OTodo() ); | 497 | handleAlarms(to, OTodo() ); |
493 | m_todoMgr.remove( to.uid() ); | 498 | m_todoMgr.remove( to.uid() ); |
494 | currentView()->removeEvent( to.uid() ); | 499 | currentView()->removeEvent( to.uid() ); |
495 | raiseCurrentView(); | 500 | raiseCurrentView(); |
496 | } | 501 | } |
497 | void MainWindow::slotDeleteAll() { | 502 | void MainWindow::slotDeleteAll() { |
498 | if(m_syncing) { | 503 | if(m_syncing) { |
499 | QMessageBox::warning(this, QWidget::tr("Todo"), | 504 | QMessageBox::warning(this, QWidget::tr("Todo"), |
500 | QWidget::tr("Data can not be edited, currently syncing")); | 505 | QWidget::tr("Data can not be edited, currently syncing")); |
501 | return; | 506 | return; |
502 | } | 507 | } |
503 | 508 | ||
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h index bd341c2..fd0e1bd 100644 --- a/core/pim/todo/mainwindow.h +++ b/core/pim/todo/mainwindow.h | |||
@@ -1,211 +1,211 @@ | |||
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 | ||
43 | class QPopupMenu; | 43 | class QPopupMenu; |
44 | class QMenuBar; | 44 | class QMenuBar; |
45 | class QToolBar; | 45 | class QToolBar; |
46 | class QAction; | 46 | class QAction; |
47 | class QWidgetStack; | 47 | class OWidgetStack; |
48 | class Ir; | 48 | class Ir; |
49 | class QVBox; | 49 | class QVBox; |
50 | class QLineEdit; | 50 | class QLineEdit; |
51 | 51 | ||
52 | namespace Todo { | 52 | namespace 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 | /* OApplicationFactory application Name */ | 65 | /* OApplicationFactory application Name */ |
66 | static QString appName() { return QString::fromLatin1("todolist"); } | 66 | static QString appName() { return QString::fromLatin1("todolist"); } |
67 | 67 | ||
68 | MainWindow( QWidget *parent = 0, | 68 | MainWindow( QWidget *parent = 0, |
69 | const char* name = 0, WFlags fl = 0 ); | 69 | const char* name = 0, WFlags fl = 0 ); |
70 | ~MainWindow(); | 70 | ~MainWindow(); |
71 | 71 | ||
72 | /** return a context menu for an OTodo */ | 72 | /** return a context menu for an OTodo */ |
73 | QPopupMenu* contextMenu(int uid, bool doesRecur = FALSE ); | 73 | QPopupMenu* contextMenu(int uid, bool doesRecur = FALSE ); |
74 | QPopupMenu* options(); | 74 | QPopupMenu* options(); |
75 | QPopupMenu* edit(); | 75 | QPopupMenu* edit(); |
76 | QToolBar* toolbar(); | 76 | QToolBar* toolbar(); |
77 | 77 | ||
78 | 78 | ||
79 | void updateList(); | 79 | void updateList(); |
80 | OTodoAccess::List list()const; | 80 | OTodoAccess::List list()const; |
81 | OTodoAccess::List sorted( bool asc, int sortOrder ); | 81 | OTodoAccess::List sorted( bool asc, int sortOrder ); |
82 | OTodoAccess::List sorted( bool asc, int sortOrder, int addFilter ); | 82 | OTodoAccess::List sorted( bool asc, int sortOrder, int addFilter ); |
83 | 83 | ||
84 | OTodo event(int uid ); | 84 | OTodo event(int uid ); |
85 | 85 | ||
86 | bool isSyncing()const; | 86 | bool isSyncing()const; |
87 | bool showCompleted()const; | 87 | bool showCompleted()const; |
88 | bool showDeadline()const; | 88 | bool showDeadline()const; |
89 | bool showOverDue()const; | 89 | bool showOverDue()const; |
90 | bool showQuickTask()const; | 90 | bool showQuickTask()const; |
91 | QString currentCategory()const; | 91 | QString currentCategory()const; |
92 | int currentCatId(); | 92 | int currentCatId(); |
93 | TemplateManager* templateManager(); | 93 | TemplateManager* templateManager(); |
94 | QuickEditBase* quickEditor(); | 94 | QuickEditBase* quickEditor(); |
95 | 95 | ||
96 | void updateTodo( const OTodo& ); | 96 | void updateTodo( const OTodo& ); |
97 | void populateTemplates(); | 97 | void populateTemplates(); |
98 | Editor* currentEditor(); | 98 | Editor* currentEditor(); |
99 | void setReadAhead(uint count ); | 99 | void setReadAhead(uint count ); |
100 | private slots: | 100 | private slots: |
101 | void slotQuickEntered(); | 101 | void slotQuickEntered(); |
102 | void populateCategories(); | 102 | void populateCategories(); |
103 | void slotReload(); | 103 | void slotReload(); |
104 | void slotFlush(); | 104 | void slotFlush(); |
105 | 105 | ||
106 | protected: | 106 | protected: |
107 | void closeEvent( QCloseEvent* e ); | 107 | void closeEvent( QCloseEvent* e ); |
108 | 108 | ||
109 | private: | 109 | private: |
110 | /* handle setting and removing alarms */ | 110 | /* handle setting and removing alarms */ |
111 | void handleAlarms( const OTodo& oldTodo, const OTodo& newTodo ); | 111 | void handleAlarms( const OTodo& oldTodo, const OTodo& newTodo ); |
112 | void receiveFile( const QString& filename ); | 112 | void receiveFile( const QString& filename ); |
113 | void connectBase( ViewBase* ); | 113 | void connectBase( ViewBase* ); |
114 | void initUI(); | 114 | void initUI(); |
115 | void initActions(); | 115 | void initActions(); |
116 | void initConfig(); | 116 | void initConfig(); |
117 | void initViews(); | 117 | void initViews(); |
118 | void initEditor(); | 118 | void initEditor(); |
119 | void initShow(); | 119 | void initShow(); |
120 | void initTemplate(); | 120 | void initTemplate(); |
121 | void raiseCurrentView(); | 121 | void raiseCurrentView(); |
122 | ViewBase* currentView(); | 122 | ViewBase* currentView(); |
123 | ViewBase* m_curView; | 123 | ViewBase* m_curView; |
124 | bool m_showing : 1; // used to see if we show a todo in the cases we shouldn't change the table | 124 | bool m_showing : 1; // used to see if we show a todo in the cases we shouldn't change the table |
125 | QuickEditBase* m_curQuick; | 125 | QuickEditBase* m_curQuick; |
126 | Editor* m_curEdit; | 126 | Editor* m_curEdit; |
127 | TodoShow* currentShow(); | 127 | TodoShow* currentShow(); |
128 | TodoShow* m_curShow; | 128 | TodoShow* m_curShow; |
129 | TemplateEditor* currentTemplateEditor(); | 129 | TemplateEditor* currentTemplateEditor(); |
130 | TemplateEditor* m_curTempEd; | 130 | TemplateEditor* m_curTempEd; |
131 | 131 | ||
132 | QMenuBar* m_bar; | 132 | QMenuBar* m_bar; |
133 | QToolBar* m_tool; | 133 | QToolBar* m_tool; |
134 | QAction* m_editAction, | 134 | QAction* m_editAction, |
135 | *m_deleteAction, | 135 | *m_deleteAction, |
136 | *m_findAction, | 136 | *m_findAction, |
137 | *m_completedAction, | 137 | *m_completedAction, |
138 | *m_showDeadLineAction, | 138 | *m_showDeadLineAction, |
139 | *m_deleteAllAction, | 139 | *m_deleteAllAction, |
140 | *m_deleteCompleteAction, | 140 | *m_deleteCompleteAction, |
141 | *m_duplicateAction, | 141 | *m_duplicateAction, |
142 | *m_showOverDueAction, | 142 | *m_showOverDueAction, |
143 | *m_showQuickTaskAction, | 143 | *m_showQuickTaskAction, |
144 | *m_effectiveAction; | 144 | *m_effectiveAction; |
145 | QWidgetStack *m_stack; | 145 | OWidgetStack *m_stack; |
146 | QPopupMenu* m_catMenu, | 146 | QPopupMenu* m_catMenu, |
147 | *m_edit, | 147 | *m_edit, |
148 | *m_options, | 148 | *m_options, |
149 | *m_template; | 149 | *m_template; |
150 | 150 | ||
151 | bool m_syncing:1; | 151 | bool m_syncing:1; |
152 | bool m_deadline:1; | 152 | bool m_deadline:1; |
153 | bool m_completed:1; | 153 | bool m_completed:1; |
154 | bool m_overdue:1; | 154 | bool m_overdue:1; |
155 | bool m_quicktask:1; | 155 | bool m_quicktask:1; |
156 | TodoManager m_todoMgr; | 156 | TodoManager m_todoMgr; |
157 | QString m_curCat; | 157 | QString m_curCat; |
158 | QList<ViewBase> m_views; | 158 | QList<ViewBase> m_views; |
159 | uint m_counter; | 159 | uint m_counter; |
160 | TemplateManager* m_tempManager; | 160 | TemplateManager* m_tempManager; |
161 | 161 | ||
162 | 162 | ||
163 | private slots: | 163 | private slots: |
164 | void slotShow(int); | 164 | void slotShow(int); |
165 | void slotEdit(int); | 165 | void slotEdit(int); |
166 | void slotUpdate3( QWidget* ); | 166 | void slotUpdate3( QWidget* ); |
167 | void slotComplete( int uid ); | 167 | void slotComplete( int uid ); |
168 | void slotComplete( const OTodo& ev ); | 168 | void slotComplete( const OTodo& ev ); |
169 | void slotNewFromTemplate(int id ); | 169 | void slotNewFromTemplate(int id ); |
170 | void slotNew(); | 170 | void slotNew(); |
171 | void slotDuplicate(); | 171 | void slotDuplicate(); |
172 | 172 | ||
173 | void slotDelete(); | 173 | void slotDelete(); |
174 | void slotDelete(int uid ); | 174 | void slotDelete(int uid ); |
175 | void slotDeleteAll(); | 175 | void slotDeleteAll(); |
176 | void slotDeleteCompleted(); | 176 | void slotDeleteCompleted(); |
177 | 177 | ||
178 | void slotEdit(); | 178 | void slotEdit(); |
179 | void slotFind(); | 179 | void slotFind(); |
180 | 180 | ||
181 | void setCategory( int ); | 181 | void setCategory( int ); |
182 | 182 | ||
183 | void slotShowDeadLine( bool ); | 183 | void slotShowDeadLine( bool ); |
184 | void slotShowCompleted( bool ); | 184 | void slotShowCompleted( bool ); |
185 | void slotShowQuickTask( bool ); | 185 | void slotShowQuickTask( bool ); |
186 | 186 | ||
187 | void setDocument( const QString& ); | 187 | void setDocument( const QString& ); |
188 | 188 | ||
189 | 189 | ||
190 | void slotBeam(); | 190 | void slotBeam(); |
191 | void beamDone( Ir* ); | 191 | void beamDone( Ir* ); |
192 | void slotShowDetails(); | 192 | void slotShowDetails(); |
193 | void slotShowNext(); | 193 | void slotShowNext(); |
194 | void slotShowPrev(); | 194 | void slotShowPrev(); |
195 | void slotShowDue( bool ); | 195 | void slotShowDue( bool ); |
196 | void slotReturnFromView(); // for TodoShow... | 196 | void slotReturnFromView(); // for TodoShow... |
197 | /* reimplementation from opimmainwindow */ | 197 | /* reimplementation from opimmainwindow */ |
198 | protected slots: | 198 | protected slots: |
199 | void flush(); | 199 | void flush(); |
200 | void reload(); | 200 | void reload(); |
201 | int create(); | 201 | int create(); |
202 | bool remove( int uid ); | 202 | bool remove( int uid ); |
203 | void beam(int uid); | 203 | void beam(int uid); |
204 | void show( int uid ); | 204 | void show( int uid ); |
205 | void edit( int uid ); | 205 | void edit( int uid ); |
206 | void add( const OPimRecord& ); | 206 | void add( const OPimRecord& ); |
207 | void doAlarm( const QDateTime& dt, int uid ); | 207 | void doAlarm( const QDateTime& dt, int uid ); |
208 | }; | 208 | }; |
209 | } | 209 | } |
210 | 210 | ||
211 | #endif | 211 | #endif |
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index 2e252d5..def0efb 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp | |||
@@ -1,183 +1,184 @@ | |||
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 <zecke> | 3 | .=l. Copyright (c) 2002 <zecke> |
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 | #include <stdlib.h> | 28 | #include <stdlib.h> |
29 | #include <cmath> | 29 | #include <cmath> |
30 | #include <cctype> | 30 | #include <cctype> |
31 | 31 | ||
32 | #include <qcombobox.h> | 32 | #include <qcombobox.h> |
33 | #include <qlineedit.h> | 33 | #include <qlineedit.h> |
34 | #include <qtimer.h> | 34 | #include <qtimer.h> |
35 | #include <qpopupmenu.h> | 35 | #include <qpopupmenu.h> |
36 | 36 | ||
37 | #include <qpe/config.h> | 37 | #include <qpe/config.h> |
38 | #include <qpe/resource.h> | 38 | #include <qpe/resource.h> |
39 | 39 | ||
40 | #include <opie/orecur.h> | 40 | #include <opie/orecur.h> |
41 | 41 | ||
42 | #include "mainwindow.h" | 42 | #include "mainwindow.h" |
43 | //#include "tableitems.h" | 43 | //#include "tableitems.h" |
44 | #include "tableview.h" | 44 | #include "tableview.h" |
45 | 45 | ||
46 | using namespace Todo; | 46 | using namespace Todo; |
47 | 47 | ||
48 | namespace { | 48 | namespace { |
49 | static const int BoxSize = 14; | 49 | static const int BoxSize = 14; |
50 | static const int RowHeight = 20; | 50 | static const int RowHeight = 20; |
51 | } | 51 | } |
52 | 52 | ||
53 | TableView::EditorWidget::EditorWidget() : m_wid(0l), m_row(-1), m_col(-1) { | 53 | TableView::EditorWidget::EditorWidget() : m_wid(0l), m_row(-1), m_col(-1) { |
54 | } | 54 | } |
55 | void TableView::EditorWidget::setCellWidget(QWidget* wid, int row, int col ) { | 55 | void TableView::EditorWidget::setCellWidget(QWidget* wid, int row, int col ) { |
56 | m_wid = wid; | 56 | m_wid = wid; |
57 | m_row = row; | 57 | m_row = row; |
58 | m_col = col; | 58 | m_col = col; |
59 | } | 59 | } |
60 | void TableView::EditorWidget::releaseCellWidget() { | 60 | void TableView::EditorWidget::releaseCellWidget() { |
61 | m_wid = 0; | 61 | m_wid = 0; |
62 | m_row = m_col = -1; | 62 | m_row = m_col = -1; |
63 | } | 63 | } |
64 | QWidget* TableView::EditorWidget::cellWidget()const { | 64 | QWidget* TableView::EditorWidget::cellWidget()const { |
65 | return m_wid; | 65 | return m_wid; |
66 | } | 66 | } |
67 | int TableView::EditorWidget::cellRow()const { | 67 | int TableView::EditorWidget::cellRow()const { |
68 | return m_row; | 68 | return m_row; |
69 | } | 69 | } |
70 | int TableView::EditorWidget::cellCol()const { | 70 | int TableView::EditorWidget::cellCol()const { |
71 | return m_col; | 71 | return m_col; |
72 | } | 72 | } |
73 | 73 | ||
74 | 74 | ||
75 | void TableView::initConfig() { | 75 | void TableView::initConfig() { |
76 | Config config( "todo" ); | 76 | Config config( "todo" ); |
77 | config.setGroup( "Options" ); | 77 | config.setGroup( "Options" ); |
78 | m_completeStrokeWidth = config.readNumEntry( "CompleteStrokeWidth", 8 ); | 78 | m_completeStrokeWidth = config.readNumEntry( "CompleteStrokeWidth", 8 ); |
79 | for (int i = 0; i < numCols(); i++ ) { | 79 | for (int i = 0; i < numCols(); i++ ) { |
80 | int width = config.readNumEntry("Width"+QString::number(i), -1 ); | 80 | int width = config.readNumEntry("Width"+QString::number(i), -1 ); |
81 | setColumnWidth(i, width == -1 ? columnWidth(i) : width ); | 81 | setColumnWidth(i, width == -1 ? columnWidth(i) : width ); |
82 | } | 82 | } |
83 | } | 83 | } |
84 | 84 | ||
85 | TableView::TableView( MainWindow* window, QWidget* wid ) | 85 | TableView::TableView( MainWindow* window, QWidget* wid ) |
86 | : QTable( wid ), TodoView( window ) { | 86 | : QTable( wid ), TodoView( window ) { |
87 | 87 | ||
88 | setName("TableView"); | ||
88 | // Load icons | 89 | // Load icons |
89 | // TODO - probably should be done globally somewhere else, | 90 | // TODO - probably should be done globally somewhere else, |
90 | // see also quickeditimpl.cpp/h, taskeditoroverview.cpp/h | 91 | // see also quickeditimpl.cpp/h, taskeditoroverview.cpp/h |
91 | m_pic_completed = Resource::loadPixmap( "todo/completed" ); | 92 | m_pic_completed = Resource::loadPixmap( "todo/completed" ); |
92 | QString namestr; | 93 | QString namestr; |
93 | for ( unsigned int i = 1; i < 6; i++ ) { | 94 | for ( unsigned int i = 1; i < 6; i++ ) { |
94 | namestr = "todo/priority"; | 95 | namestr = "todo/priority"; |
95 | namestr.append( QString::number( i ) ); | 96 | namestr.append( QString::number( i ) ); |
96 | m_pic_priority[ i - 1 ] = Resource::loadPixmap( namestr ); | 97 | m_pic_priority[ i - 1 ] = Resource::loadPixmap( namestr ); |
97 | } | 98 | } |
98 | 99 | ||
99 | setUpdatesEnabled( false ); | 100 | setUpdatesEnabled( false ); |
100 | viewport()->setUpdatesEnabled( false ); | 101 | viewport()->setUpdatesEnabled( false ); |
101 | m_enablePaint = false; | 102 | m_enablePaint = false; |
102 | setNumRows(0); | 103 | setNumRows(0); |
103 | setNumCols(4); | 104 | setNumCols(4); |
104 | 105 | ||
105 | horizontalHeader()->setLabel( 0, QWidget::tr("C.") ); | 106 | horizontalHeader()->setLabel( 0, QWidget::tr("C.") ); |
106 | horizontalHeader()->setLabel( 1, QWidget::tr("Priority") ); | 107 | horizontalHeader()->setLabel( 1, QWidget::tr("Priority") ); |
107 | horizontalHeader()->setLabel( 2, QWidget::tr("Description" ) ); | 108 | horizontalHeader()->setLabel( 2, QWidget::tr("Description" ) ); |
108 | horizontalHeader()->setLabel( 3, QWidget::tr("Deadline") ); | 109 | horizontalHeader()->setLabel( 3, QWidget::tr("Deadline") ); |
109 | 110 | ||
110 | setShowDeadline( todoWindow()->showDeadline() ); | 111 | setShowDeadline( todoWindow()->showDeadline() ); |
111 | 112 | ||
112 | setSorting( TRUE ); | 113 | setSorting( TRUE ); |
113 | setSelectionMode( NoSelection ); | 114 | setSelectionMode( NoSelection ); |
114 | 115 | ||
115 | setLeftMargin( 0 ); | 116 | setLeftMargin( 0 ); |
116 | verticalHeader()->hide(); | 117 | verticalHeader()->hide(); |
117 | 118 | ||
118 | connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ), | 119 | connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ), |
119 | this, SLOT( slotClicked(int, int, int, const QPoint& ) ) ); | 120 | this, SLOT( slotClicked(int, int, int, const QPoint& ) ) ); |
120 | connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ), | 121 | connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ), |
121 | this, SLOT( slotPressed(int, int, int, const QPoint& ) ) ); | 122 | this, SLOT( slotPressed(int, int, int, const QPoint& ) ) ); |
122 | connect((QTable*)this, SIGNAL(valueChanged(int, int) ), | 123 | connect((QTable*)this, SIGNAL(valueChanged(int, int) ), |
123 | this, SLOT( slotValueChanged(int, int) ) ); | 124 | this, SLOT( slotValueChanged(int, int) ) ); |
124 | connect((QTable*)this, SIGNAL(currentChanged(int, int) ), | 125 | connect((QTable*)this, SIGNAL(currentChanged(int, int) ), |
125 | this, SLOT( slotCurrentChanged(int, int) ) ); | 126 | this, SLOT( slotCurrentChanged(int, int) ) ); |
126 | 127 | ||
127 | m_menuTimer = new QTimer( this ); | 128 | m_menuTimer = new QTimer( this ); |
128 | connect( m_menuTimer, SIGNAL(timeout()), | 129 | connect( m_menuTimer, SIGNAL(timeout()), |
129 | this, SLOT(slotShowMenu()) ); | 130 | this, SLOT(slotShowMenu()) ); |
130 | 131 | ||
131 | /* now let's init the config */ | 132 | /* now let's init the config */ |
132 | initConfig(); | 133 | initConfig(); |
133 | 134 | ||
134 | 135 | ||
135 | m_enablePaint = true; | 136 | m_enablePaint = true; |
136 | setUpdatesEnabled( true ); | 137 | setUpdatesEnabled( true ); |
137 | viewport()->setUpdatesEnabled( true ); | 138 | viewport()->setUpdatesEnabled( true ); |
138 | viewport()->update(); | 139 | viewport()->update(); |
139 | setSortOrder( 0 ); | 140 | setSortOrder( 0 ); |
140 | setAscending( TRUE ); | 141 | setAscending( TRUE ); |
141 | m_first = true; | 142 | m_first = true; |
142 | 143 | ||
143 | 144 | ||
144 | } | 145 | } |
145 | /* a new day has started | 146 | /* a new day has started |
146 | * update the day | 147 | * update the day |
147 | */ | 148 | */ |
148 | void TableView::newDay() { | 149 | void TableView::newDay() { |
149 | clear(); | 150 | clear(); |
150 | updateView(); | 151 | updateView(); |
151 | } | 152 | } |
152 | TableView::~TableView() { | 153 | TableView::~TableView() { |
153 | Config config( "todo" ); | 154 | Config config( "todo" ); |
154 | config.setGroup( "Options" ); | 155 | config.setGroup( "Options" ); |
155 | for (int i = 0; i < numCols(); i++ ) | 156 | for (int i = 0; i < numCols(); i++ ) |
156 | config.writeEntry("Width"+QString::number(i), columnWidth(i) ); | 157 | config.writeEntry("Width"+QString::number(i), columnWidth(i) ); |
157 | } | 158 | } |
158 | void TableView::slotShowMenu() { | 159 | void TableView::slotShowMenu() { |
159 | QPopupMenu *menu = todoWindow()->contextMenu( current(), sorted()[currentRow()].recurrence().doesRecur() ); | 160 | QPopupMenu *menu = todoWindow()->contextMenu( current(), sorted()[currentRow()].recurrence().doesRecur() ); |
160 | menu->exec(QCursor::pos() ); | 161 | menu->exec(QCursor::pos() ); |
161 | delete menu; | 162 | delete menu; |
162 | } | 163 | } |
163 | QString TableView::type() const { | 164 | QString TableView::type() const { |
164 | return QString::fromLatin1( tr("Table View") ); | 165 | return QString::fromLatin1( tr("Table View") ); |
165 | } | 166 | } |
166 | int TableView::current() { | 167 | int TableView::current() { |
167 | if (numRows() == 0 ) return 0; | 168 | if (numRows() == 0 ) return 0; |
168 | int uid = sorted().uidAt(currentRow() ); | 169 | int uid = sorted().uidAt(currentRow() ); |
169 | 170 | ||
170 | return uid; | 171 | return uid; |
171 | } | 172 | } |
172 | int TableView::next() { | 173 | int TableView::next() { |
173 | if ( numRows() == 0 ) return 0; | 174 | if ( numRows() == 0 ) return 0; |
174 | if ( currentRow() + 1 >= numRows() ) return 0; | 175 | if ( currentRow() + 1 >= numRows() ) return 0; |
175 | setCurrentCell( currentRow() +1, currentColumn() ); | 176 | setCurrentCell( currentRow() +1, currentColumn() ); |
176 | return sorted().uidAt( currentRow() ); | 177 | return sorted().uidAt( currentRow() ); |
177 | } | 178 | } |
178 | int TableView::prev() { | 179 | int TableView::prev() { |
179 | if ( numRows() == 0 ) return 0; | 180 | if ( numRows() == 0 ) return 0; |
180 | if ( currentRow() - 1 < 0 ) return 0; | 181 | if ( currentRow() - 1 < 0 ) return 0; |
181 | setCurrentCell( currentRow() -1, currentColumn() ); | 182 | setCurrentCell( currentRow() -1, currentColumn() ); |
182 | return sorted().uidAt( currentRow() ); | 183 | return sorted().uidAt( currentRow() ); |
183 | 184 | ||