--- /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 <eikappui.h>
+#include <eikenv.h>
+#include <glxlog.h>
+#include <glxtracer.h>
+
+#include <glxuiutility.h>
+#include "glxtexturemanager.h"
+#include <mglxmedialist.h>
+
+#include <alf/alftexture.h>
+#include <alf/alfvisual.h>
+#include <alf/alfimage.h>
+#include <alf/alfimagebrush.h>
+#include <alf/alfbrusharray.h>
+
+// -----------------------------------------------------------------------------
+// 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; visIdx<mcount; visIdx++)
+ {
+ for(TInt brIdx =0; brIdx<brushCount; brIdx++)
+ {
+ RemoveFromItem(visIdx, brIdx);
+ }
+ }
+
+ iImageBrushArray.ResetAndDestroy();
+ iImageBrushArray.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// BaseConstructL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxIconManager::BaseConstructL()
+ {
+ TRACER("CGlxIconManager::BaseConstructL");
+ GLX_LOG_INFO("CGlxIconManager::BaseConstructL");
+ iUiUtility = CGlxUiUtility::UtilityL();
+ }
+
+// -----------------------------------------------------------------------------
+// CreateVisualFromIconL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxIconManager::CreateVisualFromIconL(TInt aIconResourceId,
+ TDesC& aFilename)
+ {
+ TRACER("CGlxIconManager::CreateVisualFromIconL");
+ GLX_LOG_INFO("CGlxIconManager::CreateVisualFromIconL");
+ // create image brush for our icon
+ CAlfTexture& iconTexture = iUiUtility->GlxTextureManager().
+ 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; i<brushCount;i++)
+ {
+ CAlfBrush* brush = &(brushArray->At(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; i<brushCount;i++)
+ {
+ CAlfBrush* brush = &(brushArray->At(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<TInt>& /*aItemIndexes*/, MGlxMediaList* /*aList*/)
+ {
+ // No implementation
+ }
+
+// -----------------------------------------------------------------------------
+// HandleAttributesAvailableL
+// -----------------------------------------------------------------------------
+//
+void CGlxIconManager::HandleAttributesAvailableL(TInt /*aItemIndex*/,
+ const RArray<TMPXAttribute>& /*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
+ }
+
+