--- 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 );
}