calendarui/views/src/calenmonthgrid.cpp
branchRCL_3
changeset 30 bd7edf625bdd
parent 29 12af337248b1
--- a/calendarui/views/src/calenmonthgrid.cpp	Tue Aug 31 15:13:43 2010 +0300
+++ b/calendarui/views/src/calenmonthgrid.cpp	Wed Sep 01 12:32:31 2010 +0100
@@ -1,1258 +1,211 @@
 /*
- * 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) 2002 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:   Grid of the MonthView.
  *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors: 
- *
- * Description: Definition file for class CalenMonthGrid.
- *
- */
+*/
 
-// System includes
-#include <hbgridview.h>
-#include <hbabstractviewitem.h>
-#include <hbstyleloader.h>
-#include <hbcolorscheme.h>
-#include <hbpangesture.h>
-#include <hbswipegesture.h>
-#include <hbtapgesture.h>
-#include <hbdeviceprofile.h>
-#include <hbinstance.h>
-
-// User includes
-#include "calenmonthgrid.h"
-#include "calengriditemprototype.h"
-#include "calenmonthdata.h"
-#include "calenmonthview.h"
-#include "calendateutils.h"
-#include "calencommon.h"
-#include "calenconstants.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "calenmonthgridTraces.h"
-#endif
 
 
-// Constants
-#define SCROLL_SPEEED 3000 
-#define GRIDLINE_WIDTH 0.075 //units
-#define MAX_PAN_DIRECTION_THRESHOLD 50
-#define MIN_PAN_DIRECTION_THRESHOLD 20
-
-/*!
- \class CalenMonthGrid
-
- Implements the month grid
- */
+//debug
+#include "calendarui_debug.h"
 
-/*!
- Default constructor.
- */
-CalenMonthGrid::CalenMonthGrid(QGraphicsItem *parent):
-	HbGridView(parent),
-	mModel(0),
-	mDirection(invalid),
-	mIsPanGesture(false),
-	mIsAtomicScroll(true),
-	mView(NULL),
-	mCurrentRow(-100),
-	mIsNonActiveDayFocused(false),
-	mIgnoreItemActivated(false),
-	mGridLineColor(HbColorScheme::color("qtc_cal_grid_line")),
-    mActiveDatesSet(false)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_CALENMONTHGRID_ENTRY );
-    
-	setScrollDirections(Qt::Vertical);
-	setRowCount(KNumOfVisibleRows);
-	setColumnCount(KCalenDaysInWeek);
-	setLongPressEnabled(false);
-	setItemRecycling(false);
-	setSelectionMode(HbGridView::NoSelection);
-	setUniformItemSizes(true);
-	setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff);
-	setClampingStyle(HbScrollArea::StrictClamping);
-	setEnabledAnimations(HbAbstractItemView::None);
-	setFrictionEnabled(false);
-	setFlag(QGraphicsItem::ItemHasNoContents, false);
-	
-	// Disable the rows and columns swapping on orientation change
-	setSwapDimensionsOnOrientationChange(false);
-	
-	resetTransform();
-	
-	// Get the content widget of the scroll area to draw the grid lines
-	mContentWidget = contentWidget();
+// INCLUDE FILES
+#include "calenmonthgrid.h"
+#include "calenmonthcontainer.h"
+#include "calenmonthcelllistboxdata.h"
+#include "calenmonthcelllistboxitemdrawer.h"
 
-	// Get the localised dates well before
-	// TODO: Need to update the mLocalisedDates when user changes the
-	// phone language keeping calendar application in background
-	HbExtendedLocale locale = HbExtendedLocale::system();
-	for (int i = 1; i <= 31; i++) {
-		mLocalisedDates.append(locale.toString(i));
-	}
-	
-	// Connect to scrolling finished signal
-	connect(this, SIGNAL(scrollingEnded()), this,
-			SLOT(scrollingFinished()));
-
-    connect(
-                HbTheme::instance(), SIGNAL(changed()),
-                this, SLOT(handleThemeChange()));
-				
-	// Disable the haptic feedback for the month grid during scrolling
-    setAttribute(Hb::InteractionDisabled);
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_CALENMONTHGRID_EXIT );
-}
+#include <aknlayoutscalable_apps.cdl.h>
 
-/*!
- Destructor
- */
-CalenMonthGrid::~CalenMonthGrid()
-{
-    OstTraceFunctionEntry0( DUP1_CALENMONTHGRID_CALENMONTHGRID_ENTRY );
-    
-	// Nothing Yet
-    
-    OstTraceFunctionExit0( DUP1_CALENMONTHGRID_CALENMONTHGRID_EXIT );
-}
-
-/*!
- Stores the view pointer
- */
-void CalenMonthGrid::setView(CalenMonthView *view)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_SETVIEW_ENTRY );
-    
-	mView = view;
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_SETVIEW_EXIT );
-}
+// New line color groups in enhanced skinning
+static void DrawLAFLine(CWindowGc& aGc, const TAknLayoutRect& aArea,
+                        const TAknsItemID& aSkinComponent, TInt aColorGroup)
+    {
+    TRACE_ENTRY_POINT;
 
-/*!
- Updates the model with the proper dates and sets the required user roles
- */
-void CalenMonthGrid::updateMonthGridModel(QList<CalenMonthData> &monthDataArray,
-                        int indexToBeScrolled, bool isFirstTime)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_UPDATEMONTHGRIDMODEL_ENTRY );
-    
-	int loopStart = 0;
-	int loopEnd = monthDataArray.count();
-	if (isFirstTime) {
-		// Create the model with only 42 items as visible to the user
-		mModel = new QStandardItemModel(KCalenDaysInWeek * KNumOfVisibleRows, 
-		                                1, this);
-		loopStart = (mView->rowsInPrevMonth()) * KCalenDaysInWeek;
-		loopEnd = loopStart + (KCalenDaysInWeek * KNumOfVisibleRows);
-	} else {
-		// Block the signals generated by model, this is being done as
-		// we want to avoid the overload of view listening to signals
-		mModel->blockSignals(true);
-		
-		// Check the counts
-		int dataCount = monthDataArray.count();
-		int rowCount = mModel->rowCount();
-		int countDiff = dataCount - rowCount;
-		if (countDiff < 0) {
-			// Delete extra rows in the model
-			mModel->removeRows(dataCount,abs(countDiff));
-		} else if (countDiff > 0) {
-			// Add the necessary number of rows
-			mModel->insertRows(rowCount,countDiff);
-		}
-		loopEnd = dataCount;
-	}
-	
-	QDateTime currDate = mView->getCurrentDay();
-	QDateTime currDateTime = CalenDateUtils::beginningOfDay(currDate);
-	QDateTime activeDay = mView->getActiveDay();
-	QDateTime activeDateTime = CalenDateUtils::beginningOfDay(activeDay);
-	
-	QModelIndex currentIndex;
-	int modelIndex = 0;
-	for (int i = loopStart; i < loopEnd; i++) {
-		QDateTime dateTime = monthDataArray[i].Day();
-		currentIndex = mModel->index(modelIndex++, 0);
-		
-		// Create the variant list to contain the date to depict a grid item
-		QVariantList itemData;
-		
-		// !!!NOTE!!!: Add the data in the order mentioned in the 
-		// CalendarNamespace::DataRole enum. Dont change the order.
-		itemData << mLocalisedDates.at(dateTime.date().day()-1); 
-		
-		// Check for active day
-		if (activeDateTime == CalenDateUtils::beginningOfDay(dateTime)) {
-			mCurrentRow = i;
-			// Set the focus attribute to true
-			itemData << true;
-		} else {
-			// reset the highlight
-			itemData << false;
-		}
+    TRgb lineColor = aArea.Color();
+    AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), lineColor,
+                              aSkinComponent, aColorGroup);
+    aGc.SetBrushColor( lineColor );
+    aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    aGc.Clear( aArea.Rect() );
 
-		// Check for current day
-		if (currDateTime == CalenDateUtils::beginningOfDay(dateTime)) {
-			// Set the underline attribute to true
-			itemData << true;
-		} else {			
-			itemData << false;
-		}
+    TRACE_EXIT_POINT;
+    }
+
+static void DrawSecondaryLine(CWindowGc& aGc, const TAknLayoutRect& aArea)
+    {
+    TRACE_ENTRY_POINT;
 
-		// Check for events
-		if (monthDataArray[i].HasEvents()) {
-			// Set the event indicator attribute
-			itemData << true;
-		} else {
-			itemData << false;
-		}
-		
-		// Add default text color
-		if (monthDataArray[i].isActive()) {
-			itemData << true;
-		} else {
-			itemData << false;
-		}
-		mModel->itemFromIndex(currentIndex)->setData(itemData);
-	}
-	
-	if (isFirstTime) {
-		
-		// Create the prototype
-		CalenGridItemPrototype* gridItemPrototype = new CalenGridItemPrototype(this);
-		
-	    connect(
-	            HbTheme::instance(), SIGNAL(changed()),
-	            gridItemPrototype, SLOT(handleThemeChange()));
-	    
-		// Set the mode and the prototype
-		setModel(mModel,gridItemPrototype);
-		
-		// Register the widgetml and css files
-		HbStyleLoader::registerFilePath(":/");
-		
-		// Set the layout name
-		setLayoutName("calendarCustomGridItem");
-	} else {
-		// Since, we have finished setData, Now unblock the signals
-		mModel->blockSignals(false);
-		
-		// Since till now, we had blocked signals being generated frm the mode
-		// view will be unaware of the items that we added. Hence, inform the view
-		// explicitly in one shot
-		QModelIndex leftIndex = mModel->index(0, 0);
-		QModelIndex rightIndex = mModel->index(loopEnd-1, 0);
-		dataChanged(leftIndex, rightIndex);
-		
-		// NOTE: To make sure that we always display proper month,
-		// two calls have been  made to scrollTo(), one with top
-		// visible item and other with bottom visible item
-		// Calculate the first visible item in the grid
-		QModelIndex firstVisibleIndex = mModel->index(indexToBeScrolled - 
-								(KNumOfVisibleRows * KCalenDaysInWeek - 1), 0);
-		scrollTo(firstVisibleIndex);
-		
-		
-		// Calculate the last visible item in the grid
-		QModelIndex lastVisibleIndex = mModel->index(indexToBeScrolled, 0);
-		scrollTo(lastVisibleIndex);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_UPDATEMONTHGRIDMODEL_EXIT );
-}
+    DrawLAFLine(aGc, aArea, KAknsIIDQsnLineColors, EAknsCIQsnLineColorsCG2);
+
+    TRACE_EXIT_POINT;
+    }
+
+// ================= MEMBER FUNCTIONS =======================
 
-/*!
-	Updates the view with jprevious month dates when calendar is opened for the 
-	first time to improve the opening time
- */
-void CalenMonthGrid::updateMonthGridWithInActiveMonths(
-										QList<CalenMonthData> &monthDataArray)
-{	
-    OstTraceFunctionEntry0( CALENMONTHGRID_UPDATEMONTHGRIDWITHINACTIVEMONTHS_ENTRY );
-		
-	// Prepend the required rows
-	handlePrependingRows(monthDataArray);
-	
-	// Append the required rows
-	handleAppendingRows(monthDataArray);
-	
-	int rowsInPrevMonth = mView->rowsInPrevMonth();
-	
-	// Calculate the proper index to be scrolled to
-	int itemToBeScrolled = rowsInPrevMonth * KCalenDaysInWeek;
-	QModelIndex indexToBeScrolled = mModel->index(itemToBeScrolled, 0);
-	mIsAtomicScroll = true;
-	scrollTo(indexToBeScrolled);
-		
-	// Scroll to proper index
-	itemToBeScrolled = ((rowsInPrevMonth + KNumOfVisibleRows) * 
-								   KCalenDaysInWeek) - 1;
-	indexToBeScrolled = mModel->index(itemToBeScrolled, 0);
-	mIsAtomicScroll = true;
-	scrollTo(indexToBeScrolled);
-	
-	// Update the sart position of the content widget
-	mStartPos = mContentWidget->pos();
-	
-	// Now connect to the signal which gets emitted when any item on the grid 
-	// is tapped.
-	connect(this, SIGNAL(activated(const QModelIndex &)), this,
-						SLOT(itemActivated(const QModelIndex &)));
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_UPDATEMONTHGRIDWITHINACTIVEMONTHS_EXIT );
-}
-
-/*!
-	Updates the view with just event indicators
- */
-void CalenMonthGrid::updateMonthGridWithEventIndicators(
-										QList<CalenMonthData> &monthDataArray)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_UPDATEMONTHGRIDWITHEVENTINDICATORS_ENTRY );
-    
-	int count(monthDataArray.count());
-	for(int i = 0; i < count; i++) {
-		// Check if the day has events
-		if (monthDataArray[i].HasEvents()) {
-			QModelIndex itemIndex = mModel->index(i,0);
-			QVariant itemData = itemIndex.data(Qt::UserRole + 1);
-			QVariantList list = itemData.toList();
-			list.replace(CalendarNamespace::CalendarMonthEventRole, true);
-			mModel->itemFromIndex(itemIndex)->setData(list);
-		}
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_UPDATEMONTHGRIDWITHEVENTINDICATORS_EXIT );
-}
-
-/*!
- Scrolls the content dowmwards
- */
-void CalenMonthGrid::downGesture()
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_DOWNGESTURE_ENTRY );
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CCalenMonthGrid::CCalenMonthGrid
+(TTime aFirstDayOfGrid, CCalenMonthContainer* aMonthCont)
+    : iFirstDayOfGrid(aFirstDayOfGrid),iMonthContainer(aMonthCont)
+    {
+    TRACE_ENTRY_POINT;
     
-    // Make sure that content widget is properly placed
-    // We are doing this as tapping on inactive date of previous month is leading to
-    // position the grid at wrong place after scrolling down. Hence, set the grid
-    // at proper position before we start actual scrolling
-    if (mIsNonActiveDayFocused) {
-        mIsAtomicScroll = true;
-        int itemToBeScrolled = mView->rowsInPrevMonth() * KCalenDaysInWeek;
-        QModelIndex indexToBeScrolled  = mModel->index(itemToBeScrolled, 0);
-        scrollTo(indexToBeScrolled);
-    }
-   
-    // Set the required flags
-    mDirection = down;
-    mIsAtomicScroll = false;
-    
-    // Set the active and inactive dates
-    QDateTime activeMonth = mView->getActiveDay();
-    // For previous month, substract one month to the current month
-    setActiveDates(activeMonth.addMonths(-1).date());
-    mActiveDatesSet = true;
-    // Set the focus to proper date before scrolling to avoid somekind of
-    // jerkiness
-    if (!mIsNonActiveDayFocused) {
-        setFocusToProperDay();
-    }
-    
-    // Start the scrolling
-    QPointF targetPos(0.0, 0.0);
-    scrollContentsTo(targetPos,500);
-    
-    OstTraceFunctionExit0( CALENMONTHGRID_DOWNGESTURE_EXIT );
-}
-
-/*!
- Scrolls the content upwards
- */
-void CalenMonthGrid::upGesture()
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_UPGESTURE_ENTRY );
-    
-   
-    // Set the required flags
-    mDirection = up;
-    mIsAtomicScroll = false;
-    
-    // Set the active and inactive dates
-    QDateTime activeMonth = mView->getActiveDay();
-    // For next month, add one month to the current month
-    setActiveDates(activeMonth.addMonths(1).date());
-    mActiveDatesSet = true;
-    // Set the focus to proper date before scrolling to avoid somekind of
-    // jerkiness
-    if (!mIsNonActiveDayFocused) {
-        setFocusToProperDay();
-    }
-    
-    // Start the scrolling
-    QPointF targetPos(0.0, mStartPos.y() - size().height());
-    scrollContentsTo(-targetPos,500);
-	
-    OstTraceFunctionExit0( CALENMONTHGRID_UPGESTURE_EXIT );
-}
-
-/*!
- Function to listen mouse press events
- */
-void CalenMonthGrid::mousePressEvent(QGraphicsSceneMouseEvent* event)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_MOUSEPRESSEVENT_ENTRY );
-    
-	// Pass it to parent
-	HbGridView::mousePressEvent(event);
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_MOUSEPRESSEVENT_EXIT );
-}
-
-/*!
- Function to listen mouse release events
- */
-void CalenMonthGrid::mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_MOUSERELEASEEVENT_ENTRY );
-    
-	// Pass it grid view if pan gesture is not in progress else pass it to
-	// scrollarea. Problem here is, if we pass to gridview when panning, then 
-	// its emitting item activated signal simply becasue of which focus item
-	// is getting changed when you finish the pan / shake
-	if (!mIsPanGesture) {
-		HbGridView::mouseReleaseEvent(event);
-	} else {
-		HbScrollArea::mouseReleaseEvent(event);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_MOUSERELEASEEVENT_EXIT );
-}
-
-/*!
-    Function to list for all the gesture events
- */
-void CalenMonthGrid::gestureEvent(QGestureEvent *event)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_GESTUREEVENT_ENTRY );
+    SetVerticalMargin(0);
+    SetHorizontalMargin(0);
     
-   if(HbPanGesture *gesture = qobject_cast<HbPanGesture *>(event->gesture(Qt::PanGesture))) {
-        if (gesture->state() == Qt::GestureStarted) {
-            mIsAtomicScroll = false;
-            if (!mIsPanGesture) {
-                mDirection = invalid;
-                mStartPos = mContentWidget->pos();
-                // TODO: This work around till framework provides an api
-                // to know the direciton of the pan, until then we need
-                // calculate the direction explicitly
-                // Get to know the direction of the gesture
-                // Use our defined threshold temporarily till scrollarea 
-                // frm orbit side is made clever enough not to scroll in other direction
-                // apart frm the registered scroll direction
-                QPointF delta = gesture->delta();
-                // Check the current orientation of the device and
-                // swap the vertical and horizontal distances in landscape
-                qreal horizontalDiff = 0.0;
-                qreal verticalDiff = 0.0;
-                if (hbInstance->allMainWindows().at(0)->orientation() == Qt::Vertical) {
-                    horizontalDiff = delta.x();
-                    verticalDiff = delta.y();
-                } else {
-                    horizontalDiff = delta.y();
-                    verticalDiff = delta.x();
-                }
-                if (abs(horizontalDiff) > MAX_PAN_DIRECTION_THRESHOLD) {
-                    // Now see if y coord diff has crossed threshold
-                    if (verticalDiff > MAX_PAN_DIRECTION_THRESHOLD) {
-                        mIsPanGesture = true;
-                        mIgnoreItemActivated = true;
-                        mDirection = down;
-                    } else if (verticalDiff < -MAX_PAN_DIRECTION_THRESHOLD){
-                        mIsPanGesture = true;
-                        mIgnoreItemActivated = true;
-                        mDirection = up;
-                    } else {
-                        event->accept(Qt::PanGesture);
-                        OstTraceFunctionExit0( CALENMONTHGRID_GESTUREEVENT_EXIT );
-                        return;
-                    }
-                } else if (abs(horizontalDiff) < MAX_PAN_DIRECTION_THRESHOLD) {
-                   if (verticalDiff > MIN_PAN_DIRECTION_THRESHOLD) {
-                        mIsPanGesture = true;
-                        mIgnoreItemActivated = true;
-                        mDirection = down;
-                   } else if (verticalDiff < -MIN_PAN_DIRECTION_THRESHOLD){
-                        mIsPanGesture = true;
-                        mIgnoreItemActivated = true;
-                        mDirection = up;
-                   }else {
-                       event->accept(Qt::PanGesture);
-                       OstTraceFunctionExit0( DUP1_CALENMONTHGRID_GESTUREEVENT_EXIT );
-                       return;
-                   }
-                } 
-            }
-        }
-    } else if(HbSwipeGesture *gesture = qobject_cast<HbSwipeGesture *>(event->gesture(Qt::SwipeGesture))) {
-        if (gesture->state() == Qt::GestureStarted) {
-            mIsAtomicScroll = false;
-            mDirection = invalid;
-            if (gesture->sceneVerticalDirection() == QSwipeGesture::Down) {
-                mDirection = down;
-            } else if (gesture->sceneVerticalDirection() == QSwipeGesture::Up) {
-                mDirection = up;
-            } else {
-                event->accept(Qt::SwipeGesture);
-                OstTraceFunctionExit0( DUP2_CALENMONTHGRID_GESTUREEVENT_EXIT );
-                return;
-            }
-        }
-    } else if (HbTapGesture *gesture = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
-        if(gesture->state() == Qt::GestureFinished) {
-            // Check if scrolling is in progress
-            if (mDirection != invalid) {
-                // Set the pan flag to true so that grid adjusts to nearest
-                // month after tapping
-                mIsPanGesture = true;
-                handlePanGestureFinished();
-            }
-        }
+    TRACE_EXIT_POINT;
+    }
+
+// Destructor
+CCalenMonthGrid::~CCalenMonthGrid()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
     }
-   
-   if (mDirection!= invalid) {
-        // Call the parent class to perform the pan gesture
-        // When scrolling finished, month grid will adjust to show the proper month
-        HbScrollArea::gestureEvent(event);
-   }
-   
-   OstTraceFunctionExit0( DUP3_CALENMONTHGRID_GESTUREEVENT_EXIT );
-}
 
-/*!
- Gets called when scrolling finishes to update the model
- */
-void CalenMonthGrid::scrollingFinished()
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_SCROLLINGFINISHED_ENTRY );
+// ---------------------------------------------------------
+// CCalenMonthGrid::Draw
+// Drawing month gird
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CCalenMonthGrid::Draw(const TRect& aRect)const
+    {
+    TRACE_ENTRY_POINT;
+    //const TBool useWeeks( UseWeeks() );
+    CAknGrid::Draw( aRect );
     
-	if (mIsPanGesture) {
-		handlePanGestureFinished();
-	} else if(!mIsAtomicScroll) {
-		QDateTime activeDate = mView->getActiveDay();
-		if(mDirection == down) { // down gesture
-			if (!mActiveDatesSet) {
-				setActiveDates(activeDate.addMonths(-1).date());
-				setFocusToProperDay();
-			}
-			prependRows();
-		} else if (mDirection == up) { //up gesture
-			if (!mActiveDatesSet) {
-				setActiveDates(activeDate.addMonths(1).date());
-				setFocusToProperDay();
-			}
-			appendRows();
-		}
-		mDirection = invalid;
-		mActiveDatesSet = false;
-	} else {
-        mIsAtomicScroll = false;
-        mDirection = invalid;
-	}
-	mIgnoreItemActivated = false;
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_SCROLLINGFINISHED_EXIT );
-}
+    // For drawing Secondary grid lines
+    DrawGridLines();
 
-/*!
- Function to handle completion of pan gesture
- */
-void CalenMonthGrid::handlePanGestureFinished()
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_HANDLEPANGESTUREFINISHED_ENTRY );
+    TRACE_EXIT_POINT;
     
-	mIsPanGesture = false;
-	// Get the first item that is visible
-	QList<HbAbstractViewItem *> list = visibleItems();
-	HbAbstractViewItem* item = list[0];
-	QModelIndex modelIndex = item->modelIndex();
-	
-	// Get the date which is visible at the above row
-	QList<CalenMonthData>& monthDataArray = mView->monthDataList();
-	QDateTime date = monthDataArray[modelIndex.row()].Day();
-	
-	// Check if this date belong to current active month or 
-	// previous month else future month
-	QDateTime activeMonth = mView->getActiveDay();
-	QDateTime prevMonth = activeMonth.addMonths(-1);
-	QDateTime nextMonth = activeMonth.addMonths(1);
-	int month = date.date().month();
-	if (month == activeMonth.date().month()) {
-		// Then pan is completed on current month
-		// Check if the date is more than half of the current month or it is
-		// more than or equal to half of the future month
-		if (date.date().day() > (activeMonth.date().daysInMonth()) / 2 ||
-				date.addDays(KNumOfVisibleRows*KCalenDaysInWeek).date().day() >=
-				(prevMonth.date().daysInMonth()) / 2) {
-			// up gesture to bring the next month
-			upGesture();
-		} else {
-			// we should again show the current month by scrolling downwards
-			mDirection = down;
-			mIsAtomicScroll = true;
-			scrollContentsTo(-mStartPos,500);
-		}
-	} else if (month == prevMonth.date().month()) {
-		// first visible item belongs to previous month
-		// Check if the date is more than half of the previous month
-		if (date.date().day() > (prevMonth.date().daysInMonth()) / 2) {
-			// we should again show the current month by scrolling upwards
-			mDirection = up;
-			mIsAtomicScroll = true;
-			scrollContentsTo(-mStartPos,500);
-		} else {
-			// down gesture to show the previous month
-			downGesture();
-		}
-	} else if (month == prevMonth.addMonths(-1).date().month()) {
-		// first visible date belong to previous to previous month
-		// hence, scroll down to bring the previous month
-		downGesture();
-	} else if (month == nextMonth.date().month()) {
-		// first visible item belongs to next month
-		// Check if the date is more than half of the next month
-		if (date.date().day() > (nextMonth.date().daysInMonth()) / 2) {
-			// up gesture to bring the next month
-			upGesture();
-		} else {
-			// we should again show the current month by scrolling upwards
-			mDirection = up;
-			scrollContentsTo(-mStartPos,500);
-		}
-	} else if (month == nextMonth.addMonths(1).date().month()) {
-		// first visible date belongs to next to next month
-		// hence, scroll up to show the next month
-		upGesture();
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_HANDLEPANGESTUREFINISHED_EXIT );
-}
+    }
+
+// ---------------------------------------------------------
+// CCalenMonthGrid::DrawGridLines
+// Draws secondary lines of the grid
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CCalenMonthGrid::DrawGridLines()const
+    {
+    TRACE_ENTRY_POINT;
+        
+    CWindowGc& gc = SystemGc();
+    TRect parentRect = iMonthContainer->Rect();
+    TRect main_pane(iMonthContainer->ReducePreview( parentRect ) );
+        
 
-/*!
- Called when down gesture is performed. Adds the new previous month details
- to the model
- */
-void CalenMonthGrid::prependRows()
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_PREPENDROWS_ENTRY );
-	
-	// Block the signals generated by model, this is being done as
-	// we want to avoid the overload of view listening to signals
-	mModel->blockSignals(true);
-		
-	mIsNonActiveDayFocused = false;
-	
-	int rowsInFutMonthEarlier = mView->rowsInFutMonth();
-	int rowsInPrevMonthEarlier = mView->rowsInPrevMonth();
-	
-	// remove the cells in the future month
-	int deleteFromIndex = (rowsInPrevMonthEarlier + KNumOfVisibleRows) * KCalenDaysInWeek;
-	int numOfIndices = rowsInFutMonthEarlier * KCalenDaysInWeek;
-	
-	// Get the updated dates from the view
-	mView->updateModelWithPrevMonth();
-	QList<CalenMonthData >& monthDataList = mView->monthDataList();
-	
-	// Prepend the required rows
-	handlePrependingRows(monthDataList);
-		
-	// Since, we have finished setData, Now unblock the signals
-	mModel->blockSignals(false);
-	
-	int rowsInPrevMonth = mView->rowsInPrevMonth();
-	int countToBeAdded = rowsInPrevMonth * KCalenDaysInWeek;
-		
-	// Since till now, we had blocked signals being generated frm the model
-	// view will be unaware of the items that we added. Hence, inform the view
-	// explicitly in one shot
-	QModelIndex leftIndex = mModel->index(0, 0);
-	QModelIndex rightIndex = mModel->index(countToBeAdded-1, 0);
-	dataChanged(leftIndex, rightIndex);
-		
-	// Now remove the necessary items frm the model
-	mModel->removeRows(deleteFromIndex+countToBeAdded, numOfIndices);
-	mIsAtomicScroll = true;
-	int itemToBeScrolled = rowsInPrevMonth * KCalenDaysInWeek;
-	QModelIndex indexToBeScrolled  = mModel->index(itemToBeScrolled, 0);
-	scrollTo(indexToBeScrolled);
-	
-	// Scroll to proper index
-	itemToBeScrolled = ((rowsInPrevMonth + KNumOfVisibleRows) * 
-								   KCalenDaysInWeek) - 1;
-	indexToBeScrolled = mModel->index(itemToBeScrolled, 0);
-	mIsAtomicScroll = true;
-	scrollTo(indexToBeScrolled);
-	// Update the mCurrentRow
-	mCurrentRow += countToBeAdded;
-	
-	// Update the sart position of the content widget
-	mStartPos = mContentWidget->pos();
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_PREPENDROWS_EXIT );
-}
-
-/*!
-	Helper function that prepends the required rows to the model
- */
-void CalenMonthGrid::handlePrependingRows(QList<CalenMonthData > &monthDataList)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_HANDLEPREPENDINGROWS_ENTRY );
+    TAknLayoutRect main_cale_month_pane;
+    TInt layoutVariant = iMonthContainer->LayoutVariantIndex(CCalenMonthContainer::EMainCaleMonthPane);
+    main_cale_month_pane.LayoutRect( main_pane, AknLayoutScalable_Apps::main_cale_month_pane(layoutVariant).LayoutLine() );
     
-	QDateTime currDate = mView->getCurrentDay();
-	QDateTime currDateTime = CalenDateUtils::beginningOfDay( currDate );
-	int rowsInPrevMonth = mView->rowsInPrevMonth();
-	// Add the new days
-	int countToBeAdded = rowsInPrevMonth * KCalenDaysInWeek;
-	
-	mModel->insertRows(0, countToBeAdded);
-	
-	for (int i = 0; i < countToBeAdded; i++) {
-		QDateTime dateTime = monthDataList[i].Day();
-		
-		// Get the localised string for the day
-		QModelIndex currentIndex = mModel->index(i, 0);
-		
-		// Create the variant list to contain the date to depict a grid item
-		QVariantList itemData;
-		
-		// NOTE: Add the data in the order mentioned in the 
-		// CalendarNamespace::DataRole enum. Dont change the order.
-		itemData << mLocalisedDates.at(dateTime.date().day()-1);;
-				
-		// Disable the focus role
-		itemData << false;
-		
-		// Check for current day
-		if  (currDateTime == CalenDateUtils::beginningOfDay( dateTime )) {
-			// Set the underline icon attribute
-			itemData << true;
-		} else {
-			itemData << false;
-		}
-		
-		// Update the event indicators
-		if (monthDataList[i].HasEvents()) {
-			// Set the event indicator attribute
-			itemData << true;
-		} else {
-			itemData << false;
-		}
-		
-		// Add default text color
-		itemData << false;
-		
-		// Set the data to model
-		mModel->itemFromIndex(currentIndex)->setData(itemData);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_HANDLEPREPENDINGROWS_EXIT );
-}
+    TAknLayoutRect cale_month_pane_g;
 
-/*!
- Called when Up gwsture is performed. Adds the new future month details
- to the model
- */
-void CalenMonthGrid::appendRows()
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_APPENDROWS_ENTRY );
-	
-	// Block the signals generated by model, this is being done as
-	// we want to avoid the overload of view listening to signals
-	mModel->blockSignals(true);
-	
-	mIsNonActiveDayFocused = false;
-	
-	int rowsInFutMonth = mView->rowsInFutMonth();
-	int rowsInPrevMonth = mView->rowsInPrevMonth();
-	// remove the cells in the previous month
-	int countToBeDeleted = rowsInPrevMonth * KCalenDaysInWeek;
-		
-	// Get the updated dates from the view
-	mView->updateModelWithFutureMonth();
-	QList<CalenMonthData >& monthDataList = mView->monthDataList();
-	
-	// Get the model count before we add any rows into the mode
-	int rowCount = mModel->rowCount();
-	// Append the required rows
-	handleAppendingRows(monthDataList);
-	
-	// Since, we have finished setData, Now unblock the signals
-	mModel->blockSignals(false);
-	
-	// Since till now, we had blocked signals being generated frm the mode
-	// view will be unaware of the items that we added. Hence, inform the view
-	// explicitly in one shot
-	QModelIndex leftIndex = mModel->index(rowCount-1, 0);
-	QModelIndex rightIndex = mModel->index(mModel->rowCount()-1, 0);
-	dataChanged(leftIndex, rightIndex);
-		
-	// Update the mCurrentRow
-	mCurrentRow -= (countToBeDeleted);
-	for (int i = 0; i < countToBeDeleted; i++) {
-		mModel->removeRow(0);
-	}
-	
-	mIsAtomicScroll = true;
-	
-	rowsInFutMonth = mView->rowsInFutMonth();
-	rowsInPrevMonth = mView->rowsInPrevMonth();
-	
-	// Calculate the proper index to be scrolled to
-	int itemToBeScrolled = rowsInPrevMonth * KCalenDaysInWeek;
-	QModelIndex indexToBeScrolled = mModel->index(itemToBeScrolled, 0);
-	scrollTo(indexToBeScrolled);
-	
-	itemToBeScrolled = ((rowsInPrevMonth + KNumOfVisibleRows) * 
-									   KCalenDaysInWeek) - 1;
-	indexToBeScrolled = mModel->index(itemToBeScrolled, 0);
-	mIsAtomicScroll = true;
-	scrollTo(indexToBeScrolled);
-	
-	// Update the sart position of the content widget
-    mStartPos = mContentWidget->pos();
+    // Get indexes for grid lines (cale_month_pane_g)
+    TAknLayoutScalableTableLimits cale_month_pane_g_Limits = AknLayoutScalable_Apps::cale_month_pane_g_Limits();
+    TInt index( cale_month_pane_g_Limits.FirstIndex() );
+    TInt end(   cale_month_pane_g_Limits.LastIndex() );
+    // First two are primary lines to separate heading and week number panes from grid
+    // We draw them elsewhere
+    const TInt firstGridLineIndex = 2;
+    layoutVariant = iMonthContainer->LayoutVariantIndex(CCalenMonthContainer::ECaleMonthPaneG );
+    for ( index+=firstGridLineIndex; index<=end; ++index )
+        {
+        cale_month_pane_g.LayoutRect( main_cale_month_pane.Rect(),
+                AknLayoutScalable_Apps::cale_month_pane_g( index, layoutVariant ).LayoutLine() );
+        DrawSecondaryLine( gc, cale_month_pane_g );
+        }
+        
+    TRACE_EXIT_POINT;
     
-    OstTraceFunctionExit0( CALENMONTHGRID_APPENDROWS_EXIT );
-}
+    }
+
 
-/*!
-	Helper function that appends the required rows to the model
- */
-void CalenMonthGrid::handleAppendingRows(QList<CalenMonthData > &monthDataList)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_HANDLEAPPENDINGROWS_ENTRY );
-    
-	QDateTime currDate = mView->getCurrentDay();
-	QDateTime currDateTime = CalenDateUtils::beginningOfDay( currDate );
-	int rowsInFutMonth = mView->rowsInFutMonth();
-	int countToBeAdded = rowsInFutMonth * KCalenDaysInWeek;
-	int lastVisibleIndex = monthDataList.count() - countToBeAdded;
-	
-	int rowCount = mModel->rowCount();
-	mModel->insertRows(rowCount, countToBeAdded);
-	
-	for (int i = 0; i < countToBeAdded; i++) {
-		QModelIndex currentIndex = mModel->index(rowCount + i, 0);
-				
-		QDateTime dateTime = monthDataList[lastVisibleIndex + i].Day();
-		
-		// Create the variant list to contain the date to depict a grid item
-		QVariantList itemData;
-		
-		// NOTE: Add the data in the order mentioned in the 
-		// CalendarNamespace::DataRole enum. Dont change the order.
-		itemData << mLocalisedDates.at(dateTime.date().day()-1);;
-		
-		// Disable the focus role
-		itemData << false;
-		
-		// Check for current day
-		if (currDateTime == CalenDateUtils::beginningOfDay( dateTime )) {
-			// Set the underline icon attribute
-			itemData << true;
-		} else {
-			itemData << false;
-		}
-		
-		// Update the event indicators
-		if (monthDataList[lastVisibleIndex + i].HasEvents()) {
-			// Set the event indicator attribute
-			itemData << true;
-		} else {
-			itemData << false;
-		}
-		
-		// Add default text color
-		itemData << false;
-				
-		// Set the data to model
-		mModel->itemFromIndex(currentIndex)->setData(itemData);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_HANDLEAPPENDINGROWS_EXIT );
-}
-
-/*!
- Slot to handle when a particular grid item is tapped
- */
-void CalenMonthGrid::itemActivated(const QModelIndex &index)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_ITEMACTIVATED_ENTRY );
+// ---------------------------------------------------------
+// CCalenMonthGrid::FirstDayOfGrid
+// Return first day of grid
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TTime CCalenMonthGrid::FirstDayOfGrid()
+    {
+    TRACE_ENTRY_POINT;
     
-	if (mIgnoreItemActivated) {
-		mIgnoreItemActivated = false;
-		OstTraceFunctionExit0( CALENMONTHGRID_ITEMACTIVATED_EXIT );
-		return;
-	}
-	mIsNonActiveDayFocused = false;
-	// Check if the same item has been tapped twice
-	if (mCurrentRow == index.row()) {
-		// Launch the Day view
-		mView->launchDayView();
-	} else {
-		// Reset the focus attribute to this item		
-		QModelIndex itemIndex = mModel->index(mCurrentRow,0);
-		if(itemIndex.row() < 0 || itemIndex.row() >= mModel->rowCount() ||
-				itemIndex.column() < 0 || itemIndex.column() > mModel->columnCount()) {
-			OstTraceFunctionExit0( DUP1_CALENMONTHGRID_ITEMACTIVATED_EXIT );
-			return;
-		}
-		QVariant itemData = itemIndex.data(Qt::UserRole + 1);
-		QVariantList list = itemData.toList();
-		list.replace(CalendarNamespace::CalendarMonthFocusRole, false);
-		mModel->itemFromIndex(itemIndex)->setData(list);
-		
-		// Inform view to update the context and preview panes
-		mCurrentRow = index.row();
-		itemIndex = mModel->index(mCurrentRow,0);
-		itemData = itemIndex.data(Qt::UserRole + 1);
-		list = itemData.toList();
-		list.replace(CalendarNamespace::CalendarMonthFocusRole, 
-								 true);
-		mModel->itemFromIndex(itemIndex)->setData(list);
-		// Check if inactive date is tapped
-		QDateTime activeMonth = mView->getActiveDay();
-		int month = activeMonth.date().month();
-		QList<CalenMonthData >& monthDataList = mView->monthDataList();
-		if(month != monthDataList[mCurrentRow].Day().date().month()){
-			// Set the flag
-			mIsNonActiveDayFocused = true;
-			QDateTime nonActiveFocusedDay = monthDataList[mCurrentRow].Day();
-			
-			// Add one month to active month
-			activeMonth = activeMonth.addMonths(1);
-			if (activeMonth.date().month() == 
-			        nonActiveFocusedDay.date().month()) {
-				mDirection = up;
-				// up gesture
-				upGesture();
-			} else {
-				mDirection = down;
-				// down gesture
-				downGesture();
-			}
-		} 
-		mView->setContextForActiveDay(index.row());
-	}
-	
-	OstTraceFunctionExit0( DUP2_CALENMONTHGRID_ITEMACTIVATED_EXIT );
-}
+    TRACE_EXIT_POINT;
+    return iFirstDayOfGrid;
+    }
 
-/*!
- Sets the focus to proper day after the flick scrollng
- */
-void CalenMonthGrid::setFocusToProperDay()
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_SETFOCUSTOPROPERDAY_ENTRY );
+// ---------------------------------------------------------
+// CCalenMonthGrid::SetFirstDayOfGrid
+// Set argument aDay to first day of Grid
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CCalenMonthGrid::SetFirstDayOfGrid(TTime aDay)
+    {
+    TRACE_ENTRY_POINT;
+    
+    iFirstDayOfGrid = aDay;
     
-	// Calculate the new item to be focussed
-	QDateTime oldFocussedDate = mView->getActiveDay();
-	QList<CalenMonthData> monthDataList = mView->monthDataList();
-	int listCount = monthDataList.count();
-	int rowsInPrevMonth = mView->rowsInPrevMonth();
-	QDateTime dateToBeFocussed;
-	int indexStart = 0;
-	int indexEnd = listCount - 1;
-	if (mDirection == up) {
-		dateToBeFocussed = oldFocussedDate.addMonths(1); // add the month 
-		indexStart = (rowsInPrevMonth + 4) * KCalenDaysInWeek;
-	} else if (mDirection == down) {
-		dateToBeFocussed = oldFocussedDate.addMonths(-1); // substract the month
-		indexEnd = (rowsInPrevMonth + 1) * KCalenDaysInWeek;
-	}
-	// Reset the focus attribute to earlier current item
-	QModelIndex index = mModel->index(mCurrentRow,0);
-	QVariant itemData = index.data(Qt::UserRole + 1);
-	QVariantList list = itemData.toList();
-	list.replace(CalendarNamespace::CalendarMonthFocusRole, false);
-	mModel->itemFromIndex(index)->setData(list);
-	
-	// Search for this date in the model
-	for (int i = indexStart; i <= indexEnd; i++) {
-		if (monthDataList[i].Day().date() == dateToBeFocussed.date()) {
-			index = mModel->index(i,0);
-			itemData = index.data(Qt::UserRole + 1);
-			list = itemData.toList();
-			list.replace(CalendarNamespace::CalendarMonthFocusRole,
-										 true);
-			mModel->itemFromIndex(index)->setData(list);
-			mCurrentRow = i;
-			mView->setContextForActiveDay(i);
-			break;
-		}
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_SETFOCUSTOPROPERDAY_EXIT );
-}
+    TRACE_EXIT_POINT;
+    }
+
+// ---------------------------------------------------------
+// CCalenMonthGrid::CreateItemDrawerL
+// Creates CFormattedCellListBoxItemDrawer,
+// actually CCalenMonthCellListBoxItemDrawer.
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CCalenMonthGrid::CreateItemDrawerL()
+    {
+    TRACE_ENTRY_POINT;
+    
+    CCalenMonthCellListBoxData* columnData = CCalenMonthCellListBoxData::NewL();
+    CleanupStack::PushL( columnData );
+
+    iItemDrawer = new(ELeave)
+        CCalenMonthCellListBoxItemDrawer(Model(), this, iEikonEnv->NormalFont(), columnData);
 
-/*!
- Sets the appropriate text color depending upon the active dates
- */
-void CalenMonthGrid::setActiveDates(QDate activeDate)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_SETACTIVEDATES_ENTRY );
+    CleanupStack::Pop(); // columnData
     
-	// By default, text color will be set as inactive date color
-	// set active date color only for the dates that fall in current month
-	// So, in the whole data array, start from where the current month starts
-	// and stop the loop where it the current month ends
-	
-	int start = 0;
-	QList<CalenMonthData >& monthDataList = mView->monthDataList();
-	int end = monthDataList.count();
-	
-	// Calculate the start and end values
-	QDate firstDateInGrid = mView->firstDayOfGrid().date();
-	
-	// Get the date where active month starts
-	QDate startOfActiveMonth(activeDate.year(), activeDate.month(),1);
-	// Number of days frm start of the grid to start of the month
-	start = firstDateInGrid.daysTo(startOfActiveMonth);
-	
-	// Get the date where active month ends
-	QDate endOfActiveMonth = startOfActiveMonth.addDays(
-													activeDate.daysInMonth());
-	// Number of days frm start of the grid to end of the month
-	end = firstDateInGrid.daysTo(endOfActiveMonth);
-	
-	// Set the active text color
-	if (start >= 0 && end < monthDataList.count()) {
-        for (int i = start; i < end; i++) {	
-            QModelIndex index = mModel->index(i,0);
-            QVariant itemData = index.data(Qt::UserRole + 1);
-            QVariantList list = itemData.toList();
-            list.replace(CalendarNamespace::CalendarMonthTextColorRole, true);
-            mModel->itemFromIndex(index)->setData(list);
+    TRACE_EXIT_POINT;
+    }
+
+// ---------------------------------------------------------
+// 
+// ---------------------------------------------------------
+//
+void CCalenMonthGrid::UpdateScrollBarsL()
+    {
+    TRACE_ENTRY_POINT;
+    
+    // Override default implementation and just turn scrollbars off
+    // This is needed, because CAknGrid doesn't respect scrollbar
+    // visibility settings, but turns them on e.g. in HandleResourceChange
+    CEikScrollBarFrame* sbf = ScrollBarFrame();
+    if ( sbf )
+        {
+        sbf->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, 
+                                     CEikScrollBarFrame::EOff);
         }
-	}
-	
-	// Now set the inactive text color to those which were active before the swipe
-	if (mDirection == invalid) {
-		// no need to do anything as other dates will be in inactive dates color
-		OstTraceFunctionExit0( CALENMONTHGRID_SETACTIVEDATES_EXIT );
-		return;
-	}
-	
-	if (mDirection == up) {
-		// Came here as user did up gesture
-		// Get the activeDate that was set before the swipe
-		activeDate = activeDate.addMonths(-1);
-		
-		// Get the date where active month starts
-		startOfActiveMonth = QDate(activeDate.year(), activeDate.month(),1);
-		// Number of days frm start of the grid to start of the month
-		start = firstDateInGrid.daysTo(startOfActiveMonth);
-		
-		// Get the date where active month ends
-		QDate endOfActiveMonth = startOfActiveMonth.addDays(activeDate.daysInMonth());
-		// Number of days frm start of the grid to end of the month
-		end = firstDateInGrid.daysTo(endOfActiveMonth);
-	} else if (mDirection == down) {
-		// Came here as user did down gesture
-		// Get the activeDate that was set before the swipe
-		activeDate = activeDate.addMonths(1);
-		
-		// Get the activeDate that was set before the swipe
-		startOfActiveMonth = QDate(activeDate.year(), activeDate.month(),1); 
-		// Number of days frm start of the grid to start of the month
-		start = firstDateInGrid.daysTo(startOfActiveMonth);
-		
-		// Get the date where active month ends
-		QDate endOfActiveMonth = startOfActiveMonth.addDays(activeDate.daysInMonth());
-		// Number of days frm start of the grid to end of the month
-		end = firstDateInGrid.daysTo(endOfActiveMonth);
-	}
-	
-	// Set the inactive text color
-	if (start >= 0 && end < monthDataList.count()) {
-        for (int i = start; i < end; i++) {		
-            QModelIndex index = mModel->index(i,0);
-            QVariant itemData = index.data(Qt::UserRole + 1);
-            QVariantList list = itemData.toList();
-            list.replace(CalendarNamespace::CalendarMonthTextColorRole, false);
-            mModel->itemFromIndex(index)->setData(list);
-        }
-	}
-	
-	OstTraceFunctionExit0( DUP1_CALENMONTHGRID_SETACTIVEDATES_EXIT );
-}
-
-/*!
- To get current foucsed index of monthGrid
- */
-int CalenMonthGrid::getCurrentIndex()
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_GETCURRENTINDEX_ENTRY );
     
-	OstTraceFunctionExit0( CALENMONTHGRID_GETCURRENTINDEX_EXIT );
-	return mCurrentRow;
-}
-
-/*!
- To set the focus to Index 
- */
-void CalenMonthGrid::setCurrentIdex(int index)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_SETCURRENTIDEX_ENTRY );
-    
-	itemActivated(mModel->index(index, 0));
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_SETCURRENTIDEX_EXIT );
-}
-
-/*!
- Function to override the default behavior of hbgridview on orientation change
- */
-void CalenMonthGrid::orientationChanged(Qt::Orientation newOrientation)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_ORIENTATIONCHANGED_ENTRY );
-    
-    Q_UNUSED(newOrientation)
-	// We are overriding this function to avoid the default behavior of
-	// hbgridview on orientation change as it swaps the row and column counts
-	// Calculate the proper index to be scrolled to
-	int rowsInPrevMonth;
-    int itemToBeScrolled;
-    QModelIndex indexToBeScrolled;
-	if (newOrientation == Qt::Horizontal) {
-		rowsInPrevMonth = mView->rowsInPrevMonth();
-		itemToBeScrolled = rowsInPrevMonth * KCalenDaysInWeek;
-		indexToBeScrolled = mModel->index(itemToBeScrolled, 0);
-		mIsAtomicScroll = true;
-		scrollTo(indexToBeScrolled);
-	} else {
-		rowsInPrevMonth = mView->rowsInPrevMonth();
-		itemToBeScrolled = rowsInPrevMonth * KCalenDaysInWeek;
-		indexToBeScrolled = mModel->index(itemToBeScrolled, 0);
-		mIsAtomicScroll = true;
-		scrollTo(indexToBeScrolled);
-		
-		itemToBeScrolled = ((rowsInPrevMonth + KNumOfVisibleRows) * 
-				KCalenDaysInWeek) - 1;
-		indexToBeScrolled = mModel->index(itemToBeScrolled, 0);
-		mIsAtomicScroll = true;
-		scrollTo(indexToBeScrolled);
-	}
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_ORIENTATIONCHANGED_EXIT );
-}
-
-/*!
- Paint function to draw grid lines
- */
-void CalenMonthGrid::paint(QPainter* painter,
-                          const QStyleOptionGraphicsItem* option,
-                          QWidget* widget)
-{
-    OstTraceFunctionEntry0( CALENMONTHGRID_PAINT_ENTRY );
-    
-	Q_UNUSED(option);
-	Q_UNUSED(widget);
-	painter->setRenderHint(QPainter::NonCosmeticDefaultPen);
-	
-	// Set the required attributes to the pen
-	QPen pen;
-	HbDeviceProfile deviceProf;
-	qreal unitValue = deviceProf.unitValue();
-	qreal widthInPixels = GRIDLINE_WIDTH * unitValue;
-	pen.setStyle(Qt::SolidLine);
-	pen.setWidth(widthInPixels);
-	pen.setBrush(mGridLineColor);
-	
-	// Store the old pen
-	QPen oldPen = painter->pen();
-	
-	// Set the new pen to the painter
-	painter->setPen(pen);
-	
-	// Get the sizes of content widget
-	qreal contentHeight = mContentWidget->size().height();
-	qreal contentWidth = mContentWidget->size().width();
-	qreal rowWidth = 0.0;
-	int numOfRows = 0;
-	QPointF startPoint = mContentWidget->pos();
-	
-	// NOTE!!!: There is a filcker when we blindly draw equally spaced lines
-	// on complete content widget when scrolling is finished. This happens only
-	// when content widget size is changed due to the change in total number
-	// of rows when we append or prepend rows. Hence, to avoid this, we draw
-	// lines on complete content widget only when it is scrolling.
-	// That means, as soon as scrolling is finished, we will end up drawing 
-	// only 6 lines that are visible to the user.
-	if (mDirection == invalid) {
-		// Start point is left most point on the screen
-		startPoint = QPointF(0,0);
-		rowWidth = size().height() / KNumOfVisibleRows;
-		numOfRows = KNumOfVisibleRows;
-	} else {
-		// Get the num of rows
-		numOfRows = mModel->rowCount() / KCalenDaysInWeek;
-		// Draw horizontal lines
-		rowWidth = contentHeight / numOfRows;
-	}
-	
-	QPointF endPoint(startPoint.x() + contentWidth, 
-	                 startPoint.y());
-	
-	// Create the list of points for which lines have to be drawn
-	// List should have even number of points so that it draws all the lines
-	// Painter draws the line for first two points in the list and then second 
-	// line for next two points in the list like that. Hence, list should 
-	// contain even number of points
-	// Dont draw the first horizontal line as we have thick line seperator
-	// coming between day names and the month grid
-	QVector<QPointF> pointList;
-	for (int i = 1; i < numOfRows; i++) {
-		pointList.append(QPointF(startPoint.x(), 
-		                         startPoint.y() + (i * rowWidth)));
-		pointList.append(QPointF(endPoint.x(), endPoint.y() + (i * rowWidth)));
-	}
-	
-	// Draw vertical lines
-	qreal colWidth = contentWidth / KCalenDaysInWeek;
-	endPoint = QPointF(startPoint.x(), 
-	                   startPoint.y() + contentHeight);
-	for (int i = 1; i < KCalenDaysInWeek; i++) {
-		pointList.append(QPointF(startPoint.x() + (i * colWidth), 
-		                         startPoint.y()));
-		pointList.append(QPointF(endPoint.x() + (i * colWidth), endPoint.y()));
-	}
-	
-	// Draw the lines for the points in the vector list
-	painter->drawLines(pointList);
-	
-	// Set the old pen back
-	painter->setPen(oldPen);
-	
-	OstTraceFunctionExit0( CALENMONTHGRID_PAINT_EXIT );
-}
-
-/*!
- Slot to handle the change in theme
- */
-void CalenMonthGrid::handleThemeChange()
-{
-    OstTraceFunctionEntry0(CALENMONTHGRID_HANDLETHEMECHANGE_ENTRY);
-    
-    mGridLineColor = HbColorScheme::color("qtc_cal_grid_line");
-    
-    OstTraceFunctionExit0(CALENMONTHGRID_HANDLETHEMECHANGE_EXIT);
-}
-
+    TRACE_EXIT_POINT;
+    }
 // End of File