--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/views/inc/calenmonthcontainer.h Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,373 @@
+/*
+* Copyright (c) 2007 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: Month View container control.
+ *
+*/
+
+
+
+#ifndef CALENMONTHCONT_H
+#define CALENMONTHCONT_H
+
+// INCLUDES
+
+#include <eiklbo.h>
+#include "calencontainer.h"
+#include "calenmonthdata.h" // CMonthDataArray is typedef
+
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class CAknGrid;
+class CAknIconArray;
+class CAknsFrameBackgroundControlContext;
+class CCalInstance;
+class CCalenMonthGrid;
+class CCalenMonthView;
+class CEikLabel;
+class TAknLayoutRect;
+class CCalenPreview;
+
+
+// CLASS DEFINITIONS
+
+/**
+ * Month View container control
+ */
+
+NONSHARABLE_CLASS( CCalenMonthContainer ) : public CCalenContainer,
+ public MEikListBoxObserver
+ {
+public: // Constructors and destructor
+ /**
+ * C++ constructor.
+ */
+ CCalenMonthContainer( CCalenNativeView* aView,
+ TTime& aDate,
+ MCalenServices& aServices );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCalenMonthContainer();
+
+public:
+ /**
+ * Create icon indices for month view
+ */
+ void CreateIconIndicesL( RArray<MCalenServices::TCalenIcons>& aIndexArray );
+
+public: // New Function
+ /**
+ * Called when Midnight cross over
+ * Redraw today's indicator
+ */
+ void ChangesMidnightCrossover();
+
+ /**
+ * Initilizes grid data.
+ */
+ void InitDataForMonthL();//const TTime& aNewActiveDay);
+
+ /**
+ * Population step with no instance view.
+ * Step 1 of construction of grid data.
+ */
+ void PrepareForPopulationL();
+
+ /**
+ * Populates data from agenda server and sets number of notes.
+ * Step 2 of construction of grid data.
+ */
+ void PopulateWithInstanceViewL();
+
+ /**
+ * Set event indicator to each day.
+ * Step 3 of construction of grid data.
+ */
+ void SetIndicatorL();
+
+ /**
+ * Sets the current focus.
+ * Step 4 of construction of grid data.
+ */
+ void SetFocusL();
+
+ /**
+ * Sets the current focus.
+ * Step 5 of construction of grid data.
+ */
+ void CompletePopulationL();
+
+ /**
+ * Get the available info bar rect for this container
+ */
+ TRect InfoBarRectL( TBool aToolbarAvailable );
+
+
+ /**
+ * Handle navigation decorator event
+ * @param left or right
+ */
+ void HandleNaviDecoratorEventL(TInt aDirection);
+
+ void HandleLongTapEventL( const TPoint& aPenEventLocation,
+ const TPoint& aPenEventScreenLocation );
+ void HidePopup();
+
+ void RedrawPreviewPane();
+
+
+private: // New function
+ /**
+ * Set iActiveDay to argument's aDay,
+ * and also set context's active day too.
+ * And re-calculate first day of grid.
+ * @param aDay New active day
+ */
+ void SetActiveDayL( TTime aDay );
+
+ /**
+ * Return a day from Grid index
+ * @param aIndex Grid index
+ * @return Real day
+ */
+ TTime DayOfIndex( TInt aIndex );
+
+ /**
+ * Sets cursor to Active day
+ */
+ void SetCursorToActiveDay();
+
+ /**
+ * Month grid cells setup method
+ * @param aListBox CAknGrid
+ */
+ void ApplySelGridGraphicStyleL( CAknGrid& aListBox );
+
+ /**
+ * Change Active Day and Data.
+ */
+ void ChangeMonthL();
+
+ void HandleDayChangeL(TTime aNewActiveDay);
+
+ /**
+ * Icon column setting for CAknGrid
+ * @param aListBox Set a Grid
+ * @param aIndex Cell index
+ * @param aP1 Cell top-left
+ * @param aSize Cell size
+ */
+ void SetupSelgridFormBitmapCellL(CAknGrid& aListBox, TInt aIndex,
+ TPoint aP1, TSize aSize);
+ /**
+ * Drawing days of the week.
+ * @param aGc Graphic context
+ */
+ void DrawColLabel(CWindowGc& aGc, TBool aUseWeeks = ETrue) const;
+ /**
+ * Drawing week numbers.
+ * @param aGc Graphic context
+ */
+ void DrawRowLabel(CWindowGc& aGc) const;
+ /**
+ * Set Date(1-28,29,30,31) to iData.
+ * Part of step 1 of construction of grid data
+ */
+ void SetDateL();
+
+ TInt GridIndex() const;
+
+ CCalenMonthView& MonthView() const;
+
+ static TInt EntryTimeCompare(const CCalInstance& aInstance_1,
+ const CCalInstance& aInstance_2);
+
+
+ void HandleWeekNumberTapL(const TPoint &aPosition);
+
+
+ TBool UseWeeks() const;
+
+ TBool UseWeeksL() const;
+public:
+
+ enum TMonthLayoutVariant
+ {
+ ENoLayoutVariantSet = 0,
+ EMainCaleMonthPane,
+ EBgCalePaneCp02,
+ ECaleMonthDayHeadingPane,
+ ECaleMonthWeekPane,
+ EGridCaleMonthPane,
+ ECaleMonthPaneG,
+ ECaleMonthPaneG1,
+ ECaleMonthPaneG2,
+ ECaleMonthPaneG3,
+ ECaleMonthPaneG9,
+ EBgCaleHeadingPaneCp01,
+ ECaleMonthPaneT1,
+ ECaleMonthDayHeadingPaneT,
+ ECaleMonthWeekPaneT,
+ EBgCaleSidePaneCp01,
+ ECellCaleMonthPane,
+ ECellCaleMonthPaneG1,
+ ECellCaleMonthPaneT1
+ };
+
+ /**
+ * Container can request current variant layout index
+ */
+ TInt LayoutVariantIndex(TMonthLayoutVariant aLayout) const;
+
+private: // From CCalenContainer
+ /**
+ * From CCalenContainer Date cahnge operation notification handler.
+ * (i.e. GotoDate).
+ */
+ void NotifyChangeDateL();
+
+private: // From CCoeControl
+ /**
+ * From CCoeControl return number of components
+ */
+ TInt CountComponentControls() const;
+ /**
+ * From CCoeControl retrun the component specified by aIndex
+ */
+ CCoeControl* ComponentControl(TInt aIndex) const;
+ /**
+ * From CCoeControl processing of a key event
+ */
+ TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,
+ TEventCode aType);
+
+ /**
+ * From CCoeControl Handle pointer event
+ */
+ void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+
+ /**
+ * From CCoeControl drawing month view
+ */
+ void Draw(const TRect& /*aRect*/) const;
+
+ /**
+ * Pass skin information if needed.
+ */
+ TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+
+ /**
+ * From CCoeControl Gets help context
+ * @param aContext Help context
+ */
+ void GetHelpContext(TCoeHelpContext& aContext) const;
+
+ /**
+ * From CCoeControl Resizes child controls
+ */
+ void SizeChanged();
+ void FocusChanged( TDrawNow aDrawNow );
+
+ /**
+ * From CCoeControl Handles a resource relative event
+ */
+ void HandleResourceChange(TInt aType);
+
+private: // From CCalenContainer
+ /**
+ * From CCalenContainer Third phase constructor.
+ * This function was called CCalenView::ConstructL().
+ */
+ void ConstructImplL();
+
+ /*
+ Constructs heading/side/background skin context if enabled
+ */
+ void ConstructBackgroundContextL();
+
+ /**
+ * From CCalenContainer.
+ * This methods is called after calendar settings have changed.
+ * Implementation for month view without week numbers.
+ */
+ void UpdateSize();
+
+ /**
+ * Handles list box events.
+ *
+ * This function is invoked by CEikListBox to
+ * notify the observer of list box events.
+ *
+ * @param aListBox The originating list box.
+ * @param aEventType A code for the event. Further information
+ * may be obtained by accessing the list box itself.
+ */
+ void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType );
+
+
+private: // own methods
+
+ // just a wrapper for leaves
+ void DoSizeChangedL();
+
+ // just a wrapper for leaves
+ static TInt DoEntryTimeCompareL( const CCalInstance& aInstance_1,
+ const CCalInstance& aInstance_2 );
+
+ TKeyResponse HandleAttemptToMoveL( TUint aKeyCode );
+
+private: // New variables
+
+ /*
+ * This enumeration index should match
+ */
+ enum TIconIndex
+ {
+ EIconNull = -1, // ENoEvent
+ EIconMany, // EManyEvents
+ EIconGrayed
+ };
+
+ enum TCompareResult
+ {
+ EEqual = 0, // 1. == 2.
+ ELessThan = -1, // 1. < 2.
+ EGreaterThan = 1 // 1. > 2.
+ };
+
+
+ CCalenMonthGrid* iGrid; // date's grid
+
+ CMonthDataArray* iMonthDataArray;
+ TTime iFirstDayOfGrid;
+ TInt iTempMonth; // for short cut to go to a month
+ TBuf<16> iDayFormat;
+
+ CAknsFrameBackgroundControlContext* iBackgroundSkinContext;
+
+ MCalenPreview* iPreview;
+
+ // View specific data, references to views data
+ TTime& iDate;
+ TTime iOldFirstDayOfGrid;
+ TBool iChangeMonth;
+ TBool iNativePreview;
+ };
+
+#endif //CALENMONTHCONT_H
+
+// End of File