summaryrefslogtreecommitdiffabout
path: root/korganizer/kotodoeditor.cpp
Unidiff
Diffstat (limited to 'korganizer/kotodoeditor.cpp') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/kotodoeditor.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/korganizer/kotodoeditor.cpp b/korganizer/kotodoeditor.cpp
index 70dfbd1..069dda8 100644
--- a/korganizer/kotodoeditor.cpp
+++ b/korganizer/kotodoeditor.cpp
@@ -25,29 +25,31 @@
25#include <qtooltip.h> 25#include <qtooltip.h>
26#include <qframe.h> 26#include <qframe.h>
27#include <qpixmap.h> 27#include <qpixmap.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qhbox.h> 29#include <qhbox.h>
30#include <qdir.h> 30#include <qdir.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qapplication.h> 32#include <qapplication.h>
33#include <qtabwidget.h>
33 34
34#include <kiconloader.h> 35#include <kiconloader.h>
35#include <klocale.h> 36#include <klocale.h>
36#include <kfiledialog.h> 37#include <kfiledialog.h>
37#include <kstandarddirs.h> 38#include <kstandarddirs.h>
38#include <kmessagebox.h> 39#include <kmessagebox.h>
39 40
40#include <libkdepim/categoryselectdialog.h> 41#include <libkdepim/categoryselectdialog.h>
41#include <libkcal/calendarlocal.h> 42#include <libkcal/calendarlocal.h>
42#include <libkcal/calendarresources.h> 43#include <libkcal/calendarresources.h>
43#include <libkcal/resourcecalendar.h> 44#include <libkcal/resourcecalendar.h>
44#include <libkcal/icalformat.h> 45#include <libkcal/icalformat.h>
45#include <kresources/resourceselectdialog.h> 46#include <kresources/resourceselectdialog.h>
47#include <libkdepim/kdateedit.h>
46 48
47#include "koprefs.h" 49#include "koprefs.h"
48#include "kolocationbox.h" 50#include "kolocationbox.h"
49 51
50#include "kotodoeditor.h" 52#include "kotodoeditor.h"
51extern int globalFlagBlockAgenda; 53extern int globalFlagBlockAgenda;
52 54
53KOTodoEditor::KOTodoEditor( Calendar *calendar, QWidget *parent ) : 55KOTodoEditor::KOTodoEditor( Calendar *calendar, QWidget *parent ) :
@@ -63,17 +65,28 @@ KOTodoEditor::~KOTodoEditor()
63{ 65{
64 emit dialogClose( mTodo ); 66 emit dialogClose( mTodo );
65} 67}
66 68
67void KOTodoEditor::init() 69void KOTodoEditor::init()
68{ 70{
69 setupGeneral(); 71 setupGeneral();
70 setupAttendeesTab(); 72 setupAttendeesTab();
73 setupRecurrence();
74 connect(mGeneral,SIGNAL(datesChecked()),this ,SLOT(checkRecurrence()));
71} 75}
76void KOTodoEditor::setupRecurrence()
77{
78 QFrame *topFrame = addPage( i18n("Recurrence") );
79 QBoxLayout *topLayout = new QVBoxLayout( topFrame );
80
81 mRecurrence = new KOEditorRecurrence( topFrame );
82 topLayout->addWidget( mRecurrence );
83}
84
72void KOTodoEditor::setCategories( QString s ) 85void KOTodoEditor::setCategories( QString s )
73{ 86{
74 mGeneral->setCategories(s); 87 mGeneral->setCategories(s);
75} 88}
76void KOTodoEditor::setSecrecy( int sec ) 89void KOTodoEditor::setSecrecy( int sec )
77{ 90{
78 mGeneral->setSecrecy( sec ); 91 mGeneral->setSecrecy( sec );
79} 92}
@@ -189,16 +202,17 @@ void KOTodoEditor::editTodo(Todo *todo, bool editDescription)
189 readTodo(mTodo); 202 readTodo(mTodo);
190 if ( editDescription ) { 203 if ( editDescription ) {
191 showPage( 1 ); 204 showPage( 1 );
192 mGeneral->setFocusOn( 1 ); 205 mGeneral->setFocusOn( 1 );
193 } else { 206 } else {
194 showPage( 0 ); 207 showPage( 0 );
195 mGeneral->setFocusOn( 2 ); 208 mGeneral->setFocusOn( 2 );
196 } 209 }
210 checkRecurrence();
197} 211}
198 212
199void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay) 213void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay)
200{ 214{
201 //init(); 215 //init();
202 216
203 mTodo = 0; 217 mTodo = 0;
204 setDefaults(due,relatedTodo,allDay); 218 setDefaults(due,relatedTodo,allDay);
@@ -282,18 +296,43 @@ void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay)
282 mGeneral->mSummaryEdit->lineEdit()->setText(mRelatedTodo->summary()+": "); 296 mGeneral->mSummaryEdit->lineEdit()->setText(mRelatedTodo->summary()+": ");
283 int len = mRelatedTodo->summary().length(); 297 int len = mRelatedTodo->summary().length();
284 mGeneral->mSummaryEdit->lineEdit()->setFocus(); 298 mGeneral->mSummaryEdit->lineEdit()->setFocus();
285 mGeneral->mSummaryEdit->lineEdit()->setCursorPosition ( len+2 ); 299 mGeneral->mSummaryEdit->lineEdit()->setCursorPosition ( len+2 );
286 mGeneral->mSummaryEdit->lineEdit()->setSelection ( 0, len+2 ); 300 mGeneral->mSummaryEdit->lineEdit()->setSelection ( 0, len+2 );
287 301
288 } else 302 } else
289 mGeneral->setFocusOn( 2 ); 303 mGeneral->setFocusOn( 2 );
304 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false );
305 mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 ),true);
290} 306}
307void KOTodoEditor::checkRecurrence()
308{
309 if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) {
310 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), true );
291 311
312 if ( mTodo )
313 mRecurrence->readEvent( mTodo );
314 else {
315 bool time = mGeneral->mTimeButton->isChecked();
316 QDateTime from,to;
317 if ( time ) {
318 to = QDateTime( mGeneral->mDueDateEdit->date(), mGeneral->mDueTimeEdit->getTime() ) ;
319 from = QDateTime( mGeneral->mStartDateEdit->date(),mGeneral->mStartTimeEdit->getTime( )) ;
320 } else {
321 to = QDateTime( mGeneral->mDueDateEdit->date(), QTime( 0,0,0) ) ;
322 from = QDateTime( mGeneral->mStartDateEdit->date(),QTime( 0,0,0) ) ;
323 }
324 mRecurrence->setDefaults(from,to,!time);
325 }
326 } else {
327 tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false );
328 mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 ),true);
329 }
330}
292void KOTodoEditor::readTodo(Todo *todo) 331void KOTodoEditor::readTodo(Todo *todo)
293{ 332{
294 mGeneral->readTodo(todo); 333 mGeneral->readTodo(todo);
295 mDetails->readEvent(todo); 334 mDetails->readEvent(todo);
296 mRelatedTodo = 0;//todo->relatedTo(); 335 mRelatedTodo = 0;//todo->relatedTo();
297 // categories 336 // categories
298 // mCategoryDialog->setSelected(todo->categories()); 337 // mCategoryDialog->setSelected(todo->categories());
299 338
@@ -304,16 +343,20 @@ void KOTodoEditor::writeTodo(Todo *event)
304{ 343{
305 mGeneral->writeTodo(event); 344 mGeneral->writeTodo(event);
306 mDetails->writeEvent(event); 345 mDetails->writeEvent(event);
307 346
308 // set related event, i.e. parent to-do in this case. 347 // set related event, i.e. parent to-do in this case.
309 if (mRelatedTodo) { 348 if (mRelatedTodo) {
310 event->setRelatedTo(mRelatedTodo); 349 event->setRelatedTo(mRelatedTodo);
311 } 350 }
351 if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) {
352 mRecurrence->writeEvent(event);
353 } else
354 event->recurrence()->unsetRecurs();
312} 355}
313 356
314bool KOTodoEditor::validateInput() 357bool KOTodoEditor::validateInput()
315{ 358{
316 if (!mGeneral->validateInput()) return false; 359 if (!mGeneral->validateInput()) return false;
317 if (!mDetails->validateInput()) return false; 360 if (!mDetails->validateInput()) return false;
318 return true; 361 return true;
319} 362}