/*+ −
* 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: Container for To-Do view's controls.+ −
*+ −
*/+ −
+ −
+ −
#ifndef TODOCONTAINER_H+ −
#define TODOCONTAINER_H+ −
+ −
// INCLUDES+ −
#include <aknlists.h>+ −
#include "calencontainer.h"+ −
+ −
// CONSTANTS+ −
+ −
// FORWARD DECLARATIONS+ −
class CAgnTodo;+ −
class CCalenTodoController;+ −
class CEikColumnListBox;+ −
class TAknsItemID;+ −
class CAknIconArray;+ −
class CAknSingleGraphicHeadingStyleListBox;+ −
class CCalInstance;+ −
+ −
// CLASS DECLARATION+ −
+ −
/**+ −
* Extended class for itemDrawer from CSingleHeadingStyleItemDrawer+ −
* We need this since itemDrawer extends the DrawItem function.+ −
* some extra functinalities are done in this DrawItem.+ −
*/+ −
NONSHARABLE_CLASS( CCalenTodoListBoxItemDrawer ) : public CSingleHeadingStyleItemDrawer+ −
{+ −
+ −
public:+ −
CCalenTodoListBoxItemDrawer( MTextListBoxModel* aTextListBoxModel,+ −
const CFont* aFont,+ −
CColumnListBoxData* aFormattedCellData,+ −
CEikListBox* aListBox ,+ −
const RArray<TInt>& aColorUidArray);+ −
+ −
~CCalenTodoListBoxItemDrawer();+ −
+ −
private: // from CSingleHeadingStyleItemDrawer+ −
void DrawItem(TInt aItemIndex, + −
TPoint aItemRectPos, + −
TBool aItemIsSelected, + −
TBool aItemIsCurrent, + −
TBool aViewIsEmphasized,+ −
TBool aViewIsDimmed) const;+ −
+ −
private:+ −
CEikListBox* iListBox; //Not owns+ −
const RArray<TInt>& iColorUidArray; //Not owns+ −
};+ −
+ −
/**+ −
* Extension class for todo listbox ( CAknSingleGraphicHeadingStyleListBox )+ −
* Only item drawer , column data and listbox view is created in this class + −
*/+ −
NONSHARABLE_CLASS( CCalenTodoListBox ) : public CAknSingleGraphicHeadingStyleListBox+ −
{ + −
public:+ −
CCalenTodoListBox(const RArray<TInt>& aColorUidArray);+ −
+ −
private: //from CAknSingleGraphicHeadingStyleListBox+ −
CListBoxView* MakeViewClassInstanceL();+ −
void CreateItemDrawerL();+ −
void SizeChanged();+ −
+ −
private:+ −
void SizeChangedL();+ −
+ −
private:+ −
const RArray<TInt>& iColorUidArray;//Not owns+ −
};+ −
+ −
/**+ −
* Container base class of ToDo application.+ −
*/+ −
NONSHARABLE_CLASS( CCalenTodoContainer ) : public CCalenContainer,+ −
public MEikListBoxObserver+ −
{+ −
public: // New function+ −
/**+ −
* C++ constructor.+ −
*/+ −
CCalenTodoContainer( CCalenNativeView* aView,+ −
TInt& aHighlightedRowNumber,+ −
TInt& aFirstEntryOnScreenIndex,+ −
MCalenServices& aServices );+ −
+ −
/**+ −
* Destructor.+ −
*/+ −
virtual ~CCalenTodoContainer();+ −
public:+ −
/**+ −
* Handles list box events.+ −
* @param aListBox The originating list box.+ −
* @param aEventType A code for the event.+ −
*/+ −
void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);+ −
+ −
public: // New functions+ −
/**+ −
* Third phase constructor.+ −
*/+ −
void ConstructImplL();+ −
+ −
/**+ −
* Step 1 of construction of view data.+ −
*/+ −
void BeginPopulationWithInstanceViewL();+ −
+ −
/**+ −
* Step 2 of construction of view data.+ −
*/+ −
void CompletePopulationL();+ −
+ −
/**+ −
* Return a focused item index.+ −
* @return Item index. (>= 0)+ −
* Item is empty. (< 0)+ −
*/+ −
TInt CurrentItemIndex() const;+ −
+ −
/**+ −
* Return pointer of controler for Agenda server.+ −
* @return CCalenTodoController pointer+ −
*/+ −
CCalenTodoController* Controller();+ −
+ −
/**+ −
* Set current item index.+ −
* @param aIndex Item index+ −
*/+ −
void SetCurrentItemIndex(TInt aIndex);+ −
+ −
/**+ −
* Return list box pointer.+ −
* @return List box pointer.+ −
*/+ −
CEikColumnListBox* ListBox() const;+ −
+ −
/**+ −
* Return marked count of list box.+ −
* @return Marked count.+ −
*/+ −
TInt MarkedCount();+ −
+ −
/**+ −
* @param aMark Select to mark or unmark.+ −
**/+ −
void MarkAllL(TBool aMark);+ −
+ −
/**+ −
* @param aMark Select to mark or unmark.+ −
**/+ −
void MarkCurrentL(TBool aMark);+ −
+ −
/**+ −
* Checks if currently focused item is selected(marked).+ −
**/+ −
TBool IsCurrentItemSelected(void);+ −
+ −
/**+ −
* Checks if view is empty or not+ −
* @return ETrue if view is empty.+ −
**/+ −
TBool IsEmptyView() const;+ −
+ −
/**+ −
* Get the available preview pane rect for this container+ −
*/+ −
TRect PreviewRectL();+ −
+ −
+ −
/**+ −
* From CCalenContainer+ −
*/+ −
void HandleNaviDecoratorEventL(TInt aDirection);+ −
+ −
void HandleLongTapEventL( const TPoint& aPenEventLocation, + −
const TPoint& aPenEventScreenLocation );+ −
+ −
private: // New functions+ −
/**+ −
* Set current item index and draw list.+ −
*/+ −
void SetCurrentItemIndexAndDraw();+ −
+ −
/**+ −
* Prepare setting index of current item.+ −
*/+ −
//void PrepareSetCurrentItemIndexL();+ −
+ −
/**+ −
* Create all item data and draw for list box.+ −
*/+ −
void CreateEntryItertorL();+ −
+ −
/**+ −
* Make a list data of ToDo list.+ −
* @param aInstance Agenda instance pointer+ −
* @param aPtr List data pointer+ −
*/+ −
void MakeListDataL(CCalInstance* aInstance, TPtr& aPtr);+ −
+ −
/**+ −
* Create skinable icons.+ −
* + −
*/+ −
void CreateAndAppendIconL( const TAknsItemID& aID,+ −
const TDesC& aFileName,+ −
const TInt aBitmapId,+ −
const TInt aMaskId,+ −
CAknIconArray* aIconList);+ −
+ −
/**+ −
* Replace a white space character in text buffer+ −
* by blank character (" ").+ −
* @param aBuf Text buffer+ −
*/+ −
void ReplaceToWhiteSpace(TDes& aBuf);+ −
+ −
/**+ −
* Sets the correct highlight, based on the context.+ −
*/+ −
void SetHighlightingL();+ −
+ −
private: // Functions from base classes+ −
/**+ −
* From CCoeControl, child control was resized.+ −
*/+ −
void SizeChanged();+ −
+ −
/**+ −
* From CCoeControl, return child control count.+ −
* @return Control count+ −
*/+ −
TInt CountComponentControls() const;+ −
+ −
/**+ −
* From CCoeControl, return child control pointer.+ −
* @param aIndex Child control index+ −
* @return Child control pointer.+ −
*/+ −
CCoeControl* ComponentControl(TInt aIndex) const;+ −
+ −
/**+ −
* From CCoeControl, process key event.+ −
* @param aKeyEvent The key event.+ −
* @param aType EEventKey | EEventKeyUp | EEventKeyDown.+ −
* @return EKeyWasNotConsumed : Key event was not consumed.+ −
*/+ −
TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,+ −
TEventCode aType);+ −
+ −
+ −
/**+ −
* From CCoeControl, process pointer event.+ −
*/+ −
void HandlePointerEventL(const TPointerEvent& aPointerEvent);+ −
+ −
void Draw(const TRect& /*aRect*/) const;+ −
+ −
/**+ −
* Pass skin information if needed+ −
*/+ −
TTypeUid::Ptr MopSupplyObject(TTypeUid aId);+ −
+ −
+ −
+ −
/**+ −
* From CCoeControl, Get help context.+ −
* @param aContext Help context+ −
*/+ −
void GetHelpContext(TCoeHelpContext& aContext) const;+ −
+ −
/**+ −
* From MActiveStep, reflesh ToDo data.+ −
*/+ −
TInt DoStepL();+ −
+ −
/**+ −
* From CCoeControl Handles a resource relative event+ −
* + −
* @param aType The type of change.+ −
*/+ −
void HandleResourceChange(TInt aType);+ −
+ −
public: // From CCalenContainer+ −
/**+ −
* This methods is called after calendar settings have changed.+ −
* See day, week and month container for implementation.+ −
*/+ −
void UpdateSize();+ −
+ −
/**+ −
* Handle focus events + −
*/+ −
void FocusChanged(TDrawNow aDrawNow);+ −
+ −
/**+ −
* Calling this will force to resource change to happen+ −
* We will use the last requested resource change type.+ −
*/+ −
void ForceResourceChange();+ −
+ −
/**+ −
* Create icon index+ −
*/+ −
void CreateIconIndicesL( RArray<MCalenServices::TCalenIcons>& aIndexArray );+ −
+ −
void CleanupInstances();+ −
+ −
private:+ −
+ −
/*+ −
* @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);+ −
+ −
protected: // Data+ −
CCalenTodoController* iController;+ −
+ −
private: // Data+ −
CAknSingleGraphicHeadingStyleListBox* iListBox;+ −
//CCalenTodoListBox* iListBox;+ −
// TInt iForceCurrentIndex;+ −
CDesCArrayFlat* iDesArray;+ −
+ −
RArray<TInt> iColorUidArray;+ −
+ −
enum TStepPopulate+ −
{+ −
ENothingDone,+ −
EPopulationDone,+ −
EDone+ −
};+ −
+ −
TStepPopulate iStepState;+ −
HBufC* iEmptyListText;+ −
// view specific data, references to view data+ −
TInt& iHighlightedRowNumber; // The row number highlighted.+ −
TInt& iFirstEntryOnScreenIndex; // The offset of the topmost item on screen to the first entry.+ −
};+ −
+ −
#endif // TODOCONTAINER_H+ −
+ −
+ −
// End of File+ −