diff -r 000000000000 -r 4e91876724a2 photosgallery/viewframework/visuallistmanager/inc/glxvisualiconmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/viewframework/visuallistmanager/inc/glxvisualiconmanager.h Thu Dec 17 08:45:44 2009 +0200 @@ -0,0 +1,180 @@ +/* +* Copyright (c) 2008-2009 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: Icon manager for visuals +* +*/ + + + + +/** + * @internal reviewed 31/07/2007 by Rowland Cook + */ + + +#ifndef C_GLXVISUALICONMANAGER_H +#define C_GLXVISUALICONMANAGER_H + +#include + +#include "glxiconmanager.h" +#include +#include "mglxvisualobjectstatusobserver.h" +#include +#include + +// FORWARD DECLARES +struct TIconInfo; +class CAlfVisual; +class TGlxMediaId; +class CAlfTexture; +class CGlxTextureManager; + +/** + * CGlxVisualIconManager + * + * Icon manager for visuals + * Handles adding default or broken icon if required. + * If thumbnail not present look for icon attribute + * @author M Byrne + * @lib glxvisuallistmanager + */ +NONSHARABLE_CLASS( CGlxVisualIconManager ) : public CGlxIconManager, + public MGlxAnimationObserver, public MGlxVisualObjectStatusObserver + { + public: + /** + * Static constructor + * @param aMediaList reference to media list + * @param aVisualList reference to associated visual list + * @return pointer to CGlxVisualIconManager instance + */ + IMPORT_C static CGlxVisualIconManager* NewL(MGlxMediaList& aMediaList, + MGlxVisualList& aVisualList); + + /** + * Destructor + */ + IMPORT_C ~CGlxVisualIconManager(); + + /** + * Trigger the image-loading animation + * @param aItemIndex Index of item to animate + */ + IMPORT_C void AnimateImageLoadedL(TInt aItemIndex); + + public: // from MGlxAnimationObserver + virtual void AnimationComplete(MGlxAnimation* aAnimation); + + private: // From MGlxVisualObjectStatusObserver + void VisualStatusChangedL( CGlxVisualObject& aObject, + TInt aListIndex, TBool aHasThumbnail ); + void ThumbnailLoadedL( CGlxVisualObject& aObject ); + + private: + /** + * Identifiers for default and broken icons + */ + enum TGlxVisualIcon + { + EDefaultIcon, + EBrokenIcon, + EEmptyIcon, + EBlackBrush + }; + + private: + /** + * Constructor + * @param aMediaList refernce to media list + * @param aVisualList reference to associated visual list + */ + CGlxVisualIconManager( + CGlxTextureManager& aTextureManager, + MGlxMediaList& aMediaList, + MGlxVisualList& aVisualList ); + void ConstructL(); + + /** + * Check if thumbnail attribute is present for specifed vis. + * If not add icon if present or add default icon + * @param aIndex index of item in media list + */ + void CheckThumbnailAttributesL( TInt aIndex ); + + /** + * Trigger the image-loading animation + * @param aItemVisual Visual of item to animate + */ + void AnimateImageLoadedL(CAlfVisual* aItemVisual); + /** + * Helper function used be HandleError + * @param aError the error code to handle. + */ + void DoHandleErrorL( TInt aError ); + + /** + * Select the icon to be used for a visual. + * @param aIndex Index of item in media list + * @return Pointer to an icon texture. + */ + const CAlfTexture* SelectIconTextureL( TInt aIndex ); + + /** + * Helper method to compare two icons + */ + static TBool MatchIcon( const TIconInfo& aIcon1, + const TIconInfo& aIcon2 ); + + /** + * Helper function to determine if an item is a DRM protected video. + * @param aItem, the item to test + * @return ETrue if the item is a DRM protected video, EFalse otherwise + */ + TBool IsDrmVideoItem( const TGlxMedia& aItem ); + + private: + /** @see MGlxVisualListObserver::HandleVisualAddedL */ + void HandleVisualAddedL( CAlfVisual* aVisual, TInt aIndex, MGlxVisualList* aList ); + + /** @see MGlxMediaListObserver::HandleError */ + void HandleError( TInt aError ); + + private: + /// @ref texture manager + CGlxTextureManager& iTextureManager; + + // array of thumbnail icons added via icon attribute + RArray iThumbnailIcons; + + /// White texture for image-loading "flash" effect + CAlfTexture* iWhiteTexture; + + /// List of current animations, maintained in address order + RPointerArray iAnimations; + + // texture for default icon overlay not owned + CAlfTexture* iDefaultIconTexture; + + // texture for broken icon overlay not owned + CAlfTexture* iBrokenIconTexture; + + // texture for empty icon overlay not owned + CAlfTexture* iEmptyIconTexture; + + // array of icon textures (textures not owned) + RPointerArray< CAlfTexture > iIconTextureArray; + }; + +#endif // C_GLXVISUALICONMANAGER_H