diff -r a5a1242fd2e8 -r b0711afde476 calendarui/caleneditor/src/caleneditorrepeatfield.cpp --- a/calendarui/caleneditor/src/caleneditorrepeatfield.cpp Thu Sep 02 20:25:23 2010 +0300 +++ b/calendarui/caleneditor/src/caleneditorrepeatfield.cpp Fri Sep 17 08:29:05 2010 +0300 @@ -246,6 +246,7 @@ */ void CalenEditorRepeatField::removeRepeatUntilItem() { + OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_REMOVEREPEATUNTILITEM_ENTRY ); mRepeatRuleType = AgendaRepeatRule::InvalidRule; if (mRepeatUntilItemAdded) { mEditorForm->removeConnection(mCustomRepeatUntilItem, SIGNAL(clicked()), @@ -258,6 +259,7 @@ mRepeatUntilItemAdded = false; mCustomRepeatUntilItem = 0; } + OstTraceFunctionExit0( CALENEDITORREPEATFIELD_REMOVEREPEATUNTILITEM_EXIT ); } /*! @@ -268,8 +270,6 @@ void CalenEditorRepeatField::handleRepeatIndexChanged(int index) { OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_HANDLEREPEATINDEXCHANGED_ENTRY ); - mIsBiWeekly = false; - mIsWorkdays = false; HbExtendedLocale locale = HbExtendedLocale::system(); // Get the user role we have set for this index @@ -291,10 +291,16 @@ repeatPropertyChange = false; } QDate repeatUntilDate = mRepeatUntilDate; + int itemIndex = CalenEditorPrivate::RepeatUntilItem; + if (!mCalenEditor->isReminderTimeForAllDayAdded()) { + itemIndex -= 1; + } // Update the repeat type only if its has been changed // ie. if the previous repeatrole is different from the current repeat role if (value != mRepeatRoleValue) { mRepeatRoleValue = value; + mIsBiWeekly = false; + mIsWorkdays = false; switch (value) { case DailyRole: { if (!mRepeatUntilItemAdded) { @@ -401,16 +407,21 @@ // the reminder choices are updated if(repeatPropertyChange || repeatUntilDate != mRepeatUntilDate) { mCalenEditor->updateReminderChoices(); - // Once the entry is changed from non repeating to repeating - // and if the alarm set is off - // Then change the reminder option to the default 'one day before' - // if the option is valid - if (mCalenEditor->isAllDayEvent() && - repeatPropertyChange && mRepeatUntilItemAdded) { - if(!mCalenEditor->isReminderTimeForAllDayAdded() && - mCalenEditor->getReminderCount() >= 3) { - mCalenEditor->setCurrentIndexOfReminderField( + + // Once the entry is changed from non repeating to repeating we scroll to the repeat until item. + if(repeatPropertyChange && mRepeatUntilItemAdded) { + mEditorForm->scrollTo(mCalenEditorModel->index(itemIndex, 0), HbAbstractItemView::EnsureVisible); + + // Once the entry is changed from non repeating to repeating + // and if the alarm set is off + // Then change the reminder option to the default 'one day before' + // if the option is valid + if (mCalenEditor->isAllDayEvent()) { + if(!mCalenEditor->isReminderTimeForAllDayAdded() && + mCalenEditor->getReminderCount() >= 3) { + mCalenEditor->setCurrentIndexOfReminderField( CalenEditorReminderField::ReminderOneDayBefore); + } } } } @@ -458,8 +469,6 @@ r_qtn_date_usual_with_zero); mCustomRepeatUntilItem->setContentWidgetData("text", dateString); } - //Scroll to repeat until item added - mEditorForm->scrollTo(mCalenEditorModel->index(index, 0), HbAbstractItemView::EnsureVisible); OstTraceFunctionExit0( CALENEDITORREPEATFIELD_INSERTREPEATUNTILITEM_EXIT ); } @@ -481,6 +490,9 @@ { OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_LAUNCHREPEATUNTILDATEPICKER_ENTRY ); HbDialog *popUp = new HbDialog(); + // Set the parent for the dialog + // Once the parent object is deleted the dialog will also be deleted + popUp->setParent(this); popUp->setDismissPolicy(HbDialog::NoDismiss); popUp->setTimeout(HbDialog::NoTimeout); popUp->setHeadingWidget( new HbLabel( @@ -725,6 +737,11 @@ if (mRepeatRuleType != AgendaRepeatRule::InvalidRule) { AgendaRepeatRule repeatRule(mRepeatRuleType); + //Set the week start day in the repeat rule. + HbExtendedLocale locale = HbExtendedLocale::system(); + AgendaRepeatRule::Day wkStart = (AgendaRepeatRule::Day)locale.startOfWeek(); + repeatRule.setWeekStart(wkStart); + //TODO : Set the repeat from and to dates QVariant dateVariant = mCustomRepeatUntilItem->contentWidgetData("text");