diff -r 4ea6f81c838a -r 0e9bb658ef58 widgetmodel/alfwidgetmodel/inc/alfrecyclinggridelementimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widgetmodel/alfwidgetmodel/inc/alfrecyclinggridelementimpl.h Wed Sep 01 12:23:18 2010 +0100 @@ -0,0 +1,240 @@ +/* +* 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: Class for private implementation for AlfRecyclingGridElement. +* +*/ + + +#ifndef ALFRECYCLINGGRIDELEMENTIMPL_H +#define ALFRECYCLINGGRIDELEMENTIMPL_H + +#include "alf/alfrecyclinggridelement.h" +#include + +class CAlfVisual; +class CAlfLayout; +class TAlfEvent; + +namespace Alf + { +class CAlfWidgetControl; +class IAlfVariantType; +class IAlfBranch; +class IAlfElement; + +/** + * Implementation class used with the implPtr paradigm. + */ +OSN_NONSHARABLE_CLASS( AlfRecyclingGridElementImpl ) + { +public: + /** + * Gets the unit. + * + * @since S60 ?S60_version + * @return The unit. + */ + AlfRecyclingGridElementImpl( + AlfRecyclingGridElement& aOwner, + int aNumColumns, + int aNumRows); + /** + * Gets the unit. + * + * @since S60 ?S60_version + * @return The unit. + */ + ~AlfRecyclingGridElementImpl(); + /** + * setFillStyle. + * + * @since S60 ?S60_version + * @return The unit. + */ + void setFillStyle(AlfRecyclingGridElement::FillStyle aFillStyle, int aFillStyleParam); + + /** + * setAnimationTimes. + * + * @since S60 ?S60_version + * @return The unit. + */ + void setAnimationTimes( int aScrollingTime, + int aFadeInTime, int aFadeInDelay, + int aFadeOutTime, int aFadeOutDelay ); + /** + * createVisualTree. + * + * @since S60 ?S60_version + * @return The unit. + */ + CAlfVisual* createVisualTree( + IAlfVariantType& aData, uint aDataID, + CAlfLayout* aParentLayout, int aLayoutIndex ); + /** + * accept. + * + * @since S60 ?S60_version + * @return The unit. + */ + bool accept( CAlfWidgetControl& aControl, const TAlfEvent& aEvent ) const; + /** + * offerEvent. + * + * @since S60 ?S60_version + * @return The unit. + */ + bool offerEvent( CAlfWidgetControl& aControl, const TAlfEvent& aEvent ); + /** + * setActiveStates. + * + * @since S60 ?S60_version + * @return The unit. + */ + void setActiveStates( unsigned int aStates ); + /** + * Sets AlfWidgetEventHandlerInitData to event handler. + * + * @param aData A data structure which contains for example id of the event + * handler. + */ + void setEventHandlerData( const AlfWidgetEventHandlerInitData& /*aData*/ ) { } + + /** + * Returns AlfWidgetEventHandlerInitData. + * + * @return A pointer to AlfWidgetEventHandlerInitData structure which contains + * for example id of the event handler. + */ + AlfWidgetEventHandlerInitData* eventHandlerData() { return NULL; } + /** + * createChildVisualTree. + * + * @since S60 ?S60_version + * @return The unit. + */ + void createChildVisualTree( IAlfElement* aElement, + IAlfVariantType& aChildData, + IAlfBranch& aData, + int aIndex, uint aDataID ); + /** + * removeChildVisualTree. + * + * @since S60 ?S60_version + * @return The unit. + */ + void removeChildVisualTree( IAlfElement* aElement, IAlfBranch& aData, int aIndex, uint aDataID ); + /** + * removeAndDestroyVisuals. + * + * @since S60 ?S60_version + * @return The unit. + */ + void removeAndDestroyVisuals( int aTimeMilliseconds ); + +private: + + /** + * Api to naviagte by a single row or column. + * @since S60 ?S60_version + * @param aControl - Widget Control + * @param aPageUp - indicates the direction either a page up or page down + */ + bool moveSingleRowOrColumn( CAlfWidgetControl& aControl, bool aPageUp); + + /** + * APi to find the point in the grid for a given index in the visual array on the recycle grid . + * @since S60 ?S60_version + * @param aInd - index of the element + * @return TPoint - Point or cordinates + */ + TPoint calculateChildPos(int aInd) const; + + /** + * APi to find the index for a given point + * @since S60 ?S60_version + * @param aPos- position for whom the index needs to be found out + * @return int - Index of the cordinate + */ + int calculateChildInd(TPoint aPos) const; + + /** + * Internal APi to do the index calcuation for navigation and recycling + */ + void doPositioningAndScrolling( CAlfWidgetControl& aControl,uint aEventID); + +private: + + AlfRecyclingGridElement& mOwner; + + //class Data + /** + * The number of visible rows and columns. + */ + int mNumVisibleColumns, mNumVisibleRows; + + /** + * The number of rows and columns in the grid layout. + */ + int mNumColumns, mNumRows; + + /** + * The strategy for adding new items to the grid + */ + AlfRecyclingGridElement::FillStyle mFillStyle; + + /** + * The maximum number of items used with EColumnsFirst and ERowsFirst fill styles + */ + int mFillStyleParam; + + + /** + * Duration of the scrolling animation + */ + int mScrollingTime; + + /** + * Duration of the fade in animation + */ + int mFadeInTime; + + /** + * Delay before the fade in animation + */ + int mFadeInDelay; + + /** + * Duration of the fade out animation + */ + int mFadeOutTime; + + /** + * Delay before the fade out animation + */ + int mFadeOutDelay; + + /** + * The logical scrolling offset. + */ + TPoint mScrollOffset; + + bool mHorizontalOffset; + bool mVerticalOffset; + unsigned int mActiveStates; + }; + + } // namespace Alf + +#endif // C_ALFWIDGETEVENTHANDLERIMPL_H