diff -r 000000000000 -r f72a12da539e menufw/menufwui/mmwidgets/inc/mmitemsdatacache.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menufw/menufwui/mmwidgets/inc/mmitemsdatacache.h Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,129 @@ +/* +* 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: +* Version : 2 << Don't touch! Updated by Synergy at check-out. +* +*/ + +#ifndef MMITEMSDATACACHE_H +#define MMITEMSDATACACHE_H + +#include +#include + +class CMmCacheForItem; + +/** + * Provides a cache of data needed to draw every item in grid or list view. + * This class is only used by CMmListBoxItemDrawer. + */ +NONSHARABLE_CLASS( CMmItemsDataCache ): public CBase + { +public: + /** + * Creates new CMmItemsDataCache object. + */ + static CMmItemsDataCache* NewLC(); + + /** + * Creates new CMmItemsDataCache object. + */ + static CMmItemsDataCache* NewL(); + + /** + * Returns item cache object for an item at specified index. + * + * @param aItemIndex Item index + * @return Item cache object. + */ + CMmCacheForItem* GetItemCacheL( TInt aItemIndex ); + + /** + * Gets an integer identifier of a template of given name. + * The identifier is guaranteed to be unique among other + * identifiers obtained from this instance of CMmItemsDataCache + * object. + * Such identifier can be used to perform fast template + * comparisons in the CMmListBoxItemDrawer code. + * @c TMmSubcellsSetupCode code assumes that the template + * identifier will not exceed 255. Assumption will be met unless + * there are more that 256 different templates used in one suite + * which is extremely unlikely. + * + * @param aTemplateName Name of a template. + * @return Template identifier based on template name. + */ + TInt GetTemplateIdentifierL( const TDesC8& aTemplateName ); + + /** + * Translates a template identifier obtained from @c GetTemplateIdentifierL + * into a regular string containing template name. + * + * @param aTemplateIdentifier Template identifier from GetTemplateIdentifierL. + * @return Template name. + */ + const TDesC8& GetTemplateNameByIdentifier( TInt aTemplateIdentifier ) const; + + /** + * Marks the whole data in cache as outdated so that + * it cannot possibly be used until it is updated by + * setting up subcells in normal (non-cached) mode. + */ + void Invalidate(); + + /** + * Reduces the number of cache entries to given number. + * If there are less entries than aItemCount then nothing + * is done. + * + * @param aItemCount number of items to store cached data for + */ + void Trim( TInt aItemCount ); + + /** + * Standard C++ virtual destructor. + */ + ~CMmItemsDataCache(); +protected: + + /** + * Standard C++ constructor. + */ + CMmItemsDataCache(); + + /** + * 2nd phase constructor. + */ + void ConstructL(); + +protected: // data + + /** + * Array of cache objects for individual items. + * Own. + */ + RPointerArray iItemCacheArr; + + /** + * Array of template names used by @c GetTemplateIdentifierL and + * @c GetTemplateNameByIdentifier methods. Template identifiers + * that @c GetTemplateIdentifierL returns are in fact indices in + * this array. + * Own. Contents of the array owned too. + */ + RPointerArray iTemplateNames; + + }; + +#endif // MMITEMSDATACACHE_H