diff -r ef813d54df51 -r a5a1242fd2e8 calendarui/caleneditor/src/caleneditorrepeatfield.cpp --- a/calendarui/caleneditor/src/caleneditorrepeatfield.cpp Wed Aug 18 09:47:38 2010 +0300 +++ b/calendarui/caleneditor/src/caleneditorrepeatfield.cpp Thu Sep 02 20:25:23 2010 +0300 @@ -32,6 +32,7 @@ // User Included #include "caleneditorrepeatfield.h" #include "caleneditorcustomitem.h" +#include "caleneditorreminderfield.h" #include "calendateutils.h" #include "OstTraceDefinitions.h" #ifdef OST_TRACE_COMPILER_IN_USE @@ -290,102 +291,108 @@ repeatPropertyChange = false; } QDate repeatUntilDate = mRepeatUntilDate; - - if (value != mRepeatRoleValue) - { - mRepeatRoleValue = value; - switch (value) { - case DailyRole: { - if (!mRepeatUntilItemAdded) { - insertRepeatUntilItem(); + // 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; + switch (value) { + case DailyRole: { + if (!mRepeatUntilItemAdded) { + insertRepeatUntilItem(); + } + if (mCustomRepeatUntilItem) { + // Show default repeat until date till one year for daily rule + mRepeatUntilDate = + mCalenEditor->editedEntry()->startTime().date().addYears(1); + mCustomRepeatUntilItem->setContentWidgetData( "text", + locale.format( + mRepeatUntilDate, r_qtn_date_usual_with_zero)); + } + mRepeatRuleType = AgendaRepeatRule::DailyRule; } - if (mCustomRepeatUntilItem) { - // Show default repeat until date till one year for daily rule - mRepeatUntilDate = mCalenEditor->editedEntry()->startTime().date().addYears(1); - mCustomRepeatUntilItem->setContentWidgetData( "text", - locale.format( mRepeatUntilDate, - r_qtn_date_usual_with_zero)); + break; + case WorkdaysRole: { + if (!mRepeatUntilItemAdded) { + insertRepeatUntilItem(); + } + if (mCustomRepeatUntilItem) { + // Show default repeat until date till one year for workdays rule + mRepeatUntilDate = + mCalenEditor->editedEntry()->startTime().date().addYears(1); + mCustomRepeatUntilItem->setContentWidgetData( "text", + locale.format( + mRepeatUntilDate, r_qtn_date_usual_with_zero)); + } + mRepeatRuleType = AgendaRepeatRule::WeeklyRule; + mIsWorkdays = true; } - mRepeatRuleType = AgendaRepeatRule::DailyRule; - } - break; - case WorkdaysRole: { - if (!mRepeatUntilItemAdded) { - insertRepeatUntilItem(); + break; + case WeeklyRole: { + if (!mRepeatUntilItemAdded) { + insertRepeatUntilItem(); + } + if (mCustomRepeatUntilItem) { + // Show default repeat until date till one year for weekly rule + mRepeatUntilDate = + mCalenEditor->editedEntry()->startTime().date().addYears(1); + mCustomRepeatUntilItem->setContentWidgetData( "text", + locale.format( + mRepeatUntilDate, r_qtn_date_usual_with_zero)); + } + mRepeatRuleType = AgendaRepeatRule::WeeklyRule; } - if (mCustomRepeatUntilItem) { - // Show default repeat until date till one year for workdays rule - mRepeatUntilDate = mCalenEditor->editedEntry()->startTime().date().addYears(1); - mCustomRepeatUntilItem->setContentWidgetData( "text", - locale.format( mRepeatUntilDate, - r_qtn_date_usual_with_zero)); + break; + case BiWeeklyRole: { + if (!mRepeatUntilItemAdded) { + insertRepeatUntilItem(); + } + if (mCustomRepeatUntilItem) { + // Show default repeat until date till one year for bi-weekly rule + mRepeatUntilDate = + mCalenEditor->editedEntry()->startTime().date().addYears(1); + mCustomRepeatUntilItem->setContentWidgetData( "text", + locale.format( + mRepeatUntilDate, r_qtn_date_usual_with_zero)); + } + mRepeatRuleType = AgendaRepeatRule::WeeklyRule; + mIsBiWeekly = true; } - mRepeatRuleType = AgendaRepeatRule::WeeklyRule; - mIsWorkdays = true; - } - break; - case WeeklyRole: { - if (!mRepeatUntilItemAdded) { - insertRepeatUntilItem(); + break; + case MonthlyRole: { + if (!mRepeatUntilItemAdded) { + insertRepeatUntilItem(); + } + if (mCustomRepeatUntilItem) { + // Show default repeat until date till one year for monthly rule + mRepeatUntilDate = + mCalenEditor->editedEntry()->startTime().date().addYears(1); + mCustomRepeatUntilItem->setContentWidgetData( "text", + locale.format( + mRepeatUntilDate, r_qtn_date_usual_with_zero)); + } + mRepeatRuleType = AgendaRepeatRule::MonthlyRule; } - if (mCustomRepeatUntilItem) { - // Show default repeat until date till one year for weekly rule - mRepeatUntilDate = mCalenEditor->editedEntry()->startTime().date().addYears(1); - mCustomRepeatUntilItem->setContentWidgetData( "text", - locale.format( mRepeatUntilDate, - r_qtn_date_usual_with_zero)); + break; + case YearlyRole: { + if (!mRepeatUntilItemAdded) { + insertRepeatUntilItem(); + } + if (mCustomRepeatUntilItem) { + // Show default repeat until date till ten years for yearly rule + mRepeatUntilDate = + mCalenEditor->editedEntry()->startTime().date().addYears(10); + mCustomRepeatUntilItem->setContentWidgetData( "text", + locale.format( + mRepeatUntilDate, r_qtn_date_usual_with_zero)); + } + mRepeatRuleType = AgendaRepeatRule::YearlyRule; } - mRepeatRuleType = AgendaRepeatRule::WeeklyRule; + break; + default: { + removeRepeatUntilItem(); + } + break; } - break; - case BiWeeklyRole: { - if (!mRepeatUntilItemAdded) { - insertRepeatUntilItem(); - } - if (mCustomRepeatUntilItem) { - // Show default repeat until date till one year for bi-weekly rule - mRepeatUntilDate = mCalenEditor->editedEntry()->startTime().date().addYears(1); - mCustomRepeatUntilItem->setContentWidgetData( "text", - locale.format( mRepeatUntilDate, - r_qtn_date_usual_with_zero)); - } - mRepeatRuleType = AgendaRepeatRule::WeeklyRule; - mIsBiWeekly = true; - } - break; - case MonthlyRole: { - if (!mRepeatUntilItemAdded) { - insertRepeatUntilItem(); - } - if (mCustomRepeatUntilItem) { - // Show default repeat until date till one year for monthly rule - mRepeatUntilDate = mCalenEditor->editedEntry()->startTime().date().addYears(1); - mCustomRepeatUntilItem->setContentWidgetData( "text", - locale.format( mRepeatUntilDate, - r_qtn_date_usual_with_zero)); - } - mRepeatRuleType = AgendaRepeatRule::MonthlyRule; - } - break; - case YearlyRole: { - if (!mRepeatUntilItemAdded) { - insertRepeatUntilItem(); - } - if (mCustomRepeatUntilItem) { - // Show default repeat until date till ten years for yearly rule - mRepeatUntilDate = mCalenEditor->editedEntry()->startTime().date().addYears(10); - mCustomRepeatUntilItem->setContentWidgetData( "text", - locale.format( mRepeatUntilDate, - r_qtn_date_usual_with_zero)); - } - mRepeatRuleType = AgendaRepeatRule::YearlyRule; - } - break; - default: { - removeRepeatUntilItem(); - } - break; - } } if(!mCalenEditor->isNewEntry()) { mCalenEditor->addDiscardAction(); @@ -394,6 +401,18 @@ // 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( + CalenEditorReminderField::ReminderOneDayBefore); + } + } } OstTraceFunctionExit0( CALENEDITORREPEATFIELD_HANDLEREPEATINDEXCHANGED_EXIT ); } @@ -517,6 +536,8 @@ void CalenEditorRepeatField::setRepeatUntilDate() { OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_SETREPEATUNTILDATE_ENTRY ); + //Get the previous date which was set + QDate previousDate = mRepeatUntilDate; mRepeatUntilDate = mDatePicker->date(); if (mRepeatUntilDate.isValid()) { HbExtendedLocale locale = HbExtendedLocale::system(); @@ -525,6 +546,18 @@ mCustomRepeatUntilItem->setContentWidgetData("text", dateString); } mCalenEditor->updateReminderChoices(); + // If the entry's repeatuntil date is changed from past to a future date + // And if the alarm set set is off + // Then change the reminder option to the default 'one day before' + // if the option is valid + if (mCalenEditor->isAllDayEvent() && previousDate <= QDate::currentDate()) { + if(mRepeatUntilDate > QDate::currentDate() && + !mCalenEditor->isReminderTimeForAllDayAdded() && + mCalenEditor->getReminderCount() >= 3) { + mCalenEditor->setCurrentIndexOfReminderField( + CalenEditorReminderField::ReminderOneDayBefore); + } + } OstTraceFunctionExit0( CALENEDITORREPEATFIELD_SETREPEATUNTILDATE_EXIT ); } @@ -668,8 +701,17 @@ //Connecting back the slot for repeat index change before setting index. connect(mRepeatComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(handleRepeatIndexChanged(int))); + // By default the repeat combobox index will be 0 // Set the previous user's choice mRepeatComboBox->setCurrentIndex(choice); + // If the previous user's choice is also zero, then slot + // handleRepeatIndexChanged will not be called as + // there is no change in current index + // So explicitly call updateReminderChoices to update the reminder choices + // for choice : 0 (Not repeated) + if(choice == 0) { + mCalenEditor->updateReminderChoices(); + } OstTraceFunctionExit0( DUP1_CALENEDITORREPEATFIELD_UPDATEREPEATCHOICES_EXIT ); }