--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/views/inc/calenweekcontainer.h Wed Sep 01 12:32:31 2010 +0100
@@ -0,0 +1,473 @@
+/*
+* Copyright (c) 2002-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: Container control for Week View .
+ *
+*/
+
+
+#ifndef CALENWEEKCONT_H
+#define CALENWEEKCONT_H
+
+
+#include <calsession.h>
+#include <calenconstants.h>
+#include <AknUtils.h>
+#include <calcommon.h> // CalCommon::TCalViewFilter
+#include <caleninstanceid.h> // TCalenInstanceId
+#include <gestureobserver.h> //MGestureObserver
+
+// INCLUDES
+#include "calencontainer.h"
+#include "calenweekcallback.h"
+#include "calenweekdata.h"
+#include "calenglobaldata.h"
+
+// FORWARD DECLARATIONS
+class CAknsFrameBackgroundControlContext;
+class CCalenWeekListbox;
+class CCalenWeekView;
+class CCalInstance;
+class CCalHourItem;
+class CGulIcon;
+class TAknWindowLineLayout;
+class TCalenInstanceId;
+class CCalInstanceView;
+class MCalenPreview;
+
+namespace GestureHelper
+ {
+ class CGestureHelper;
+ }
+
+typedef CArrayFixFlat<CCalHourItem*>* CWeekSlotArrayPtr;
+
+NONSHARABLE_CLASS (CCalHourItem):public CBase
+ {
+public:
+ ~CCalHourItem();
+ static CCalHourItem* NewL();
+ static CCalHourItem* NewL(CCalInstance& aInstance);
+
+ // FIXME: can be removed:
+ void SetDataL( CCalInstance& aInstance,
+ TTimeIntervalMinutes aStartTime,
+ TBool aTimedNote,
+ TCalenWeekHour aHourData);
+
+ TBool HasInstance() const;
+ TBool IsTimed() const;
+private:
+ CCalHourItem();
+ void ConstructL(CCalInstance& aInstance);
+ void ConstructL();
+
+public:
+ TTimeIntervalMinutes iStartTime;
+ CCalInstance* iInstance;
+ TBool iTimedNote;
+ TCalenWeekHour iHourData;
+
+
+ };
+
+
+/**
+ * Container control for Week View.
+ */
+NONSHARABLE_CLASS( CCalenWeekContainer ) : public CCalenContainer,
+ public MCalenWeekCursorObserver,
+ public GestureHelper::MGestureObserver
+ {
+public:
+ enum TLocaleChangeRedraw
+ {
+ ERedrawAll,
+ ERedrawWeek
+ };
+
+public: // Constructors and destructor
+ /**
+ * C++ constructor.
+ */
+ CCalenWeekContainer( CCalenNativeView* aView,
+ TTime& aTime,
+ TInt& aSelectedRowNumber,
+ TTimeIntervalMinutes& aFirstRowTime,
+ MCalenServices& aServices );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCalenWeekContainer();
+
+public:
+ /**
+ * Create icon indices
+ */
+ void CreateIconIndicesL( RArray<MCalenServices::TCalenIcons>& aIndexArray );
+
+public: // New Function
+ /**
+ * Check with the layoutmanager for any layout chnanges
+ */
+ void CheckLayoutAndExtensionL();
+
+ /**
+ * Sets cursor in Active day
+ */
+ void SetCursorToActiveDayL();
+
+ /**
+ * Redrawing when locale change
+ * @param aFlag Redraw flag: ERedrawAll | ERedrawWeek
+ */
+ void RedrawLocaleChangeL(TLocaleChangeRedraw aFlag);
+
+ /**
+ * Set Active context based on currently focused cell.
+ * @param aInstAvailable Flag to find instance available
+ */
+ void SetActiveContextFromHighlightL(TBool aInstAvailable = ETrue);
+
+ /**
+ * Step 1 of construction of grid data.
+ */
+ void BeginPopulationWithInstanceViewL();
+
+ /**
+ * Step 2 of construction of grid data.
+ */
+ void FirstPopulateOfSlotTableL();
+
+ /**
+ * Step 3 of construction of grid data.
+ */
+ void SecondPopulateOfSlotTableL();
+
+ /**
+ * Step 4 of construction of grid data.
+ */
+ void CompletePopulationL();
+
+ /**
+ * Hides preview popup/preview pane
+ */
+ void HidePopup();
+ /**
+ * Search for top row.
+ */
+ TInt SearchTopIndexL(TInt aColumn);
+
+ /**
+ * Updates preview popup/preview pane
+ */
+ void UpdatePreviewPaneL();
+
+ /*
+ * @brief Find calendarinfo object based on calendar name
+ *
+ * @param aName calendar filename
+ * @param aCalendarInfo referance for calendarinfo
+ * @return TBool find status
+ */
+ static TBool CalendarInfoIdentifierL(const HBufC* aName,
+ const CCalCalendarInfo& aCalendarInfo);
+
+ /*
+ * Cleanup instances
+ */
+ void CleanupInstances();
+
+ /**
+ * returns previewpane pointer
+ */
+ const MCalenPreview* PreviewPane();
+
+public:
+ /**
+ * Handles navi decorator event in week view
+ * @param aDirection left or right
+ */
+ void HandleNaviDecoratorEventL(TInt aDirection);
+ void HandleLongTapEventL( const TPoint& aPenEventLocation,
+ const TPoint& aPenEventScreenLocation );
+
+ /**
+ * Handle the gesture event
+ * @param aEvent event describing the gesture
+ */
+ virtual void HandleGestureL( const GestureHelper::MGestureEvent& aEvent );
+
+private: // New Function
+ TInt HighlightRowFromActiveContextL(TInt aColumn);
+
+ /**
+ * Sets highlight item in ListBox at active time
+ */
+ void SelectHighlightedCellAndVisibleRangeL();
+
+ /**
+ * Get the available info bar rect for this container
+ */
+ TRect InfoBarRectL( TBool aToolbarAvailable );
+
+ /**
+ * Calculates and Sets day from ListBox column
+ */
+ void CalcDayFromColumn();
+
+ /**
+ * Populate whole week daylist from Agenda server
+ */
+ void PopulatesDayListsL();
+
+ /**
+ * Fills slot table with timed notes.
+ */
+ void InsertTimedNotesToSlotTableL();
+
+ /**
+ * Fills slot table with non-timed notes
+ */
+ void InsertNonTimedNotesToSlotTableL();
+
+ /**
+ * Sets Week data to ListBox
+ */
+ void SetListBoxDataL();
+
+ /**
+ * The note contained in within a time is searched.
+ * ex)
+ * aDayList (Note A 9:00-, Note B 9:30-, Note C 10:00)
+ * aTime 9:00
+ * Return list (Note A 9:00-, Note B 9:30-)
+ * @param aDayList Data list of one day
+ * @param aTime within a time
+ */
+ void SearchMatchedNoteL(RPointerArray <CCalInstance>& aDayList, TTime aTime);
+
+ /**
+ * Check specified entry whether Timed Note.
+ * @param entry Check a note
+ * @return ETrue : Timed note
+ */
+ TBool IsTimedNoteL(CCalEntry& aEntry);
+
+ /**
+ * Reset slot time table.
+ */
+ void ResetSlotTable();
+
+ /**
+ * Create slot table
+ */
+ void InitSlotTableL();
+
+ TInt FindFirstItemOfColumn(TInt aColumn);
+ TInt FindItemFromColumnL(const TCalenInstanceId& aId, TInt aColumn);
+ //TInt FindFirstRowOfInstanceL(const TCalenInstanceId& aId, TInt aColumn);
+ TInt FindRowForTime(TTimeIntervalMinutes aTime);
+
+ /**
+ * Sets highlight item in ListBox
+ */
+ void SetHighlightAndVisibleRange(TInt aRow, TInt aColumn, TInt aTopLine);
+
+ /**
+ * Adjust active time when item is updated
+ * @param aId Note Id
+ */
+ //void AdjustActivetimeL(const CCalEntry& aEntry,const TCalTime& aInstanceTime);
+
+
+ /**
+ * Clear entry of array for cash
+ */
+ void ClearOneDayEntryCache();
+
+ //TInt SearchTopIndexL( TInt aColumn );
+
+ /**
+ * Gets time of top item in ListBox
+ * @return time of top item in ListBox
+ */
+ TTimeIntervalMinutes TopTime() const;
+
+ /**
+ * Arrow key pressed
+ */
+ TKeyResponse HorizontalMoveL(TInt aDir);
+
+
+ void PointerMovedL(TInt aNewColumn);
+ void HorizontalWeekMoveL(TInt aDir);
+
+
+ void FocusChangeForPopupL();
+
+ /**
+ * Draw day names
+ * @param aGc Graphic context
+ */
+ void DrawDayNamesL(CWindowGc& aGc) const;
+ void DrawBackground(CWindowGc& aGc) const;
+ void DrawGridLines(CWindowGc& aGc) const;
+
+ CCalenWeekView& WeekView() const;
+
+
+private: // From CCalenContainer
+ /**
+ * From CCalenContainer.
+ * (no implementation)
+ * This methods is called after calendar settings have changed.
+ */
+ void UpdateSize();
+
+ /**
+ * 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 Date cahnge operation notification handler.
+ */
+ void NotifyChangeDateL();
+
+ /**
+ * Notify that item is added or changed.
+ * @param aEntry is the entry added or modified.
+ * @param aInstanceTime is time of the modified instance.
+ */
+ //void NotifyEntryChangeL(const CCalEntry& aEntry,const TCalTime& aInstanceTime);
+
+ /**
+ * Calling this will force to resource change to happen
+ * We will use the last requested resource change type.
+ */
+ void ForceResourceChange();
+
+private: // From CCoeControl
+ /**
+ * From CCoeControl Resizes child controls
+ */
+ void SizeChanged();
+ void FocusChanged( TDrawNow aDrawNow );
+
+ /**
+ * React to skin, dynamic layout and other resource changes
+ */
+ void HandleResourceChange(TInt aType);
+
+ /**
+ * From CCoeControl Return components count
+ */
+ 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 day name
+ */
+ 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;
+
+
+private: // From MActiveStep
+ /**
+ * From MActiveStep. Updates WeekView data
+ */
+ //TInt DoStepL();
+
+private: // From MCalenWeekCursorCallBack
+ TKeyResponse CursorMovedL(MCalenWeekCursorObserver::TCursorMove aDir);
+
+private: // New variables
+ CCalenWeekListbox* iListBox;
+ CDesCArrayFlat* iDesArray; // ListBox data
+ RPointerArray<CCalInstance> iIdList[KCalenDaysInWeek];
+ CWeekSlotArrayPtr iSlotTable[KCalenDaysInWeek];
+ RPointerArray<CCalInstance> iEntryCache;
+ RPointerArray<CCalInstance> iOneDayEntryCache;
+ MCalenPreview* iPreview;
+
+
+ TTime iStartDay; // first day of week of iCurrentDay
+ TInt iColumn;
+
+ // In current week view, number of rows reserved for non-timed
+ // notes
+ TInt iNonTimedAreaRowCount;
+
+ CAknsFrameBackgroundControlContext* iBackgroundSkinContext;
+
+ // Cached layout values (used in many places)
+ TAknLayoutRect i_listscroll_cale_week_pane;
+ TBool iViewPopulationComplete;
+
+ // View specific data, references to the view
+ TTime& iTime;
+ TInt& iSelectedRowNumber; // The row number of the highlighted cell.
+ TTimeIntervalMinutes& iFirstRowTime; // The offset of the topmost row on screen to the first row.
+
+ TBool iTopRowDefault;
+ TBool iRow;
+ TBool iValidDay;
+ TBool iHourChange;
+
+ /**
+ * Gesture helper provides functionality to convert a stream of pointer
+ * events into a logical gesture.
+ * Own.
+ */
+ // Own: Gesture helper
+ GestureHelper::CGestureHelper* iGestureControl;
+ TBool iGestureHandled;
+ };
+
+#endif //CALENWEEKCONT_H
+
+
+// End of File