calendarui/agendaeventviewer/src/agendaeventview.cpp
changeset 58 ef813d54df51
parent 50 579cc610882e
child 68 a5a1242fd2e8
--- a/calendarui/agendaeventviewer/src/agendaeventview.cpp	Tue Jul 06 14:14:56 2010 +0300
+++ b/calendarui/agendaeventviewer/src/agendaeventview.cpp	Wed Aug 18 09:47:38 2010 +0300
@@ -45,17 +45,24 @@
 #include <maptileservice.h>//maptile service
 #include <agendautil.h>
 #include <NotesEditorInterface>
-#include <caleneditor.h>
+#include <CalenEditor>
+
+#include "calenagendautils.h"
 #include "agendaeventview.h"
 #include "agendaeventviewerdocloader.h"
 #include "agendaeventviewercommon.h"
 #include "agendaeventviewer_p.h"
 #include "agendaeventvieweritem.h"
 #include "calendateutils.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "agendaeventviewTraces.h"
+#endif
+
 // Constants
-#define CHARACTER_HYPHEN    "-"
 #define CHARACTER_SPACE     " "
-#define CHARACTER_NEW_LINE  "\n"
+#define CHARACTER_HYPHEN    " - "
+
 
 //This Property is use for setting a primary left icon
 static const char *primaryLeftIconItem("leftPrimaryIconItem");
@@ -89,7 +96,8 @@
 		mMaptileStatus(-1),
 		mNotesPluginLoaded(false)
 {
-	
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_AGENDAEVENTVIEW_ENTRY );
+	mTranslator->loadCommon();
 	mDocLoader = new AgendaEventViewerDocLoader;
 
 	// Load to-do viewer's docml.
@@ -148,6 +156,7 @@
     }
         
 	
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_AGENDAEVENTVIEW_EXIT );
 }
 
 /*!
@@ -155,6 +164,7 @@
  */
 AgendaEventView::~AgendaEventView()
 {
+    OstTraceFunctionEntry0( DUP1_AGENDAEVENTVIEW_AGENDAEVENTVIEW_ENTRY );
 
 	// Remove the translator
 	if (mTranslator) {
@@ -188,6 +198,7 @@
         mProgressTimer = NULL;
     }
 	
+	OstTraceFunctionExit0( DUP1_AGENDAEVENTVIEW_AGENDAEVENTVIEW_EXIT );
 }
 
 /*!
@@ -198,6 +209,7 @@
 void AgendaEventView::execute(AgendaEntry entry,
 											AgendaEventViewer::Actions action)
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_EXECUTE_ENTRY );
 
 	mOriginalAgendaEntry = entry;
 	mAgendaEntry = entry;
@@ -247,6 +259,7 @@
 		
 	connect(mBackAction, SIGNAL(triggered()), this, SLOT(close()));
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_EXECUTE_EXIT );
 }
 
 /*!
@@ -254,6 +267,7 @@
  */
 void AgendaEventView::addViewerData()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDVIEWERDATA_ENTRY );
 	
 	// Add the title to event viewer.
 	addGroupBoxData();
@@ -289,6 +303,7 @@
 	// Set the description.
 	addDescriptionData();
 	
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDVIEWERDATA_EXIT );
 }
 
 /*!
@@ -296,6 +311,7 @@
  */
 void AgendaEventView::addMenuItem()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDMENUITEM_ENTRY );
 
 	if (mAgendaEntry.type() == AgendaEntry::TypeTodo) {
 
@@ -313,6 +329,7 @@
 		        SLOT(markTodoStatus()));
 		menu->addAction(mMarkTodoAction);
 	}
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDMENUITEM_EXIT );
 }
 
 /*!
@@ -320,6 +337,7 @@
  */
 void AgendaEventView::addToolBarItem(AgendaEventViewer::Actions action)
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDTOOLBARITEM_ENTRY );
 
 	HbToolBar *toolBar = qobject_cast<HbToolBar *> (
 	                       mDocLoader->findWidget(AGENDA_EVENT_VIEWER_TOOLBAR));
@@ -350,6 +368,7 @@
 		toolBar->addAction(saveAction);
 	}
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDTOOLBARITEM_EXIT );
 }
 
 /*!
@@ -357,6 +376,7 @@
  */
 void AgendaEventView::addGroupBoxData()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDGROUPBOXDATA_ENTRY );
 	
 	HbGroupBox *groupBox = qobject_cast<HbGroupBox *> (
 			mDocLoader->findWidget(AGENDA_EVENT_VIEWER_GROUPBOX));
@@ -364,13 +384,13 @@
 	AgendaEntry::Type entryType = mAgendaEntry.type();
 	if (entryType == AgendaEntry::TypeTodo) {
 		groupBox->setHeading(hbTrId("txt_calendar_subhead_to_do"));
+	} else if (CalenAgendaUtils::isAlldayEvent(mAgendaEntry)) {
+        groupBox->setHeading(hbTrId("txt_calendar_subhead_all_day_event"));
 	} else if (entryType == AgendaEntry::TypeAppoinment) {
 		groupBox->setHeading(hbTrId("txt_calendar_subhead_meeting"));
-	}else if (entryType == AgendaEntry::TypeEvent) {
-		//TODO: Add text id once available
-		groupBox->setHeading(hbTrId("All day event"));
-	}
+	} 
 		
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDGROUPBOXDATA_EXIT );
 }
 
 /*!
@@ -378,6 +398,7 @@
  */
 void AgendaEventView::addSubjectAndPriorityData()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDSUBJECTANDPRIORITYDATA_ENTRY );
 
 	QStringList itemList;
 	itemList.append(hbTrId("txt_calendar_dblist_subject"));
@@ -401,6 +422,7 @@
 
 	mSubjectWidget->setEventViewerItemData(itemList, Qt::DecorationRole);
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDSUBJECTANDPRIORITYDATA_EXIT );
 }
 
 /*!
@@ -408,6 +430,7 @@
  */
 void AgendaEventView::addDateTimeData()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDDATETIMEDATA_ENTRY );
     
     QStringList itemData;
     HbExtendedLocale systemLocale = HbExtendedLocale::system();
@@ -418,7 +441,7 @@
     itemData.append(QString::null);
     itemData.append("qtg_small_calendar");
 
-    mDateTimeWidget->setProperty(primaryLeftIconItem, false);  
+    mDateTimeWidget->setProperty(primaryLeftIconItem, false);
 
     mDateTimeWidget->setEventViewerItemData(itemData, Qt::DecorationRole);
     itemData.clear();
@@ -431,56 +454,61 @@
     QString data;
     
     // Add agenda entry specific fields to the viewer
+    
     switch (mAgendaEntry.type()) {
     	case AgendaEntry::TypeAppoinment:
-
-    		startTimeText.append(systemLocale.format(
-							startDateTime.time(), r_qtn_time_usual_with_zero));
-
-    		endTimeText.append(systemLocale.format(endDateTime.time(),
-												r_qtn_time_usual_with_zero));
-    		startDateText.append(
-    				systemLocale.format(startDateTime.date(),
-												r_qtn_date_usual_with_zero));
-    		if (CalenDateUtils::onSameDay(startDateTime, endDateTime)) {
-    			data.append(hbTrId("txt_calendar_dblist_start_end_time").arg(
-											startTimeText).arg(endTimeText));
-    			data.append(CHARACTER_SPACE);
-    			data.append(hbTrId("txt_calendar_dblist_meeting_date").arg(
-											startDateText));
-    		} else {
-    			data.append(hbTrId("txt_calendar_dblist_start_time_date").arg(
-											startTimeText).arg(startDateText));
-    			QString endDateText;
-    			endDateText.append(
-    					systemLocale.format(endDateTime.date(),
-												r_qtn_date_usual_with_zero));
-    			data.append(hbTrId("txt_calendar_dblist_end_time_date").arg(
-											endTimeText).arg(endDateText));
-    		}
+    	case AgendaEntry::TypeEvent:
+    	    // Check if entry is an all-day
+    	    if (CalenAgendaUtils::isAlldayEvent(mAgendaEntry)) {
+                dateTimeText.append(systemLocale.format(startDateTime.date(),
+    	                                                        r_qtn_date_usual_with_zero));
+                if (CalenDateUtils::onSameDay(startDateTime, endDateTime.addSecs(-60))) {
+                    data.append(dateTimeText);
+                } else {
+                    QString endDate;
+                    endDate.append(
+                            systemLocale.format(endDateTime.addSecs(-60).date(),
+                                                r_qtn_date_usual_with_zero));
+                    data.append(dateTimeText);
+                    data.append(" - ");
+                    data.append(endDate);
+                }
+    	    } else {
+                startTimeText.append(systemLocale.format(
+                                startDateTime.time(), r_qtn_time_usual_with_zero));
+    
+                endTimeText.append(systemLocale.format(endDateTime.time(),
+                                                    r_qtn_time_usual_with_zero));
+                startDateText.append(
+                        systemLocale.format(startDateTime.date(),
+                                                    r_qtn_date_usual_with_zero));
+                if (CalenDateUtils::onSameDay(startDateTime, endDateTime)) {
+                    data.append(startTimeText);
+                    data.append(CHARACTER_HYPHEN);
+                    data.append(endTimeText);
+                    data.append(CHARACTER_SPACE);
+                    data.append(startDateText);
+                } else {
+                    // If both start and end time of a meeting are on different dates
+                    data.append(startTimeText);
+                    data.append(CHARACTER_SPACE);
+                    data.append(startDateText);
+                    QString endDateText;
+                    endDateText.append(
+                            systemLocale.format(endDateTime.date(),
+                                                r_qtn_date_usual_with_zero));
+                    data.append(CHARACTER_HYPHEN);
+                    data.append(endTimeText);
+                    data.append(CHARACTER_SPACE);
+                    data.append(endDateText);
+                }
+    	    }
     		break;
     	case AgendaEntry::TypeAnniversary:
     	case AgendaEntry::TypeTodo:
     		dateTimeText.append(systemLocale.format(endDateTime.date(),
-												r_qtn_date_usual_with_zero));
-    		data.append(hbTrId(
-						"txt_calendar_dblist_meeting_date").arg(dateTimeText));
-    		break;
-    	case AgendaEntry::TypeEvent:
-
-    		dateTimeText.append(systemLocale.format(startDateTime.date(),
-												r_qtn_date_usual_with_zero));
-    		if (CalenDateUtils::onSameDay(startDateTime, endDateTime.addSecs(-60))) {
-    			data.append(hbTrId("txt_calendar_dblist_meeting_date").arg(
-											dateTimeText));
-    		} else {
-    			QString endDate;
-    			endDate.append(
-    					systemLocale.format(endDateTime.addSecs(-60).date(),
-												r_qtn_date_usual_with_zero));
-    			data.append(hbTrId("txt_calendar_dblist_start_end_time").arg(
-											dateTimeText).arg(endDate));
-    		}
+    											r_qtn_date_usual_with_zero));
+    		data.append(dateTimeText);
     		break;
     	default:
     		break;
@@ -488,6 +516,7 @@
 	itemData.append(data);
     mDateTimeWidget->setEventViewerItemData(itemData, Qt::DisplayRole);
     
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDDATETIMEDATA_EXIT );
 }
 
 /*!
@@ -495,10 +524,11 @@
  */
 void AgendaEventView::addLocationData()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDLOCATIONDATA_ENTRY );
 	QStringList itemData;
 	QString progressIcon(QString::null);	
 	if ( mLocationFeatureEnabled ) {
-	    getProgressIndicatorstatus(progressIcon);	   
+	    getProgressIndicatorstatus(progressIcon);
 	}
 	 if( progressIcon.isNull() ) {
 	     itemData.append(QString::null);
@@ -517,6 +547,7 @@
 	itemData.append(QString::null);
 	itemData.append(mAgendaEntry.location());
 	mLocationWidget->setEventViewerItemData(itemData, Qt::DisplayRole);
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDLOCATIONDATA_EXIT );
 }
 
 /*!
@@ -524,18 +555,25 @@
  */
 void AgendaEventView::addMapTileImage()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDMAPTILEIMAGE_ENTRY );
     if (mLocationFeatureEnabled && !mAgendaEntry.location().isEmpty() && !mMaptilePath.isEmpty()) {
 
         HbIcon maptile(mMaptilePath);
         mMaptileLabel->setIcon(maptile);
-        mMaptileLabel->setPreferredSize(QSizeF(maptile.width(), maptile.height()));
+        //get the margin size
+        qreal left, bottom;
+        mMaptileLabel->getContentsMargins( &left, 0, 0, &bottom );
+        mMaptileLabel->setPreferredSize( 
+                 QSizeF( maptile.width() + left, maptile.height() + bottom ) );
     }
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDMAPTILEIMAGE_EXIT );
 }
 /*!
 	Add reminder data to Event viewer
  */
 void AgendaEventView::addReminderData()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDREMINDERDATA_ENTRY );
 	QStringList itemData;
 	itemData.append(QString::null);
     itemData.append(QString::null);
@@ -546,20 +584,23 @@
 	itemData.append(QString::null);
 	itemData.append(alarmTimeText());
 	mReminderWidget->setEventViewerItemData(itemData, Qt::DisplayRole);
-    }
+	mReminderWidgetAdded = true;
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDREMINDERDATA_EXIT );
+}
 
 /*!
 	Add completed to-do data to Event viewer
  */
 void AgendaEventView::addCompletedTodoData()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDCOMPLETEDTODODATA_ENTRY );
 	QStringList itemData;
-	QString     completedText;
-    HbExtendedLocale systemLocale = HbExtendedLocale::system();;
-    itemData.append(QString::null);
+	QString completedText;
+	HbExtendedLocale systemLocale = HbExtendedLocale::system();;
 	itemData.append(QString::null);
 	itemData.append(QString::null);
-    mReminderWidget->setProperty(primaryLeftIconItem, false);
+	itemData.append(QString::null);
+	mReminderWidget->setProperty(primaryLeftIconItem, true);
 	mReminderWidget->setEventViewerItemData(itemData, Qt::DecorationRole);
 	itemData.clear();
 	completedText = systemLocale.format(mAgendaEntry.completedDateTime().date(),
@@ -567,6 +608,7 @@
 	itemData.append(hbTrId("txt_calendar_dblist_completed_date"));
 	itemData.append(completedText);
 	mReminderWidget->setEventViewerItemData(itemData, Qt::DisplayRole);
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDCOMPLETEDTODODATA_EXIT );
 }
 
 /*!
@@ -574,16 +616,22 @@
  */
 void AgendaEventView::addRepeatData()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDREPEATDATA_ENTRY );
 	QStringList itemData;
 	itemData.append(QString::null);
     itemData.append(QString::null);
-    itemData.append("qtg_small_repeat");
+    if(!mAgendaEntry.recurrenceId().isNull()) {
+        itemData.append("qtg_small_repeat_exception");
+    }else {
+           itemData.append("qtg_small_repeat");
+    }
     mRepeatWidget->setProperty(primaryLeftIconItem, false);
 	mRepeatWidget->setEventViewerItemData(itemData, Qt::DecorationRole);
 	itemData.clear();
 	itemData.append(QString::null);
 	itemData.append(repeatRule());
 	mRepeatWidget->setEventViewerItemData(itemData, Qt::DisplayRole);
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDREPEATDATA_EXIT );
 }
 
 /*!
@@ -591,16 +639,18 @@
  */
 void AgendaEventView::addDescriptionData()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDDESCRIPTIONDATA_ENTRY );
 	QStringList itemData;
 	itemData.append(QString::null);
 	itemData.append(QString::null);
     itemData.append(QString::null);
-    mDescriptionWidget->setProperty(primaryLeftIconItem, false);
+    mDescriptionWidget->setProperty(primaryLeftIconItem, true);
 	mDescriptionWidget->setEventViewerItemData(itemData, Qt::DecorationRole);
 	itemData.clear();
 	itemData.append(hbTrId("txt_calendar_dblist_description"));
 	itemData.append(mAgendaEntry.description());
 	mDescriptionWidget->setEventViewerItemData(itemData, Qt::DisplayRole);
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDDESCRIPTIONDATA_EXIT );
 }
 
 /*!
@@ -608,6 +658,7 @@
  */
 void AgendaEventView::getPriorityIcon(int priority, QString &priorityIcon)
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_GETPRIORITYICON_ENTRY );
 
 	switch(priority) {
 		case 1:priorityIcon.append("qtg_small_priority_high");
@@ -618,16 +669,27 @@
 		break;
 	}
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_GETPRIORITYICON_EXIT );
 }
 
 /*!
 	Returns repeat rule
  */
-QString AgendaEventView::repeatRule() const
+QString AgendaEventView::repeatRule()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_REPEATRULE_ENTRY );
 	
 	QString repeatRule;
-	AgendaRepeatRule agendaRepeatRule = mAgendaEntry.repeatRule();
+	AgendaRepeatRule agendaRepeatRule;
+	if (mAgendaEntry.isRepeating()) {
+	    agendaRepeatRule = mAgendaEntry.repeatRule();
+	} else {
+            if (!mAgendaEntry.recurrenceId().isNull()) {
+                AgendaEntry parentEntry= mOwner->mAgendaUtil->parentEntry(mAgendaEntry);
+                agendaRepeatRule = parentEntry.repeatRule();
+                }
+	}
+	
 	if (agendaRepeatRule.type() != AgendaRepeatRule::InvalidRule)
 	{
 		switch (agendaRepeatRule.type()) {
@@ -636,7 +698,8 @@
 			break;
 			case AgendaRepeatRule::WeeklyRule:
 				if (AgendaUtil::isWorkdaysRepeatingEntry(agendaRepeatRule)) {
-					repeatRule.append(hbTrId("txt_calendar_dblist_repeats_workdays"));
+					repeatRule.append(
+								hbTrId("txt_calendar_dblist_repeats_workdays"));
 				} else {
 					if (agendaRepeatRule.interval() == 2) {
 						repeatRule.append(
@@ -658,16 +721,17 @@
 			default:
 			break;
 		}
-		repeatRule.append(CHARACTER_NEW_LINE);
+		repeatRule.append(CHARACTER_SPACE);
 		HbExtendedLocale systemLocale = HbExtendedLocale::system();
 		QString untilDateString = systemLocale.format(
-				mAgendaEntry.repeatRule().until().date(), 
-				r_qtn_date_usual_with_zero);
+		                agendaRepeatRule.until().date(), 
+		                r_qtn_date_usual_with_zero);
 		repeatRule.append(
 			hbTrId("txt_calendar_dblist_repeats_daily_val_until_1").
 			arg(untilDateString));
 	}
 	
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_REPEATRULE_EXIT );
 	return repeatRule;
 }
 
@@ -678,6 +742,7 @@
  */
 QString AgendaEventView::alarmTimeText() const
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_ALARMTIMETEXT_ENTRY );
 
 	QString alarmDateTimeText;
 	QDateTime startTime;
@@ -694,14 +759,17 @@
 		alarmDateTime = startTime.addSecs(-alarmTimeOffsetInMinutes * 60);
 
 		HbExtendedLocale systemLocale = HbExtendedLocale::system();
-		alarmDateTimeText.append(
-						hbTrId("txt_calendar_list_reminder_time_date").arg(
-						systemLocale.format(alarmDateTime.time(),
-						r_qtn_time_usual_with_zero)).arg(
-						systemLocale.format(alarmDateTime.date(),
-						r_qtn_date_usual_with_zero)));
+		alarmDateTimeText.append(systemLocale.format(alarmDateTime.time(),
+										r_qtn_time_usual_with_zero));
+		// Show the alarm date only if its not on the same day of the entry
+		if (!CalenDateUtils::onSameDay(alarmDateTime, startTime)) {
+			alarmDateTimeText.append(CHARACTER_SPACE);
+			alarmDateTimeText.append(systemLocale.format(alarmDateTime.date(),
+											r_qtn_date_usual_with_zero));	
+		}
 	}
 	
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ALARMTIMETEXT_EXIT );
 	return alarmDateTimeText;
 }
 
@@ -710,6 +778,7 @@
  */
 void AgendaEventView::removeWidget()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_REMOVEWIDGET_ENTRY );
 	
 	if (mAgendaEntry.location().isEmpty()) { 
 		mLocationWidget->hide();
@@ -717,9 +786,9 @@
 	}
 	
 	QFile file(mMaptilePath);
-    if ( !mLocationFeatureEnabled || !file.exists()
-            || mAgendaEntry.location().isEmpty()){        
-        //code added to hide and remove maptile image   
+    if (!mLocationFeatureEnabled || !file.exists()
+            || mAgendaEntry.location().isEmpty()) {
+        //code added to hide and remove maptile image
         mMaptileLabel->hide();
         mLinearLayout->removeItem(mMaptileLabel);
     }
@@ -739,7 +808,16 @@
 		}
 	}
 	
-	if (mAgendaEntry.repeatRule().type() == AgendaRepeatRule::InvalidRule) { 
+	// Check whether the entry is a completed To-do. if so then remove the 
+	// time and date widget.
+	if (mAgendaEntry.type() == AgendaEntry::TypeTodo &&
+			AgendaEntry::TodoCompleted == mAgendaEntry.status()) {
+		mDateTimeWidget->hide();
+		mLinearLayout->removeItem(mDateTimeWidget);
+	}
+	
+	if ((mAgendaEntry.repeatRule().type() == AgendaRepeatRule::InvalidRule) &&
+			(mAgendaEntry.recurrenceId().isNull())) { 
 		mRepeatWidget->hide();
 		mLinearLayout->removeItem(mRepeatWidget);
 	}
@@ -752,16 +830,26 @@
 	mLinearLayout->invalidate();
 	mLinearLayout->activate();
 	
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_REMOVEWIDGET_EXIT );
 }
 
 /*!
-	Update the completed to-do or reminder data to event viewer.
+	Update all the fields according to to-do status change..
  */
-void AgendaEventView::updateCompletedReminderData()
+void AgendaEventView::updateFieldsforTodoStatus()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_UPDATEFIELDSFORTODOSTATUS_ENTRY );
 
 	if (AgendaEntry::TodoCompleted == mAgendaEntry.status()) {
+		
+		// For completed to-do due date and time should be removed.
+		mDateTimeWidget->hide();
+		mLinearLayout->removeItem(mDateTimeWidget);
+		
+		// Fill the completed data information.
 		addCompletedTodoData();
+		
+		// Add the completed date to thte viewer.
 		if (!mReminderWidgetAdded) {
 			mReminderWidget->show();
 			mLinearLayout->insertItem(2, mReminderWidget);
@@ -769,6 +857,10 @@
 		}
 
 	} else {
+			// Add the date and time widget to the viewer.
+			mDateTimeWidget->show();
+			mLinearLayout->insertItem(1, mDateTimeWidget);
+			
 		if (!mAgendaEntry.alarm().isNull()) {
 			addReminderData();
 			if (!mReminderWidgetAdded) {
@@ -777,6 +869,7 @@
 				mReminderWidgetAdded = true;
 			}
 		} else {
+			// Remove the completed date from the viewer.
 			if (mReminderWidgetAdded) {
 				mReminderWidget->hide();
 				mLinearLayout->removeItem(mReminderWidget);
@@ -785,9 +878,12 @@
 		}
 
 	}
+	// The To-do icon changes according to the To-do status change.
+	updateSubjectandPriorityData();
 	
 	mLinearLayout->invalidate();
 	mLinearLayout->activate();
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_UPDATEFIELDSFORTODOSTATUS_EXIT );
 }
 
 /*!
@@ -795,6 +891,7 @@
  */
 void AgendaEventView::removeAllWidgets()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_REMOVEALLWIDGETS_ENTRY );
 
 	for (int i = 2; i < mLinearLayout->count(); i++) {
 		mLinearLayout->removeAt(i);
@@ -802,6 +899,7 @@
 	mLinearLayout->invalidate();
 	mLinearLayout->activate();
 	
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_REMOVEALLWIDGETS_EXIT );
 }
 
 /*!
@@ -809,6 +907,7 @@
  */
 void AgendaEventView::addAllWidgets()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDALLWIDGETS_ENTRY );
 	
 	mLinearLayout->addItem(mLocationWidget);
 	mLocationWidget->show();
@@ -824,6 +923,7 @@
 	mLinearLayout->invalidate();
 	mLinearLayout->activate();
 	
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDALLWIDGETS_EXIT );
 }
 
 /*!
@@ -831,6 +931,7 @@
  */
 void AgendaEventView::showDeleteOccurencePopup()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_SHOWDELETEOCCURENCEPOPUP_ENTRY );
 	HbDialog *popUp = new HbDialog();
 	popUp->setDismissPolicy(HbDialog::NoDismiss);
 	popUp->setTimeout(HbDialog::NoTimeout);
@@ -859,11 +960,12 @@
 	connect(deleteButtonList, SIGNAL(itemSelected(int)), popUp, SLOT(close()));
 
 	popUp->addAction(new HbAction(
-			hbTrId("txt_calendar_button_softkey1_cancel")));
+			hbTrId("txt_common_button_cancel_singledialog")));
 
 	// Show the popup
 	popUp->open();
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_SHOWDELETEOCCURENCEPOPUP_EXIT );
 }
 
 /*!
@@ -871,6 +973,7 @@
  */
 void AgendaEventView::showDeleteConfirmationQuery()
     {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_SHOWDELETECONFIRMATIONQUERY_ENTRY );
     
     HbMessageBox *popup = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
     popup->setDismissPolicy(HbDialog::NoDismiss);
@@ -882,9 +985,15 @@
     switch (mAgendaEntry.type()) {
         case AgendaEntry::TypeAppoinment:
         case AgendaEntry::TypeEvent: {
-        text.append(hbTrId("txt_calendar_info_delete_meeting"));
-        break;
-        }
+			// Check for all-day
+        	if (CalenAgendaUtils::isAlldayEvent(mAgendaEntry)) {
+				text.append(hbTrId("txt_calendar_info_delete_allday_event"));
+        	} else {
+				text.append(hbTrId("txt_calendar_info_delete_meeting"));
+			}
+
+			break;
+		}
         case AgendaEntry::TypeAnniversary: {
         text.append(hbTrId("txt_calendar_info_delete_anniversary"));
         break;
@@ -910,8 +1019,9 @@
     popup->addAction(deleteAction);
     connect(deleteAction, SIGNAL(triggered()), this ,
 												SLOT(handleDeleteAction()));
-    popup->addAction(new HbAction(hbTrId("txt_calendar_button_cancel"), popup));
+    popup->addAction(new HbAction(hbTrId("txt_common_button_cancel"), popup));
     popup->open();
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_SHOWDELETECONFIRMATIONQUERY_EXIT );
 }
 
 /*!
@@ -919,6 +1029,7 @@
  */
 void AgendaEventView::handleDeleteAction()
     {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_HANDLEDELETEACTION_ENTRY );
     // If delete button is pressed delete the entry
     // To notify client that deleting Started
     // Calendar Application changing state from viewing to deleting.
@@ -926,6 +1037,7 @@
 
     // Delete the entry.
     mOwner->mAgendaUtil->deleteEntry(mAgendaEntry.id());
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_HANDLEDELETEACTION_EXIT );
 }
 
 /*!
@@ -933,6 +1045,7 @@
  */
 void AgendaEventView::markTodoStatus()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_MARKTODOSTATUS_ENTRY );
 
 	QDateTime currentDateTime = QDateTime::currentDateTime();
 
@@ -951,8 +1064,9 @@
 		mOwner->mAgendaUtil->setCompleted(mAgendaEntry, false, currentDateTime);
 	}
 
-	updateCompletedReminderData();
+	updateFieldsforTodoStatus();
 	
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_MARKTODOSTATUS_EXIT );
 }
 
 /*!
@@ -960,6 +1074,7 @@
  */
 void AgendaEventView::edit()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_EDIT_ENTRY );
 
 	mOwner->editingStarted();
 	
@@ -998,6 +1113,7 @@
 	
 		
 	}
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_EDIT_EXIT );
 }
 
 /*!
@@ -1005,6 +1121,7 @@
  */
 void AgendaEventView::deleteAgendaEntry()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_DELETEAGENDAENTRY_ENTRY );
 
 	// Before we do anything, check in the entry is repeating
 	// OR its a child item
@@ -1019,6 +1136,7 @@
         showDeleteConfirmationQuery();
 	}
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_DELETEAGENDAENTRY_EXIT );
 }
 
 /*!
@@ -1026,18 +1144,21 @@
  */
 void AgendaEventView::saveAgendaEntry()
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_SAVEAGENDAENTRY_ENTRY );
 	
 	// Save entry to calendar.
-	mOwner->mAgendaUtil->addEntry(mAgendaEntry);
+	mOwner->mAgendaUtil->store(mAgendaEntry);
 	
 	// Close the agenda entry viewer
 	close();
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_SAVEAGENDAENTRY_EXIT );
 }
 /*!
 	Closes the event viewer
  */
 void AgendaEventView::close()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_CLOSE_ENTRY );
 
 	// Remove the view from main window.
 	HbMainWindow *window = hbInstance->allMainWindows().first();
@@ -1048,8 +1169,13 @@
 			this, SLOT(close()));
 
 	window->removeView(mViewer);
+	if (AgendaEntry::TypeTodo == mAgendaEntry.type()) {
+	    mAgendaEntry.setStartAndEndTime(
+	            CalenDateUtils::today(), CalenDateUtils::today());
+	}
 	mOwner->viewingCompleted(mAgendaEntry.startTime().date());
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_CLOSE_EXIT );
 }
 
 /*!
@@ -1057,6 +1183,7 @@
  */
 void AgendaEventView::handleEntryUpdation(ulong id)
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_HANDLEENTRYUPDATION_ENTRY );
 
 	AgendaEntry updatedEntry = mOwner->mAgendaUtil->fetchById(id);
 
@@ -1064,9 +1191,13 @@
 	if (!updatedEntry.isNull()) {
 
 		mAgendaEntry = updatedEntry;
-
-		if (updatedEntry.isRepeating() && mAgendaEntry.type()
-		        != AgendaEntry::TypeTodo) {
+		
+		// If the updated entry's & original entry's repeat rule mismatches than
+		// show the parent entry.
+		if (updatedEntry.isRepeating() &&
+		        mAgendaEntry.type() != AgendaEntry::TypeTodo &&
+		        mOriginalAgendaEntry.repeatRule() ==
+		                updatedEntry.repeatRule()) {
 			// if start date of original entry is between start date of updated 
 			// entry and until date of updated entry then only update time.
 			if (mOriginalAgendaEntry.startTime().date()
@@ -1102,6 +1233,7 @@
 		close();
 	}
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_HANDLEENTRYUPDATION_EXIT );
 }
 
 /*!
@@ -1109,6 +1241,7 @@
 */
 void AgendaEventView::handleEntryDeletion(ulong id)
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_HANDLEENTRYDELETION_ENTRY );
 
 	if (id == mAgendaEntry.id()) {
 		// Close the agenda entry viewer
@@ -1116,6 +1249,7 @@
 		mOwner->deletingCompleted();
 	}
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_HANDLEENTRYDELETION_EXIT );
 }
 
 /*!
@@ -1123,6 +1257,7 @@
  */
 void AgendaEventView::handleNoteEditorClosed(bool status)
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_HANDLENOTEEDITORCLOSED_ENTRY );
 	Q_UNUSED(status);
 
 	// To avoid loading the plugin again for editing,
@@ -1130,6 +1265,7 @@
 
 	mOwner->editingCompleted();
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_HANDLENOTEEDITORCLOSED_EXIT );
 }
 
 /*!
@@ -1137,11 +1273,13 @@
  */
 void AgendaEventView::handleCalendarEditorClosed()
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_HANDLECALENDAREDITORCLOSED_ENTRY );
 
 	// Cleanup.
 	mCalenEditor->deleteLater();
 	mOwner->editingCompleted();
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_HANDLECALENDAREDITORCLOSED_EXIT );
 }
 
 /*!
@@ -1149,6 +1287,7 @@
  */
 void AgendaEventView::handleDeleteOccurence(int index)
 {
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_HANDLEDELETEOCCURENCE_ENTRY );
 	
 	// To notify client that deleting Started
 	// Calendar Application changing state from viewing to deleting.
@@ -1168,6 +1307,7 @@
 			break;
 	}
 
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_HANDLEDELETEOCCURENCE_EXIT );
 }
 
 /*!
@@ -1175,20 +1315,26 @@
  */
 void AgendaEventView::getSubjectIcon(AgendaEntry::Type type, QString &subjectIcon)
     {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_GETSUBJECTICON_ENTRY );
     switch(type) {
         case AgendaEntry::TypeAppoinment:
+        case AgendaEntry::TypeEvent:
             {
-            subjectIcon.append("qtg_small_meeting");
+            // Check for all-day
+            if (CalenAgendaUtils::isAlldayEvent(mAgendaEntry)) {
+                subjectIcon.append("qtg_small_day");
+            } else {
+                subjectIcon.append("qtg_small_meeting");
+            }
             }
             break;
         case AgendaEntry::TypeTodo:
             {
-            subjectIcon.append("qtg_small_todo");
+            if (AgendaEntry::TodoCompleted == mAgendaEntry.status()) {
+                subjectIcon.append("qtg_small_todo_done");
+            } else {
+                subjectIcon.append("qtg_small_todo");
             }
-            break;
-        case AgendaEntry::TypeEvent:
-            {
-            subjectIcon.append("qtg_small_day");
             }
             break;
         case AgendaEntry::TypeAnniversary:
@@ -1200,6 +1346,7 @@
             break;
     }
 
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_GETSUBJECTICON_EXIT );
     }
 
 /*!
@@ -1207,6 +1354,7 @@
  */
 void AgendaEventView::updateProgressIndicator()
 {   
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_UPDATEPROGRESSINDICATOR_ENTRY );
     if (!mMaptileStatusReceived) {
         QString iconName("qtg_anim_small_loading_");
         mProgressIconCount = mProgressIconCount % 10 + 1;
@@ -1256,6 +1404,7 @@
 
         }
     }
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_UPDATEPROGRESSINDICATOR_EXIT );
 }
 
 /*!
@@ -1263,11 +1412,13 @@
  */
 void AgendaEventView::receiveMapTileStatus(int entryid,int addressType, int status)
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_RECEIVEMAPTILESTATUS_ENTRY );
     if (mAgendaEntry.id() == entryid && addressType == MapTileService::AddressPlain) {
         mMaptileStatusReceived = true;
         mMaptileStatus = status;
         updateProgressIndicator();
     }
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_RECEIVEMAPTILESTATUS_EXIT );
 }
 
 /*!
@@ -1275,6 +1426,7 @@
  */
 void AgendaEventView::getProgressIndicatorstatus(QString &progressIcon)
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_GETPROGRESSINDICATORSTATUS_ENTRY );
     MapTileService::AddressType addressType;
     addressType = MapTileService::AddressPlain;
     int eventId = mAgendaEntry.id();
@@ -1305,17 +1457,40 @@
                 int ,int)), this, SLOT(receiveMapTileStatus(int,int,int)));
         progressIcon.append(QString::null);
     }
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_GETPROGRESSINDICATORSTATUS_EXIT );
 }
+
+/*!
+	Updates the To-do icon for the changes in to-do status.
+ */
+void AgendaEventView::updateSubjectandPriorityData()
+{
+	OstTraceFunctionEntry0( AGENDAEVENTVIEW_UPDATESUBJECTANDPRIORITYDATA_ENTRY );
+	QStringList itemList;
+    QString priorityIcon(QString::null);
+    QString subjectIcon(QString::null);
+    getPriorityIcon(mAgendaEntry.priority(), priorityIcon);
+    getSubjectIcon(mAgendaEntry.type(),subjectIcon);
+    itemList.append(subjectIcon);
+    itemList.append(priorityIcon);
+    itemList.append(QString::null);
+
+	mSubjectWidget->setEventViewerItemData(itemList, Qt::DecorationRole);
+	OstTraceFunctionExit0( AGENDAEVENTVIEW_UPDATESUBJECTANDPRIORITYDATA_EXIT );
+}
+
 /*!
     Reload the maptile image on system orientation change.
  */
 void AgendaEventView::changedOrientation(Qt::Orientation orientation)
 {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEW_CHANGEDORIENTATION_ENTRY );
     if (mMaptileStatus == MapTileService::MapTileFetchingCompleted) {
         mMaptilePath.clear();
         mMaptileService->getMapTileImage(mAgendaEntry.id(), MapTileService::AddressPlain, mMaptilePath,orientation);
         addMapTileImage();
     }
+    OstTraceFunctionExit0( AGENDAEVENTVIEW_CHANGEDORIENTATION_EXIT );
 }
 
 // End of file