diff -r 000000000000 -r 4e91876724a2 photosgallery/viewframework/visuallistmanager/src/glxiconmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/viewframework/visuallistmanager/src/glxiconmanager.cpp Thu Dec 17 08:45:44 2009 +0200 @@ -0,0 +1,421 @@ +/* +* 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 base class +* +*/ + + + + +/** + * @internal reviewed 31/07/2007 by Rowland Cook + */ + +#include "glxiconmanager.h" + +#include "mglxmedialistobserver.h" +#include "mglxvisuallistobserver.h" +#include "mglxvisuallist.h" + +#include +#include +#include +#include + +#include +#include "glxtexturemanager.h" +#include + +#include +#include +#include +#include +#include + +// ----------------------------------------------------------------------------- +// Parameters for icon/brush creation +// ----------------------------------------------------------------------------- +// +EXPORT_C TGlxIconManagerParams::TGlxIconManagerParams(TReal32 aTlX, + TReal32 aTlY, TReal32 aBrX, TReal32 aBrY, + TReal32 aOpacity) + :iTlX(aTlX), iTlY(aTlY), iBrX(aBrX), iBrY(aBrY), iOpacity(aOpacity) + { + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +// +EXPORT_C CGlxIconManager::~CGlxIconManager() + { + TRACER("CGlxIconManager::~CGlxIconManager"); + GLX_LOG_INFO("CGlxIconManager::~CGlxIconManager"); + if(iUiUtility) + { + iUiUtility->Close(); + } + + + // remove brushes we've added to visuals in visual list + TInt mcount = iMediaList.Count(); + TInt brushCount = iImageBrushArray.Count(); + + for(TInt visIdx =0; visIdxGlxTextureManager(). + CreateIconTextureL(aIconResourceId, aFilename); + + CreateVisualFromTextureL( iconTexture ); + } + +// ----------------------------------------------------------------------------- +// CreateVisualFromIconL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGlxIconManager::CreateVisualFromIconL(TInt aIconResourceId, + TDesC& aFilename, TGlxIconManagerParams& aParams) + { + TRACER("CGlxIconManager::CreateVisualFromIconL"); + GLX_LOG_INFO("CGlxIconManager::CreateVisualFromIconL"); + // create image brush for our icon + CAlfTexture& iconTexture = iUiUtility->GlxTextureManager(). + CreateIconTextureL(aIconResourceId, aFilename); + + CreateVisualFromTextureL( iconTexture, aParams ); + } + +// ----------------------------------------------------------------------------- +// CreateVisualFromTextureL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGlxIconManager::CreateVisualFromTextureL( CAlfTexture& aTexture ) + { + TRACER("CGlxIconManager::CreateVisualFromTextureL( CAlfTexture& aTexture )"); + GLX_LOG_INFO("CGlxIconManager::CreateVisualFromTextureL"); + TAlfImage img( aTexture ); + + CAlfImageBrush* imageBrush = + CAlfImageBrush::NewL( *( iUiUtility->Env() ), img ); + CleanupStack::PushL(imageBrush); + + imageBrush->SetLayer(EAlfBrushLayerForeground); + + /// @todo Remove these 2 lines when Hui fixes the image brush rendering bug + imageBrush->SetBorders(-1,-1,-1,-1); + // imageBrush->SetClipToVisual(ETrue); + + iImageBrushArray.AppendL(imageBrush); + CleanupStack::Pop(imageBrush); + } + +// ----------------------------------------------------------------------------- +// CreateVisualFromTextureL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGlxIconManager::CreateVisualFromTextureL( + CAlfTexture& aTexture, TGlxIconManagerParams& aParams ) + { + TRACER("CGlxIconManager::CreateVisualFromTextureL 2"); + GLX_LOG_INFO("CGlxIconManager::CreateVisualFromTextureL 2"); + TAlfImage img( aTexture ); + img.SetTexCoords(aParams.iTlX, aParams.iTlY, aParams.iBrX, aParams.iBrY ); + + CAlfImageBrush* imageBrush = + CAlfImageBrush::NewL( *iUiUtility->Env(), img ); + CleanupStack::PushL(imageBrush); + + imageBrush->SetLayer( EAlfBrushLayerForeground ); + + /// @todo Remove these 2 lines when Hui fixes the image brush rendering bug + imageBrush->SetBorders(-1,-1,-1,-1); + // imageBrush->SetClipToVisual(ETrue); + + TAlfTimedValue opacity( aParams.iOpacity, 0 ); + imageBrush->SetOpacity( opacity ); + + iImageBrushArray.AppendL(imageBrush); + CleanupStack::Pop(imageBrush); + } + +// ----------------------------------------------------------------------------- +// AddIconToItemL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGlxIconManager::AddIconToItemL(TInt aIndex, TInt aBrushIndex) + { + TRACER("CGlxIconManager::AddIconToItemL"); + GLX_LOG_INFO("CGlxIconManager::AddIconToItemL"); + CAlfVisual* vis = iVisualList.Visual(aIndex); + AddIconToItemL(vis, aBrushIndex); + } + +// ----------------------------------------------------------------------------- +// AddIconToItemL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGlxIconManager::AddIconToItemL(CAlfVisual* aVisual, TInt aBrushIndex) + { + TRACER("CGlxIconManager::AddIconToItemL 2"); + GLX_LOG_INFO("CGlxIconManager::AddIconToItemL 2"); + if(aVisual) + { + // only add if not already present + if(BrushPositionInVisual(aVisual, aBrushIndex) == KErrNotFound) + { + aVisual->EnableBrushesL(); + aVisual->Brushes()->AppendL(iImageBrushArray[aBrushIndex], + EAlfDoesNotHaveOwnership ); + // aVisual->SetChanged(); + } + } + } + +// ----------------------------------------------------------------------------- +// RemoveFromItemL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGlxIconManager::RemoveFromItem(TInt aIndex, TInt aIconIndex) + { + TRACER("CGlxIconManager::RemoveFromItem"); + GLX_LOG_INFO("CGlxIconManager::RemoveFromItem"); + CAlfVisual* vis = iVisualList.Visual(aIndex); + RemoveFromItem(vis, aIconIndex); + } + +// ----------------------------------------------------------------------------- +// RemoveFromItemL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGlxIconManager::RemoveFromItem(CAlfVisual* aVisual, + TInt aIconIndex) + { + TRACER("CGlxIconManager::RemoveFromItem 2"); + GLX_LOG_INFO("CGlxIconManager::RemoveFromItem 2"); + if(aVisual && aIconIndex < iImageBrushArray.Count()) + { + CAlfBrushArray* brushArray = aVisual->Brushes(); + if ( brushArray ) + { + TInt brushCount = brushArray->Count(); + for(TInt i = 0; iAt(i)); + if(brush==iImageBrushArray[aIconIndex]) + { + brushArray->Remove(i); + // aVisual->SetChanged(); + break; + } + } + } + } + } + +// ----------------------------------------------------------------------------- +// BrushPositionInVisual +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CGlxIconManager::BrushPositionInVisual(TInt aListIndex, + TInt aBrushIndex) + { + TRACER("CGlxIconManager::BrushPositionInVisual"); + GLX_LOG_INFO("CGlxIconManager::BrushPositionInVisual"); + CAlfVisual* vis = iVisualList.Visual( aListIndex ); + return BrushPositionInVisual(vis, aBrushIndex ); + } + +// ----------------------------------------------------------------------------- +// BrushPositionInVisual +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CGlxIconManager::BrushPositionInVisual( CAlfVisual* aVisual, + TInt aBrushIndex) + { + TRACER("CGlxIconManager::BrushPositionInVisual 2"); + GLX_LOG_INFO("CGlxIconManager::BrushPositionInVisual 2"); + TInt pos = KErrNotFound; + + if(aVisual && aBrushIndex < iImageBrushArray.Count()) + { + CAlfBrushArray* brushArray = aVisual->Brushes(); + if ( brushArray ) + { + TInt brushCount = brushArray->Count(); + for(TInt i = 0; iAt(i)); + if(brush==iImageBrushArray[aBrushIndex]) + { + pos = i; + break; + } + } + } + } + return pos; + } + +// ----------------------------------------------------------------------------- +// HandleItemAddedL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleItemAddedL(TInt /*StartIndex*/, TInt /*aEndIndex*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleMediaL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleMediaL(TInt /*aListIndex*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleItemRemovedL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleItemRemovedL(TInt /*aStartIndex*/, TInt /*aEndIndex*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleItemModifiedL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleItemModifiedL(const RArray& /*aItemIndexes*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleAttributesAvailableL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleAttributesAvailableL(TInt /*aItemIndex*/, + const RArray& /*aAttributes*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleFocusChangedL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleFocusChangedL(NGlxListDefs::TFocusChangeType /*aType*/, TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleItemSelectedL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleItemSelectedL(TInt /*aIndex*/, TBool /*aSelected*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleMessageL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleMessageL(const CMPXMessage& /*aMessage*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + + +// ----------------------------------------------------------------------------- +// HandleFocusChangedL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleFocusChangedL(TInt /*aFocusIndex*/, TReal32 /*aItemsPerSecond*/, MGlxVisualList* /*aList*/, NGlxListDefs::TFocusChangeType /*aType*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleSizeChanged +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleSizeChanged( const TSize& /*aSize*/, MGlxVisualList* /*aList*/) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleVisualRemoved +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleVisualRemoved( const CAlfVisual* /*aVisual*/, MGlxVisualList* /*aList*/ ) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// HandleVisualAddedL +// ----------------------------------------------------------------------------- +// +void CGlxIconManager::HandleVisualAddedL(CAlfVisual* /*aVisual*/, TInt /*aIndex*/,MGlxVisualList* /*aList*/ ) + { + // No implementation + } + +// ----------------------------------------------------------------------------- +// Constructor +// ----------------------------------------------------------------------------- +// +EXPORT_C CGlxIconManager::CGlxIconManager(MGlxMediaList& aMediaList, MGlxVisualList& aVisList) + : iMediaList(aMediaList), iVisualList(aVisList) + { + // No implementation + } + +