calendarui/views/src/calenmonthview.cpp
branchRCL_3
changeset 66 bd7edf625bdd
parent 65 12af337248b1
--- a/calendarui/views/src/calenmonthview.cpp	Tue Aug 31 15:13:43 2010 +0300
+++ b/calendarui/views/src/calenmonthview.cpp	Wed Sep 01 12:32:31 2010 +0100
@@ -1,1795 +1,615 @@
 /*
- * 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"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+* Copyright (c) 2007-2008 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  For Month view of calendar application.
  *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  CalenMonthView implementation.
- *
- */
+*/
+
 
-//system includes
-#include <QtGui>
-#include <xqsettingsmanager.h>
-#include <xqsettingskey.h>
-#include <hbapplication.h>
-#include <hbmainwindow.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbview.h>
-#include <hblabel.h>
-#include <hbframeitem.h>
-#include <hbcolorscheme.h>
-#include <hbtheme.h>
-#include <agendautil.h>
-#include <agendaentry.h>
-#include <hbapplication.h> // hbapplication
-#include <hbactivitymanager.h> //Activity Manager
+#include <aknnavide.h>
+#include <bldvariant.hrh> // For FeatureIds (lint warns without)
+#include <eikmenup.h>
+#include <eikspane.h>       //CEikStatusPane
+#include <StringLoader.h>
+#include <aknappui.h>
+#include <featmgr.h>
+#include <calinstance.h>
+#include <calinstanceview.h>
+#include <calcommon.h>
+#include <caliterator.h>
+#include <Calendar.rsg>
+#include <calencommonui.rsg>
+#include <calencommands.hrh>            // Calendar commands
+#include <calencontext.h>
+#include <CalenStatusPaneUtils.h>
+#include <calenservices.h>
+#include <caleninstanceid.h>
+#include <calenviewutils.h>
+#include <calcalendarinfo.h>
 
-//user includes
+#include "calendarui_debug.h"
 #include "calenmonthview.h"
-#include "calenservices.h"
-#include "calennativeview.h"
-#include "calenview.h"
-#include "calenmonthdata.h"
-#include "calencontext.h"
-#include "calenagendautils.h"
+#include "calenmonthcontainer.h"
+#include <CalenInterimUtils2.h>
+#include "calentitlepane.h"
+#include "calensend.h"
+#include "ToDo.hrh"
+#include "calendar.hrh"
 #include "CalenUid.h"
-#include "hb_calencommands.hrh" 
-#include "calendateutils.h"
-#include "calenmonthgrid.h"
-#include "calenpreviewpane.h"
-#include "calendocloader.h"
-#include "calenthicklinesdrawer.h"
-#include "calencommon.h"
-#include "calendarprivatecrkeys.h"
-#include "calenpluginlabel.h"
-#include "calenconstants.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "calenmonthviewTraces.h"
-#endif
 
-// CONSTANTS
-#define WEEKNUMWIDTH 6.41604 // in units, need to update this value if it 
-								// is changed in the docml
-/*!
- \class CalenMonthView
-
- Class implementing calendar month view
- */
+// ================= MEMBER FUNCTIONS =========================================
 
-/*!
- Default constructor.
- */
-CalenMonthView::CalenMonthView(MCalenServices &services) :
-	CalenNativeView(services), mAgendaUtil(services.agendaInterface()), 
-	mGoToTodayAction(0),
-	mPrevRegionalInfo(0),
-	mCurrRegionalInfo(0),
-	mNextRegionalInfo(0),
-	mIsAboutToQuitEventConnected(false)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_CALENMONTHVIEW_ENTRY );
-    
-	mIsWeekNumbersShown = 0;
-	mOrientation = mServices.MainWindow().orientation();
-	// Read the date from the context
-	mDate = mServices.Context().focusDateAndTime();
-	mCurrentDay = mDate;
+// ----------------------------------------------------------------------------
+// CCalenMonthView::NewLC
+// First stage construction
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+EXPORT_C CCalenMonthView* CCalenMonthView::NewL( MCalenServices& aServices )
+    {
+    TRACE_ENTRY_POINT;
 
-	// Create the settings manager instance and settings key for week number
-	mSettingsManager = new XQSettingsManager(this);
-	mWeekNumberCenrepKey
-	        = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
-	                            KCRUidCalendar, KCalendarShowWeekNum);
+    CCalenMonthView* self = new( ELeave ) CCalenMonthView( aServices );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    TRACE_EXIT_POINT;
+    return self;
+    }
 
-	mLocale = HbExtendedLocale::system();
-	mFirstWeekLabel = NULL;
-	mIsPrevPaneGesture = false;
-	// Get the week day and preview heading color from the theme
-	mWeekDaysColor = HbColorScheme::color("qtc_cal_week_day");
-	
-	mPreviewHeadingColor = HbColorScheme::color("qtc_cal_day_preview_heading");
-	
-    connect(HbTheme::instance(), SIGNAL(changed()),
-                this, SLOT(handleThemeChange()));
-    
-	OstTraceFunctionExit0( CALENMONTHVIEW_CALENMONTHVIEW_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::~CCalenMonthView
+// Destructor
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CCalenMonthView::~CCalenMonthView()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    }
 
-/*!
- Destructor.
- */
-CalenMonthView::~CalenMonthView()
-{
-    OstTraceFunctionEntry0( DUP1_CALENMONTHVIEW_CALENMONTHVIEW_ENTRY );
-    
-    OstTraceFunctionExit0( DUP1_CALENMONTHVIEW_CALENMONTHVIEW_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::CCalenMonthView
+// C++ default constructor can NOT contain any code, that might leave.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CCalenMonthView::CCalenMonthView( MCalenServices& aServices )
+    : CCalenNativeView( aServices ),
+      iPopulationStep( ENothingDone )
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    }
 
-/*!
- Called by the CalenViewManager after loading the view from the docml.
- The initializaion/setup of the view is done here. 
- */
-void CalenMonthView::setupView(CalenDocLoader *docLoader)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_SETUPVIEW_ENTRY );
-    
-	mDocLoader = docLoader;
-	mTitleLabel
-	        = qobject_cast<HbLabel *> (
-								   mDocLoader->findWidget(CALEN_MONTH_TITLE));
-	// Set the title text color
-	QColor monthTitleColor = HbColorScheme::color("qtc_cal_monthgrid_title");
-	if (mTitleLabel && monthTitleColor.isValid()) {
-		mTitleLabel->setTextColor(monthTitleColor);
-	}
-		
-	mDayNameWidget
-	        = qobject_cast<CalenThickLinesDrawer *> (
-													mDocLoader->findWidget(
-													CALEN_DAYNAMES_WIDGET));
+// ----------------------------------------------------------------------------
+// CCalenMonthView::ConstructL
+// Symbian OS constructor can leave.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::ConstructL()
+    {
+    TRACE_ENTRY_POINT;
+
+    CommonConstructL( R_CALEN_MONTHVIEW_INFO );
+    //iLocalisedViewName = StringLoader::LoadL( R_CALEN_VIEW_MONTH, iCoeEnv );
+
+    TRACE_EXIT_POINT;
+    }
 
-	// Get all the seven day labels
-	mFirstDayLabel
-	        = qobject_cast<HbLabel *> (
-						mDocLoader->findWidget(CALEN_MONTVIEW_FIRST_DAY_LABEL));
-	mSecondDayLabel
-	        = qobject_cast<HbLabel *> (
-					   mDocLoader->findWidget(CALEN_MONTVIEW_SECOND_DAY_LABEL));
-	mThirdDayLabel
-	        = qobject_cast<HbLabel *> (
-					   mDocLoader->findWidget(CALEN_MONTVIEW_THIRD_DAY_LABEL));
-	mFourthDayLabel
-	        = qobject_cast<HbLabel *> (
-					   mDocLoader->findWidget(CALEN_MONTVIEW_FOURTH_DAY_LABEL));
-	mFifthDayLabel
-	        = qobject_cast<HbLabel *> (
-					   mDocLoader->findWidget(CALEN_MONTVIEW_FIFTH_DAY_LABEL));
-	mSixthDayLabel
-	        = qobject_cast<HbLabel *> (
-					   mDocLoader->findWidget(CALEN_MONTVIEW_SIXTH_DAY_LABEL));
-	mSeventhDayLabel
-	        = qobject_cast<HbLabel *> (
-					mDocLoader->findWidget(CALEN_MONTVIEW_SEVENTH_DAY_LABEL));
-	
-	// Get the weeknumber widget
-	mWeekNumberWidget
-			= qobject_cast<CalenThickLinesDrawer *> (
-							 mDocLoader->findWidget(CALEN_WEEKNUMBERS_WIDGET));
-	// Disable the item so that line seperator doesnt gets drawn by default
-	mWeekNumberWidget->setEnabled(false);
+// ----------------------------------------------------------------------------
+// CCalenMonthView::SetStatusPaneFromActiveContextL
+// Set active date to Status pane
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::SetStatusPaneFromActiveContextL()
+    {
+    TRACE_ENTRY_POINT;
+    
+    // title pane
+    TBuf<KMaxMonthName> title;
+    TTime activeDay = CCalenContainer::DateFromContextL( iServices.Context() );
+    TDateTime activeDayTime = activeDay.DateTime();
+    iSPUtils->MonthNameByActiveTime( title, activeDay );
+    iSPUtils->UnderLineTitleText( EFalse );
+    iSPUtils->SetTitleTextL( title );
+    
+   
+    // navi pane
+    CAknNavigationDecorator* naviLabel = iSPUtils->ShowNaviPaneL( activeDay );
+    ShowValidScrollButtons( *naviLabel,
+                            activeDay - TTimeIntervalMonths(1),
+                            activeDay + TTimeIntervalMonths(1) );
 
-	// Get the month grid
-	mMonthGrid
-	        = qobject_cast<CalenMonthGrid *> (
-									mDocLoader->findWidget(CALEN_MONTHGRID));
-	mCurrPaneParent = qobject_cast<HbWidget *> (
-			mDocLoader->findWidget(CALEN_CURRPREVIEWPARENT));
-	// Get current day preview pane widget
-	mCurrPreviewPane
-			= static_cast<CalenPreviewPane *> (
-					docLoader->findWidget(CALEN_CURRPREVIEWPANE));
-	//mCurrPreviewPane->setParent(mCurrPaneParent);
-	mCurrPaneParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
-	HbLabel* currPaneNoEntriesLabel = static_cast<HbLabel *> (
-			docLoader->findWidget(CALEN_NOENTRIES_LABEL_CURR));
-	mCurrPreviewPane->setView(this);
-	mCurrPreviewPane->setNoEntriesLabel(currPaneNoEntriesLabel);
-	
-    connect(
-            HbTheme::instance(), SIGNAL(changed()),
-            mCurrPreviewPane, SLOT(handleThemeChange()));
-	
-	mCurrPaneLayoutWidget = qobject_cast<HbWidget*>(docLoader->findWidget(CALEN_CURRPANELAYOUT));
-	mCurrPaneLayout = static_cast<QGraphicsLinearLayout*>(mCurrPaneLayoutWidget->layout());
-	
-	mPrevPaneParent = qobject_cast<HbWidget *> (
-			mDocLoader->findWidget(CALEN_PREVPREVIEWPARENT));
-	// Get previous day preview pane widget
-	mPrevPreviewPane
-			= static_cast<CalenPreviewPane *> (
-					docLoader->findWidget(CALEN_PREVPREVIEWPANE));
-	//mPrevPreviewPane->setParent(mPrevPaneParent);
-	mPrevPaneParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
-	HbLabel* prevPaneNoEntriesLabel = static_cast<HbLabel *> (
-			docLoader->findWidget(CALEN_NOENTRIES_LABEL_PREV));
-	mPrevPreviewPane->setView(this);
-	mPrevPreviewPane->setNoEntriesLabel(prevPaneNoEntriesLabel);
-    connect(
-            HbTheme::instance(), SIGNAL(changed()),
-            mPrevPreviewPane, SLOT(handleThemeChange()));
-	mPrevPaneParent->setVisible(false);
-	
-	mPrevPaneLayoutWidget = qobject_cast<HbWidget*>(docLoader->findWidget(CALEN_PREVPANELAYOUT));
-	mPrevPaneLayout = static_cast<QGraphicsLinearLayout*>(mPrevPaneLayoutWidget->layout());
-	mNextPaneParent = qobject_cast<HbWidget *> (
-			mDocLoader->findWidget(CALEN_NEXTPREVIEWPARENT));
-	// Get next day preview pane widget
-	mNextPreviewPane
-			= static_cast<CalenPreviewPane *> (
-					docLoader->findWidget(CALEN_NEXTPREVIEWPANE));
-	//mNextPreviewPane->setParent(mNextPaneParent);
-	mNextPaneParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
-	HbLabel* nextPaneNoEntriesLabel = static_cast<HbLabel *> (
-			docLoader->findWidget(CALEN_NOENTRIES_LABEL_NEXT));
-	mNextPreviewPane->setView(this);
-	mNextPreviewPane->setNoEntriesLabel(nextPaneNoEntriesLabel);
-    connect(
-            HbTheme::instance(), SIGNAL(changed()),
-            mNextPreviewPane, SLOT(handleThemeChange()));
+    iSPUtils->RefreshStatusPane();
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenMonthView::DoActivateImplL
+// CCalenNativeView::DoActivateL() calls DoActivateImplL()
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::DoActivateImplL(	const TVwsViewId& /*aPrevViewId*/,
+                                        TUid /*aCustomMessageId*/,
+                                        const TDesC8& /*aCustomMessage*/ )
+    {
+    TRACE_ENTRY_POINT;
+
+    static_cast<CCalenMonthContainer*>(iContainer)->InitDataForMonthL();
     
-	mNextPaneParent->setVisible(false);
-	mNextPaneLayoutWidget = qobject_cast<HbWidget*>(docLoader->findWidget(CALEN_NEXTPANELAYOUT));
-	mNextPaneLayout = static_cast<QGraphicsLinearLayout*>(mNextPaneLayoutWidget->layout());
-	
-	mMonthGridPlusWeekNumWidget
-	        = qobject_cast<HbWidget *> (
-					mDocLoader->findWidget(CALEN_MONTHGRID_WEEKNUMBERS_WIDGET));
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenMonthView::DoDeactivateImpl
+// CCalenNativeView::DoDeactivateL() calls DoDeactivateImplL()
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::DoDeactivateImpl()
+    {
+    TRACE_ENTRY_POINT;
 
-	mMonthGrid->setView(this);
+    if (!iAvkonAppUi->IsDisplayingMenuOrDialog())
+        {
+        iSPUtils->HideNaviPane();
+        //iNaviContainer->Pop(iNaviLabel);
+        //delete iNaviLabel;
+        //iNaviLabel = NULL;
+        }
+
+    TRACE_EXIT_POINT;
+    }
 
-	
-	
-	mIsFirstTimeLoad = true;
-	// get a pointner to activity manager
-	HbActivityManager* activityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
+// ----------------------------------------------------------------------------
+// CCalenMonthView::CreateContainerImplL
+// making CCalendarContainer. In this class, it is CCalenMonthContainer.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CCalenContainer* CCalenMonthView::CreateContainerImplL()
+    {
+    TRACE_ENTRY_POINT;
+
+    TRACE_EXIT_POINT;
+    return new( ELeave )CCalenMonthContainer( this, iDate, iServices );
+    }
 
-	// clean up any previous versions of this activity, if any, i.e. activityName, from the activity manager. 
-	// Ignore return value, first boot would always return False. bool declared 
-	// only for debugging purpose.
-	bool ok = activityManager->removeActivity(activityName);
-
-	OstTraceFunctionExit0( CALENMONTHVIEW_SETUPVIEW_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::OnLocaleChangedL
+// Locale or Today was changed when this function is called.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::OnLocaleChangedL(TInt aReason)
+    {
+    TRACE_ENTRY_POINT;
 
-/*!
- Constructs the remaining part of the month view that was kept as 
- part if lazy loading
- */
-void CalenMonthView::doLazyLoading()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_DOLAZYLOADING_ENTRY );
-	// Add background items to all the widgets
-	addBackgroundFrame();
-	
-	// Construct and add the previous month and next month items to the view
-	mMonthGrid->updateMonthGridWithInActiveMonths(mMonthDataArray);
-	
-	// Check if regional information needs to be shown
-	// and add it or remove it
-	showHideRegionalInformation();
+    if (iContainer)
+        {
+        if (iContainer->IsVisible())
+            {
+            if (aReason & EChangesLocale)
+                {
+                if (IsContainerFocused())
+                    {
+                    SetStatusPaneFromActiveContextL();
+                    }
+                else
+                    {
+                    iLocChangeReason = aReason;
+                    }
+                }
+           		if ((aReason & EChangesSystemTime ) || (aReason & EChangesMidnightCrossover ))
+                {
+                static_cast<CCalenMonthContainer*>(iContainer)->ChangesMidnightCrossover();
+                }
+            }
+        else
+            { // Not visible
+            iLocChangeReason = aReason;
+            }
+        }
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenMonthView::RedrawStatusPaneL
+// Redraw status pane when Form is closed
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::RedrawStatusPaneL()
+    {
+    TRACE_ENTRY_POINT;
+
+    SetStatusPaneFromActiveContextL();
+
+    static_cast<CCalenMonthContainer*>(
+                iContainer)->ChangesMidnightCrossover();
 	
-	// Connect to the menu actions
-	HbAction
-			*newEventAction =
-					qobject_cast<HbAction *> (
-						mDocLoader->findObject(CALEN_MONTVIEW_MENU_NEWEVENT));
-
-	connect(newEventAction, SIGNAL(triggered()), this, SLOT(createEditor()));
-
-	mGoToTodayAction =
-					qobject_cast<HbAction *> (
-							mDocLoader->findObject(CALEN_MONTVIEW_MENU_GOTOTODAY));
-	connect(mGoToTodayAction, SIGNAL(triggered()), this, SLOT(goToToday()));
+    static_cast<CCalenMonthContainer*>(
+                iContainer)->RedrawPreviewPane();
 	
-	HbAction
-			*goToDateAction =
-					qobject_cast<HbAction *> (
-						mDocLoader->findObject(CALEN_MONTVIEW_MENU_GOTODATE));
-
-	connect(goToDateAction, SIGNAL(triggered()), this, SLOT(goToDate()));
+    TRACE_EXIT_POINT;
+    }
 
-	// TODO: Need to move this to docml
-	// Set the title to the submenu
-	mDeleteSubMenu =
-	                qobject_cast<HbMenu *> (
-						mDocLoader->findObject(CALEN_MONTVIEW_DELETE_SUBMENU));
-	mDeleteSubMenu->setTitle(hbTrId("txt_calendar_opt_delete_entries"));
-
-	HbAction
-	        *beforeDateAction =
-	                qobject_cast<HbAction *> (
-						mDocLoader->findObject(CALEN_MONTVIEW_MENU_BEFOREDATE));
-
-	connect(beforeDateAction, SIGNAL(triggered()), this,
-	        SLOT(deleteBeforeDate()));
+// ----------------------------------------------------------------------------
+// CCalenMonthView::DynInitMenuPaneL
+// Changes MenuPane dynamically
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::DynInitMenuPaneL(TInt aResourceId,
+                       CEikMenuPane* aMenuPane)
+    {
+    TRACE_ENTRY_POINT;
 
-	HbAction
-	        *allEntriesAction =
-	                qobject_cast<HbAction *> (
-						mDocLoader->findObject(CALEN_MONTVIEW_MENU_ALLENTRIES));
-
-	connect(allEntriesAction, SIGNAL(triggered()), this,
-	        SLOT(deleteAllEntries()));
-
-	HbAction
-	        *settingsAction =
-	                qobject_cast<HbAction *> (
-						mDocLoader->findObject(CALEN_MONTVIEW_MENU_SETTINGS));
-
-	connect(settingsAction, SIGNAL(triggered()), this,
-	        SLOT(launchSettingsView()));
+    TBool isEntry = EFalse;
+    static_cast<CCalenMonthContainer*>(iContainer)->HidePopup();
 
 
-	// Connect to the signal of change orientation.
-	connect(&(mServices.MainWindow()),
-	        SIGNAL(orientationChanged(Qt::Orientation)), this,
-	        SLOT(changeOrientation(Qt::Orientation)));
-	
-	// Connect to the signal when options menu is shown
-	// This is required to add/remove dynamically some options
-	connect(menu(), SIGNAL(aboutToShow ()), this,
-			SLOT(addRemoveActionsInMenu()));	
-	//add "show lunar data" action item ,if regional plugin is present
-	//regional plugin will add the option itself and handles it accordingly
-	//use this api after adding all action item to the menu
-	//so that plugin add the "Show lunar data" item as a second last option 
-	// in all views
-	mServices.OfferMenu(menu());
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_DOLAZYLOADING_EXIT );
-}
+    CCalenNativeView::DynInitMenuPaneL(aResourceId, aMenuPane);
+    switch (aResourceId)
+        {
+        case R_CALENDAR_MONTH_MENUPANE:
+            {
 
-/*!
- Adds the week numbers to the weeknumber widget
- */
-void CalenMonthView::addWeekNumbers()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_ADDWEEKNUMBERS_ENTRY );
-    
-	if (!mFirstWeekLabel) {
-	// Get all the six week labels
-	mFirstWeekLabel
-			= qobject_cast<HbLabel *> (
-					mDocLoader->findWidget(CALEN_MONTVIEW_FIRST_WEEK_LABEL));
-	mSecondWeekLabel
-			= qobject_cast<HbLabel *> (
-					mDocLoader->findWidget(CALEN_MONTVIEW_SECOND_WEEK_LABEL));
-	mThirdWeekLabel
-			= qobject_cast<HbLabel *> (
-					mDocLoader->findWidget(CALEN_MONTVIEW_THIRD_WEEK_LABEL));
-	mFourthWeekLabel
-			= qobject_cast<HbLabel *> (
-					mDocLoader->findWidget(CALEN_MONTVIEW_FOURTH_WEEK_LABEL));
-	mFifthWeekLabel
-			= qobject_cast<HbLabel *> (
-					mDocLoader->findWidget(CALEN_MONTVIEW_FIFTH_WEEK_LABEL));
-	mSixthWeekLabel
-			= qobject_cast<HbLabel *> (
-					mDocLoader->findWidget(CALEN_MONTVIEW_SIXTH_WEEK_LABEL));
-	}
-	
-	// Set the text colors well before instead of setting it again and again
-	mFirstWeekLabel->setTextColor(mWeekDaysColor);
-	mSecondWeekLabel->setTextColor(mWeekDaysColor);
-	mThirdWeekLabel->setTextColor(mWeekDaysColor);
-	mFourthWeekLabel->setTextColor(mWeekDaysColor);
-	mFifthWeekLabel->setTextColor(mWeekDaysColor);
-	mSixthWeekLabel->setTextColor(mWeekDaysColor);
-	
-	// Calculate the week numbers and set them to the week labels
-	updateWeekNumGridModel();
-
-	// Get the day names layout
-	QGraphicsLinearLayout *dayNamesLayout =
-	        static_cast<QGraphicsLinearLayout *> (mDayNameWidget->layout());
-
-	if (KCalenDaysInWeek == dayNamesLayout->count()) {
-		// Add one empty label in the day name grid
-		HbLabel *label = new HbLabel(mDayNameWidget);
+#ifdef RD_CALEN_EXTERNAL_CAL
+            TBool isit=ExtCalendarAvailableL();
+            if (!isit)
+                {
+                ReleaseServiceHandler();
+                TInt dummy;
+                if (aMenuPane->MenuItemExists(ECalenExtAiwCommandId,dummy))
+                    {
+                    aMenuPane->DeleteMenuItem(ECalenExtAiwCommandId);
+                    }
+                }
+#endif //RD_CALEN_EXTERNAL_CAL
 
-		// Set the attributes same as that of other day names to make it
-		// look similar to the day names
-		label->setPlainText("");
-		label->setFont(mFirstDayLabel->font());
-		label->setFontSpec(mFirstDayLabel->fontSpec());
-		label->setAlignment(mFirstDayLabel->alignment());
-		label->setElideMode(mFirstDayLabel->elideMode());
-		label->setZValue(mFirstDayLabel->zValue());
-		// Set the proper width to this empty label so that
-		// day names are dislayed against the correct columns
-		HbDeviceProfile deviceProf;
-        qreal unitValue = deviceProf.unitValue();
-        qreal widthInPixels = WEEKNUMWIDTH * unitValue;
-        label->setPreferredWidth(widthInPixels);
-        label->setMinimumWidth(widthInPixels);
-        label->setMaximumWidth(widthInPixels);
-        label->setContentsMargins(0,0,0,0);
-		
-		// Add this label into layout
-		dayNamesLayout->insertItem(0, label);
-		dayNamesLayout->invalidate();
-		dayNamesLayout->activate();
-	}
-
-	// Now insert the weekNumber Grid
-	QGraphicsLinearLayout *layout = static_cast<QGraphicsLinearLayout *> 
-										(mMonthGridPlusWeekNumWidget->layout());
-
-	if (1 == layout->count()) {
-		layout->insertItem(0, mWeekNumberWidget);
-		// Enable the item so that line seperator gets drawn
-		mWeekNumberWidget->setEnabled(true);
-		layout->invalidate();
-		layout->activate();
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_ADDWEEKNUMBERS_EXIT );
-}
-
-/*!
- Removes the week numbers from the view
- */
-void CalenMonthView::removeWeekNumbers()
+            if ( ! FeatureManager::FeatureSupported(KFeatureIdHelp) )
+                {
+                aMenuPane->DeleteMenuItem(EAknCmdHelp);
+                }
+            
+            RPointerArray<CCalCalendarInfo> calendarInfoList;
+            iServices.GetAllCalendarInfoL(calendarInfoList);
+            CleanupClosePushL(calendarInfoList);                            
+            
+            for(TInt index=0 ; index < calendarInfoList.Count();index++ )
+                {
+                if(calendarInfoList[index]->Enabled() )
+                    {
+                    CCalIter* iterator = CCalIter::NewL(
+                          iServices.SessionL(calendarInfoList[index]->FileNameL()) );
+                    CleanupStack::PushL( iterator );
+                    if( iterator->FirstL() != KNullDesC8() )
+                        {
+                        isEntry = ETrue;              
+                        }
+                    CleanupStack::PopAndDestroy( iterator );
+                    }
+                 
+                }
+            CleanupStack::PopAndDestroy(&calendarInfoList);
 
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_REMOVEWEEKNUMBERS_ENTRY );
-    
-	// Remove the week number grid if setting is off
-	QGraphicsLinearLayout *layout = static_cast<QGraphicsLinearLayout *> 
-									(mMonthGridPlusWeekNumWidget->layout());
-	if (2 == layout->count()) {
-		layout->removeItem(mWeekNumberWidget);
-
-		// Disable the item as we are removing it from the layout
-		mWeekNumberWidget->setEnabled(false);
-		layout->invalidate();
-		layout->activate();
-
-		// Clear the week labels
-		mFirstWeekLabel->clear();
-		mSecondWeekLabel->clear();
-		mThirdWeekLabel->clear();
-		mFourthWeekLabel->clear();
-		mFifthWeekLabel->clear();
-		mSixthWeekLabel->clear();
+            if( !isEntry )
+                {
+                aMenuPane->DeleteMenuItem( ECalenDeleteAllEntries );
+                }
+            if( !iServices.InterimUtilsL().MRViewersEnabledL( ETrue ) )
+                {
+                aMenuPane->DeleteMenuItem( ECalenNewMeetingRequest );
+                }
+            // Offer the menu pane to the services for customisation by the
+            // the view manager/plugins
+            iServices.OfferMenuPaneL( aResourceId, aMenuPane );
+            }
+            break;
 
-		// Get the day names layout
-		QGraphicsLinearLayout *dayNamesLayout =
-		        static_cast<QGraphicsLinearLayout *> (mDayNameWidget->layout());
-		if (dayNamesLayout->count() == KCalenDaysInWeek + 1) {
-			// Remove the empty item in the day name grid
-			QGraphicsLayoutItem *item = dayNamesLayout->itemAt(0);
-			dayNamesLayout->removeAt(0);
-			delete item;
-			dayNamesLayout->invalidate();
-			dayNamesLayout->activate();
-		}
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_REMOVEWEEKNUMBERS_EXIT );
-}
+        default:
+            break;
+        }
 
-/*!
- Sets the background frame for the month view
- */
-void CalenMonthView::addBackgroundFrame()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_ADDBACKGROUNDFRAME_ENTRY );
-    
-    // Set the background items for all the widgets
-    HbFrameItem* frame = NULL;
-    HbFrameDrawer *drawer = NULL;
-    HbWidget* monthViewExceptPreviewPane = qobject_cast<HbWidget *> (
-						 mDocLoader->findWidget(CALEN_MONTHVIEW_EXCEPT_PANE));
-    if (monthViewExceptPreviewPane) {
-        drawer = new HbFrameDrawer("qtg_fr_cal_monthgrid_bg", HbFrameDrawer::NinePieces);
-        // The grid background
-        frame = new HbFrameItem(drawer, this);
-        monthViewExceptPreviewPane->setBackgroundItem(frame->graphicsItem(), -2);
+    TRACE_EXIT_POINT;
     }
-    if (mTitleLabel) {
-        // The month title
-        drawer = new HbFrameDrawer("qtg_fr_cal_monthgrid_title_bg", HbFrameDrawer::ThreePiecesHorizontal);
-		if (drawer)
-        	frame = new HbFrameItem(drawer, this);
-		if(frame)
-			mTitleLabel->setBackgroundItem(frame->graphicsItem(), -2);
-    }
-    
-    // Set the frame to the preview pane
-    drawer = new HbFrameDrawer("qtg_fr_cal_preview_bg", HbFrameDrawer::NinePieces);
-	if (drawer)
-	    frame = new HbFrameItem(drawer, this);
-	if(frame)
-	    mPrevPaneLayoutWidget->setBackgroundItem(frame->graphicsItem(), -5);
-    
-    // Set the frame to the preview pane
-    drawer = new HbFrameDrawer("qtg_fr_cal_preview_bg", HbFrameDrawer::NinePieces);
-    if(drawer)
-	   frame = new HbFrameItem(drawer, this);
-	if(frame)
-    mCurrPaneLayoutWidget->setBackgroundItem(frame->graphicsItem(), -5);
-    
-    // Set the frame to the preview pane
-    drawer = new HbFrameDrawer("qtg_fr_cal_preview_bg", HbFrameDrawer::NinePieces);
-	if(drawer)
-           frame = new HbFrameItem(drawer, this);
-	if(frame)
-	    mNextPaneLayoutWidget->setBackgroundItem(frame->graphicsItem(), -5);
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_ADDBACKGROUNDFRAME_EXIT );
-}
-
-void CalenMonthView::showHideRegionalInformation()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_SHOWHIDEREGIONALINFORMATION_ENTRY );
-    
-	if (pluginEnabled()) {
-		XQSettingsKey regionalInfo(XQSettingsKey::TargetCentralRepository,
-									KCRUidCalendar, KCalendarShowRegionalInfo);
-
-		int showRegionalInfo = 
-						mSettingsManager->readItemValue(regionalInfo).toUInt();
-		if (showRegionalInfo) {
-
-			// Add the regional information to the preview panes
-			if (!mPrevRegionalInfo) {
-				mPrevRegionalInfo = qobject_cast<CalenPluginLabel *> 
-				(mDocLoader->findWidget(CALEN_PREVREGIONALINFO));
-				mPrevRegionalInfo->show();
-				mPrevPaneLayout->insertItem(0, mPrevRegionalInfo);
-
-				HbFrameItem *frameCurr = new HbFrameItem(this);
-				frameCurr->frameDrawer().setFrameType(
-										HbFrameDrawer::ThreePiecesHorizontal);
-				frameCurr->frameDrawer().setFrameGraphicsName(
-										"qtg_fr_cal_preview_title_bg");
-				mPrevRegionalInfo->setBackgroundItem(
-										frameCurr->graphicsItem(), -2);
-			}
-			if (!mCurrRegionalInfo) {
-				mCurrRegionalInfo = qobject_cast<CalenPluginLabel *> 
-				(mDocLoader->findWidget(CALEN_CURRREGIONALINFO));
-				mCurrRegionalInfo->show();
-				mCurrPaneLayout->insertItem(0, mCurrRegionalInfo);
-
-				HbFrameItem *frameCurr = new HbFrameItem(this);
-				frameCurr->frameDrawer().setFrameType(
-										HbFrameDrawer::ThreePiecesHorizontal);
-				frameCurr->frameDrawer().setFrameGraphicsName(
-										"qtg_fr_cal_preview_title_bg");
-				mCurrRegionalInfo->setBackgroundItem(
-										frameCurr->graphicsItem(), -2);
-			}
-			if (!mNextRegionalInfo) {
-				mNextRegionalInfo = qobject_cast<CalenPluginLabel *> 
-				(mDocLoader->findWidget(CALEN_NEXTREGIONALINFO));
-				mNextRegionalInfo->show();
-				mNextPaneLayout->insertItem(0, mNextRegionalInfo);
-
-				HbFrameItem *frameCurr = new HbFrameItem(this);
-				frameCurr->frameDrawer().setFrameType(
-										HbFrameDrawer::ThreePiecesHorizontal);
-				frameCurr->frameDrawer().setFrameGraphicsName(
-										"qtg_fr_cal_preview_title_bg");
-				mNextRegionalInfo->setBackgroundItem(
-										frameCurr->graphicsItem(), -2);
-			}
-			QString *pluginString = pluginText();
-			mPrevRegionalInfo->setPlainText(*pluginString);
-			mPrevRegionalInfo->setTextColor(mPreviewHeadingColor);
-			mCurrRegionalInfo->setPlainText(*pluginString);
-			mCurrRegionalInfo->setTextColor(mPreviewHeadingColor);
-			mNextRegionalInfo->setPlainText(*pluginString);
-			mNextRegionalInfo->setTextColor(mPreviewHeadingColor);
-		} else {
-			if (mPrevRegionalInfo) {
-				mPrevPaneLayout->removeItem(mPrevRegionalInfo);
-				mPrevRegionalInfo->hide();
-				mPrevRegionalInfo = NULL;
-			}
-			if (mCurrRegionalInfo) {
-				mCurrPaneLayout->removeItem(mCurrRegionalInfo);
-				mCurrRegionalInfo->hide();
-				mCurrRegionalInfo = NULL;
-			}
-			if (mNextRegionalInfo) {
-				mNextPaneLayout->removeItem(mNextRegionalInfo);
-				mNextRegionalInfo->hide();
-				mNextRegionalInfo = NULL;
-			}
-		}
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_SHOWHIDEREGIONALINFORMATION_EXIT );
-}
-
-/*!
- Handles the context changed notification
- */
-void CalenMonthView::onContextChanged()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_ONCONTEXTCHANGED_ENTRY );
-	//Update plugin label after setting context
-	if (mCurrRegionalInfo && mPrevRegionalInfo && mNextPaneLayout
-	        && pluginEnabled()) {
-		QString *pluginString = pluginText();
-		mPrevRegionalInfo->setPlainText(*pluginString);
-		mCurrRegionalInfo->setPlainText(*pluginString);
-		mNextRegionalInfo->setPlainText(*pluginString);
-	}
-	OstTraceFunctionExit0( CALENMONTHVIEW_ONCONTEXTCHANGED_EXIT );
-}
-
-/*!
- Calculates the week numbers and sets them to the week labels
- */
-void CalenMonthView::updateWeekNumGridModel()
-
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEWEEKNUMGRIDMODEL_ENTRY );
-    
-	// Get the visible date
-	QDateTime firstVisibleDate = mFirstDayOfGrid.addDays(KCalenDaysInWeek
-	        * mNumOfRowsInPrevMonth);
-	// Go to the last day so that we get the proper week number for the first
-	// week of January
-	mWeekNumbers.clear();
-	// get the proper week numbers
-	for (int i = 0; i < KNumOfVisibleRows; i++) {
-		// Get the week number
-		QDateTime day = firstVisibleDate.addDays((KCalenDaysInWeek * i));
-		long weekNumber(day.date().weekNumber());
-		mWeekNumbers.append(weekNumber);
-	}
-
-	// Update the week labels text
-	QString text = QString::number(mWeekNumbers.at(0));
-	mFirstWeekLabel->setPlainText(text);
-	text = QString::number(mWeekNumbers.at(1));
-	mSecondWeekLabel->setPlainText(text);
-	text = QString::number(mWeekNumbers.at(2));
-	mThirdWeekLabel->setPlainText(text);
-	text = QString::number(mWeekNumbers.at(3));
-	mFourthWeekLabel->setPlainText(text);
-	text = QString::number(mWeekNumbers.at(4));
-	mFifthWeekLabel->setPlainText(text);
-	text = QString::number(mWeekNumbers.at(5));
-	mSixthWeekLabel->setPlainText(text);
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEWEEKNUMGRIDMODEL_EXIT );
-}
 
-/*!
- Populates the month view with today as focussed item
- */
-void CalenMonthView::goToToday()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_GOTOTODAY_ENTRY );
-    
-	QDateTime today = CalenDateUtils::today();
-	// Set the context and repopulate the view
-    MCalenContext &context = mServices.Context();
-    context.setFocusDateAndTime(today);
-	    
-	// First check if we are not alread
-	// showing today's month view
-	if (mDate == today) {
-		OstTraceFunctionExit0( CALENMONTHVIEW_GOTOTODAY_EXIT );
-		return;
-	} else if (mActiveMonth.date().year() == today.date().year() && 
-				mActiveMonth.date().month() == today.date().month()) {
-        mDate = today;
-		// User is in current month only, so just set the focus to current
-		// date grid item and refresh the preview pane
-		int currIndex = mFirstDayOfGrid.daysTo(today);
-		setCurrGridIndex(currIndex);
-		// Populate the preview panes
-		populatePreviewPane(mDate);
-	} else {	
-        refreshViewOnGoToDate();
-	}
-	
-	OstTraceFunctionExit0( DUP1_CALENMONTHVIEW_GOTOTODAY_EXIT );
-}
-
-/*
- Slot to handle adding / removing actions frm the menu when menu is about to
- shown to the user
- */
-void CalenMonthView::addRemoveActionsInMenu()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_ADDREMOVEACTIONSINMENU_ENTRY );
-	HbAction* menuAction = mDeleteSubMenu->menuAction();
-	if (menuAction) {
-        if (!mEntriesInDataBase && mAgendaUtil->areNoEntriesInCalendar()) {
-            // hide the delete entries option
-            menuAction->setVisible(false);
-        } else {
-            mEntriesInDataBase = true;
-            // Show the option to delete
-            menuAction->setVisible(true);
-        }
-	}
-	
-	// Check if we are population for current day, if yes then disable the
-	// gototoday action
-	if ((CalenDateUtils::today().date() == mDate.date()) && mGoToTodayAction) {
-		mGoToTodayAction->setVisible(false);
-	} else if (mGoToTodayAction){
-		mGoToTodayAction->setVisible(true);
-	}
-	OstTraceFunctionExit0( CALENMONTHVIEW_ADDREMOVEACTIONSINMENU_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CMonthCalenView::HandleCommandL
+// Command handling for month view.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::HandleCommandL(TInt aCommand)
+    {
+    TRACE_ENTRY_POINT;
 
-/*!
- Populates the view
- */
-void CalenMonthView::doPopulation()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_DOPOPULATION_ENTRY );
-    
- 	// Get the layout and add the preview pane layout.
-	QGraphicsLinearLayout* viewLayout = static_cast<QGraphicsLinearLayout *>
-														(widget()->layout());
-	if (viewLayout->count() == 1) {
-		// Count is 1 implies view has only month grid.
-		// Add the preview pane at corresponding position.
-		viewLayout->addItem(mCurrPaneParent);
-	}
-	
-	// prepare for the population like reading the date frm the context 
-	// calculating the start of the grid etc.,
-	prepareForPopulation();
-	
-	// Populate the view and preview panes only if we are not opening the calendar
-	if (!mIsFirstTimeLoad) {
-		// fetch list of required calendar instances
-		populateWithInstanceView();
-		// Populate the preview panes
-		populatePreviewPane(mDate);
-	}
-	
-	
-    //update the day label 
-    //if changes in locale setting
-	updateDayLabel();
-	
-	  // Create the grid items with proper dates
-	createGrid();
-	
+    switch (aCommand)
+        {
+        // if MSK Open was selected then switch into Day view.
+        case EAknSoftkeyOpen:
+            CCalenNativeView::HandleCommandL( ECalenForwardsToDayView );
+            break;
+        // otherwise let CCalenNativeView handle the command.
+        default:
+            CCalenNativeView::HandleCommandL(aCommand);
+            break;
+        }
 
-	// Complete the population
-	completePopulation();
+    TRACE_EXIT_POINT;
+    }
 
-	//set Currect Activity to month view
-	mActivityId = ECalenMonthView;
-	
-	// connect to receive a call back on Month View exit. Call back would result in saveActivity 
-	// to be called in Native View.
-	if (!mIsAboutToQuitEventConnected) // check if not already connected
-	    {
-        connect(qobject_cast<HbApplication*>(qApp), SIGNAL(aboutToQuit()), this, SLOT(saveActivity()));
-        mIsAboutToQuitEventConnected = true;
-	    }
-	
-		
-	// Population is complete, inform it
-	populationComplete();
-	
-	// Handle regional data here if we are not populating the month view for
-	// the first time
-	if (!mIsFirstTimeLoad) {
-		showHideRegionalInformation();
-	}
-	// Reset the first time load flag
-	mIsFirstTimeLoad = false;
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_DOPOPULATION_EXIT );
-}
-
-/*!
- Reads the date from the context and calculates the grid item dates
- */
-void CalenMonthView::prepareForPopulation()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_PREPAREFORPOPULATION_ENTRY );
-    
-	setActiveDay(dateFromContext(mServices.Context()));
-	setDate();
-	updateMonthDataArrayWithActiveDates();
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_PREPAREFORPOPULATION_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::Id
+// From CAknView
+// Return the UID of the month view
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+TUid CCalenMonthView::Id() const
+    {
+    TRACE_ENTRY_POINT;
 
-/*!
- Slot to handle gotodate action
- */
-void CalenMonthView::refreshViewOnGoToDate()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_REFRESHVIEWONGOTODATE_ENTRY );
-    
-	prepareForPopulation();
-	setDateToLabel();
-	// fetch list of required calendar instances
-	populateWithInstanceView();
-
-	populatePreviewPane(mDate);
-	
-	mMonthGrid->updateMonthGridModel(mMonthDataArray, mIndexToBeScrolled, 
-	                                 mIsFirstTimeLoad);
-	// Update the week Numbers model
-	if (mIsWeekNumbersShown) {
-		updateWeekNumGridModel();
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_REFRESHVIEWONGOTODATE_EXIT );
-}
-
-/*!
- Reads the date from the context and stores into mDate
- */
-QDateTime CalenMonthView::dateFromContext(const MCalenContext &context)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_DATEFROMCONTEXT_ENTRY );
-	QDateTime ret;
-	if (AgendaEntry::TypeTodo == context.instanceId().mType) {
-		QDateTime today = CalenDateUtils::today();
-		if (context.focusDateAndTime() < today) {
-			ret = today;
-		} else {
-			ret = context.focusDateAndTime();
-		}
-	} else {
-		ret = context.focusDateAndTime();
-	}
-	OstTraceFunctionExit0( CALENMONTHVIEW_DATEFROMCONTEXT_EXIT );
-	return ret;
-}
+    TRACE_EXIT_POINT;
+    return KUidCalenMonthView;
+    }
 
-/*!
- Calculates the necesary parameters of the month view w.r.t mDate
- */
-void CalenMonthView::setActiveDay(QDateTime day)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_SETACTIVEDAY_ENTRY );
-    
-	mDate = day;
-    
-	mActiveMonth = mDate;
-	// Get the first day of the previous month
-	QDateTime prevMonthDate = mDate.addMonths(-1);
-	int prevMonth = prevMonthDate.date().month();
-
-	// Get the first day of the month
-	QDate date = prevMonthDate.date();
-	date.setDate(date.year(), date.month(), 1);
-	QDateTime firstDayOfPrevMonth(date, day.time());
-
-	int offset(firstDayOfPrevMonth.date().dayOfWeek() - (mLocale.startOfWeek()
-	        + 1));
-	if (offset < 0) {
-		offset += KCalenDaysInWeek;
-	}
-
-	// Substract the offset days
-	mFirstDayOfGrid = firstDayOfPrevMonth.addDays(-offset);
-
-	// Calculate the number of weeks in the previous month that will be hidden
-	mNumOfRowsInPrevMonth = offset + prevMonthDate.date().daysInMonth();
-	mNumOfRowsInPrevMonth = (mNumOfRowsInPrevMonth / KCalenDaysInWeek);
-
-	// Index to be scrolled is the last day of the visible grid item
-	mIndexToBeScrolled = ((mNumOfRowsInPrevMonth + KNumOfVisibleRows)
-	        * KCalenDaysInWeek) - 1;
-
-	// Now add the future month days to the count. While doing that, we need to
-	// calcualte the count till the end of the week in which the month ends
-	QDateTime futureMonthDate = mDate.addMonths(1);
-	// Get the first day of the future month
-	date = futureMonthDate.date();
-	date.setDate(date.year(), date.month(), 1);
-	QDateTime firstDayOfFutMonth(date, day.time());
-	offset = firstDayOfFutMonth.date().dayOfWeek() - (mLocale.startOfWeek() + 1);
-	if (offset < 0) {
-		offset += KCalenDaysInWeek;
-	}
-	// Substract the firstDayNoInWeek days
-	QDateTime dateTime = firstDayOfFutMonth.addDays(-offset);
+// ----------------------------------------------------------------------------
+// CCalenMonthView::ClearViewSpecificDataL
+// Clears any cached data for the specific view, e.g. currently
+// highlighted row, column, etc.
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::ClearViewSpecificDataL()
+    {
+    TRACE_ENTRY_POINT;
 
-	// Need to add 42 days for dateTime so that it fits into the visible grid
-	mLastDayOfGrid = dateTime.addDays(KNumOfVisibleRows * KCalenDaysInWeek - 1);
-
-	// calculate the total numbers of dates that needs to be populated from 
-	// previous month to future month
-	mTotalNumOfGridItems = mFirstDayOfGrid.daysTo(mLastDayOfGrid) + 1;
-
-	// Calculate the last visible day
-	int index = (mNumOfRowsInPrevMonth + KNumOfVisibleRows) * KCalenDaysInWeek;
-	QDateTime lastVisibleDate = mFirstDayOfGrid.addDays(index - 1);
-	QDateTime dateTimeToCalc = mLastDayOfGrid;
-	mNumOfRowsInFutureMonth = 0;
-	while (dateTimeToCalc > lastVisibleDate) {
-		mNumOfRowsInFutureMonth++;
-		dateTimeToCalc = dateTimeToCalc.addDays(-KCalenDaysInWeek);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_SETACTIVEDAY_EXIT );
-}
+    iDate = Time::NullTTime();
 
-/*!
- Calculates the dates that needs to be set to mMonthDataArray
- */
-void CalenMonthView::setDate()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_SETDATE_ENTRY );
-    
-	mMonthDataArray.clear();
-	// Calculate the actual number of dates to be populated from previous month
-	// to future month
-	for (int i(0); i < mTotalNumOfGridItems; ++i) {
-		QDateTime currentDay = CalenDateUtils::futureOf(mFirstDayOfGrid, i);
-		CalenMonthData element(currentDay);
-		mMonthDataArray.append(element);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_SETDATE_EXIT );
-}
-
-/*!
- Returns the currDay(Today)
- */
-QDateTime CalenMonthView::getCurrentDay()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_GETCURRENTDAY_ENTRY );
-    
-	OstTraceFunctionExit0( CALENMONTHVIEW_GETCURRENTDAY_EXIT );
-	return mCurrentDay;
-}
+    TRACE_EXIT_POINT;
+    }
 
-/*!
- Returns the active day(currently focussed day)
- */
-QDateTime CalenMonthView::getActiveDay()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_GETACTIVEDAY_ENTRY );
-    
-	OstTraceFunctionExit0( CALENMONTHVIEW_GETACTIVEDAY_EXIT );
-	return mDate;
-}
-
-/*!
- Returns the array of CalenMonthData items
- */
-QList<CalenMonthData>& CalenMonthView::monthDataList()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_MONTHDATALIST_ENTRY );
-    
-	OstTraceFunctionExit0( CALENMONTHVIEW_MONTHDATALIST_EXIT );
-	return mMonthDataArray;
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::IsViewSpecificDataNullL
+// From CCalenNativeView
+// Returns ETrue if the view specific data is null, EFalse otherwise.
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+TBool CCalenMonthView::IsViewSpecificDataNullL()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return ( iDate == Time::NullTTime() );
+    }
 
-/*!
- Creates the grid and adds the week numbers depending on the week number setting
- */
-void CalenMonthView::createGrid()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_CREATEGRID_ENTRY );
-	// Update the month grid
-	mMonthGrid->updateMonthGridModel(mMonthDataArray, mIndexToBeScrolled, 
-	                                 mIsFirstTimeLoad);
-    // Get start of week from the locale.
-    HbExtendedLocale locale = HbExtendedLocale::system();
-    int startOfWeek = locale.startOfWeek();
-    if(startOfWeek != HbExtendedLocale::Monday)
-        {
-        //if the start of week is other than Monday, don't show the week number
-        mIsWeekNumbersShown = 0;
-        }
-    else
-        {
-        // Read the week number setting from cenrep
-        QVariant value = mSettingsManager->readItemValue(*mWeekNumberCenrepKey);
-        mIsWeekNumbersShown = value.toUInt();
-        }
-	if (mIsWeekNumbersShown) {
-		// Add week numbers to week grid
-		addWeekNumbers();
-	} else {
-		// remove the weeknumbergrid from the layout
-		removeWeekNumbers();
-	}
-	OstTraceFunctionExit0( CALENMONTHVIEW_CREATEGRID_EXIT );
-}
-
-/*!
- Called when down gesture is performed
- Caluclates the necessary dates for the new previous month
- */
-void CalenMonthView::updateModelWithPrevMonth()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEMODELWITHPREVMONTH_ENTRY );
-    
-	// Get the new previous month
-	QDateTime prevMonthDateTime = mActiveMonth.addMonths(-1);
-	QDateTime dateTime = mFirstDayOfGrid;
-	if (prevMonthDateTime.date().month() == mFirstDayOfGrid.date().month()) {
-		//  Month starts right on Monday(Start of the week), 
-		//hence go back to previous month
-		dateTime = mFirstDayOfGrid.addMonths(-1);
-	}
-
-	int prevMonth = dateTime.date().month();
-	QDateTime prevFirstDayOfGrid = mFirstDayOfGrid;
-	for (int i = 0; i < KNumOfVisibleRows; i++) {
-		mFirstDayOfGrid = mFirstDayOfGrid.addDays(-KCalenDaysInWeek);
-		if (mFirstDayOfGrid.date().month() == prevMonth) {
-			continue;
-		} else {
-			// Entered to another month, stop here
-			break;
-		}
-	}
-	// Readjust the mFirstDayOfGrid
-	if (mFirstDayOfGrid.addDays(KCalenDaysInWeek - 1).date().month()
-	        != prevMonth) {
-		mFirstDayOfGrid = mFirstDayOfGrid.addDays(KCalenDaysInWeek);
-	}
-
-	// Calculate the new days to be added
-	int countToBeAdded = mFirstDayOfGrid.daysTo(prevFirstDayOfGrid);
-
-	// Remove the bottom month entries in mMonthDataArray
-	int countToBeDeleted = mNumOfRowsInFutureMonth * KCalenDaysInWeek;
-	int count = mMonthDataArray.count() - 1;
-	for (int i = 0; i < countToBeDeleted; i++) {
-		mMonthDataArray.removeAt(count--);
-	}
-
-	// Update the total number of grid items as we will be removing the month
-	// at the below
-	mTotalNumOfGridItems -= countToBeDeleted;
+// ----------------------------------------------------------------------------
+// CCalenMonthView::ActiveStepL
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+CCalenView::TNextPopulationStep CCalenMonthView::ActiveStepL()
+    {
+    TRACE_ENTRY_POINT;
 
-	// Prepend countToBeAdded new items to mMonthDataArray
-	for (int i = 0; i < countToBeAdded; i++) {
-		QDateTime currentDay = mFirstDayOfGrid.addDays(i);
-		CalenMonthData element(currentDay);
-		mMonthDataArray.insert(i, element);
-	}
-	mTotalNumOfGridItems += countToBeAdded;
-
-	// Update the mMonthDataArray with instances if any
-	populatePrevMonth();
-
-	// Update the necessary globals
-	mActiveMonth = mActiveMonth.addMonths(-1);
-	mNumOfRowsInPrevMonth = (countToBeAdded / KCalenDaysInWeek);
-	mLastDayOfGrid = mFirstDayOfGrid.addDays(mTotalNumOfGridItems - 1);
-	// Calculate the last visible day
-	int index = (mNumOfRowsInPrevMonth + KNumOfVisibleRows) * KCalenDaysInWeek;
-	QDateTime lastVisibleDate = mFirstDayOfGrid.addDays(index - 1);
-	QDateTime date = mLastDayOfGrid;
-	mNumOfRowsInFutureMonth = 0;
-	while (date > lastVisibleDate) {
-		mNumOfRowsInFutureMonth++;
-		date = date.addDays(-KCalenDaysInWeek);
-	}
-	// Update the week Numbers model
-	if (mIsWeekNumbersShown) {
-		updateWeekNumGridModel();
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEMODELWITHPREVMONTH_EXIT );
-}
-/*!
- Called when up gesture is performed
- */
-void CalenMonthView::updateModelWithFutureMonth()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEMODELWITHFUTUREMONTH_ENTRY );
-    
-	// Get the new future month
-	QDateTime previousLastDayOfGrid = mLastDayOfGrid;
-	QDateTime futureMonthDateTime = mActiveMonth.addMonths(2);
-	QDate date = futureMonthDateTime.date();
-	date.setDate(date.year(), date.month(), 1);
-	// Get the first day of the future month
-	QDateTime firstDayOfFutMonth(date, futureMonthDateTime.time());
-
-	int offset = firstDayOfFutMonth.date().dayOfWeek() - (mLocale.startOfWeek()
-	        + 1);
-	if (offset < 0) {
-		offset += KCalenDaysInWeek;
-	}
-	// Substract the firstDayNoInWeek days
-	QDateTime dateTime = firstDayOfFutMonth.addDays(-offset);
-	// Need to add 42 days for dateTime
-	mLastDayOfGrid = dateTime.addDays(KNumOfVisibleRows * KCalenDaysInWeek - 1);
-
-	// Remove the first mNumOfRowsInPrevMonth rows in mMonthDataArray
-	int countToBeDeleted = mNumOfRowsInPrevMonth * KCalenDaysInWeek;
-	for (int i = 0; i < countToBeDeleted; i++) {
-		mMonthDataArray.removeAt(0);
-	}
-
-	// Update the total number of grid items as we will be removing the month
-	// at the top
-	mTotalNumOfGridItems -= countToBeDeleted;
-
-	// Calcualate the num fo days to be added
-	int countToBeAdded = previousLastDayOfGrid.daysTo(mLastDayOfGrid);
-	// Append countToBeAdded new items to mMonthDataArray
-	for (int i = 1; i <= countToBeAdded; i++) {
-		QDateTime currentDay = previousLastDayOfGrid.addDays(i);
-		CalenMonthData element(currentDay);
-		mMonthDataArray.append(element);
-	}
-
-	
-
-	// Update the necessary globals
-	mTotalNumOfGridItems += countToBeAdded;
-	mActiveMonth = mActiveMonth.addMonths(1);
-	mNumOfRowsInFutureMonth = (countToBeAdded / KCalenDaysInWeek);
-	mFirstDayOfGrid = mLastDayOfGrid.addDays(-(mTotalNumOfGridItems - 1));
-	// Calculate the first visible date
-	int index = mTotalNumOfGridItems - ((mNumOfRowsInFutureMonth
-	        + KNumOfVisibleRows) * KCalenDaysInWeek);
-	QDateTime firstVisibleDate = mFirstDayOfGrid.addDays(index - 1);
-	QDateTime dateTimeToCalc = mFirstDayOfGrid;
-	mNumOfRowsInPrevMonth = 0;
-	while (dateTimeToCalc < firstVisibleDate) {
-		mNumOfRowsInPrevMonth++;
-		dateTimeToCalc = dateTimeToCalc.addDays(KCalenDaysInWeek);
-	}
-
-	// Update the week Numbers model
-	if (mIsWeekNumbersShown) {
-		updateWeekNumGridModel();
-	}
-	
-	// Update the mMonthDataArray with instances if any
-	populateNextMonth();
-		
-	OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEMODELWITHFUTUREMONTH_EXIT );
-}
-
-/*!
- Returns the numner of rows in previous month
- */
-int CalenMonthView::rowsInPrevMonth()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_ROWSINPREVMONTH_ENTRY );
-    
-	OstTraceFunctionExit0( CALENMONTHVIEW_ROWSINPREVMONTH_EXIT );
-	return mNumOfRowsInPrevMonth;
-}
-
-/*!
- Returns the number of rows in future month
- */
-int CalenMonthView::rowsInFutMonth()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_ROWSINFUTMONTH_ENTRY );
-    
-	OstTraceFunctionExit0( CALENMONTHVIEW_ROWSINFUTMONTH_EXIT );
-	return mNumOfRowsInFutureMonth;
-}
-
-/*!
- Returns current Grid index
- */
-int CalenMonthView::getCurrGridIndex()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_GETCURRGRIDINDEX_ENTRY );
-    
-    OstTraceFunctionExit0( CALENMONTHVIEW_GETCURRGRIDINDEX_EXIT );
-	return mMonthGrid->getCurrentIndex();
-}
-
-/*!
- Set the currend Index of the Grid
- */
-void CalenMonthView::setCurrGridIndex(int index)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_SETCURRGRIDINDEX_ENTRY );
-	mIsPrevPaneGesture = true;
-	mMonthGrid->setCurrentIdex(index);
-	OstTraceFunctionExit0( CALENMONTHVIEW_SETCURRGRIDINDEX_EXIT );
-}
-
-/*!
- Sets the active flag to the required dates in the array
- */
-void CalenMonthView::updateMonthDataArrayWithActiveDates()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEMONTHDATAARRAYWITHACTIVEDATES_ENTRY );
-    
-	int activeMonth = mActiveMonth.date().month();
-	int monthDataCount = mMonthDataArray.count();
-	for (int i = 0; i < monthDataCount; i++) {
-		if (mMonthDataArray[i].Day().date().month() == activeMonth) {
-			// Set the active flag
-			mMonthDataArray[i].setActive(true);
-		} else {
-			// Disable the active flag
-			mMonthDataArray[i].setActive(false);
-		}
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEMONTHDATAARRAYWITHACTIVEDATES_EXIT );
-}
+    CCalenMonthContainer* cnt = static_cast<CCalenMonthContainer*>( iContainer );
+    if(!cnt)
+        {
+        TRACE_EXIT_POINT;
+        iPopulationStep = EPopulationDone;
+        return CCalenView::EDone;
+        }
+        
+    switch( iPopulationStep )
+        {
+        case ENothingDone:
+            {
+            cnt->PrepareForPopulationL();
+            iPopulationStep = ERequestedInstanceView;
+            
+            CCalenView::TNextPopulationStep nextStep = CCalenView::EDone;
+            
+            // Get the active collection ids.
+            RArray<TInt> colIdArray;
+            CCalenNativeView::GetActiveCollectionidsL( iServices, colIdArray );
+            
+            if(colIdArray.Count() > 0)
+                {
+                if( !iServices.InstanceViewL(colIdArray) )
+                    {
+                    TRACE_EXIT_POINT;
+                    nextStep = CCalenView::EWaitForInstanceView;
+                    }
+                else
+                    {
+                    TRACE_EXIT_POINT;
+                    nextStep = CCalenView::EKeepGoing;
+                    }
+                }
+            else
+                {
+                if( !iServices.InstanceViewL() )
+                    {
+                    TRACE_EXIT_POINT;
+                    nextStep = CCalenView::EWaitForInstanceView;
+                    }
+                else
+                    {
+                    TRACE_EXIT_POINT;
+                    nextStep = CCalenView::EKeepGoing;
+                    }
+                }
+            colIdArray.Reset();
+            return nextStep;
+            }               
+            
+        case ERequestedInstanceView:
+            {
+            cnt->PopulateWithInstanceViewL();
+            iPopulationStep = ESetIndicatorNext;
+            TRACE_EXIT_POINT;
+            return CCalenView::EKeepGoing;
+            }
+        case ESetIndicatorNext:
+            {
+            cnt->SetIndicatorL();
+            iPopulationStep = ESetFocusNext;
+            TRACE_EXIT_POINT;
+            return CCalenView::EKeepGoing;
+            }
+        case ESetFocusNext:
+            {
+            cnt->SetFocusL();
+            iPopulationStep = EPopulationDone;
+            TRACE_EXIT_POINT;
+            return CCalenView::EKeepGoing;
+            }
+        case EPopulationDone:  /* fall through... */
+        default:
+            {
+            cnt->CompletePopulationL();
 
-/*!
- Fetches the calenda entries for a given range
- */
-void CalenMonthView::getInstanceList(QList<QDate> &list,
-                                     QDateTime rangeStart, QDateTime rangeEnd)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_GETINSTANCELIST_ENTRY );
-    
-	AgendaUtil::FilterFlags filter =
-	        AgendaUtil::FilterFlags(AgendaUtil::IncludeAnniversaries
-	                | AgendaUtil::IncludeAppointments
-	                | AgendaUtil::IncludeEvents
-	                | AgendaUtil::IncludeReminders
-	                | AgendaUtil::IncludeIncompletedTodos);
-	mAgendaUtil->markDatesWithEvents(rangeStart, rangeEnd, filter, list);
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_GETINSTANCELIST_EXIT );
-}
-
-/*!
- Parses the fetched entries and sets hasEvent attribute for necessary days
- */
-void CalenMonthView::populateWithInstanceView()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_POPULATEWITHINSTANCEVIEW_ENTRY );
-    
-	const QDateTime today(CalenDateUtils::today());
-	const QDateTime gridStart(CalenDateUtils::beginningOfDay(mFirstDayOfGrid));
-
-	// grid index for "today"
-	const int todayIndex(gridStart.daysTo(today)); 
-
-	QDateTime gridEnd(mLastDayOfGrid.date(), QTime(23, 59, 59, 0));
-	
-	// Get the list of dates which have events
-	QList<QDate> datesWithEvents;
-	getInstanceList(datesWithEvents,gridStart,gridEnd);
-	
-	// Parse thru the list of dates and set the required flags
-	int datesEventsCount = datesWithEvents.count();
-	for(int i(0); i < datesEventsCount; i++) {
-		int offset = mFirstDayOfGrid.date().daysTo(datesWithEvents.at(i));
-		mMonthDataArray[offset].SetHasEvents(true);
-	}
-	datesWithEvents.clear();
-	
-	if (datesEventsCount) {
-        mEntriesInDataBase = true;
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_POPULATEWITHINSTANCEVIEW_EXIT );
-}
-
-/*!
- Parses the fetched entries for previous month and 
- sets hasEvent attribute for necessary days
- */
-void CalenMonthView::populatePrevMonth()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_POPULATEPREVMONTH_ENTRY );
-    
-	const QDateTime gridStart(CalenDateUtils::beginningOfDay(mFirstDayOfGrid));
-	const QDateTime today(CalenDateUtils::today());
-
-	const int todayIndex(gridStart.daysTo(today)); // grid index for "today"
-	QDateTime end = gridStart.addDays(mNumOfRowsInPrevMonth * KCalenDaysInWeek);
-	QDateTime gridEnd(end.date(), QTime(23, 59, 59, 0));
-
-
-	// Get the list of dates which have events
-	QList<QDate> datesWithEvents;
-	getInstanceList(datesWithEvents,gridStart,gridEnd);
-	
-	// Parse thru the list of dates and set the required flags
-	int datesEventsCount = datesWithEvents.count();
-	for(int i(0); i < datesEventsCount; i++) {
-		int offset = mFirstDayOfGrid.date().daysTo(datesWithEvents.at(i));
-		mMonthDataArray[offset].SetHasEvents(true);
-	}
-	datesWithEvents.clear();
-	
-	if (datesEventsCount) {
-        mEntriesInDataBase = true;
+            TRACE_EXIT_POINT;
+            return CCalenView::EDone;
+            }
+        }
     }
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_POPULATEPREVMONTH_EXIT );
-}
 
-/*!
- Parses the fetched entries for future month and 
- sets hasEvent attribute for necessary days
- */
-void CalenMonthView::populateNextMonth()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_POPULATENEXTMONTH_ENTRY );
-	QList<AgendaEntry> list;
-	int actualIndex = mNumOfRowsInFutureMonth * KCalenDaysInWeek;
-	const QDateTime gridStart(mLastDayOfGrid.addDays(-actualIndex));
-	actualIndex = mMonthDataArray.count() - actualIndex -1;
-	
-	const QDateTime today(CalenDateUtils::today());
-	const int todayIndex(gridStart.daysTo(today)); // grid index for "today"
-	QDateTime gridEnd(mLastDayOfGrid.date(), QTime(23, 59, 59, 0));
-
-	// Get the list of dates which have events
-	QList<QDate> datesWithEvents;
-	getInstanceList(datesWithEvents,gridStart,gridEnd);
-	
-	// Parse thru the list of dates and set the required flags
-	int datesEventsCount = datesWithEvents.count();
-	for(int i(0); i < datesEventsCount; i++) {
-		int offset = mFirstDayOfGrid.date().daysTo(datesWithEvents.at(i));
-		mMonthDataArray[offset].SetHasEvents(true);
-	}
-	datesWithEvents.clear();
-	
-	if (datesEventsCount) {
-        mEntriesInDataBase = true;
-    }
-	OstTraceFunctionExit0( CALENMONTHVIEW_POPULATENEXTMONTH_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::CancelPopulation
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::CancelPopulation()
+    {
+    TRACE_ENTRY_POINT;
 
-/*!
-	Function that gets called when instacne view is created, so that it can
-	query agenda server for any entries
- */
-void CalenMonthView::fetchEntriesAndUpdateModel()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_FETCHENTRIESANDUPDATEMODEL_ENTRY );
-    
-	// Get to know if entries are there from the agenda server
-	populateWithInstanceView();
-	// Update the month grid model
-	mMonthGrid->updateMonthGridWithEventIndicators(mMonthDataArray);
-	// Populate the preview panes
-	populatePreviewPane(mDate);
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_FETCHENTRIESANDUPDATEMODEL_EXIT );
-}
+    iPopulationStep = ENothingDone;
 
-/*!
- Populates the preview pane
- */
-void CalenMonthView::populatePreviewPane(QDateTime &dateTime)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_POPULATEPREVIEWPANE_ENTRY );
-    
-	mPrevPreviewPane->populateLabel(dateTime.addDays(-1));
-	mCurrPreviewPane->populateLabel(dateTime);
-	mNextPreviewPane->populateLabel(dateTime.addDays(1));
-	
-	// Start the auto scroll on current preview pane
-    mCurrPreviewPane->startAutoScroll();
-    
-    OstTraceFunctionExit0( CALENMONTHVIEW_POPULATEPREVIEWPANE_EXIT );
-}
-
-/*!
- Completes the population after setting the view as 
- current view to the main window
- */
-void CalenMonthView::completePopulation()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_COMPLETEPOPULATION_ENTRY );
-    
-	setDateToLabel();
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_COMPLETEPOPULATION_EXIT );
-}
-
-/*!
- Launches the day view on tapping of the grid item
- */
-void CalenMonthView::handleGridItemActivated()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLEGRIDITEMACTIVATED_ENTRY );
-    
-	mServices.IssueCommandL(ECalenDayView);
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_HANDLEGRIDITEMACTIVATED_EXIT );
-}
+    TRACE_EXIT_POINT;
+    }
 
-/*!
- Sets the context w.r.t to the active day
- */
-void CalenMonthView::setContextForActiveDay(int index)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_SETCONTEXTFORACTIVEDAY_ENTRY );
-	QDateTime newActiveDay = mFirstDayOfGrid.addDays(index);
-	// Set the context
-	mServices.Context().setFocusDate(newActiveDay);
-	mDate = newActiveDay;
-	setDateToLabel();
-	
-	if(!mIsPrevPaneGesture) {
-		populatePreviewPane(mDate);
-	} else {
-		// reset flag
-		mIsPrevPaneGesture = false;
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_SETCONTEXTFORACTIVEDAY_EXIT );
-}
-
-/*!
- Slot to launch the event editor
- */
-void CalenMonthView::createEditor()
-{
-	OstTraceFunctionEntry0( CALENMONTHVIEW_CREATEEDITOR_ENTRY );
-	
-    captureScreenshot(true);
-	mServices.IssueCommandL(ECalenNewMeeting);
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_CREATEEDITOR_EXIT );
-}
-
-/*!
- Slot to launch the Day view
- */
-void CalenMonthView::launchDayView()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_LAUNCHDAYVIEW_ENTRY );
-    
-	mServices.IssueCommandL(ECalenDayView);
-	// day view launched now, disconnect to get the call backs for saveActivity 
-	// on aboutToQuit signal
-	disconnectAboutToQuitEvent();
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_LAUNCHDAYVIEW_EXIT );
-}
-
-/*!
-disconnects for the aboutToQuit events
- */
-void CalenMonthView::disconnectAboutToQuitEvent()
-{
-	OstTraceFunctionEntry0( CALENMONTHVIEW_DISCONNECTABOUTTOQUITEVENT_ENTRY );
-	
-	if (mIsAboutToQuitEventConnected) {
-		disconnect(qobject_cast<HbApplication*>(qApp), SIGNAL(aboutToQuit()), this, SLOT(saveActivity()));
-		mIsAboutToQuitEventConnected = false;
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_DISCONNECTABOUTTOQUITEVENT_EXIT );
-}
-
-/*!
- Slot to handle the change in orientation
- */
-void CalenMonthView::changeOrientation(Qt::Orientation orientation)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_CHANGEORIENTATION_ENTRY );
-    
-		if (mOrientation != orientation) {
-			// change the orientation here
-			mOrientation = orientation;
-			handleChangeOrientation();
-		}
-		
-	OstTraceFunctionExit0( CALENMONTHVIEW_CHANGEORIENTATION_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::CyclePosition
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+CCalenView::TCyclePosition CCalenMonthView::CyclePosition() const
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return CCalenView::EReplaceMonthView;
+    }
 
-/*!
- Slot to handle the change in theme
- */
-void CalenMonthView::handleThemeChange()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLETHEMECHANGE_ENTRY );
-    
-    // Refresh the month view when the theme change happens
-    mWeekDaysColor = HbColorScheme::color("qtc_cal_week_day");
-    QColor monthTitleColor = HbColorScheme::color("qtc_cal_monthgrid_title");
-    
-    if (mTitleLabel && monthTitleColor.isValid()) {
-		mTitleLabel->setTextColor(monthTitleColor);
-	}
-    
-    mPreviewHeadingColor = HbColorScheme::color("qtc_cal_day_preview_heading");
-    
-    mServices.IssueCommandL(ECalenStartActiveStep);
-    
-    OstTraceFunctionExit0( CALENMONTHVIEW_HANDLETHEMECHANGE_EXIT );
-}
-
-/*!
- Loads appropriate section from the docml dsepending on the current orientation
- of the device
- */
-void CalenMonthView::handleChangeOrientation()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLECHANGEORIENTATION_ENTRY );
-    
-	bool loadSuccess = false;
-	if (mOrientation == Qt::Horizontal) {
-		mDocLoader->load(CALEN_MONTHVIEW_XML_FILE, CALEN_LANDSCAPE,
-		                 &loadSuccess);
-
-	} else if (mOrientation == Qt::Vertical) {
-		mDocLoader->load(CALEN_MONTHVIEW_XML_FILE, CALEN_PORTRAIT, 
-													&loadSuccess);
-	}
-	
-	Q_ASSERT_X(loadSuccess, "calenmonthview.cpp", "Unable to load XML");
-	
-	// Remove the current pane read from the docml  from the layout 
-	// and add actual current pane to the layout
-	QGraphicsLinearLayout* viewLayout = static_cast<QGraphicsLinearLayout *>
-													(widget()->layout());
-	viewLayout->removeAt(1);
-	// Add this item only when orientaion is changed on month view
-	// if it is changed in other views, adding the preview pane here was
-	// overlapping with the month grid, hence, its been added in dopopulation()
-	if (this == mServices.MainWindow().currentView()) {
-		viewLayout->addItem(mCurrPaneParent);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_HANDLECHANGEORIENTATION_EXIT );
-}
-
-/*!
- Sets the appropriate date to the month title
- */
-void CalenMonthView::setDateToLabel()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_SETDATETOLABEL_ENTRY );
-    
-	// Get the localised string for month name from system locale
-	QString dateString = mLocale.monthName(mDate.date().month(), HbExtendedLocale::LongFormat);
-	// Append a single space
-	dateString.append(" ");
-	mLocale.setNumberOptions(QLocale::OmitGroupSeparator);
-	// Append the year string also
-	dateString.append(mLocale.toString(mDate.date().year()));
-	mTitleLabel->setPlainText(dateString);
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_SETDATETOLABEL_EXIT );
-}
-
-/*!
- To handle previewpane swipe 
- */
-void CalenMonthView::handlePreviewPaneGesture(bool rightGesture)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLEPREVIEWPANEGESTURE_ENTRY );
+// ----------------------------------------------------------------------------
+// CCalenMonthView::LocalisedViewNameL
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+const TDesC& CCalenMonthView::LocalisedViewNameL( CCalenView::TViewName aViewName )
+    {
+    TRACE_ENTRY_POINT;
     
-	QGraphicsLinearLayout* viewLayout = static_cast<QGraphicsLinearLayout *>
-												(widget()->layout());
-	
-	// Set the effect in progress flags for next and previous panes
-	// For current pane, we would have set it in gestureEvent() function
-	mPrevPreviewPane->effectStarted();
-	mNextPreviewPane->effectStarted();
-	
-	if(rightGesture) {
-		// Need to bring up the previous day preview pane
-		// Create the effect on mCurrPreviewPane to slide to right side
-		mPrevPaneParent->setVisible(true);
-		if (mOrientation == Qt::Vertical) {
-			HbEffect::add(mCurrPaneLayoutWidget,
-						  ":/fxml/portrait_preview_pane_hide_on_right_gesture",
-						  "hide");
-			HbEffect::add(mPrevPaneLayoutWidget,
-						  ":/fxml/portrait_preview_pane_show_on_right_gesture",
-						  "show");
-		} else {
-			HbEffect::add(mCurrPaneLayoutWidget,
-						  ":/fxml/landscape_preview_pane_hide_on_right_gesture",
-						  "hide");
-			HbEffect::add(mPrevPaneLayoutWidget,
-						  ":/fxml/landscape_preview_pane_show_on_right_gesture",
-						  "show");
-		}
-		// Start the effects
-		HbEffect::start(mCurrPaneLayoutWidget, "hide");
-		HbEffect::start(mPrevPaneLayoutWidget, "show", 
-										this, "handleRightEffectCompleted");
-		
-		//Remove the mCurrPreviewPane from the layout and add mPrevPreviewPane
-		// to the layout
-		viewLayout->removeAt(1);
-		viewLayout->addItem(mPrevPaneParent);
-	} else {
-		// Need to bring up the previous day preview pane
-		// Create the effect on mCurrPreviewPane to slide to left side
-		mNextPaneParent->setVisible(true);
-		if (mOrientation == Qt::Vertical) {
-			HbEffect::add(mCurrPaneLayoutWidget,
-						  ":/fxml/portrait_preview_pane_hide_on_left_gesture",
-						  "hide");
-			HbEffect::add(mNextPaneLayoutWidget,
-						  ":/fxml/portrait_preview_pane_show_on_left_gesture",
-						  "show");
-		} else {
-			HbEffect::add(mCurrPaneLayoutWidget,
-						  ":/fxml/landscape_preview_pane_hide_on_left_gesture",
-						  "hide");
-			HbEffect::add(mNextPaneLayoutWidget,
-						  ":/fxml/landscape_preview_pane_show_on_left_gesture",
-						  "show");
-		}
-		
-		// Start the effects
-		HbEffect::start(mCurrPaneLayoutWidget, "hide");
-		HbEffect::start(mNextPaneLayoutWidget, "show", 
-										this, "handleLeftEffectCompleted");
-		
-		//Remove the mCurrPreviewPane from the layout and add mNextPreviewPane
-		// to the layout
-		viewLayout->removeAt(1);
-		viewLayout->addItem(mNextPaneParent);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_HANDLEPREVIEWPANEGESTURE_EXIT );
-}
+    HBufC* ret = NULL;
 
-/*!
- Returns the first date in the month grid
- */
-QDateTime CalenMonthView::firstDayOfGrid()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_FIRSTDAYOFGRID_ENTRY );
-    
-	OstTraceFunctionExit0( CALENMONTHVIEW_FIRSTDAYOFGRID_EXIT );
-	return mFirstDayOfGrid;
-}
+    switch ( aViewName )
+        {
+        case CCalenView::EMenuName:
+            if ( !iMenuName )
+                {
+                iMenuName = StringLoader::LoadL( R_CALEN_VIEW_MONTH, iCoeEnv );
+                }
+            ret = iMenuName;
+            break;
+        case CCalenView::ESettingsName:
+            if ( !iSettingsName )
+                {
+                iSettingsName = StringLoader::LoadL( R_CALEN_QTN_DEFAULT_MONTH_VIEW,
+                                                     iCoeEnv );
+                }
+            ret = iSettingsName;
+            break;
+        default:
+            ASSERT( EFalse );
+            break;
+        }
 
-/*!
- Function to handle any locale related changes
- */
-void CalenMonthView::onLocaleChanged(int reason)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_ONLOCALECHANGED_ENTRY );
-    
-    if ((reason & EChangesSystemTime) 
-    		|| (reason & EChangesMidnightCrossover)) {
-		mCurrentDay = CalenDateUtils::today();
-	}
-	OstTraceFunctionExit0( CALENMONTHVIEW_ONLOCALECHANGED_EXIT );
-}
+    TRACE_EXIT_POINT;
+    return *ret;
+    }
 
-/*!
- Slot to handle left gesture effects completion
- */
-void CalenMonthView::handleLeftEffectCompleted(
-										const HbEffect::EffectStatus &status)
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLELEFTEFFECTCOMPLETED_ENTRY );
-	Q_UNUSED(status);
-	
-	int index = getCurrGridIndex();
-	index++;
-	
-	// Stop the scrolling on current preview pane
-	mCurrPreviewPane->stopScrolling();
-	
-	// Swap the preview panes properly
-	CalenPreviewPane* pane = mCurrPreviewPane;
-	HbWidget* paneParent = mCurrPaneParent;
-	HbWidget* paneLayoutWidget = mCurrPaneLayoutWidget;
-	mCurrPreviewPane = mNextPreviewPane;
-	mCurrPaneParent = mNextPaneParent;
-	mCurrPaneLayoutWidget = mNextPaneLayoutWidget;
-	mNextPreviewPane = mPrevPreviewPane;
-	mNextPaneParent = mPrevPaneParent;
-	mNextPaneLayoutWidget = mPrevPaneLayoutWidget;
-	mPrevPreviewPane = pane;
-	mPrevPaneParent = paneParent;
-	mPrevPaneLayoutWidget = paneLayoutWidget;
-	
-	// Reset the effect in progress flag
-	mCurrPreviewPane->effectFinished();
-    mPrevPreviewPane->effectFinished();
-    mNextPreviewPane->effectFinished();
-    
-	// Set the focus to proper date
-	setCurrGridIndex(index);
-	// Start the auto scroll on current preview pane
-	mCurrPreviewPane->startAutoScroll();
-	mNextPreviewPane->populateLabel(mDate.addDays(1));
-	OstTraceFunctionExit0( CALENMONTHVIEW_HANDLELEFTEFFECTCOMPLETED_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::ViewIconL
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+CGulIcon* CCalenMonthView::ViewIconL() const
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return iServices.GetIconL( MCalenServices::ECalenMonthViewIcon );
+    }
 
-/*!
- Slot to handle right gesture effects completion
- */
-void CalenMonthView::handleRightEffectCompleted(
-										const HbEffect::EffectStatus &status) 	
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLERIGHTEFFECTCOMPLETED_ENTRY );
+// ----------------------------------------------------------------------------
+// CCalenMonthView::UpdatePreviewPaneL
+// Updates preview pane/preview popup
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::UpdatePreviewPaneL()
+    {
+    TRACE_ENTRY_POINT;
     
-	Q_UNUSED(status);
-	
-	int index = getCurrGridIndex();
-	index--;
-	
-	// Stop the scrolling on current preview pane
-	mCurrPreviewPane->stopScrolling();
-		
-	// Swap the preview panes properly
-	CalenPreviewPane* pane = mCurrPreviewPane;
-	HbWidget* paneParent = mCurrPaneParent;
-	HbWidget* paneLayoutWidget = mCurrPaneLayoutWidget;
-	mCurrPreviewPane = mPrevPreviewPane;
-	mCurrPaneParent = mPrevPaneParent;
-	mCurrPaneLayoutWidget = mPrevPaneLayoutWidget;
-	mPrevPreviewPane = mNextPreviewPane;
-	mPrevPaneParent = mNextPaneParent;
-	mPrevPaneLayoutWidget = mNextPaneLayoutWidget;
-	mNextPreviewPane = pane;
-	mNextPaneParent = paneParent;
-	mNextPaneLayoutWidget = paneLayoutWidget;
-	
-	// Reset the effect in progress flag
-	mCurrPreviewPane->effectFinished();
-    mNextPreviewPane->effectFinished();
-    mPrevPreviewPane->effectFinished();
+    CCalenMonthContainer* cnt = static_cast<CCalenMonthContainer*>( iContainer );
+    if(cnt)
+        {
+        cnt->RedrawPreviewPane();
+        }
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenMonthView::HidePreviewPane
+// Hides preview pane/preview popup
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::HidePreviewPane()
+    {
+    TRACE_ENTRY_POINT;
     
-	// Set the focus to proper date
-	setCurrGridIndex(index);
-	// Start the auto scroll on current preview pane
-	mCurrPreviewPane->startAutoScroll();
-	mPrevPreviewPane->populateLabel(mDate.addDays(-1));
-	
-	OstTraceFunctionExit0( CALENMONTHVIEW_HANDLERIGHTEFFECTCOMPLETED_EXIT );
-}
-/*!
- update the Day labels 
- */
-void CalenMonthView::updateDayLabel()
-{
-    OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEDAYLABEL_ENTRY );
+    CCalenMonthContainer* cnt = static_cast<CCalenMonthContainer*>( iContainer );
+    if(cnt)
+        {
+        cnt->HidePopup();
+        }
     
-    // Set the short day names to these labels  
-    int startOfWeek = mLocale.startOfWeek();
-    int weekDayIndex = startOfWeek;
-    QStringList  weekDayArray ;
-    weekDayArray <<hbTrId("txt_calendar_grid_day_mo")
-                           <<hbTrId("txt_calendar_grid_day_tu")
-                           <<hbTrId("txt_calendar_grid_day_we")
-                           <<hbTrId("txt_calendar_grid_day_th")
-                           <<hbTrId("txt_calendar_grid_day_fr")
-                           <<hbTrId("txt_calendar_grid_day_sa")
-                           <<hbTrId("txt_calendar_grid_day_su");
-            
-    QList<HbLabel*> labels;
-    // append seven day labels 
-    labels.append(mFirstDayLabel);
-    labels.append(mSecondDayLabel);
-    labels.append(mThirdDayLabel);
-    labels.append(mFourthDayLabel);
-    labels.append(mFifthDayLabel);
-    labels.append(mSixthDayLabel);
-    labels.append(mSeventhDayLabel);
-    QGraphicsLinearLayout* layout = static_cast<QGraphicsLinearLayout*> (mDayNameWidget->layout());
-    for(int i=0;i < KCalenDaysInWeek; i++ )
-        {
-        labels.at(i)->setPlainText(weekDayArray[weekDayIndex]);
-        // Set the stretch factor as 1 so that each label occupies equal space
-        layout->setStretchFactor(labels.at(i), 1);
-        if(weekDayIndex == KCalenDaysInWeek - 1 )//Sunday
-            {
-            weekDayIndex = 0;//reset to monday
-            continue;
-            }
-        weekDayIndex++;//increase the index for next value
-        }
-    labels.clear();
-    weekDayArray.clear();
-    
-    OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEDAYLABEL_EXIT );
-}
-// End of file  --Don't remove this.
+    TRACE_EXIT_POINT;
+    }
+
+// End of File