calendarui/views/src/calennativeview.cpp
branchRCL_3
changeset 29 12af337248b1
parent 28 96907930389d
child 30 bd7edf625bdd
--- a/calendarui/views/src/calennativeview.cpp	Thu Aug 19 09:53:43 2010 +0300
+++ b/calendarui/views/src/calennativeview.cpp	Tue Aug 31 15:13:43 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -12,1452 +12,313 @@
 * Contributors:
 *
 * Description:  This class is the base class of all Calendar views.
-*
-*/
-
-
-// INCLUDES
-#include <calenconstants.h>
-#include <calenagendautils.h>
-#include <calendateutils.h>
-#include <calentoolbar.h>
-#include <Calendar.rsg>
-#include <CalenStatusPaneUtils.h>
-#include <calencontext.h>
-#include <caltime.h>
-#include <calinstance.h>
-#include <calinstanceview.h>
-#include <calentry.h>
-#include <aknlists.h>
-#include <aknnavide.h>
-#include <aknnotewrappers.h>
-#include <AknWaitDialog.h>
-#include <eikbtgpc.h>
-#include <centralrepository.h>
-#include <StringLoader.h>
-#include <sysutil.h>
-#include <hlplch.h>
-#include <akntoolbar.h>
-#include <calencommands.hrh>
-#include <calenservices.h>
-#include <calsession.h>
-#include <calenviewutils.h>
-#include <calcalendarinfo.h>
-#include <caleninstanceid.h>            // TCalenInstanceId
-
+ *
+ */
 
-#include "calendarui_debug.h"           // Debug.
-#include "CalendarVariant.hrh"
-#include "calennativeview.h"
-#include "calencontainer.h"
-#include "CalenInterimUtils2.h"
-#include "calensend.h"
-#include "calentitlepane.h"
-#include "CleanupResetAndDestroy.h"
-#include "CalenPaths.h"
-#include "calendar.hrh"
-#include "CalenUid.h"
-#include "CalendarPrivateCRKeys.h"
-#include "multicaluidialog.h"
+// system includes
+#include <QtGui>
+#include <hbwidget.h>
+#include <hblabel.h>
+#include <hbaction.h>
+#include <hbdialog.h>
+#include <hbmainwindow.h>
+#include <hbdatetimepicker.h>
+#include <vwsdef.h>
+#include <hbactivitymanager.h> //Activity Manager
+#include <hbapplication.h> //hbapplication
 
-const TInt KAbbreviatedWeekNames[] =
-    {
-    R_QTN_WEEK_TWO_CHARS_MO,
-    R_QTN_WEEK_TWO_CHARS_TU,
-    R_QTN_WEEK_TWO_CHARS_WE,
-    R_QTN_WEEK_TWO_CHARS_TH,
-    R_QTN_WEEK_TWO_CHARS_FR,
-    R_QTN_WEEK_TWO_CHARS_SA,
-    R_QTN_WEEK_TWO_CHARS_SU
-    };
-
-
-#ifdef RD_CALEN_EXTERNAL_CAL
-#include  <aiwservicehandler.h>
-
-// MIME types
-_LIT8(KContentTypeCalendar, "text/calendar");
-
-#endif //RD_CALEN_EXTERNAL_CAL
-
-
-#include <aknnavilabel.h>
-#include <calennavilabel.h>
+//user includes
+#include <CalenUid.h>
+#include "calennativeview.h"
+#include "calenservices.h"
+#include "calencontext.h"
+#include "calensettingsview.h"
+#include "calendateutils.h"
+#include "calenconstants.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "calennativeviewTraces.h"
+#endif
 
 
-// ================= MEMBER FUNCTIONS =======================
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::~CCalenNativeView
-// Destructor
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-CCalenNativeView::~CCalenNativeView()
-    {
-    TRACE_ENTRY_POINT;
-
-    CCoeAppUi* appui = CEikonEnv::Static()->AppUi();
-    appui->RemoveFromStack( iContainer );
+/*!
+ \class CalenNativeView
+ Base class for all calendar views
+ */
 
-    delete iContainer;
-
-    iServices.CancelNotifications( this );
-
-    delete iAbbreviatedDayArray;
+/*!
+ Default constructor.
+ */
+CalenNativeView::CalenNativeView(MCalenServices &services) :
+	mServices(services),
+	mEntriesInDataBase(false),
+	mIsCapturedScreenShotValid(false)
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_CALENNATIVEVIEW_ENTRY );
+    
+	setTitle(hbTrId("txt_calendar_title_calendar"));
 
-#ifdef RD_CALEN_EXTERNAL_CAL
-    //delete AIW iServiceHandler;
-    ReleaseServiceHandler();
-#endif //RD_CALEN_EXTERNAL_CAL
+	// Create services API and register for notifications
+	RArray<TCalenNotification> notificationArray;
+	CleanupClosePushL(notificationArray);
 
-    delete iMenuName;
-    delete iSettingsName;
-    
-    delete iSPUtils;
+	notificationArray.Append(ECalenNotifySystemTimeChanged);
+	notificationArray.Append(ECalenNotifySystemLocaleChanged);
+	notificationArray.Append(ECalenNotifyContextChanged);
+
+	mServices.RegisterForNotificationsL(this, notificationArray);
 
-    if( iAsyncCallback )
-        {
-        iAsyncCallback->Cancel();
-        delete iAsyncCallback;
-        iAsyncCallback = NULL;
-        }
-    
-    TRACE_EXIT_POINT;
-    }
+	CleanupStack::PopAndDestroy(&notificationArray);
+	
+	OstTraceFunctionExit0( CALENNATIVEVIEW_CALENNATIVEVIEW_EXIT );
+}
 
-// ----------------------------------------------------------------------------
-// CCalenNativeView::SetStatusPaneFromActiveContextL(
-// This function sets the status pane based upon the context
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::SetStatusPaneFromActiveContextL()
-    {
-    TRACE_ENTRY_POINT;
-    iSPUtils->RefreshStatusPane();
-    TRACE_EXIT_POINT;
-    }
+/*!
+ Destructor
+ */
+CalenNativeView::~CalenNativeView()
+{
+    OstTraceFunctionEntry0( DUP1_CALENNATIVEVIEW_CALENNATIVEVIEW_ENTRY );
+    
+    OstTraceFunctionExit0( DUP1_CALENNATIVEVIEW_CALENNATIVEVIEW_EXIT );
+}
 
-// ----------------------------------------------------------------------------
-// CCalenNativeView::Container
-// Return container control pointer.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-CCalenContainer* CCalenNativeView::Container()
-    {
-    TRACE_ENTRY_POINT;
+/*!
+ Issues populcaiton complete to the framework
+ */
+void CalenNativeView::populationComplete()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_POPULATIONCOMPLETE_ENTRY );
+    
+	// Population is complete, issue the notification
+	mServices.IssueNotificationL(ECalenNotifyViewPopulationComplete);
+	
+	OstTraceFunctionExit0( CALENNATIVEVIEW_POPULATIONCOMPLETE_EXIT );
+}
 
-    TRACE_EXIT_POINT;
-    return iContainer;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::OnCmdGotoDateL
-// Handling command "Go to day"
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::OnCmdGotoDateL()
-    {
-    TRACE_ENTRY_POINT;
+/*!
+ Slot for delete before date
+ */
+void CalenNativeView::deleteBeforeDate()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_DELETEBEFOREDATE_ENTRY );
+    
+	mServices.IssueCommandL(ECalenDeleteEntriesBeforeDate);
+	
+	OstTraceFunctionExit0( CALENNATIVEVIEW_DELETEBEFOREDATE_EXIT );
+}
 
-    TTime date = CalenDateUtils::Today();
-	
-    TInt buttonId = CalenViewUtils::DateQueryL( date, 0 );
-	
-		//test
-	TDateTime dateTime = date.DateTime();
+/*!
+ Slot for delete all entries
+ */
+void CalenNativeView::deleteAllEntries()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_DELETEALLENTRIES_ENTRY );
+    
+	mServices.IssueCommandL(ECalenDeleteAllEntries);
+	mEntriesInDataBase = false;
 	
-    if (buttonId == EAknSoftkeyOk || buttonId == EEikBidOk)
-        {
-        MCalenContext& context = iServices.Context();
-        TCalTime dateCalTime;
-        dateCalTime.SetTimeLocalL( date );
-        context.SetFocusDateAndTimeL( dateCalTime, context.ViewId() );
-        iContainer->NotifyChangeDateL();
-        }
+	OstTraceFunctionExit0( CALENNATIVEVIEW_DELETEALLENTRIES_EXIT );
+}
 
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::OnCmdGotoTodayL
-// Handling command "Today". # key is pressed.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::OnCmdGotoTodayL()
-    {
-    TRACE_ENTRY_POINT;
-
-    TTime today = CalenDateUtils::Today();
-
-    MCalenContext& context = iServices.Context();
-    TCalTime todayCalTime;
-    todayCalTime.SetTimeLocalL( today );
-    context.SetFocusDateAndTimeL( todayCalTime, context.ViewId() );
-
-    iContainer->NotifyChangeDateL();
-
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::NotifyFocusChanged
-// Notified that the focus of Container changes.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::NotifyFocusChanged()
-    {
-    TRACE_ENTRY_POINT;
+/*!
+ Slot to handle gotodate
+ */
+void CalenNativeView::goToDate()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_GOTODATE_ENTRY );
+    
+	// Create a popup with datepicker for the user to select date.
+	HbDialog *popUp = new HbDialog();
+	popUp->setDismissPolicy(HbDialog::NoDismiss);
+	popUp->setTimeout(HbDialog::NoTimeout);
+	popUp->setAttribute( Qt::WA_DeleteOnClose, true );
+	popUp->setHeadingWidget(new HbLabel(hbTrId("txt_calendar_opt_go_to_date")));
+	
+	if(mDatePicker) {
+		mDatePicker = NULL;
+	}
+	mDatePicker = new HbDateTimePicker(QDate::currentDate(), popUp);
+	// Set the date range.
+	mDatePicker->setMinimumDate(CalenDateUtils::minTime().date());
+	mDatePicker->setMaximumDate(CalenDateUtils::maxTime().date());
+	mDatePicker->setDate(QDate::currentDate());
+	
+	popUp->setContentWidget(mDatePicker);
+	HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"));
+	popUp->addAction(okAction);
+	connect(okAction, SIGNAL(triggered()), this, SLOT(goToSelectedDate()));
+	popUp->addAction(new HbAction(hbTrId("txt_common_button_cancel"), popUp));
+	popUp->open();
+	
+	OstTraceFunctionExit0( CALENNATIVEVIEW_GOTODATE_EXIT );
+}
 
-    // FIXME: iLocChangeReason doesn't seem to serve any purpose.
-    // Debug how it is used.
-    if (iContainer && iNeedsRefresh)
-        {
-        if (IsForeground() && IsContainerFocused())
-            {
-            //The database was changed while calendar was running as a
-            //background task or the editor was open.  We need to refresh.
-            TRAP_IGNORE(BeginRepopulationL());
-            iNeedsRefresh = EFalse;
-            }
-        }
-    if (iLocChangeReason && IsContainerFocused())
-        {
-        PIM_TRAPD_HANDLE( OnLocaleChangedL( iLocChangeReason ) );
-        }
-    iLocChangeReason = 0;
+/*
+ Slot to handle date selected on gotodate popup
+ */
+void CalenNativeView::goToSelectedDate()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_GOTOSELECTEDDATE_ENTRY );
+    
+	QDate selectedDate = mDatePicker->date();
 
-    TRACE_EXIT_POINT;
-    }
+	// Check if the selected date is within the range.
+	if (selectedDate.isValid() &&
+	        selectedDate >= CalenDateUtils::minTime().date() &&
+	        selectedDate <= CalenDateUtils::maxTime().date()) {
+		MCalenContext& context = mServices.Context();
+		QDateTime contextDate = context.focusDateAndTime();
 
-// ----------------------------------------------------------------------------
-// CCalenNativeView::IsContainerFocused
-// Is container focused?
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-TBool CCalenNativeView::IsContainerFocused()
-    {
-    TRACE_ENTRY_POINT;
-
-    TRACE_EXIT_POINT;
-    return (iContainer && iContainer->IsVisible());
-    }
+		//Set the selected date to contextDate.
+		contextDate.setDate(selectedDate);
+		context.setFocusDateAndTime(contextDate);
+	}
+	refreshViewOnGoToDate();
+	
+	OstTraceFunctionExit0( CALENNATIVEVIEW_GOTOSELECTEDDATE_EXIT );
+}
 
-// ----------------------------------------------------------------------------
-// CCalenNativeView::ShowValidScrollButtons
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::ShowValidScrollButtons(CAknNavigationDecorator& aNaviLabel,
-                                        const TTime& aBeforeRange,
-                                        const TTime& aAfterRange)
-    {
-    TRACE_ENTRY_POINT;
-
-    aNaviLabel.MakeScrollButtonVisible(ETrue);
+/*!
+ Virtual function to refresh the current view upon selecting a date
+ from GoToDate popup
+ */
+void CalenNativeView::refreshViewOnGoToDate()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_REFRESHVIEWONGOTODATE_ENTRY );
+    
+	mServices.IssueCommandL(ECalenStartActiveStep);
+	
+	OstTraceFunctionExit0( CALENNATIVEVIEW_REFRESHVIEWONGOTODATE_EXIT );
+}
 
-    // FIXME can be written more simply.
-    TBool mirrored(AknLayoutUtils::LayoutMirrored());
-    if (mirrored)
-        {
-        TBool validDay(CalenDateUtils::IsValidDay(aBeforeRange));
-        aNaviLabel.SetScrollButtonDimmed(
-            CAknNavigationDecorator::ERightButton, !validDay);
-        validDay = CalenDateUtils::IsValidDay(TTime(aAfterRange));
-        aNaviLabel.SetScrollButtonDimmed(
-            CAknNavigationDecorator::ELeftButton, !validDay);
-        }
-    else
-        {
-        TBool validDay(CalenDateUtils::IsValidDay(aBeforeRange));
-        aNaviLabel.SetScrollButtonDimmed(
-            CAknNavigationDecorator::ELeftButton, !validDay);
-        validDay = CalenDateUtils::IsValidDay(aAfterRange);
-        aNaviLabel.SetScrollButtonDimmed(
-            CAknNavigationDecorator::ERightButton, !validDay);
-        }
-
+/*!
+ Slot to handle setting item in options menu
+ */
+void CalenNativeView::launchSettingsView()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_LAUNCHSETTINGSVIEW_ENTRY );
+    
+	mServices.IssueCommandL(ECalenShowSettings);
+	
+	OstTraceFunctionExit0( CALENNATIVEVIEW_LAUNCHSETTINGSVIEW_EXIT );
+}
 
-    if(iContainer && AknLayoutUtils::PenEnabled())
-        {
-        aNaviLabel.SetNaviDecoratorObserver(static_cast<MAknNaviDecoratorObserver*>(iContainer));
-        CCoeControl* coeRes = aNaviLabel.DecoratedControl();
-        CCalenNaviLabel *actualLabel = static_cast<CCalenNaviLabel*>(coeRes);
-        actualLabel->SetLabelObserver(static_cast<MCCalenNaviLabelObserver*>(iContainer));
-        }
-
-
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::DynInitMenuPaneL
-// Initialization of Options menu
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-    {
-    TRACE_ENTRY_POINT;
+/*!
+ Slot to handle to orientation change
+ */
+void CalenNativeView::changeOrientation(Qt::Orientation orientation)
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_CHANGEORIENTATION_ENTRY );
+    
+    Q_UNUSED(orientation);
+    // Nothing, derived classes will implement it
+    OstTraceFunctionExit0( CALENNATIVEVIEW_CHANGEORIENTATION_EXIT );
+}
 
-    switch (aResourceId)
-        {
-        case R_CALENDAR_NOTETYPE_MENUPANE:
-            {
-            if( !iServices.InterimUtilsL().MRViewersEnabledL( ETrue ) )
-                {
-                aMenuPane->DeleteMenuItem( ECalenNewMeetingRequest );
-                }
-            break;
-            }
-        case R_CALENDAR_CHANGE_VIEW_MENUPANE:
-            {
-            // If we get the cascading view switch menu pane, 
-            // need to offer it to the services, to remove
-            // the current view.
-            iServices.OfferMenuPaneL( aResourceId, aMenuPane );
-            }
-            break;
-        default:
-            {
-#ifdef RD_CALEN_EXTERNAL_CAL
-            // do we have a service handler, if not create one
-            if (!iServiceHandler)
-                {
-                CreateServiceHandlerL(ETrue);
-                }
-
+/*!
+ Handles the interested notifications from the calendar framework
+ */
+void CalenNativeView::HandleNotification(const TCalenNotification notification)
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_HANDLENOTIFICATION_ENTRY );
+    
+	switch (notification) {
+		case ECalenNotifySystemLocaleChanged: {
+			onLocaleChanged(EChangesLocale);
+		}
+		break;
+		case ECalenNotifySystemTimeChanged: {
+			onLocaleChanged(EChangesSystemTime);
+		}
+		break;
+		case ECalenNotifyContextChanged: {
+			onContextChanged();
+		}
+		break;
+		default:
+			break;
+	}
+	
+	OstTraceFunctionExit0( CALENNATIVEVIEW_HANDLENOTIFICATION_EXIT );
+}
 
-            if (iServiceHandler->HandleSubmenuL(*aMenuPane))
-                {
-                return;
-                }
+/*!
+ Returns true if plugin is loaded
+ */
+TBool CalenNativeView::pluginEnabled()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_PLUGINENABLED_ENTRY );
+    
+	QString *pluginInfo = mServices.InfobarTextL();
+	if (!pluginInfo) {
+		OstTraceFunctionExit0( CALENNATIVEVIEW_PLUGINENABLED_EXIT );
+		return false;
+	} else {
+		OstTraceFunctionExit0( DUP1_CALENNATIVEVIEW_PLUGINENABLED_EXIT );
+		return true;
+	}
+}
 
-            // is the menu item AIW menu item if so, we will initialize our menu item
-            if (iServiceHandler->IsAiwMenu(aResourceId))
-                {
-                CAiwGenericParamList& inParamList = iServiceHandler->InParamListL();
-                TInt extrainfo=0;
-                TAiwVariant variant(extrainfo);
-                // No generic param for integer, therefore use EGenericParamError.
-                TAiwGenericParam param(EGenericParamError, variant);
-                inParamList.AppendL(param);
-
-                iServiceHandler->InitializeMenuPaneL(
-                    *aMenuPane,
-                    aResourceId,
-                    ECalenExtAiwCommandId,
-                    inParamList);
-                }
-#endif
-            break;
-            }
-        }
-    TRACE_EXIT_POINT;
-    }
+QString *CalenNativeView::pluginText()
+{
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_PLUGINTEXT_ENTRY );
+    
+    OstTraceFunctionExit0( CALENNATIVEVIEW_PLUGINTEXT_EXIT );
+	return mServices.InfobarTextL();
+	
+}
 
 // ----------------------------------------------------------------------------
-// CCalenNativeView::HandleCommandL
-// Command handling for each view
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::HandleCommandL(TInt aCommand)
-    {
-    TRACE_ENTRY_POINT;
-
-     switch (aCommand)
-        {
-        case EAknCmdHelp:
-            HlpLauncher::LaunchHelpApplicationL( iCoeEnv->WsSession(), iAvkonAppUi->AppHelpContextL() );
-            break;
-
-        // Context should be 8am on current focused day for these actions.
-        case ECalenNewMeeting:
-        case ECalenNewMeetingRequest:
-        case ECalenNewAnniv:
-        case ECalenNewDayNote:
-        case ECalenNewTodo:
-            {
-            iIsEditorActive = ETrue;
-            MCalenContext& context = iServices.Context();
-            // Set the date on the context. It will set it to be the
-            // default of view (8am) on that day as we don't set the time.
-            TCalTime time;
-            time.SetTimeLocalL( CCalenContainer::DateFromContextL( context ) );
-            context.SetFocusDateL( time,
-                                   TVwsViewId( KUidCalendar, Id() ) );
-            iServices.IssueCommandL( aCommand );
-            }
-            break;
-        case ECalenShowSettings:
-            {
-            iIsEditorActive = ETrue;
-            iServices.IssueCommandL( aCommand );
-            }
-            break;
-        case ECalenMonthView:
-        case ECalenWeekView:
-        case ECalenDayView:
-        case ECalenTodoView:
-            {
-            MCalenContext& context = iServices.Context();
-            // Set the date on the context. It will set it to be the
-            // default of view (8am) on that day as we don't set the time.
-            TCalTime time;
-            time.SetTimeLocalL( CCalenContainer::DateFromContextL( context ) );
-            context.SetFocusDateL( time,
-                                   TVwsViewId( KUidCalendar, Id() ) );
-            iServices.IssueCommandL( aCommand );
-            }
-            break;
-
-        // The context should remain the same for these actions.
-        case ECalenForwardsToDayView:
-        case ECalenNextView:
-        case ECalenPrevView:
-        case ECalenViewCurrentEntry:
-        case ECalenEditCurrentEntry: 
-        case ECalenCompleteTodo:
-        case ECalenRestoreTodo:
-        case ECalenDeleteAllEntries:
-        case ECalenDeleteCurrentEntry:
-        case ECalenDeleteEntriesBeforeDate:
-        //case ECalenGlobalSendAsCmdId:
-        
-            
-                SetCommandHandlingInProgress( ETrue );
-                iServices.IssueCommandL( aCommand );
-            break;
-            
-        case ECalenEventView:
-        case ECalenSwitchView:  
-		case ECalenSend:
-            iServices.IssueCommandL( aCommand );
-            break;
-
-        case ECalenGotoDate:
-            OnCmdGotoDateL();
-            break;
-
-        case ECalenGotoToday:
-            OnCmdGotoTodayL();
-            break;
-
-        default:
-            {
-#ifdef RD_CALEN_EXTERNAL_CAL
-            // by default we will check also AIW commands
-            if (!iServiceHandler)
-                {
-                CreateServiceHandlerL(ETrue);
-                }
-
-
-            TInt aiwCmd = iServiceHandler->ServiceCmdByMenuCmd(aCommand);
-
-            // if we have right one, handle it
-            if(aiwCmd)
-                {
-                // add current focused date to param list
-                MCalenContext& context = iServices.Context();
-                TTime time = context.FocusTime().TimeLocalL();
-
-                CAiwGenericParamList& inparams=iServiceHandler->InParamListL();
-                TAiwGenericParam date(EGenericParamDateTime);
-                date.Value().Set(time);
-                inparams.AppendL(date);
-
-                // Execute AIW menu service command.
-                PIM_TRAPD_HANDLE(
-                iServiceHandler->ExecuteMenuCmdL(
-                    aCommand,                           // The service command
-                    inparams,    // pass our date
-                    iServiceHandler->OutParamListL(),   // No output parameters needed
-                    KAiwOptASyncronous,                  // we are using async version
-                    this ));                             // and we want to call us back
-                }
-            // if not then let ui framwork handle it
-
-            else
-                {
-#endif
-                iServices.IssueCommandL( aCommand );
-
-#ifdef RD_CALEN_EXTERNAL_CAL
-                }
-#endif // RD_CALEN_EXTERNAL_CAL
-
-            break;
-
-            }
-
-        }
-
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::DynInitMenuBarL
-// other details are commented in the header
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::DynInitMenuBarL( TInt /*aResourceId*/, CEikMenuBar* aMenuBar )
-    {
-    TRACE_ENTRY_POINT;
-    
-    if( aMenuBar && IsCommandHandlingInProgress() )
-        {
-        aMenuBar->StopDisplayingMenuBar();
-        }
-    
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::CopytoCalendarsL
-// From CAknView
-// Return the UID of the day view
-// (other items were commented in a header)
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::CopyToCalendarsL()
-    {
-    TRACE_ENTRY_POINT;
-    
-    iAsyncCallback->CallBack();
-    
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::AsyncCopyToCalendarsL
-// From CAknView
-// Return the UID of the day view
-// (other items were commented in a header)
+// captureScreenshot caltures screen shot for the given viewId
+// @param viewId view for which screenshot needs to be captured
 // ----------------------------------------------------------------------------
-//
-TInt CCalenNativeView::AsyncCopyToCalendarsL( TAny* aThisPtr )
+// 
+void CalenNativeView::captureScreenshot(bool captureScreenShot)
     {
-    TRACE_ENTRY_POINT;
-    
-    static_cast<CCalenNativeView*>(aThisPtr)->CopyEntryToCalendarsL();
-    
-    TRACE_EXIT_POINT;
-    return 0;
-
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::CopyEntryToCalendarsL
-// From CAknView
-// Return the UID of the day view
-// (other items were commented in a header)
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::CopyEntryToCalendarsL()
-    {
-    TRACE_ENTRY_POINT;
+    OstTraceFunctionEntry0( CALENNATIVEVIEW_CAPTURESCREENSHOT_ENTRY );
     
-    // Create settings own titlepane and navipane, and swap with existing ones
-    CEikStatusPane* sp = CEikonEnv::Static()->AppUiFactory()->StatusPane();
-
-    // Hide the toolbar before we display settings menu
-    MCalenToolbar* toolbar = iServices.ToolbarOrNull();
-    if(toolbar)
-        {
-        toolbar->SetToolbarVisibilityL(EFalse);  
-        }
-    iSPUtils->UnderLineTitleText( EFalse );
-
-    // Titlepane
-    CAknTitlePane* newtp = new( ELeave ) CAknTitlePane();
-    CleanupStack::PushL( newtp );
-    CCoeControl* oldtp = sp->SwapControlL( TUid::Uid(EEikStatusPaneUidTitle), newtp );
-    CleanupStack::Pop( newtp ); // ownership is passed to statuspane
-    TRect oldRect( 0, 0, 0, 0 );
-    if( oldtp )
-        {
-        CleanupStack::PushL( oldtp );
-        oldRect = oldtp->Rect();
-        CCoeControl* ctrl = sp->ContainerControlL( TUid::Uid( EEikStatusPaneUidTitle ));
-        newtp->SetContainerWindowL( *ctrl );
-        newtp->ConstructL();
-        newtp->SetRect(oldRect);
-        newtp->ActivateL();
-        }        
-
-    // NaviPane
-    CAknNavigationControlContainer* newnp = new( ELeave )CAknNavigationControlContainer();
-    CleanupStack::PushL( newnp );
-    CCoeControl* oldnp = sp->SwapControlL( TUid::Uid( EEikStatusPaneUidNavi ), newnp );
-    CleanupStack::Pop( newnp ); // ownership is passed to statuspane
-    if( oldnp )
-        {
-        CleanupStack::PushL( oldnp );
-        oldRect = oldnp->Rect();
-        CCoeControl* ctrl = sp->ContainerControlL( TUid::Uid( EEikStatusPaneUidNavi ) );
-        newnp->SetContainerWindowL( *ctrl );
-        newnp->ConstructL();
-        newnp->SetRect( oldRect );
-        newnp->PushDefaultL();
-        newnp->ActivateL();
-        }
-
-    MCalenContext& context = iServices.Context();
-    TCalLocalUid instanceId = context.InstanceId().iEntryLocalUid;
-
-    CCalEntry* entry = iServices.EntryViewL(context.InstanceId().iColId)->FetchL(instanceId);
-    CleanupStack::PushL(entry);
-
-    RPointerArray<CCalEntry> calentryArray;
-    calentryArray.Append( entry );
-
-    // Launch the Calendar List Dialiog.
-    CMultiCalUiDialog* calenDbListDialog = CMultiCalUiDialog::NewLC(calentryArray, EFalse);
-    TInt err = KErrNone;
-    // Execute.
-    TRAP( err,calenDbListDialog->LaunchL() );
-    CleanupStack::PopAndDestroy( calenDbListDialog );
-
-    iSPUtils->UnderLineTitleText( EFalse );
-    // Unhide the toolbar when settings is closed
-    if(toolbar)
-        {
-        toolbar->SetToolbarVisibilityL(ETrue); 
+    // get a screenshot for saving to the activity manager. It's done for once
+    // to optimize the performance
+    if (captureScreenShot) {
+        mScreenShotMetadata.clear(); // remove any screenshot captured earlier
+        mScreenShotMetadata.insert("screenshot", QPixmap::grabWidget(mainWindow(), mainWindow()->rect()));
         }
-    
-    CleanupStack::Pop(entry);
-    calentryArray.ResetAndDestroy(); 
-    
-    // When setting is closed, swap back old titlepane and navipane
-    if( oldnp && sp->SwapControlL( TUid::Uid(EEikStatusPaneUidNavi), oldnp ) )
-        {
-        CleanupStack::Pop( oldnp );
-        delete newnp;
-        oldnp->ActivateL();
-        }
-
-    if( oldtp && sp->SwapControlL( TUid::Uid(EEikStatusPaneUidTitle), oldtp ) )
-        {
-        CleanupStack::Pop( oldtp );
-        delete newtp;
-        oldtp->ActivateL();
-        }
-    
-    BeginRepopulationL();
-    
-    TRACE_EXIT_POINT;
+    mIsCapturedScreenShotValid = captureScreenShot; // set the validity of the screenshot captured
     
-    }
-
-// ----------------------------------------------------------------------------
-// C++ constructor can NOT contain any code, that
-// might leave.
-// ----------------------------------------------------------------------------
-//
-CCalenNativeView::CCalenNativeView( MCalenServices& aServices )
-    : iServices( aServices )
-    {
-    TRACE_ENTRY_POINT;
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::ConstructL
-// Symbian OS default constructor
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::CommonConstructL( TInt aViewResource )
-    {
-    TRACE_ENTRY_POINT;
-
-    BaseConstructL( aViewResource );
-    
-    // Initialize CCalenStatusPaneUtils
-    CEikStatusPane* sp = StatusPane();
-    iSPUtils = CCalenStatusPaneUtils::NewL( sp );
-
-    ClearViewSpecificDataL(); // Reset vsd.
-
-    // Create services API and register for notifications
-    RArray<TCalenNotification> notificationArray;
-    notificationArray.Append(ECalenNotifySystemTimeChanged);
-    notificationArray.Append(ECalenNotifyMarkedEntryDeleted);
-    notificationArray.Append(ECalenNotifyContextChanged);
-    notificationArray.Append(ECalenNotifyDialogClosed);
-    notificationArray.Append(ECalenNotifyEntrySent);    
-    notificationArray.Append(ECalenNotifyEntryClosed);
-    notificationArray.Append(ECalenNotifySystemLocaleChanged);
-    notificationArray.Append(ECalenNotifyAppForegrounded);
-    notificationArray.Append(ECalenNotifyAppBackgrounded);
-    notificationArray.Append(ECalenNotifyEntrySaved);
-    notificationArray.Append(ECalenNotifyInstanceSaved);
-    notificationArray.Append(ECalenNotifySettingsClosed);
-    notificationArray.Append(ECalenNotifySettingsChanged);
-    notificationArray.Append(ECalenNotifyMarkedEntryCompleted);
-    notificationArray.Append(ECalenNotifyDeleteInstanceView);
-    notificationArray.Append(ECalenNotifyStopAlarm);
-	notificationArray.Append(ECalenNotifyDeleteFailed);
-	notificationArray.Append(ECalenNotifyEntryDeleted);
-	notificationArray.Append(ECalenNotifyResourceChanged);
-	notificationArray.Append(ECalenNotifyEventViewLaunchedFromAlarm);
-	
-    iServices.RegisterForNotificationsL( this,notificationArray);
-    
-    notificationArray.Reset();
-    
-    iIgnoreTap = EFalse;
-    
-    iCommandProcessing = EFalse;
-    TCallBack callback(CCalenNativeView::AsyncCopyToCalendarsL,this);
-    iAsyncCallback = new(ELeave) CAsyncCallBack(callback,CActive::EPriorityStandard);
-
-    TRACE_EXIT_POINT;
+    OstTraceFunctionExit0( CALENNATIVEVIEW_CAPTURESCREENSHOT_EXIT );
     }
 
 // ----------------------------------------------------------------------------
-// CCalenNativeView::CreateContainerL
-// A container control is created.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::CreateContainerL()
-    {
-    TRACE_ENTRY_POINT;
-
-    if (!iContainer)
-        {
-        CCalenContainer* container = CreateContainerImplL();
-        CleanupStack::PushL(container);
-        container->SetMopParent(this);
-        container->ConstructL();
-        CleanupStack::Pop(); // container
-
-        iContainer = container;
-        iContainer->SetRect( ClientRect() );
-        iContainer->ActivateL();
-        }
-    else
-        {
-        iContainer->MakeVisible(ETrue);
-        }
-
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::AbbreviatedDayArrayL
-// Returns an array of descriptors of abbreviated days (e.g. MO, TU). This
-// will only get called by the month and week views.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-const CDesCArrayFlat& CCalenNativeView::AbbreviatedDayArrayL()
-    {
-    TRACE_ENTRY_POINT;
-
-    if( !iAbbreviatedDayArray )
-        {
-        iAbbreviatedDayArray = new( ELeave )CDesCArrayFlat( 7 );
-        HBufC* dayAbb;
-
-        for ( TInt i(0); i<7; ++i )
-            {
-            dayAbb = StringLoader::LoadLC( KAbbreviatedWeekNames[i] );
-            iAbbreviatedDayArray->AppendL( *dayAbb );
-            CleanupStack::PopAndDestroy( dayAbb );
-            }
-        }
-
-    TRACE_EXIT_POINT;
-    return *iAbbreviatedDayArray;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::DoActivateL
-// View activation handler
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::DoActivateL( const TVwsViewId& aPrevViewId,
-                                    TUid aCustomMessageId,
-                                    const TDesC8& aCustomMessage)
-    {
-    TRACE_ENTRY_POINT;
-
-    iLocChangeReason = 0;
-
-    if( KCalenHideInBackGround.iUid == aCustomMessageId.iUid )
-	    {
-	    SetFasterAppActive(ETrue);
-	    DoDeactivate();	
-	    }
-
-     if( AknLayoutUtils::PenEnabled() )
-        {
-        MCalenToolbar* toolbarImpl = iServices.ToolbarOrNull();
-        if(toolbarImpl)
-            {
-            CAknToolbar& toolbar = toolbarImpl->Toolbar();
-            toolbar.SetToolbarVisibility(ETrue);
-            }
-        }
-
-    if ( Toolbar() )
-        {
-        ShowToolbarOnViewActivation( ETrue );
-        }
-
-    CreateContainerL();
-
-    DoActivateImplL( aPrevViewId, aCustomMessageId, aCustomMessage );
-
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::DoDeactivate
-// View deactivation handler
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::DoDeactivate()
-    {
-    TRACE_ENTRY_POINT;
-#ifdef RD_CALEN_EXTERNAL_CAL
-    //delete AIW iServiceHandler;
-    ReleaseServiceHandler();
-#endif //RD_CALEN_EXTERNAL_CAL
-
-    if (iContainer)
-        {
-        iContainer->RemoveFromStackAndMakeInvisible();
-        DoDeactivateImpl();
-        delete iContainer;
-        iContainer = NULL;
-        }
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::HandleDBChangeL
-// Called from CCalenGlobalData when the agenda database
-// is modified from an external session.
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::HandleDBChangeL()
-    {
-    TRACE_ENTRY_POINT;
-
-    // If iContainer is NULL then this is not the active view, so do nothing.
-    // The view will be refreshed when the container is constructed.
-    if ( iContainer )
-        {
-        if (IsForeground() && Container()->ComponentControl(0)->IsFocused())
-            {
-            // Application is in the foreground and the container is visible
-            // on screen.  We know that the editor is not open as the
-            // containers first component control currently has keyboard focus.
-            // The first component control will either be a listbox or grid
-            // depending on the viewtype.  Refresh the container.
-            BeginRepopulationL();
-            iNeedsRefresh = EFalse;
-            }
-        else
-            {
-            // This is the active view, but we are in one of two states:
-            // 1: The application is in the background
-            // 2: The editor is open and currently has keyboard focus.
-            // When we recieve a focus change notification we will need to
-            // refresh the view.  This happens in CCalenNativeView::NotifyFocusChanged
-            iNeedsRefresh = ETrue;
-            }
-        }
-
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::SetCbaL()
-// Set CBA and change button from Back to Exit if necessary
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::SetCbaL(TInt aCbaResourceId)
-    {
-	TRACE_ENTRY_POINT;
-
-    CEikButtonGroupContainer*  cba = Cba();
-    cba->SetCommandSetL(aCbaResourceId);
-    cba->DrawNow();
-
-    TRACE_EXIT_POINT;
-    }
-
-
-#ifdef RD_CALEN_EXTERNAL_CAL
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::CreateServiceHandlerL()
-// Create new AIW service handler and attach to menu services if needed
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::CreateServiceHandlerL(TBool aAttachMenu)
-    {
-    TRACE_ENTRY_POINT;
-
-
-    if ((iServiceHandler!=NULL) && (aAttachMenu==EFalse))
-        {
-        TRACE_EXIT_POINT;
-        return;
-        }
-
-        // Create service handler instance.
-    if (!iServiceHandler)
-        {
-        iServiceHandler = CAiwServiceHandler::NewL();
-        }
-    if (aAttachMenu)
-        {
-    // Attach menu service interest to AIW framework. We will add
-    // menus to all the views
-    PIM_TRAPD_HANDLE( iServiceHandler->AttachMenuL(R_CALENDAR_DAY_MENUPANE,
-        R_EXTERNAL_CALENDAR_AIW_INTEREST) );
-
-        PIM_TRAPD_HANDLE( iServiceHandler->AttachMenuL(R_CALENDAR_MONTH_MENUPANE,
-        R_EXTERNAL_CALENDAR_AIW_INTEREST) );
-
-
-        PIM_TRAPD_HANDLE( iServiceHandler->AttachMenuL(R_CALENDAR_WEEK_MENUPANE,
-        R_EXTERNAL_CALENDAR_AIW_INTEREST) );
-
-        PIM_TRAPD_HANDLE( iServiceHandler->AttachMenuL(R_TODO_LIST_MENUPANE,
-        R_EXTERNAL_CALENDAR_AIW_INTEREST) );
-        }
-
-
-    TRACE_EXIT_POINT;
-    }
-
-#endif //RD_CALEN_EXTERNAL_CAL
-
-
-
-
-#ifdef RD_CALEN_EXTERNAL_CAL
-// ----------------------------------------------------------------------------
-// CCalenNativeView::ReleaseServiceHandler()
-// Release service handler and unload provider
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::ReleaseServiceHandler()
-    {
-    TRACE_ENTRY_POINT;
-    if (iServiceHandler)
-        {
-        iServiceHandler->Reset();
-        delete iServiceHandler;
-        iServiceHandler=NULL;
-        }
-    TRACE_EXIT_POINT;
-    }
-#endif //RD_CALEN_EXTERNAL_CAL
-
-
-#ifdef RD_CALEN_EXTERNAL_CAL
-// ----------------------------------------------------------------------------
-// CCalenNativeView::ServiceHandler()
-// Return pointer to service handler
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-CAiwServiceHandler* CCalenNativeView::ServiceHandler()
-    {
-    TRACE_ENTRY_POINT;
-    return iServiceHandler;
-    TRACE_EXIT_POINT;
-    }
-#endif //RD_CALEN_EXTERNAL_CAL
-
-
-
-
-
-#ifdef RD_CALEN_EXTERNAL_CAL
-
-// ----------------------------------------------------------------------------
-//* Handles notifications caused by an asynchronous Execute*CmdL call
-//* or an event.
-//*
-//* @param aCmdId The service command associated to the event.
-//* @param aEventId Occured event, see AiwCommon.hrh.
-//* @param aEventParamList Event parameters, if any, as defined per
-//*        each event.
-//* @param aInParamList Input parameters, if any, given in the
-//*        related HandleCommmandL.
-//* @return Error code for the callback.
-// ----------------------------------------------------------------------------
-//
-TInt CCalenNativeView::HandleNotifyL(TInt /*aCmdId*/,TInt /*aEventId*/,CAiwGenericParamList& aEventParamList,const CAiwGenericParamList& /*aInParamList*/)
-    {
-    TRACE_ENTRY_POINT;
-    TInt count=aEventParamList.Count();
-    TInt index=0;
-    TTime date(0);
-
-    // find first TTime parameter
-    const TAiwGenericParam* param = aEventParamList.FindFirst(index, EGenericParamDateTime);
-    if (index >= 0)
-        {
-        // get date value from it
-        const TAiwVariant& val = param->Value();
-        val.Get(date);
-        }
-    else
-        {
-        TRACE_EXIT_POINT;
-        return KErrNone;
-        }
-
-    // use date got from provider and set it to calendar
-    MCalenContext& context = iServices.Context();
-    TCalTime focusTime;
-    focusTime.SetTimeLocalL( date + TCalenContext::DefaultTimeForViews() );
-    context.SetFocusTime( focusTime , context.ViewId() );
-    iContainer->NotifyChangeDateL();
-    TRACE_EXIT_POINT;
-    return KErrNone;
-    }
-
-#endif //RD_CALEN_EXTERNAL_CAL
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::HandleNotification
-// From MCalenNotificationHandler
-// Handles a notification of a calendar event that this
-// MCalenNotificationHandler has registered for
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::HandleNotification(const TCalenNotification aNotification )
-    {
-    TRACE_ENTRY_POINT;
-
-    switch ( aNotification )
-        {
-        case ECalenNotifyContextChanged:
-            {
-            // If we're not on screen, clear VSD.
-            if ( !iContainer )
-                {
-                PIM_TRAPD_HANDLE( ClearViewSpecificDataL() );
-                }
-            }
-            break;
-        case ECalenNotifyMarkedEntryDeleted: // Todo view specific notification
-            {
-            PIM_TRAPD_HANDLE( NotifyMarkedEntryDeletedL() );
-            }
-            break; 
-        case ECalenNotifyMarkedEntryCompleted: // Todo view specific notification
-            {
-            PIM_TRAPD_HANDLE( NotifyMarkedEntryCompletedL() );
-            }
-            break;    
-        case ECalenNotifySystemTimeChanged:
-            {
-            PIM_TRAPD_HANDLE( OnLocaleChangedL( EChangesSystemTime ) );
-            }
-            break;
-        case ECalenNotifyEventViewLaunchedFromAlarm:
-            {
-            SetTapIgnore(ETrue);
-            }
-            break;
-        case ECalenNotifyEntryClosed:
-            {
-            // The editor/ viewer is changed
-            PIM_TRAPD_HANDLE( OnEditorClosedL() );
-            }
-            break;
-        case ECalenNotifyDialogClosed:
-        case ECalenNotifySettingsClosed:
-        case ECalenNotifySettingsChanged:
-        case ECalenNotifyEntrySent:    
-            {
-            iIsEditorActive = EFalse;
-            iCommandProcessing = EFalse;
-            }
-            break;
-        case ECalenNotifyEntrySaved:
-        case ECalenNotifyInstanceSaved:         
-            {
-            iIsEditorActive = EFalse;
-            if( Container() )
-	            {
-	            PIM_TRAPD_HANDLE(UpdateDateFromContextL());	
-	            }
-            }
-            break;        
-        case ECalenNotifySystemLocaleChanged:
-            {
-        	PIM_TRAPD_HANDLE( OnLocaleChangedL( EChangesLocale ) );
-            }
-        	break;
-        case ECalenNotifyAppForegrounded:
-            {
-            iIsBackgrounded = EFalse;
-            // Updates the previewpane/preview popup in month view/week view
-            if(iFasterAppActive)
-                {
-                iFasterAppActive = EFalse;
-                if(iIsEditorActive)
-                    {
-                    iIsEditorActive = EFalse;
-                    }
-                }
-            PIM_TRAPD_HANDLE(UpdatePreviewPaneL());
-            }
-            break;
-        case ECalenNotifyAppBackgrounded:
-            {
-            iIsBackgrounded = ETrue;
-            // Hides previewpane/preview popup in month view/week view when
-            // application goes to background or whenever fake exit is done
-            PIM_TRAPD_HANDLE(HidePreviewPane());
-            }
-            break;
-        case ECalenNotifyEntryDeleted:
-        case ECalenNotifyMultipleEntriesDeleted:
-        case ECalenNotifyInstanceDeleted:
-        case ECalenNotifyCancelDelete:
-		case ECalenNotifyDeleteInstanceView:
-            {
-			// Called when user does not delete an entry.
-            if( IsCommandHandlingInProgress() )
-                {
-                SetCommandHandlingInProgress( EFalse );
-                }
-				
-            if(iContainer)
-                {
-                iContainer->CleanupInstances();
-                }
-			}	
-            break;
-		case ECalenNotifyDeleteFailed:
-		    {
-		    // Called when user does not delete an entry.
-            if( IsCommandHandlingInProgress() )
-                {
-                SetCommandHandlingInProgress( EFalse );
-                }
-		    
-		    }
-		break;    
-		case ECalenNotifyStopAlarm:
-            {
-            if(iContainer)
-                {
-                PIM_TRAPD_HANDLE(iContainer->HandleStopCommandL());
-                }
-            }
-            break;
-		case ECalenNotifyResourceChanged:
-		    {
-		    if(iContainer )
-		        {
-                CAknAppUi* Appui = (CAknAppUi*)CEikonEnv::Static()->EikAppUi();
-                //handle this event when the app is in background
-                if(!Appui->IsForeground())
-                    {
-                    iContainer->HandleResourceChange(KEikDynamicLayoutVariantSwitch);
-                    }
-		        }
-		    }
-		    break;
-        default:
-            ASSERT( 0 ); // should never get here
-            break;
-        }
-
-    TRACE_EXIT_POINT;
-    }
-
-#ifdef RD_CALEN_EXTERNAL_CAL
-// ----------------------------------------------------------------------------
-// ?classname::?member_function
-// ?implementation_description
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-TBool CCalenNativeView::ExtCalendarAvailableL()
-    {
-    TRACE_ENTRY_POINT;
-
-
-    TBool res=EFalse;
-
-
-    TInt enabled( 0 );
-    CRepository* repository = NULL;
-
-    // first we check central repository if it has our external calendar enabled.
-    PIM_TRAPD_HANDLE( (repository = CRepository::NewL( KCRUidCalenUIExtensions )) );
-    if( repository )
-        {
-        TInt err = repository->Get( KCalenExternalCalendarEnabled, enabled );
-        delete repository;
-        }
-    // if setting says it is not enabled there is no point of loading provider at all, improves performance.
-    if (!enabled)
-        {
-        TRACE_EXIT_POINT;
-        return EFalse;
-        }
-
-    // if setting was enabled we should also find out if there is a service provider.
-    CreateServiceHandlerL(EFalse);
-    CAiwCriteriaItem* crit = CAiwCriteriaItem::NewLC(ECalenExtAiwCommandId, KAiwCmdView, KContentTypeCalendar);
-    // we will connect to base service which is currently just empty. This is needed just for finding out if
-    // there are any providers available. This will change in the future in AIW framework as it is a bug.
-    crit->SetServiceClass(TUid::Uid(KAiwClassBase));
-    crit->SetMaxProviders(1);
-    RCriteriaArray array;
-    array.Append(crit);
-
-    // attach to base service.
-    // ownership of array is not transferred.
-    iServiceHandler->AttachL(array);
-
-    // get number of matching providers.
-    TInt num=iServiceHandler->NbrOfProviders(crit);
-
-
-    array.ResetAndDestroy();
-    CleanupStack::Pop(crit);
-
-    // ok if we have provider and setting was also enabled then we should show menu items.
-    if ((num>0)&&(enabled))
-        {
-        res=ETrue;
-        }
-    TRACE_EXIT_POINT;
-    return res;
-    }
-#endif //RD_CALEN_EXTERNAL_CAL
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::BeginRepopulationL
-// Starts population again.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::BeginRepopulationL()
-    {
-    TRACE_ENTRY_POINT;
-
-    CancelPopulation();
-    iServices.IssueCommandL( ECalenStartActiveStep );
-
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::RemoveViewsFromCycle
-// From CCalenView. Does nothing.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::RemoveViewsFromCycle( RArray<TInt>& /*aViews*/ )
-    {
-    TRACE_ENTRY_POINT;
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::GetHelpContext
-// From CCalenView. Does nothing.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::GetHelpContext( TCoeHelpContext& /*aHelpContext*/ )
-    {
-    TRACE_ENTRY_POINT;
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::CalenViewExtensionL
-// From CCalenView. Does nothing.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-TAny* CCalenNativeView::CalenViewExtensionL( TUid /*aExtensionId*/ )
-    {
-    TRACE_ENTRY_POINT;
-    TRACE_EXIT_POINT;
-    return NULL;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::OnEditorClosedL
-// Called when editor/viewer is closed
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::OnEditorClosedL()
-    {
-    TRACE_ENTRY_POINT;
-    
-    SetTapIgnore(EFalse);
-    // If the view is active, then update status pane
-    if( Container() )
-        {
-        RedrawStatusPaneL();
-        iIsEditorActive = EFalse;
-        }
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::SetEditorActive
-// Set the flag iIsEditorActive whenever new event editor is launched from any
-// native view.This is to prevent the preview popup display
-// (other items were commented in a header).
+// saveActivity saves the activity for current view
 // ----------------------------------------------------------------------------
 // 
-void CCalenNativeView::SetEditorActive(TBool aEditorActive)
-    {
-    TRACE_ENTRY_POINT;
-    
-    iIsEditorActive = aEditorActive;
-    
-    TRACE_EXIT_POINT;
-    }
-	
-// ----------------------------------------------------------------------------
-// CCalenNativeView::IsCommandHandlingInProgress
-// other details are commented in the header
-// ----------------------------------------------------------------------------
-// 
-TBool CCalenNativeView::IsCommandHandlingInProgress()
-    {
-    TRACE_ENTRY_POINT;
-    
-    return iCommandProcessing;
+void CalenNativeView::saveActivity()
+ {
+   OstTraceFunctionEntry0( CALENNATIVEVIEW_SAVEACTIVITY_ENTRY );
     
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::IsEventViewLaunchedFromAlarm
-// other details are commented in the header
-// ----------------------------------------------------------------------------
-// 
-TBool CCalenNativeView::IsEventViewLaunchedFromAlarm()
-    {
-    TRACE_ENTRY_POINT;
-    return iIgnoreTap;
-    TRACE_EXIT_POINT;
-    }
-// ----------------------------------------------------------------------------
-// CCalenNativeView::SetCommandHandlingProgress
-// other details are commented in the header
-// ----------------------------------------------------------------------------
-// 
-void CCalenNativeView::SetCommandHandlingInProgress( TBool aInProgress )
-    {
-    TRACE_ENTRY_POINT;
-    
-    iCommandProcessing = aInProgress;
-    
-    TRACE_EXIT_POINT;
-    }
-	
+   // Get a pointer to activity manager 
+   HbActivityManager* activityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
+ 
+   // check if alerady a valid screen shot is captured
+   if (!mIsCapturedScreenShotValid) {
+       mScreenShotMetadata.clear(); // remove any screenshot captured earlier
+       mScreenShotMetadata.insert("screenshot", QPixmap::grabWidget(mainWindow(), mainWindow()->rect()));
+       }
+   
+   // Save any data necessary to save the state
+   QByteArray serializedActivity;
+   QDataStream stream(&serializedActivity, QIODevice::WriteOnly | QIODevice::Append);
+   stream << mActivityId;
+ 
+   bool ok(false);
+   // Save activity
+   ok = activityManager->addActivity(activityName, serializedActivity, mScreenShotMetadata);
 
-// ----------------------------------------------------------------------------
-// CCalenNativeView::SetEditorActive
-// Returns an array of active collection ids.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-// 
-void CCalenNativeView::GetActiveCollectionidsL( 
-        MCalenServices& aServices, 
-        RArray< TInt >& aCollectionIds )
-    {
-    TRACE_ENTRY_POINT;
-    RPointerArray<CCalCalendarInfo> calendarInfoList;
-    CleanupClosePushL(calendarInfoList);
-    aServices.GetAllCalendarInfoL(calendarInfoList);
-    
-    for(TInt index=0;index<calendarInfoList.Count();index++)
-        {
-        if(calendarInfoList[index]->Enabled())
-            {
-            aCollectionIds.Append( aServices.SessionL( 
-                        calendarInfoList[index]->FileNameL() ).CollectionIdL() );
-            }
-        }
-    
-    CleanupStack::PopAndDestroy(&calendarInfoList);
-    TRACE_EXIT_POINT;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::SetFasterAppActive
-// Set the flag 'iFasterApp' to ETrue if application is fake exited
-// and to EFalse once the application comes to foreground.
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-void CCalenNativeView::SetFasterAppActive( TBool aFlag )
-    {
-    TRACE_ENTRY_POINT;
-    TRACE_EXIT_POINT;
-    iFasterAppActive = aFlag;
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::IsEditorActiveOrFasterAppExit
-// Returns ETrue whenever editor is active or whenever fake exit is active
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-TBool CCalenNativeView::IsEditorActiveOrFasterAppExit()
-    {
-    TRACE_ENTRY_POINT;
-    
-    if( iIsEditorActive || iFasterAppActive || iIsBackgrounded )
-        {
-        TRACE_EXIT_POINT;
-        return ETrue;
-        }
-    else
-        {
-        TRACE_EXIT_POINT;
-        return EFalse;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CCalenNativeView::SetTapIgnore
-// Sets flag to ignore tap on any of the views 
-// (other items were commented in a header).
-// ----------------------------------------------------------------------------
-//
-void CCalenNativeView::SetTapIgnore(TBool aIgnore)
-    {
-    iIgnoreTap = aIgnore;
-    }
-
-// End of File
+   // Check is activity saved sucessfully
+   if ( !ok )  {
+       qFatal("Add failed" ); // Panic is activity is not saved successfully
+       }
+   OstTraceFunctionExit0( CALENNATIVEVIEW_SAVEACTIVITY_EXIT );
+ }
+//End Of File