From 0a33f91e166747406ca2ccb5819881feeecfdb40 Mon Sep 17 00:00:00 2001 From: zautrix Date: Sun, 13 Feb 2005 11:55:52 +0000 Subject: todo recurchanges --- (limited to 'korganizer') diff --git a/korganizer/koeditorgeneraltodo.cpp b/korganizer/koeditorgeneraltodo.cpp index 6370b54..a9d1ed3 100644 --- a/korganizer/koeditorgeneraltodo.cpp +++ b/korganizer/koeditorgeneraltodo.cpp @@ -369,6 +369,7 @@ void KOEditorGeneralTodo::enableDueEdit(bool enable) } else { mDueTimeEdit->setEnabled( false ); } + emit datesChecked(); } void KOEditorGeneralTodo::enableStartEdit( bool enable ) @@ -388,6 +389,7 @@ void KOEditorGeneralTodo::enableStartEdit( bool enable ) } else { mStartTimeEdit->setEnabled( false ); } + emit datesChecked(); } void KOEditorGeneralTodo::enableTimeEdits(bool enable) diff --git a/korganizer/koeditorgeneraltodo.h b/korganizer/koeditorgeneraltodo.h index 98f43dd..b198539 100644 --- a/korganizer/koeditorgeneraltodo.h +++ b/korganizer/koeditorgeneraltodo.h @@ -72,6 +72,7 @@ class KOEditorGeneralTodo : public KOEditorGeneral signals: void openCategoryDialog(); + void datesChecked(); protected slots: void completedChanged(int); diff --git a/korganizer/koeditorrecurrence.cpp b/korganizer/koeditorrecurrence.cpp index 4209e10..bedc75a 100644 --- a/korganizer/koeditorrecurrence.cpp +++ b/korganizer/koeditorrecurrence.cpp @@ -42,6 +42,7 @@ #include #include +#include #include @@ -905,16 +906,23 @@ void KOEditorRecurrence::setDefaults( QDateTime from, QDateTime to, bool ) mYearly->setByMonth( from.date().month(), from.date().day() ); } -void KOEditorRecurrence::readEvent(Event *event) +void KOEditorRecurrence::readEvent(Incidence *event) { - setDefaults( event->dtStart(), event->dtEnd(), true ); + + QDateTime dtEnd; + if ( event->type() == "Event" ) + dtEnd = ((Event*)event)->dtEnd(); + else + dtEnd = ((Todo*)event)->dtDue(); + + setDefaults( event->dtStart(), dtEnd, true ); QBitArray rDays( 7 ); QPtrList rmp; QPtrList rmd; int day = 0; int count = 0; int month = 0; - setDateTimes( event->dtStart(), event->dtEnd() ); + setDateTimes( event->dtStart(), dtEnd ); Recurrence *r = event->recurrence(); int f = r->frequency(); @@ -928,7 +936,7 @@ void KOEditorRecurrence::readEvent(Event *event) switch ( recurs ) { case Recurrence::rNone: - setDefaults( event->dtStart(), event->dtEnd(), true ); + setDefaults( event->dtStart(), dtEnd, true ); break; case Recurrence::rDaily: recurrenceType = RecurrenceChooser::Daily; @@ -1000,7 +1008,7 @@ void KOEditorRecurrence::readEvent(Event *event) mYearly->setFrequency( f ); break; default: - setDefaults( event->dtStart(), event->dtEnd(), true ); + setDefaults( event->dtStart(), dtEnd, true ); break; } @@ -1024,7 +1032,7 @@ void KOEditorRecurrence::readEvent(Event *event) mExceptions->setDates( event->exDates() ); } -void KOEditorRecurrence::writeEvent( Event *event ) +void KOEditorRecurrence::writeEvent( Incidence *event ) { Recurrence *r = event->recurrence(); diff --git a/korganizer/koeditorrecurrence.h b/korganizer/koeditorrecurrence.h index 2b59085..a15afcb 100644 --- a/korganizer/koeditorrecurrence.h +++ b/korganizer/koeditorrecurrence.h @@ -274,9 +274,9 @@ class KOEditorRecurrence : public QWidget /** Set widgets to default values */ void setDefaults( QDateTime from, QDateTime to, bool allday ); /** Read event object and setup widgets accordingly */ - void readEvent( Event * ); + void readEvent( Incidence * ); /** Write event settings to event object */ - void writeEvent( Event * ); + void writeEvent( Incidence * ); /** Check if the input is valid. */ bool validateInput(); diff --git a/korganizer/kotodoeditor.cpp b/korganizer/kotodoeditor.cpp index 70dfbd1..069dda8 100644 --- a/korganizer/kotodoeditor.cpp +++ b/korganizer/kotodoeditor.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -43,6 +44,7 @@ #include #include #include +#include #include "koprefs.h" #include "kolocationbox.h" @@ -68,7 +70,18 @@ void KOTodoEditor::init() { setupGeneral(); setupAttendeesTab(); + setupRecurrence(); + connect(mGeneral,SIGNAL(datesChecked()),this ,SLOT(checkRecurrence())); } +void KOTodoEditor::setupRecurrence() +{ + QFrame *topFrame = addPage( i18n("Recurrence") ); + QBoxLayout *topLayout = new QVBoxLayout( topFrame ); + + mRecurrence = new KOEditorRecurrence( topFrame ); + topLayout->addWidget( mRecurrence ); +} + void KOTodoEditor::setCategories( QString s ) { mGeneral->setCategories(s); @@ -194,6 +207,7 @@ void KOTodoEditor::editTodo(Todo *todo, bool editDescription) showPage( 0 ); mGeneral->setFocusOn( 2 ); } + checkRecurrence(); } void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay) @@ -287,8 +301,33 @@ void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay) } else mGeneral->setFocusOn( 2 ); + tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); + mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 ),true); +} +void KOTodoEditor::checkRecurrence() +{ + if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { + tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), true ); + + if ( mTodo ) + mRecurrence->readEvent( mTodo ); + else { + bool time = mGeneral->mTimeButton->isChecked(); + QDateTime from,to; + if ( time ) { + to = QDateTime( mGeneral->mDueDateEdit->date(), mGeneral->mDueTimeEdit->getTime() ) ; + from = QDateTime( mGeneral->mStartDateEdit->date(),mGeneral->mStartTimeEdit->getTime( )) ; + } else { + to = QDateTime( mGeneral->mDueDateEdit->date(), QTime( 0,0,0) ) ; + from = QDateTime( mGeneral->mStartDateEdit->date(),QTime( 0,0,0) ) ; + } + mRecurrence->setDefaults(from,to,!time); + } + } else { + tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); + mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 ),true); + } } - void KOTodoEditor::readTodo(Todo *todo) { mGeneral->readTodo(todo); @@ -308,7 +347,11 @@ void KOTodoEditor::writeTodo(Todo *event) // set related event, i.e. parent to-do in this case. if (mRelatedTodo) { event->setRelatedTo(mRelatedTodo); - } + } + if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { + mRecurrence->writeEvent(event); + } else + event->recurrence()->unsetRecurs(); } bool KOTodoEditor::validateInput() diff --git a/korganizer/kotodoeditor.h b/korganizer/kotodoeditor.h index 2657bd8..1b5e3b4 100644 --- a/korganizer/kotodoeditor.h +++ b/korganizer/kotodoeditor.h @@ -29,6 +29,7 @@ #include "koeditorgeneraltodo.h" #include "koeditordetails.h" #include "koincidenceeditor.h" +#include "koeditorrecurrence.h" class QDateTime; @@ -82,6 +83,7 @@ class KOTodoEditor : public KOIncidenceEditor protected slots: void loadDefaults(); void deleteTodo(); + void checkRecurrence(); void slotLoadTemplate(); void slotSaveTemplate(); @@ -90,6 +92,7 @@ class KOTodoEditor : public KOIncidenceEditor protected: void setupGeneral(); int msgItemDelete(); + void setupRecurrence(); private: Todo *mTodo; @@ -97,6 +100,7 @@ class KOTodoEditor : public KOIncidenceEditor Incidence *mRelatedTodo; KOEditorGeneralTodo *mGeneral; + KOEditorRecurrence *mRecurrence; }; #endif -- cgit v0.9.0.2