-rw-r--r-- | bin/kdepim/WhatsNew.txt | 1 | ||||
-rw-r--r-- | korganizer/koeditorgeneraltodo.cpp | 12 | ||||
-rw-r--r-- | libkcal/todo.cpp | 1 |
3 files changed, 7 insertions, 7 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 18e94a7..15caf9e 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -1,28 +1,29 @@ | |||
1 | Info about the changes in new versions of KDE-Pim/Pi | 1 | Info about the changes in new versions of KDE-Pim/Pi |
2 | 2 | ||
3 | ********** VERSION 2.2.1 ************ | 3 | ********** VERSION 2.2.1 ************ |
4 | 4 | ||
5 | KO/Pi: | 5 | KO/Pi: |
6 | Fixed a problem displaying very long allday events in agenda view in single day mode. | 6 | Fixed a problem displaying very long allday events in agenda view in single day mode. |
7 | Fixed a problem with the default settings for new todos. | ||
7 | 8 | ||
8 | KA/Pi: | 9 | KA/Pi: |
9 | Added a config option to turn on asking before a contact is deleted. | 10 | Added a config option to turn on asking before a contact is deleted. |
10 | Fixed a problem with the default view and view selection at startup. | 11 | Fixed a problem with the default view and view selection at startup. |
11 | 12 | ||
12 | ********** VERSION 2.2.0 ************ | 13 | ********** VERSION 2.2.0 ************ |
13 | 14 | ||
14 | New stable release! | 15 | New stable release! |
15 | Fixed some minor usability problems. | 16 | Fixed some minor usability problems. |
16 | Added writing of next alarm to a file for usage on pdaXrom. | 17 | Added writing of next alarm to a file for usage on pdaXrom. |
17 | 18 | ||
18 | 19 | ||
19 | ************************************* | 20 | ************************************* |
20 | 21 | ||
21 | You can find the complete changelog | 22 | You can find the complete changelog |
22 | from version 1.7.7 to 2.2.0 | 23 | from version 1.7.7 to 2.2.0 |
23 | in the source package or on | 24 | in the source package or on |
24 | 25 | ||
25 | http://www.pi-sync.net/html/changelog.html | 26 | http://www.pi-sync.net/html/changelog.html |
26 | 27 | ||
27 | 28 | ||
28 | 29 | ||
diff --git a/korganizer/koeditorgeneraltodo.cpp b/korganizer/koeditorgeneraltodo.cpp index 10d9a8c..d32d5a5 100644 --- a/korganizer/koeditorgeneraltodo.cpp +++ b/korganizer/koeditorgeneraltodo.cpp | |||
@@ -115,265 +115,263 @@ void KOEditorGeneralTodo::initTime(QWidget *parent,QBoxLayout *topLayout) | |||
115 | 115 | ||
116 | mDueDateEdit = new KDateEdit(timeBoxFrame); | 116 | mDueDateEdit = new KDateEdit(timeBoxFrame); |
117 | layoutTimeBox->addWidget(mDueDateEdit,1,1); | 117 | layoutTimeBox->addWidget(mDueDateEdit,1,1); |
118 | 118 | ||
119 | mDueTimeEdit = new KOTimeEdit(timeBoxFrame); | 119 | mDueTimeEdit = new KOTimeEdit(timeBoxFrame); |
120 | layoutTimeBox->addWidget(mDueTimeEdit,1,2); | 120 | layoutTimeBox->addWidget(mDueTimeEdit,1,2); |
121 | 121 | ||
122 | 122 | ||
123 | mTimeButton = new QCheckBox(i18n("Time associated"),timeBoxFrame); | 123 | mTimeButton = new QCheckBox(i18n("Time associated"),timeBoxFrame); |
124 | layoutTimeBox->addMultiCellWidget(mTimeButton,2,2,0,1); | 124 | layoutTimeBox->addMultiCellWidget(mTimeButton,2,2,0,1); |
125 | 125 | ||
126 | connect(mTimeButton,SIGNAL(toggled(bool)),SLOT(enableTimeEdits(bool))); | 126 | connect(mTimeButton,SIGNAL(toggled(bool)),SLOT(enableTimeEdits(bool))); |
127 | connect(mDueDateEdit,SIGNAL(setTimeTo(QTime)),mDueTimeEdit,SLOT(setTime(QTime))); | 127 | connect(mDueDateEdit,SIGNAL(setTimeTo(QTime)),mDueTimeEdit,SLOT(setTime(QTime))); |
128 | connect(mStartDateEdit,SIGNAL(setTimeTo(QTime)),mStartTimeEdit,SLOT(setTime(QTime))); | 128 | connect(mStartDateEdit,SIGNAL(setTimeTo(QTime)),mStartTimeEdit,SLOT(setTime(QTime))); |
129 | connect(mStartDateEdit, SIGNAL(dateChanged(QDate)), | 129 | connect(mStartDateEdit, SIGNAL(dateChanged(QDate)), |
130 | this, SLOT(startDateChanged(QDate))); | 130 | this, SLOT(startDateChanged(QDate))); |
131 | // some more layouting | 131 | // some more layouting |
132 | //layoutTimeBox->setColStretch(3,1); | 132 | //layoutTimeBox->setColStretch(3,1); |
133 | } | 133 | } |
134 | 134 | ||
135 | 135 | ||
136 | void KOEditorGeneralTodo::initCompletion(QWidget *parent, QBoxLayout *topLayout) | 136 | void KOEditorGeneralTodo::initCompletion(QWidget *parent, QBoxLayout *topLayout) |
137 | { | 137 | { |
138 | mCompletedCombo = new QComboBox(parent); | 138 | mCompletedCombo = new QComboBox(parent); |
139 | // xgettext:no-c-format | 139 | // xgettext:no-c-format |
140 | mCompletedCombo->insertItem(i18n(" 0 %")); | 140 | mCompletedCombo->insertItem(i18n(" 0 %")); |
141 | // xgettext:no-c-format | 141 | // xgettext:no-c-format |
142 | mCompletedCombo->insertItem(i18n(" 20 %")); | 142 | mCompletedCombo->insertItem(i18n(" 20 %")); |
143 | // xgettext:no-c-format | 143 | // xgettext:no-c-format |
144 | mCompletedCombo->insertItem(i18n(" 40 %")); | 144 | mCompletedCombo->insertItem(i18n(" 40 %")); |
145 | // xgettext:no-c-format | 145 | // xgettext:no-c-format |
146 | mCompletedCombo->insertItem(i18n(" 60 %")); | 146 | mCompletedCombo->insertItem(i18n(" 60 %")); |
147 | // xgettext:no-c-format | 147 | // xgettext:no-c-format |
148 | mCompletedCombo->insertItem(i18n(" 80 %")); | 148 | mCompletedCombo->insertItem(i18n(" 80 %")); |
149 | // xgettext:no-c-format | 149 | // xgettext:no-c-format |
150 | mCompletedCombo->insertItem(i18n("100 %")); | 150 | mCompletedCombo->insertItem(i18n("100 %")); |
151 | connect(mCompletedCombo,SIGNAL(activated(int)),SLOT(completedChanged(int))); | 151 | connect(mCompletedCombo,SIGNAL(activated(int)),SLOT(completedChanged(int))); |
152 | topLayout->addWidget(mCompletedCombo); | 152 | topLayout->addWidget(mCompletedCombo); |
153 | 153 | ||
154 | mCompletedLabel = new QLabel(i18n("completed"),parent); | 154 | mCompletedLabel = new QLabel(i18n("completed"),parent); |
155 | topLayout->addWidget(mCompletedLabel); | 155 | topLayout->addWidget(mCompletedLabel); |
156 | 156 | ||
157 | mCompleteDateEdit = new KDateEdit(parent); | 157 | mCompleteDateEdit = new KDateEdit(parent); |
158 | topLayout->addWidget(mCompleteDateEdit ); | 158 | topLayout->addWidget(mCompleteDateEdit ); |
159 | 159 | ||
160 | mCompleteTimeEdit = new KOTimeEdit(parent); | 160 | mCompleteTimeEdit = new KOTimeEdit(parent); |
161 | topLayout->addWidget( mCompleteTimeEdit); | 161 | topLayout->addWidget( mCompleteTimeEdit); |
162 | 162 | ||
163 | mCompletedCombo->setSizePolicy( QSizePolicy( QSizePolicy::Preferred,QSizePolicy::Preferred) ); | 163 | mCompletedCombo->setSizePolicy( QSizePolicy( QSizePolicy::Preferred,QSizePolicy::Preferred) ); |
164 | mCompletedLabel->setSizePolicy( QSizePolicy( QSizePolicy::Expanding,QSizePolicy::Preferred) ); | 164 | mCompletedLabel->setSizePolicy( QSizePolicy( QSizePolicy::Expanding,QSizePolicy::Preferred) ); |
165 | connect(mCompleteDateEdit,SIGNAL(setTimeTo(QTime)),mCompleteTimeEdit,SLOT(setTime(QTime))); | 165 | connect(mCompleteDateEdit,SIGNAL(setTimeTo(QTime)),mCompleteTimeEdit,SLOT(setTime(QTime))); |
166 | 166 | ||
167 | if ( QApplication::desktop()->width() <= 480 ) { | 167 | if ( QApplication::desktop()->width() <= 480 ) { |
168 | if ( QApplication::desktop()->width() < 320 ) | 168 | if ( QApplication::desktop()->width() < 320 ) |
169 | mCompleteDateEdit->setMaximumWidth( 85 ); | 169 | mCompleteDateEdit->setMaximumWidth( 85 ); |
170 | else | 170 | else |
171 | mCompleteDateEdit->setMaximumWidth( 140 ); | 171 | mCompleteDateEdit->setMaximumWidth( 140 ); |
172 | topLayout->setSpacing( 0 ); | 172 | topLayout->setSpacing( 0 ); |
173 | } | 173 | } |
174 | } | 174 | } |
175 | 175 | ||
176 | void KOEditorGeneralTodo::initPriority(QWidget *parent, QBoxLayout *topLayout) | 176 | void KOEditorGeneralTodo::initPriority(QWidget *parent, QBoxLayout *topLayout) |
177 | { | 177 | { |
178 | 178 | ||
179 | QHBox* h = new QHBox ( parent ); | 179 | QHBox* h = new QHBox ( parent ); |
180 | topLayout->addWidget( h ); | 180 | topLayout->addWidget( h ); |
181 | QLabel *priorityLabel = new QLabel(i18n("Priority:"), h); | 181 | QLabel *priorityLabel = new QLabel(i18n("Priority:"), h); |
182 | // topLayout->addWidget(priorityLabel); | 182 | // topLayout->addWidget(priorityLabel); |
183 | mPriorityCombo = new QComboBox( h ); | 183 | mPriorityCombo = new QComboBox( h ); |
184 | mPriorityCombo->insertItem(i18n("1 (high)")); | 184 | mPriorityCombo->insertItem(i18n("1 (high)")); |
185 | mPriorityCombo->insertItem(i18n("2")); | 185 | mPriorityCombo->insertItem(i18n("2")); |
186 | mPriorityCombo->insertItem(i18n("3")); | 186 | mPriorityCombo->insertItem(i18n("3")); |
187 | mPriorityCombo->insertItem(i18n("4")); | 187 | mPriorityCombo->insertItem(i18n("4")); |
188 | mPriorityCombo->insertItem(i18n("5 (low)")); | 188 | mPriorityCombo->insertItem(i18n("5 (low)")); |
189 | //topLayout->addWidget(mPriorityCombo); | 189 | //topLayout->addWidget(mPriorityCombo); |
190 | } | 190 | } |
191 | 191 | ||
192 | void KOEditorGeneralTodo::initStatus(QWidget *parent,QBoxLayout *topLayout) | 192 | void KOEditorGeneralTodo::initStatus(QWidget *parent,QBoxLayout *topLayout) |
193 | { | 193 | { |
194 | QBoxLayout *statusLayout = new QHBoxLayout(topLayout); | 194 | QBoxLayout *statusLayout = new QHBoxLayout(topLayout); |
195 | 195 | ||
196 | initCompletion( parent, statusLayout ); | 196 | initCompletion( parent, statusLayout ); |
197 | 197 | ||
198 | statusLayout->addStretch( 1 ); | 198 | statusLayout->addStretch( 1 ); |
199 | 199 | ||
200 | initPriority( parent, statusLayout ); | 200 | initPriority( parent, statusLayout ); |
201 | } | 201 | } |
202 | 202 | ||
203 | void KOEditorGeneralTodo::setDefaults(QDateTime due,bool allDay) | 203 | void KOEditorGeneralTodo::setDefaults(QDateTime due,bool allDay) |
204 | { | 204 | { |
205 | 205 | ||
206 | mSummaryEdit->load(KOLocationBox::SUMMARYTODO); | 206 | mSummaryEdit->load(KOLocationBox::SUMMARYTODO); |
207 | mLocationEdit->load(KOLocationBox::LOCATION); | 207 | mLocationEdit->load(KOLocationBox::LOCATION); |
208 | KOEditorGeneral::setDefaults(allDay); | 208 | KOEditorGeneral::setDefaults(allDay); |
209 | 209 | ||
210 | mTimeButton->setChecked( !allDay ); | 210 | mTimeButton->setChecked( !allDay ); |
211 | if(mTimeButton->isChecked()) { | 211 | mTimeButton->setEnabled( !allDay ); |
212 | mTimeButton->setEnabled(true); | ||
213 | } | ||
214 | else { | ||
215 | mTimeButton->setEnabled(false); | ||
216 | } | ||
217 | 212 | ||
218 | enableTimeEdits( !allDay ); | 213 | enableTimeEdits( !allDay ); |
219 | if ( due.isValid() ) { | 214 | if ( due.isValid() ) { |
220 | mDueCheck->setChecked(true); | 215 | mDueCheck->setChecked(true); |
221 | enableDueEdit(true); | 216 | enableDueEdit(true); |
222 | alarmDisable(false); | 217 | alarmDisable(false); |
223 | } else { | 218 | } else { |
224 | mDueCheck->setChecked(false); | 219 | mDueCheck->setChecked(false); |
225 | enableDueEdit(false); | 220 | enableDueEdit(false); |
226 | due = QDateTime::currentDateTime().addDays(7); | 221 | due = QDateTime::currentDateTime().addDays(7); |
227 | alarmDisable(true); | 222 | alarmDisable(true); |
228 | } | 223 | } |
229 | 224 | ||
230 | 225 | ||
231 | mStartCheck->setChecked(false); | 226 | mStartCheck->setChecked(false); |
232 | enableStartEdit(false); | 227 | enableStartEdit(false); |
233 | 228 | ||
234 | mDueDateEdit->setDate(due.date()); | 229 | mDueDateEdit->setDate(due.date()); |
235 | mDueTimeEdit->setTime(due.time()); | 230 | mDueTimeEdit->setTime(due.time()); |
236 | due = due.addDays(-7); | 231 | due = due.addDays(-7); |
237 | mStartDateEdit->setDate(due.date()); | 232 | mStartDateEdit->setDate(due.date()); |
238 | mStartTimeEdit->setTime(due.time()); | 233 | mStartTimeEdit->setTime(due.time()); |
239 | 234 | ||
240 | mPriorityCombo->setCurrentItem(2); | 235 | mPriorityCombo->setCurrentItem(2); |
241 | mCompletedLabel->setText(i18n(" completed"));; | 236 | mCompletedLabel->setText(i18n(" completed"));; |
242 | mCompletedCombo->setCurrentItem(0); | 237 | mCompletedCombo->setCurrentItem(0); |
243 | mCompleteDateEdit->hide(); | 238 | mCompleteDateEdit->hide(); |
244 | mCompleteTimeEdit->hide(); | 239 | mCompleteTimeEdit->hide(); |
245 | } | 240 | } |
246 | 241 | ||
247 | void KOEditorGeneralTodo::readTodo(Todo *todo) | 242 | void KOEditorGeneralTodo::readTodo(Todo *todo) |
248 | { | 243 | { |
249 | 244 | ||
250 | mSummaryEdit->load(KOLocationBox::SUMMARYTODO); | 245 | mSummaryEdit->load(KOLocationBox::SUMMARYTODO); |
251 | mLocationEdit->load(KOLocationBox::LOCATION); | 246 | mLocationEdit->load(KOLocationBox::LOCATION); |
252 | KOEditorGeneral::readIncidence(todo); | 247 | KOEditorGeneral::readIncidence(todo); |
253 | 248 | ||
254 | QDateTime dueDT; | 249 | QDateTime dueDT; |
250 | mTimeButton->setChecked( !todo->doesFloat() ); | ||
251 | mTimeButton->setEnabled( !todo->doesFloat() ); | ||
255 | 252 | ||
256 | if (todo->hasDueDate()) { | 253 | if (todo->hasDueDate()) { |
257 | enableAlarmEdit(true); | 254 | enableAlarmEdit(true); |
258 | dueDT = todo->dtDue(); | 255 | dueDT = todo->dtDue(); |
259 | mDueDateEdit->setDate(todo->dtDue().date()); | 256 | mDueDateEdit->setDate(todo->dtDue().date()); |
260 | mDueTimeEdit->setTime(todo->dtDue().time()); | 257 | mDueTimeEdit->setTime(todo->dtDue().time()); |
261 | mDueCheck->setChecked(true); | 258 | mDueCheck->setChecked(true); |
259 | mTimeButton->setEnabled( true ); | ||
262 | } else { | 260 | } else { |
263 | alarmDisable(true); | 261 | alarmDisable(true); |
264 | mDueDateEdit->setEnabled(false); | 262 | mDueDateEdit->setEnabled(false); |
265 | mDueTimeEdit->setEnabled(false); | 263 | mDueTimeEdit->setEnabled(false); |
266 | mDueDateEdit->setDate(QDate::currentDate()); | 264 | mDueDateEdit->setDate(QDate::currentDate()); |
267 | mDueTimeEdit->setTime(QTime::currentTime()); | 265 | mDueTimeEdit->setTime(QTime::currentTime()); |
268 | mDueCheck->setChecked(false); | 266 | mDueCheck->setChecked(false); |
269 | } | 267 | } |
270 | 268 | ||
271 | if (todo->hasStartDate()) { | 269 | if (todo->hasStartDate()) { |
272 | mStartDateEdit->setDate(todo->dtStart().date()); | 270 | mStartDateEdit->setDate(todo->dtStart().date()); |
273 | mStartTimeEdit->setTime(todo->dtStart().time()); | 271 | mStartTimeEdit->setTime(todo->dtStart().time()); |
274 | mStartCheck->setChecked(true); | 272 | mStartCheck->setChecked(true); |
273 | mTimeButton->setEnabled( true ); | ||
275 | } else { | 274 | } else { |
276 | mStartDateEdit->setEnabled(false); | 275 | mStartDateEdit->setEnabled(false); |
277 | mStartTimeEdit->setEnabled(false); | 276 | mStartTimeEdit->setEnabled(false); |
278 | mStartDateEdit->setDate(QDate::currentDate()); | 277 | mStartDateEdit->setDate(QDate::currentDate()); |
279 | mStartTimeEdit->setTime(QTime::currentTime()); | 278 | mStartTimeEdit->setTime(QTime::currentTime()); |
280 | mStartCheck->setChecked(false); | 279 | mStartCheck->setChecked(false); |
281 | } | 280 | } |
282 | 281 | ||
283 | mTimeButton->setChecked( !todo->doesFloat() ); | ||
284 | 282 | ||
285 | mCompletedCombo->setCurrentItem(todo->percentComplete() / 20); | 283 | mCompletedCombo->setCurrentItem(todo->percentComplete() / 20); |
286 | if (todo->isCompleted() && todo->hasCompletedDate()) { | 284 | if (todo->isCompleted() && todo->hasCompletedDate()) { |
287 | mCompleted = todo->completed(); | 285 | mCompleted = todo->completed(); |
288 | } | 286 | } |
289 | setCompletedDate(); | 287 | setCompletedDate(); |
290 | 288 | ||
291 | mPriorityCombo->setCurrentItem(todo->priority()-1); | 289 | mPriorityCombo->setCurrentItem(todo->priority()-1); |
292 | } | 290 | } |
293 | 291 | ||
294 | void KOEditorGeneralTodo::writeTodo(Todo *todo) | 292 | void KOEditorGeneralTodo::writeTodo(Todo *todo) |
295 | { | 293 | { |
296 | KOEditorGeneral::writeIncidence(todo); | 294 | KOEditorGeneral::writeIncidence(todo); |
297 | 295 | ||
298 | // temp. until something better happens. | 296 | // temp. until something better happens. |
299 | QString tmpStr; | 297 | QString tmpStr; |
300 | 298 | ||
301 | todo->setHasDueDate(mDueCheck->isChecked()); | 299 | todo->setHasDueDate(mDueCheck->isChecked()); |
302 | todo->setHasStartDate(mStartCheck->isChecked()); | 300 | todo->setHasStartDate(mStartCheck->isChecked()); |
303 | 301 | ||
304 | QDate tmpDate; | 302 | QDate tmpDate; |
305 | QTime tmpTime; | 303 | QTime tmpTime; |
306 | QDateTime tmpDT; | 304 | QDateTime tmpDT; |
307 | if ( mTimeButton->isChecked() ) { | 305 | if ( mTimeButton->isChecked() ) { |
308 | todo->setFloats(false); | 306 | todo->setFloats(false); |
309 | 307 | ||
310 | // set due date/time | 308 | // set due date/time |
311 | tmpDate = mDueDateEdit->date(); | 309 | tmpDate = mDueDateEdit->date(); |
312 | tmpTime = mDueTimeEdit->getTime(); | 310 | tmpTime = mDueTimeEdit->getTime(); |
313 | tmpDT.setDate(tmpDate); | 311 | tmpDT.setDate(tmpDate); |
314 | tmpDT.setTime(tmpTime); | 312 | tmpDT.setTime(tmpTime); |
315 | todo->setDtDue(tmpDT); | 313 | todo->setDtDue(tmpDT); |
316 | 314 | ||
317 | // set start date/time | 315 | // set start date/time |
318 | tmpDate = mStartDateEdit->date(); | 316 | tmpDate = mStartDateEdit->date(); |
319 | tmpTime = mStartTimeEdit->getTime(); | 317 | tmpTime = mStartTimeEdit->getTime(); |
320 | tmpDT.setDate(tmpDate); | 318 | tmpDT.setDate(tmpDate); |
321 | tmpDT.setTime(tmpTime); | 319 | tmpDT.setTime(tmpTime); |
322 | todo->setDtStart(tmpDT); | 320 | todo->setDtStart(tmpDT); |
323 | } else { | 321 | } else { |
324 | todo->setFloats(true); | 322 | todo->setFloats(true); |
325 | 323 | ||
326 | // need to change this. | 324 | // need to change this. |
327 | tmpDate = mDueDateEdit->date(); | 325 | tmpDate = mDueDateEdit->date(); |
328 | tmpTime.setHMS(0,0,0); | 326 | tmpTime.setHMS(0,0,0); |
329 | tmpDT.setDate(tmpDate); | 327 | tmpDT.setDate(tmpDate); |
330 | tmpDT.setTime(tmpTime); | 328 | tmpDT.setTime(tmpTime); |
331 | todo->setDtDue(tmpDT); | 329 | todo->setDtDue(tmpDT); |
332 | 330 | ||
333 | tmpDate = mStartDateEdit->date(); | 331 | tmpDate = mStartDateEdit->date(); |
334 | tmpTime.setHMS(0,0,0); | 332 | tmpTime.setHMS(0,0,0); |
335 | tmpDT.setDate(tmpDate); | 333 | tmpDT.setDate(tmpDate); |
336 | tmpDT.setTime(tmpTime); | 334 | tmpDT.setTime(tmpTime); |
337 | todo->setDtStart(tmpDT); | 335 | todo->setDtStart(tmpDT); |
338 | } | 336 | } |
339 | todo->setPriority(mPriorityCombo->currentItem()+1); | 337 | todo->setPriority(mPriorityCombo->currentItem()+1); |
340 | 338 | ||
341 | // set completion state | 339 | // set completion state |
342 | if ( mCompletedCombo->currentItem() == 5 ) { | 340 | if ( mCompletedCombo->currentItem() == 5 ) { |
343 | QDateTime comp ( mCompleteDateEdit->date(), mCompleteTimeEdit->getTime() ); | 341 | QDateTime comp ( mCompleteDateEdit->date(), mCompleteTimeEdit->getTime() ); |
344 | if ( comp.isValid () ) { | 342 | if ( comp.isValid () ) { |
345 | todo->setPercentComplete(100); | 343 | todo->setPercentComplete(100); |
346 | todo->setCompleted(comp); | 344 | todo->setCompleted(comp); |
347 | } else { | 345 | } else { |
348 | todo->setPercentComplete( 100 ); | 346 | todo->setPercentComplete( 100 ); |
349 | if ( mCompleted.isValid() ) | 347 | if ( mCompleted.isValid() ) |
350 | todo->setCompleted(mCompleted); | 348 | todo->setCompleted(mCompleted); |
351 | } | 349 | } |
352 | } else { | 350 | } else { |
353 | todo->setPercentComplete(mCompletedCombo->currentItem() * 20); | 351 | todo->setPercentComplete(mCompletedCombo->currentItem() * 20); |
354 | } | 352 | } |
355 | 353 | ||
356 | mSummaryEdit->save(KOLocationBox::SUMMARYTODO); | 354 | mSummaryEdit->save(KOLocationBox::SUMMARYTODO); |
357 | } | 355 | } |
358 | 356 | ||
359 | void KOEditorGeneralTodo::enableDueEdit(bool enable) | 357 | void KOEditorGeneralTodo::enableDueEdit(bool enable) |
360 | { | 358 | { |
361 | mDueDateEdit->setEnabled( enable ); | 359 | mDueDateEdit->setEnabled( enable ); |
362 | 360 | ||
363 | if(mDueCheck->isChecked() || mStartCheck->isChecked()) { | 361 | if(mDueCheck->isChecked() || mStartCheck->isChecked()) { |
364 | mTimeButton->setEnabled(true); | 362 | mTimeButton->setEnabled(true); |
365 | } | 363 | } |
366 | else { | 364 | else { |
367 | mTimeButton->setEnabled(false); | 365 | mTimeButton->setEnabled(false); |
368 | mTimeButton->setChecked(false); | 366 | mTimeButton->setChecked(false); |
369 | } | 367 | } |
370 | 368 | ||
371 | if (enable) { | 369 | if (enable) { |
372 | mDueTimeEdit->setEnabled( mTimeButton->isChecked() ); | 370 | mDueTimeEdit->setEnabled( mTimeButton->isChecked() ); |
373 | } else { | 371 | } else { |
374 | mDueTimeEdit->setEnabled( false ); | 372 | mDueTimeEdit->setEnabled( false ); |
375 | } | 373 | } |
376 | emit datesChecked(); | 374 | emit datesChecked(); |
377 | } | 375 | } |
378 | 376 | ||
379 | void KOEditorGeneralTodo::enableStartEdit( bool enable ) | 377 | void KOEditorGeneralTodo::enableStartEdit( bool enable ) |
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index e4508a0..48d37d5 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp | |||
@@ -1,140 +1,141 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of libkcal. | 2 | This file is part of libkcal. |
3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This library is free software; you can redistribute it and/or | 5 | This library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Library General Public | 6 | modify it under the terms of the GNU Library General Public |
7 | License as published by the Free Software Foundation; either | 7 | License as published by the Free Software Foundation; either |
8 | version 2 of the License, or (at your option) any later version. | 8 | version 2 of the License, or (at your option) any later version. |
9 | 9 | ||
10 | This library is distributed in the hope that it will be useful, | 10 | This library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Library General Public License for more details. | 13 | Library General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU Library General Public License | 15 | You should have received a copy of the GNU Library General Public License |
16 | along with this library; see the file COPYING.LIB. If not, write to | 16 | along with this library; see the file COPYING.LIB. If not, write to |
17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
18 | Boston, MA 02111-1307, USA. | 18 | Boston, MA 02111-1307, USA. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <kglobal.h> | 21 | #include <kglobal.h> |
22 | #include <kglobalsettings.h> | 22 | #include <kglobalsettings.h> |
23 | #include <klocale.h> | 23 | #include <klocale.h> |
24 | #include <kdebug.h> | 24 | #include <kdebug.h> |
25 | #include <qregexp.h> | 25 | #include <qregexp.h> |
26 | #include <qfileinfo.h> | 26 | #include <qfileinfo.h> |
27 | 27 | ||
28 | #include "calendarlocal.h" | 28 | #include "calendarlocal.h" |
29 | #include "icalformat.h" | 29 | #include "icalformat.h" |
30 | #include "todo.h" | 30 | #include "todo.h" |
31 | 31 | ||
32 | using namespace KCal; | 32 | using namespace KCal; |
33 | 33 | ||
34 | Todo::Todo(): QObject(), Incidence() | 34 | Todo::Todo(): QObject(), Incidence() |
35 | { | 35 | { |
36 | // mStatus = TENTATIVE; | 36 | // mStatus = TENTATIVE; |
37 | 37 | ||
38 | mHasDueDate = false; | 38 | mHasDueDate = false; |
39 | setHasStartDate( false ); | 39 | setHasStartDate( false ); |
40 | mCompleted = getEvenTime(QDateTime::currentDateTime()); | 40 | mCompleted = getEvenTime(QDateTime::currentDateTime()); |
41 | mHasCompletedDate = false; | 41 | mHasCompletedDate = false; |
42 | mPercentComplete = 0; | 42 | mPercentComplete = 0; |
43 | mRunning = false; | 43 | mRunning = false; |
44 | mRunSaveTimer = 0; | 44 | mRunSaveTimer = 0; |
45 | setFloats( true ); | ||
45 | } | 46 | } |
46 | 47 | ||
47 | Todo::Todo(const Todo &t) : QObject(),Incidence(t) | 48 | Todo::Todo(const Todo &t) : QObject(),Incidence(t) |
48 | { | 49 | { |
49 | mDtDue = t.mDtDue; | 50 | mDtDue = t.mDtDue; |
50 | mHasDueDate = t.mHasDueDate; | 51 | mHasDueDate = t.mHasDueDate; |
51 | mCompleted = t.mCompleted; | 52 | mCompleted = t.mCompleted; |
52 | mHasCompletedDate = t.mHasCompletedDate; | 53 | mHasCompletedDate = t.mHasCompletedDate; |
53 | mPercentComplete = t.mPercentComplete; | 54 | mPercentComplete = t.mPercentComplete; |
54 | mRunning = false; | 55 | mRunning = false; |
55 | mRunSaveTimer = 0; | 56 | mRunSaveTimer = 0; |
56 | } | 57 | } |
57 | 58 | ||
58 | Todo::~Todo() | 59 | Todo::~Todo() |
59 | { | 60 | { |
60 | setRunning( false ); | 61 | setRunning( false ); |
61 | //qDebug("Todo::~Todo() "); | 62 | //qDebug("Todo::~Todo() "); |
62 | } | 63 | } |
63 | 64 | ||
64 | void Todo::setRunningFalse( QString s ) | 65 | void Todo::setRunningFalse( QString s ) |
65 | { | 66 | { |
66 | if ( ! mRunning ) | 67 | if ( ! mRunning ) |
67 | return; | 68 | return; |
68 | mRunning = false; | 69 | mRunning = false; |
69 | if ( mRunSaveTimer ) | 70 | if ( mRunSaveTimer ) |
70 | mRunSaveTimer->stop(); | 71 | mRunSaveTimer->stop(); |
71 | saveRunningInfoToFile( s ); | 72 | saveRunningInfoToFile( s ); |
72 | } | 73 | } |
73 | void Todo::stopRunning() | 74 | void Todo::stopRunning() |
74 | { | 75 | { |
75 | if ( !mRunning ) | 76 | if ( !mRunning ) |
76 | return; | 77 | return; |
77 | if ( mRunSaveTimer ) | 78 | if ( mRunSaveTimer ) |
78 | mRunSaveTimer->stop(); | 79 | mRunSaveTimer->stop(); |
79 | mRunning = false; | 80 | mRunning = false; |
80 | } | 81 | } |
81 | void Todo::setRunning( bool run ) | 82 | void Todo::setRunning( bool run ) |
82 | { | 83 | { |
83 | if ( run == mRunning ) | 84 | if ( run == mRunning ) |
84 | return; | 85 | return; |
85 | //qDebug("Todo::setRunning %d ", run); | 86 | //qDebug("Todo::setRunning %d ", run); |
86 | if ( !mRunSaveTimer ) { | 87 | if ( !mRunSaveTimer ) { |
87 | mRunSaveTimer = new QTimer ( this ); | 88 | mRunSaveTimer = new QTimer ( this ); |
88 | connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) ); | 89 | connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) ); |
89 | } | 90 | } |
90 | mRunning = run; | 91 | mRunning = run; |
91 | if ( mRunning ) { | 92 | if ( mRunning ) { |
92 | mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min | 93 | mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min |
93 | mRunStart = QDateTime::currentDateTime(); | 94 | mRunStart = QDateTime::currentDateTime(); |
94 | } else { | 95 | } else { |
95 | mRunSaveTimer->stop(); | 96 | mRunSaveTimer->stop(); |
96 | saveRunningInfoToFile(); | 97 | saveRunningInfoToFile(); |
97 | } | 98 | } |
98 | } | 99 | } |
99 | void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) | 100 | void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) |
100 | { | 101 | { |
101 | if ( !mRunning) return; | 102 | if ( !mRunning) return; |
102 | mRunning = false; | 103 | mRunning = false; |
103 | mRunStart = start; | 104 | mRunStart = start; |
104 | mRunEnd = end; | 105 | mRunEnd = end; |
105 | saveRunningInfoToFile( comment ); | 106 | saveRunningInfoToFile( comment ); |
106 | } | 107 | } |
107 | void Todo::saveRunningInfoToFile() | 108 | void Todo::saveRunningInfoToFile() |
108 | { | 109 | { |
109 | mRunEnd = QDateTime::currentDateTime(); | 110 | mRunEnd = QDateTime::currentDateTime(); |
110 | saveRunningInfoToFile( QString::null ); | 111 | saveRunningInfoToFile( QString::null ); |
111 | } | 112 | } |
112 | void Todo::saveRunningInfoToFile( QString comment ) | 113 | void Todo::saveRunningInfoToFile( QString comment ) |
113 | { | 114 | { |
114 | //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); | 115 | //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); |
115 | if ( mRunStart.secsTo ( mRunEnd) < 15 ) { | 116 | if ( mRunStart.secsTo ( mRunEnd) < 15 ) { |
116 | qDebug("Running time < 15 seconds. Skipped. "); | 117 | qDebug("Running time < 15 seconds. Skipped. "); |
117 | return; | 118 | return; |
118 | } | 119 | } |
119 | QString dir = KGlobalSettings::timeTrackerDir(); | 120 | QString dir = KGlobalSettings::timeTrackerDir(); |
120 | //qDebug("%s ", dir.latin1()); | 121 | //qDebug("%s ", dir.latin1()); |
121 | QString file = "%1%2%3-%4%5%6-"; | 122 | QString file = "%1%2%3-%4%5%6-"; |
122 | file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 ); | 123 | file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 ); |
123 | file.replace ( QRegExp (" "), "0" ); | 124 | file.replace ( QRegExp (" "), "0" ); |
124 | file += uid(); | 125 | file += uid(); |
125 | //qDebug("File %s ",file.latin1() ); | 126 | //qDebug("File %s ",file.latin1() ); |
126 | CalendarLocal cal; | 127 | CalendarLocal cal; |
127 | cal.setLocalTime(); | 128 | cal.setLocalTime(); |
128 | Todo * to = (Todo*) clone(); | 129 | Todo * to = (Todo*) clone(); |
129 | to->setFloats( false ); | 130 | to->setFloats( false ); |
130 | to->setDtStart( mRunStart ); | 131 | to->setDtStart( mRunStart ); |
131 | to->setHasStartDate( true ); | 132 | to->setHasStartDate( true ); |
132 | to->setDtDue( mRunEnd ); | 133 | to->setDtDue( mRunEnd ); |
133 | to->setHasDueDate( true ); | 134 | to->setHasDueDate( true ); |
134 | to->setUid( file ); | 135 | to->setUid( file ); |
135 | if ( !comment.isEmpty() ) { | 136 | if ( !comment.isEmpty() ) { |
136 | QString des = to->description(); | 137 | QString des = to->description(); |
137 | if ( des.isEmpty () ) | 138 | if ( des.isEmpty () ) |
138 | to->setDescription( "TT-Note: " + comment ); | 139 | to->setDescription( "TT-Note: " + comment ); |
139 | else | 140 | else |
140 | to->setDescription( "TT-Note: " + comment +"\n" + des ); | 141 | to->setDescription( "TT-Note: " + comment +"\n" + des ); |