calendarui/caleneditor/src/caleneditorrepeatfield.cpp
changeset 58 ef813d54df51
parent 50 579cc610882e
child 68 a5a1242fd2e8
--- a/calendarui/caleneditor/src/caleneditorrepeatfield.cpp	Tue Jul 06 14:14:56 2010 +0300
+++ b/calendarui/caleneditor/src/caleneditorrepeatfield.cpp	Wed Aug 18 09:47:38 2010 +0300
@@ -32,6 +32,12 @@
 // User Included
 #include "caleneditorrepeatfield.h"
 #include "caleneditorcustomitem.h"
+#include "calendateutils.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "caleneditorrepeatfieldTraces.h"
+#endif
+
 
 // Constants
 const int userRole = Qt::UserRole + 100;
@@ -40,6 +46,39 @@
 	\class CalenEditorRepeatField
  */
 /*!
+    \enum CalenEditorRepeatField::RepeatTypes
+    This enum defines the different repeat types of an entry
+ */
+/*!
+    \var CalenEditorRepeatField::RepeatTypes CalenEditorRepeatField::RepeatOnce
+    No repeating type.
+ */
+/*!
+    \var CalenEditorRepeatField::RepeatTypes CalenEditorRepeatField::RepeatDaily
+    Daily repeating type.
+ */
+/*!
+    \var CalenEditorRepeatField::RepeatTypes CalenEditorRepeatField::RepeatWorkdays
+    Workdays repeating type.
+ */
+/*!
+    \var CalenEditorRepeatField::RepeatTypes CalenEditorRepeatField::RepeatWeekly
+    Weekly repeating type.
+ */
+/*!
+    \var CalenEditorRepeatField::RepeatTypes CalenEditorRepeatField::RepeatBiWeekly
+    Fortnightly repeating type.
+ */
+/*!
+    \var CalenEditorRepeatField::RepeatTypes CalenEditorRepeatField::RepeatMonthly
+    Monthly repeating type.
+ */
+/*!
+    \var CalenEditorRepeatField::RepeatTypes CalenEditorRepeatField::RepeatYearly
+    Yearly repeating type.
+ */
+
+/*!
 	Constructor.
 
 	\param parent QObject pointer
@@ -53,36 +92,40 @@
     mCalenEditor(calenEditor), 
 	mEditorForm(form), 
 	mCalenEditorModel(model), 
-	mRepeatItem(NULL),
-	mRepeatComboBox(NULL),
-	mCustomRepeatUntilItem(NULL),
+	mRepeatItem(0),
+	mRepeatComboBox(0),
+	mCustomRepeatUntilItem(0),
+	mRepeatRoleValue(0),
 	mIsBiWeekly(false),
 	mIsWorkdays(false),
 	mRepeatUntilItemAdded(false)
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_CALENEDITORREPEATFIELD_ENTRY );
 	if (!mCalenEditor->editedEntry()->repeatRule().isNull()) {
 		mRepeatRuleType = mCalenEditor->editedEntry()->repeatRule().type();
 		mRepeatUntilDate = mCalenEditor->editedEntry()->repeatRule().until().date();
-		}
-		
-		mRepeatItem = new HbDataFormModelItem();
-		mRepeatItem->setType(HbDataFormModelItem::ComboBoxItem);
-		mRepeatItem->setData(HbDataFormModelItem::LabelRole,
-		                     hbTrId("txt_calendar_setlabel_repeat"));
+	}
+
+	mRepeatItem = new HbDataFormModelItem();
+	mRepeatItem->setType(HbDataFormModelItem::ComboBoxItem);
+	mRepeatItem->setData(HbDataFormModelItem::LabelRole,
+	                     hbTrId("txt_calendar_setlabel_repeat"));
 
-		// Create the repeat choices
-		QStringList repeatChoices;
-		repeatChoices << hbTrId("txt_calendar_setlabel_repeat_val_only_once")
-		        << hbTrId("txt_calendar_setlabel_repeat_val_daily")
-		        << hbTrId("txt_calendar_setlabel_repeat_val_workdays")
-		        << hbTrId("txt_calendar_setlabel_repeat_val_weekly")
-		        << hbTrId("txt_calendar_setlabel_repeat_val_fortnightly")
-		        << hbTrId("txt_calendar_setlabel_repeat_val_monthly")
-		        << hbTrId("txt_calendar_setlabel_repeat_val_yearly");
+	// Create the repeat choices
+	QStringList repeatChoices;
+	repeatChoices << hbTrId("txt_calendar_setlabel_repeat_val_only_once")
+					<< hbTrId("txt_calendar_setlabel_repeat_val_daily")
+					<< hbTrId("txt_calendar_setlabel_repeat_val_workdays")
+					<< hbTrId("txt_calendar_setlabel_repeat_val_weekly")
+					<< hbTrId("txt_calendar_setlabel_repeat_val_fortnightly")
+					<< hbTrId("txt_calendar_setlabel_repeat_val_monthly")
+					<< hbTrId("txt_calendar_setlabel_repeat_val_yearly");
 
-		mRepeatItem->setContentWidgetData(QString("items"), repeatChoices);
+		mRepeatItem->setContentWidgetData("items", repeatChoices);
+		mRepeatItem->setContentWidgetData("objectName", "repeatItem");
 		mCalenEditorModel->appendDataFormItem( mRepeatItem,
 									mCalenEditorModel->invisibleRootItem());
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_CALENEDITORREPEATFIELD_EXIT );
 }
 
 /*!
@@ -90,7 +133,9 @@
  */
 CalenEditorRepeatField::~CalenEditorRepeatField()
 {
+	OstTraceFunctionEntry0( DUP1_CALENEDITORREPEATFIELD_CALENEDITORREPEATFIELD_ENTRY );
 	// Nothing Yet
+	OstTraceFunctionExit0( DUP1_CALENEDITORREPEATFIELD_CALENEDITORREPEATFIELD_EXIT );
 }
 
 /*!
@@ -98,9 +143,11 @@
  */
 void CalenEditorRepeatField::addItemToModel()
 {	
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_ADDITEMTOMODEL_ENTRY );
 	// Add reminder to the model
 	mCalenEditorModel->appendDataFormItem( mRepeatItem,
 				   mCalenEditorModel->invisibleRootItem());
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_ADDITEMTOMODEL_EXIT );
 }
 
 /*!
@@ -108,7 +155,9 @@
  */
 void CalenEditorRepeatField::removeItemFromModel()
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_REMOVEITEMFROMMODEL_ENTRY );
 	mCalenEditorModel->removeItem(modelIndex());
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_REMOVEITEMFROMMODEL_EXIT );
 }
 
 /*!
@@ -117,6 +166,7 @@
  */
 void CalenEditorRepeatField::populateRepeatItem(int index)
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_POPULATEREPEATITEM_ENTRY );
 	HbDataFormViewItem
 			*item =
 					qobject_cast<HbDataFormViewItem *> (
@@ -142,31 +192,31 @@
 	if (mCalenEditor->editedEntry()->isRepeating()) {
 		switch (mCalenEditor->editedEntry()->repeatRule().type()) {
 			case AgendaRepeatRule::DailyRule: {
-				mRepeatComboBox->setCurrentIndex(1);
+				mRepeatComboBox->setCurrentIndex(DailyRole);
 			}
 				break;
 			case AgendaRepeatRule::WeeklyRule: {
 				bool isWorkdays = AgendaUtil::isWorkdaysRepeatingEntry(
 						mCalenEditor->editedEntry()->repeatRule());
 				if (isWorkdays) {
-					mRepeatComboBox->setCurrentIndex(2);
+					mRepeatComboBox->setCurrentIndex(WorkdaysRole);
 					mIsWorkdays = true;
 				} else {
 					if (mCalenEditor->editedEntry()->repeatRule().interval() == 1) {
-						mRepeatComboBox->setCurrentIndex(3);
+						mRepeatComboBox->setCurrentIndex(WeeklyRole);
 					} else {
-						mRepeatComboBox->setCurrentIndex(4);
+						mRepeatComboBox->setCurrentIndex(BiWeeklyRole);
 						mIsBiWeekly = true;
 					}
 				}
 			}
 				break;
 			case AgendaRepeatRule::MonthlyRule: {
-				mRepeatComboBox->setCurrentIndex(5);
+				mRepeatComboBox->setCurrentIndex(MonthlyRole);
 			}
 				break;
 			case AgendaRepeatRule::YearlyRule: {
-				mRepeatComboBox->setCurrentIndex(6);
+				mRepeatComboBox->setCurrentIndex(YearlyRole);
 			}
 				break;
 			default:
@@ -181,11 +231,32 @@
 									  AgendaRepeatRule(
 									  AgendaRepeatRule::InvalidRule));
 	}
-	
+	// Connect the slot once the updation of mRepeatComboBox is done
+	connect(mRepeatComboBox, SIGNAL(currentIndexChanged(int)), this,
+				SLOT(handleRepeatIndexChanged(int)));
 	// Update the repeat choices depending upon the duration
 	updateRepeatChoices();
-	connect(mRepeatComboBox, SIGNAL(currentIndexChanged(int)), this,
-				SLOT(handleRepeatIndexChanged(int)));
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_POPULATEREPEATITEM_EXIT );
+}
+
+/*!
+	Removes the repeat until item from the model
+	and removed the connection for date picker launch too.
+ */
+void CalenEditorRepeatField::removeRepeatUntilItem()
+{
+	mRepeatRuleType = AgendaRepeatRule::InvalidRule;
+	if (mRepeatUntilItemAdded) {
+		mEditorForm->removeConnection(mCustomRepeatUntilItem, SIGNAL(clicked()),
+	                                this, SLOT(launchRepeatUntilDatePicker()));
+		QModelIndex repeatIndex =
+		        mCalenEditorModel->indexFromItem(mRepeatItem);
+		mCalenEditorModel->removeItem(
+		                              mCalenEditorModel->index(
+		                              repeatIndex.row()+ 1, 0));
+		mRepeatUntilItemAdded = false;
+		mCustomRepeatUntilItem = 0;
+	}
 }
 
 /*!
@@ -195,6 +266,7 @@
  */
 void CalenEditorRepeatField::handleRepeatIndexChanged(int index)
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_HANDLEREPEATINDEXCHANGED_ENTRY );
 	mIsBiWeekly = false;
 	mIsWorkdays = false;
 
@@ -202,12 +274,33 @@
 	// Get the user role we have set for this index
 	QVariant role = mRepeatComboBox->itemData(index, userRole);
 	int value = role.toInt();
-	switch (value) {
-		case 1: {
+	
+	// Boolean to check if the repeating property of the entry is changed.
+	// based on the value and mRepeatUntilItemAdded
+	// ie. From repeating to non repeating OR vice versa OR No change
+	bool repeatPropertyChange = false;
+	if (value > 0 && value <= 6 && !mRepeatUntilItemAdded) {
+		// Non repeating to repeating
+		repeatPropertyChange = true;
+	}else if(mRepeatUntilItemAdded && value == 0) {
+		// Repeating to non repeating
+		repeatPropertyChange = true;
+	}else {
+		// No change in repeat value
+		repeatPropertyChange = false;
+	}
+	QDate repeatUntilDate = mRepeatUntilDate;
+
+	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,
@@ -216,11 +309,12 @@
 			mRepeatRuleType = AgendaRepeatRule::DailyRule;
 		}
 		break;
-		case 2: {
+		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,
@@ -230,25 +324,26 @@
 			mIsWorkdays = true;
 		}
 		break;
-		case 3: {
+		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;
 		}
 		break;
-		case 4: {
+		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,
@@ -258,12 +353,13 @@
 			mIsBiWeekly = true;
 		}
 		break;
-		case 5: {
+		case MonthlyRole: {
 			if (!mRepeatUntilItemAdded) {
 				insertRepeatUntilItem();
 			}
 			if (mCustomRepeatUntilItem) {
-				mRepeatUntilDate = mCalenEditor->editedEntry()->startTime().date().addYears(5);
+				// 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));
@@ -271,11 +367,12 @@
 			mRepeatRuleType = AgendaRepeatRule::MonthlyRule;
 		}
 		break;
-		case 6: {
+		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,
@@ -285,23 +382,20 @@
 		}
 		break;
 		default: {
-			mRepeatRuleType = AgendaRepeatRule::InvalidRule;
-			if (mRepeatUntilItemAdded) {
-				QModelIndex repeatIndex =
-				        mCalenEditorModel->indexFromItem(mRepeatItem);
-				mCalenEditorModel->removeItem(
-				                              mCalenEditorModel->index(
-				                              repeatIndex.row()+ 1, 0));
-				mRepeatUntilItemAdded = false;
-				mCustomRepeatUntilItem = NULL;
-			}
+			removeRepeatUntilItem();
 		}
 		break;
 	}
+	}
 	if(!mCalenEditor->isNewEntry()) {
 		mCalenEditor->addDiscardAction();
 	}
-	mCalenEditor->updateReminderChoices();
+	// Depending on repeatPropertyChange value and the repeatuntil date change 
+	// the reminder choices are updated 
+	if(repeatPropertyChange || repeatUntilDate != mRepeatUntilDate) {
+		mCalenEditor->updateReminderChoices();
+	}
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_HANDLEREPEATINDEXCHANGED_EXIT );
 }
 
 /*!
@@ -310,6 +404,7 @@
  */
 QModelIndex CalenEditorRepeatField::modelIndex()
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_MODELINDEX_ENTRY );
 	return mCalenEditorModel->indexFromItem(mRepeatItem);
 }
 
@@ -318,6 +413,7 @@
  */
 void CalenEditorRepeatField::insertRepeatUntilItem()
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_INSERTREPEATUNTILITEM_ENTRY );
 	HbDataFormModelItem::DataItemType itemType =
 	        static_cast<HbDataFormModelItem::DataItemType> (RepeatUntilOffset);
 	
@@ -343,7 +439,9 @@
 				r_qtn_date_usual_with_zero);
 		mCustomRepeatUntilItem->setContentWidgetData("text", dateString);
 	}
-	//TODO: Scroll to functionality has to be implemented	
+	//Scroll to repeat until item added
+	mEditorForm->scrollTo(mCalenEditorModel->index(index, 0), HbAbstractItemView::EnsureVisible);
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_INSERTREPEATUNTILITEM_EXIT );
 }
 
 /*!
@@ -352,6 +450,8 @@
  */
 bool CalenEditorRepeatField::isRepeatUntilItemAdded()
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_ISREPEATUNTILITEMADDED_ENTRY );
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_ISREPEATUNTILITEMADDED_EXIT );
 	return mRepeatUntilItemAdded;
 }
 
@@ -360,6 +460,7 @@
  */
 void CalenEditorRepeatField::launchRepeatUntilDatePicker()
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_LAUNCHREPEATUNTILDATEPICKER_ENTRY );
 	HbDialog *popUp = new HbDialog();
 	popUp->setDismissPolicy(HbDialog::NoDismiss);
 	popUp->setTimeout(HbDialog::NoTimeout);
@@ -368,13 +469,13 @@
 	popUp->setAttribute( Qt::WA_DeleteOnClose, true );
 	
 	if (mDatePicker) {
-		mDatePicker = NULL;
+		mDatePicker = 0;
 	}
 	if (mRepeatRuleType == AgendaRepeatRule::DailyRule) {
 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addDays(1);
 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate, popUp);
 		mDatePicker->setMinimumDate(minDate);
-		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
+		mDatePicker->setMaximumDate(CalenDateUtils::maxTime().date());
 		mDatePicker->setDate(mRepeatUntilDate);
 	} else if (mRepeatRuleType == AgendaRepeatRule::WeeklyRule) {
 		QDate minDate;
@@ -385,19 +486,19 @@
 		}
 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate, popUp);
 		mDatePicker->setMinimumDate(minDate);
-		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
+		mDatePicker->setMaximumDate(CalenDateUtils::maxTime().date());
 		mDatePicker->setDate(mRepeatUntilDate);
 	} else if (mRepeatRuleType == AgendaRepeatRule::MonthlyRule) {
 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addMonths(1);
 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate, popUp);
 		mDatePicker->setMinimumDate(minDate);
-		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
+		mDatePicker->setMaximumDate(CalenDateUtils::maxTime().date());
 		mDatePicker->setDate(mRepeatUntilDate);
 	} else if (mRepeatRuleType == AgendaRepeatRule::YearlyRule) {
 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addYears(1);
 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate, popUp);
 		mDatePicker->setMinimumDate(minDate);
-		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
+		mDatePicker->setMaximumDate(CalenDateUtils::maxTime().date());
 		mDatePicker->setDate(mRepeatUntilDate);
 	}
 	popUp->setContentWidget(mDatePicker);
@@ -407,6 +508,7 @@
 	connect(okAction, SIGNAL(triggered()), this, SLOT(setRepeatUntilDate()));
 	popUp->addAction(new HbAction(hbTrId("txt_common_button_cancel"), popUp));
 	popUp->open();
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_LAUNCHREPEATUNTILDATEPICKER_EXIT );
 }
 
 /*!
@@ -414,6 +516,7 @@
  */
 void CalenEditorRepeatField::setRepeatUntilDate()
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_SETREPEATUNTILDATE_ENTRY );
 	mRepeatUntilDate = mDatePicker->date();
 	if (mRepeatUntilDate.isValid()) {
 		HbExtendedLocale locale = HbExtendedLocale::system();
@@ -422,6 +525,7 @@
 		mCustomRepeatUntilItem->setContentWidgetData("text", dateString);
 	}
 	mCalenEditor->updateReminderChoices();
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_SETREPEATUNTILDATE_EXIT );
 }
 
 /*!
@@ -429,6 +533,8 @@
  */
 QDate CalenEditorRepeatField::repeatUntilDate()
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_REPEATUNTILDATE_ENTRY );
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_REPEATUNTILDATE_EXIT );
 	return mRepeatUntilDate;
 }
 
@@ -437,14 +543,25 @@
 */
 void CalenEditorRepeatField::updateRepeatChoices()
 {
+    OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_UPDATEREPEATCHOICES_ENTRY );
     if (!mRepeatComboBox) {
+        OstTraceFunctionExit0( CALENEDITORREPEATFIELD_UPDATEREPEATCHOICES_EXIT );
         return;
     }
+	// Disconnect the slot and connect it back again at end to avoid unnecessary
+	// calls to handleRepeatIndexChanged slot. Or else the slot gets called 
+	// when we add all of items to the repeat combobox.
+	disconnect(mRepeatComboBox, SIGNAL(currentIndexChanged(int)), this,
+				SLOT(handleRepeatIndexChanged(int)));
 	// Clear all the choices and add it again. If we dont do it 
 	// as user would have changed the end times many times and we would have
 	// deleted repeat options depending upon that
 	// Get the current choice
 	int choice = mRepeatComboBox->currentIndex();
+	
+	QVariant role = mRepeatComboBox->itemData(choice, userRole);
+	mRepeatRoleValue = role.toInt();
+	
 	int previousCount = mRepeatComboBox->count();
 	mRepeatComboBox->clear();
 	QStringList repeatChoices;
@@ -499,6 +616,8 @@
 		mRepeatComboBox->removeItem(RepeatWeekly);
 		mRepeatComboBox->removeItem(RepeatWorkdays);
 		mRepeatComboBox->removeItem(RepeatDaily);
+		//Remove the repeat until item too.
+		removeRepeatUntilItem();
 	} else if (mCalenEditor->editedEntry()->endTime()
 			>= (mCalenEditor->editedEntry()->startTime().addMonths(1))) {
 		isRemovedItem = true;
@@ -545,8 +664,13 @@
 	if (choice >= count) {
 		choice = count - 1;
 	}
+	
+	//Connecting back the slot for repeat index change before setting index.
+	connect(mRepeatComboBox, SIGNAL(currentIndexChanged(int)), this,
+				SLOT(handleRepeatIndexChanged(int)));
 	// Set the previous user's choice
 	mRepeatComboBox->setCurrentIndex(choice);
+	OstTraceFunctionExit0( DUP1_CALENEDITORREPEATFIELD_UPDATEREPEATCHOICES_EXIT );
 }
 
 /*!
@@ -554,6 +678,7 @@
  */
 void CalenEditorRepeatField::saveRepeatRule()
 {
+	OstTraceFunctionEntry0( CALENEDITORREPEATFIELD_SAVEREPEATRULE_ENTRY );
 	// saves repeat type of entry.
 	if (mRepeatRuleType != AgendaRepeatRule::InvalidRule) {
 		AgendaRepeatRule repeatRule(mRepeatRuleType);
@@ -614,19 +739,18 @@
 			}
 		} else if (mRepeatRuleType == AgendaRepeatRule::MonthlyRule) {
 			QList<int> monthDays;
-			//TODO :
 			int dayNoInMonth = mCalenEditor->editedEntry()->startTime().date().day();
 			monthDays.append(dayNoInMonth);
 			repeatRule.setByMonthDay(monthDays);
 		} else if (mRepeatRuleType == AgendaRepeatRule::YearlyRule) {
-			//TODO : Add yearly rule.Check if required.
 		}
 		mCalenEditor->editedEntry()->setRepeatRule(repeatRule);
 	} else {
 		mCalenEditor->editedEntry()->setRepeatRule( AgendaRepeatRule(
 											AgendaRepeatRule::InvalidRule));
 	}
-	// TODO: Need to update rDates here
+	// TODO: Need to update rDates here for 10.2 if required
+	OstTraceFunctionExit0( CALENEDITORREPEATFIELD_SAVEREPEATRULE_EXIT );
 }
 
 // End of file	--Don't remove this.