photosgallery/viewframework/visuallistmanager/src/glxiconmanager.cpp
changeset 0 4e91876724a2
child 18 bcb43dc84c44
equal deleted inserted replaced
-1:000000000000 0:4e91876724a2
       
     1 /*
       
     2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:    Icon manager base class
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 /**
       
    22  * @internal reviewed 31/07/2007 by Rowland Cook
       
    23  */
       
    24  
       
    25 #include "glxiconmanager.h"
       
    26 
       
    27 #include "mglxmedialistobserver.h"
       
    28 #include "mglxvisuallistobserver.h"
       
    29 #include "mglxvisuallist.h"
       
    30 
       
    31 #include <eikappui.h>
       
    32 #include <eikenv.h>
       
    33 #include <glxlog.h>
       
    34 #include <glxtracer.h>
       
    35 
       
    36 #include <glxuiutility.h>
       
    37 #include "glxtexturemanager.h"
       
    38 #include <mglxmedialist.h>
       
    39 
       
    40 #include <alf/alftexture.h>
       
    41 #include <alf/alfvisual.h>
       
    42 #include <alf/alfimage.h>
       
    43 #include <alf/alfimagebrush.h>
       
    44 #include <alf/alfbrusharray.h>
       
    45 
       
    46 // -----------------------------------------------------------------------------
       
    47 // Parameters for icon/brush creation
       
    48 // -----------------------------------------------------------------------------
       
    49 //
       
    50 EXPORT_C TGlxIconManagerParams::TGlxIconManagerParams(TReal32 aTlX, 
       
    51                                 TReal32 aTlY, TReal32 aBrX, TReal32 aBrY,
       
    52                                 TReal32 aOpacity)
       
    53 	:iTlX(aTlX), iTlY(aTlY), iBrX(aBrX), iBrY(aBrY), iOpacity(aOpacity)
       
    54 	{
       
    55 	}
       
    56 
       
    57 // -----------------------------------------------------------------------------
       
    58 // Destructor
       
    59 // -----------------------------------------------------------------------------
       
    60 //	
       
    61 EXPORT_C CGlxIconManager::~CGlxIconManager()
       
    62 	{
       
    63 	TRACER("CGlxIconManager::~CGlxIconManager");
       
    64 	GLX_LOG_INFO("CGlxIconManager::~CGlxIconManager");
       
    65 	if(iUiUtility)
       
    66 		{
       
    67         iUiUtility->Close();
       
    68         }
       
    69                 
       
    70     
       
    71     // remove brushes we've added to visuals in visual list
       
    72     TInt mcount = iMediaList.Count();
       
    73     TInt brushCount = iImageBrushArray.Count();
       
    74 
       
    75     for(TInt visIdx =0; visIdx<mcount; visIdx++)
       
    76         {
       
    77         for(TInt brIdx =0; brIdx<brushCount; brIdx++)
       
    78             {
       
    79             RemoveFromItem(visIdx, brIdx);
       
    80             }
       
    81         }
       
    82 		
       
    83 	iImageBrushArray.ResetAndDestroy();
       
    84 	iImageBrushArray.Close();
       
    85 	}
       
    86 
       
    87 // -----------------------------------------------------------------------------
       
    88 // BaseConstructL
       
    89 // -----------------------------------------------------------------------------
       
    90 //	
       
    91 EXPORT_C void CGlxIconManager::BaseConstructL()
       
    92 	{
       
    93 	TRACER("CGlxIconManager::BaseConstructL");
       
    94 	GLX_LOG_INFO("CGlxIconManager::BaseConstructL");
       
    95     iUiUtility = CGlxUiUtility::UtilityL();
       
    96 	}
       
    97 
       
    98 // -----------------------------------------------------------------------------
       
    99 // CreateVisualFromIconL
       
   100 // -----------------------------------------------------------------------------
       
   101 //	
       
   102 EXPORT_C void CGlxIconManager::CreateVisualFromIconL(TInt aIconResourceId, 
       
   103                                                             TDesC& aFilename)
       
   104 	{
       
   105 	TRACER("CGlxIconManager::CreateVisualFromIconL");
       
   106 	GLX_LOG_INFO("CGlxIconManager::CreateVisualFromIconL");
       
   107 	// create image brush for our icon
       
   108 	CAlfTexture& iconTexture = iUiUtility->GlxTextureManager().
       
   109               CreateIconTextureL(aIconResourceId, aFilename);
       
   110 
       
   111     CreateVisualFromTextureL( iconTexture );
       
   112 	}
       
   113 	
       
   114 // -----------------------------------------------------------------------------
       
   115 // CreateVisualFromIconL
       
   116 // -----------------------------------------------------------------------------
       
   117 //	
       
   118 EXPORT_C void CGlxIconManager::CreateVisualFromIconL(TInt aIconResourceId, 
       
   119                                 TDesC& aFilename, TGlxIconManagerParams& aParams)
       
   120 	{
       
   121 	TRACER("CGlxIconManager::CreateVisualFromIconL");
       
   122 	GLX_LOG_INFO("CGlxIconManager::CreateVisualFromIconL");
       
   123 	// create image brush for our icon
       
   124 	CAlfTexture& iconTexture = iUiUtility->GlxTextureManager().
       
   125               CreateIconTextureL(aIconResourceId, aFilename);
       
   126 
       
   127     CreateVisualFromTextureL( iconTexture, aParams );
       
   128 	}
       
   129 
       
   130 // -----------------------------------------------------------------------------
       
   131 // CreateVisualFromTextureL
       
   132 // -----------------------------------------------------------------------------
       
   133 //
       
   134 EXPORT_C void CGlxIconManager::CreateVisualFromTextureL( CAlfTexture& aTexture )
       
   135 	{
       
   136 	TRACER("CGlxIconManager::CreateVisualFromTextureL( CAlfTexture& aTexture )");
       
   137 	GLX_LOG_INFO("CGlxIconManager::CreateVisualFromTextureL");
       
   138     TAlfImage img( aTexture );
       
   139     
       
   140     CAlfImageBrush* imageBrush = 
       
   141         CAlfImageBrush::NewL( *( iUiUtility->Env() ), img );
       
   142     CleanupStack::PushL(imageBrush);
       
   143     
       
   144     imageBrush->SetLayer(EAlfBrushLayerForeground);
       
   145 
       
   146     /// @todo Remove these 2 lines when Hui fixes the image brush rendering bug
       
   147     imageBrush->SetBorders(-1,-1,-1,-1);
       
   148    // imageBrush->SetClipToVisual(ETrue);
       
   149     
       
   150     iImageBrushArray.AppendL(imageBrush);
       
   151     CleanupStack::Pop(imageBrush);
       
   152 	}
       
   153 
       
   154 // -----------------------------------------------------------------------------
       
   155 // CreateVisualFromTextureL
       
   156 // -----------------------------------------------------------------------------
       
   157 //	
       
   158 EXPORT_C void CGlxIconManager::CreateVisualFromTextureL(
       
   159         CAlfTexture& aTexture, TGlxIconManagerParams& aParams )
       
   160 	{
       
   161 	TRACER("CGlxIconManager::CreateVisualFromTextureL 2");
       
   162 	GLX_LOG_INFO("CGlxIconManager::CreateVisualFromTextureL 2");
       
   163     TAlfImage img( aTexture );
       
   164     img.SetTexCoords(aParams.iTlX, aParams.iTlY, aParams.iBrX, aParams.iBrY );
       
   165     
       
   166     CAlfImageBrush* imageBrush = 
       
   167         CAlfImageBrush::NewL( *iUiUtility->Env(), img );
       
   168     CleanupStack::PushL(imageBrush);
       
   169     
       
   170     imageBrush->SetLayer( EAlfBrushLayerForeground );
       
   171 
       
   172     /// @todo Remove these 2 lines when Hui fixes the image brush rendering bug
       
   173     imageBrush->SetBorders(-1,-1,-1,-1);
       
   174    // imageBrush->SetClipToVisual(ETrue);
       
   175     
       
   176     TAlfTimedValue opacity( aParams.iOpacity, 0 ); 
       
   177     imageBrush->SetOpacity( opacity );
       
   178     
       
   179     iImageBrushArray.AppendL(imageBrush);
       
   180     CleanupStack::Pop(imageBrush);
       
   181 	}
       
   182 
       
   183 // -----------------------------------------------------------------------------
       
   184 // AddIconToItemL
       
   185 // -----------------------------------------------------------------------------
       
   186 //	
       
   187 EXPORT_C void CGlxIconManager::AddIconToItemL(TInt aIndex, TInt aBrushIndex)
       
   188 	{
       
   189 	TRACER("CGlxIconManager::AddIconToItemL");
       
   190 	GLX_LOG_INFO("CGlxIconManager::AddIconToItemL");
       
   191 	CAlfVisual* vis = iVisualList.Visual(aIndex);
       
   192 	AddIconToItemL(vis, aBrushIndex);
       
   193 	}
       
   194 	
       
   195 // -----------------------------------------------------------------------------
       
   196 // AddIconToItemL
       
   197 // -----------------------------------------------------------------------------
       
   198 //	
       
   199 EXPORT_C void CGlxIconManager::AddIconToItemL(CAlfVisual* aVisual, TInt aBrushIndex)
       
   200 	{
       
   201 	TRACER("CGlxIconManager::AddIconToItemL 2");
       
   202 	GLX_LOG_INFO("CGlxIconManager::AddIconToItemL 2");
       
   203 	if(aVisual)
       
   204 		{
       
   205 		// only add if not already present
       
   206 		if(BrushPositionInVisual(aVisual, aBrushIndex) == KErrNotFound)
       
   207 		    {
       
   208 		    aVisual->EnableBrushesL();	
       
   209 	        aVisual->Brushes()->AppendL(iImageBrushArray[aBrushIndex],
       
   210 	                                        EAlfDoesNotHaveOwnership );	
       
   211            // aVisual->SetChanged();	                                        	
       
   212 		    }
       
   213 		}
       
   214 	}
       
   215 
       
   216 // -----------------------------------------------------------------------------
       
   217 // RemoveFromItemL
       
   218 // -----------------------------------------------------------------------------
       
   219 //	
       
   220 EXPORT_C void CGlxIconManager::RemoveFromItem(TInt aIndex, TInt aIconIndex)
       
   221 	{
       
   222 	TRACER("CGlxIconManager::RemoveFromItem");
       
   223 	GLX_LOG_INFO("CGlxIconManager::RemoveFromItem");
       
   224 	CAlfVisual* vis = iVisualList.Visual(aIndex);
       
   225 	RemoveFromItem(vis, aIconIndex);
       
   226 	}
       
   227 	
       
   228 // -----------------------------------------------------------------------------
       
   229 // RemoveFromItemL
       
   230 // -----------------------------------------------------------------------------
       
   231 //	
       
   232 EXPORT_C void CGlxIconManager::RemoveFromItem(CAlfVisual* aVisual, 
       
   233                                                         TInt aIconIndex)
       
   234 	{
       
   235 	TRACER("CGlxIconManager::RemoveFromItem 2");
       
   236 	GLX_LOG_INFO("CGlxIconManager::RemoveFromItem 2");
       
   237 	if(aVisual && aIconIndex < iImageBrushArray.Count())
       
   238 		{
       
   239 		CAlfBrushArray* brushArray = aVisual->Brushes();
       
   240 		if ( brushArray )
       
   241 		    {
       
   242     		TInt brushCount = brushArray->Count();
       
   243     		for(TInt i = 0; i<brushCount;i++)
       
   244     			{
       
   245     			CAlfBrush* brush = &(brushArray->At(i));
       
   246     			if(brush==iImageBrushArray[aIconIndex])
       
   247     				{
       
   248     				brushArray->Remove(i);
       
   249     			//	aVisual->SetChanged();
       
   250     				break;
       
   251     				}
       
   252     			}
       
   253     	    }
       
   254 		}
       
   255 	}
       
   256 
       
   257 // -----------------------------------------------------------------------------
       
   258 // BrushPositionInVisual
       
   259 // -----------------------------------------------------------------------------
       
   260 //	
       
   261 EXPORT_C TInt CGlxIconManager::BrushPositionInVisual(TInt aListIndex, 
       
   262 	                                                TInt aBrushIndex)
       
   263     {
       
   264     TRACER("CGlxIconManager::BrushPositionInVisual");
       
   265     GLX_LOG_INFO("CGlxIconManager::BrushPositionInVisual");
       
   266     CAlfVisual* vis = iVisualList.Visual( aListIndex );
       
   267     return BrushPositionInVisual(vis, aBrushIndex );
       
   268     }
       
   269 
       
   270 // -----------------------------------------------------------------------------
       
   271 // BrushPositionInVisual
       
   272 // -----------------------------------------------------------------------------
       
   273 //
       
   274 EXPORT_C TInt CGlxIconManager::BrushPositionInVisual( CAlfVisual* aVisual, 
       
   275 	                                                   TInt aBrushIndex)
       
   276     { 
       
   277     TRACER("CGlxIconManager::BrushPositionInVisual 2");
       
   278     GLX_LOG_INFO("CGlxIconManager::BrushPositionInVisual 2");
       
   279     TInt pos = KErrNotFound;
       
   280     
       
   281 	if(aVisual && aBrushIndex < iImageBrushArray.Count())
       
   282 		{
       
   283 		CAlfBrushArray* brushArray = aVisual->Brushes();
       
   284 		if ( brushArray )
       
   285 		    {
       
   286     		TInt brushCount = brushArray->Count();
       
   287     		for(TInt i = 0; i<brushCount;i++)
       
   288     			{
       
   289     			CAlfBrush* brush = &(brushArray->At(i));
       
   290     			if(brush==iImageBrushArray[aBrushIndex])
       
   291     				{
       
   292     			    pos = i;
       
   293     				break;
       
   294     				}
       
   295     			}
       
   296 			}
       
   297 		}
       
   298 	return pos;
       
   299     }
       
   300 
       
   301 // -----------------------------------------------------------------------------
       
   302 // HandleItemAddedL
       
   303 // -----------------------------------------------------------------------------
       
   304 //	
       
   305 void CGlxIconManager::HandleItemAddedL(TInt /*StartIndex*/, TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
       
   306 	{
       
   307 	// No implementation
       
   308 	}
       
   309 
       
   310 // -----------------------------------------------------------------------------
       
   311 // HandleMediaL
       
   312 // -----------------------------------------------------------------------------
       
   313 //
       
   314 void CGlxIconManager::HandleMediaL(TInt /*aListIndex*/, MGlxMediaList* /*aList*/)
       
   315 	{
       
   316 	// No implementation
       
   317 	}
       
   318 
       
   319 // -----------------------------------------------------------------------------
       
   320 // HandleItemRemovedL
       
   321 // -----------------------------------------------------------------------------
       
   322 //
       
   323 void CGlxIconManager::HandleItemRemovedL(TInt /*aStartIndex*/, TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
       
   324 	{
       
   325 	// No implementation
       
   326 	}
       
   327 
       
   328 // -----------------------------------------------------------------------------
       
   329 // HandleItemModifiedL
       
   330 // -----------------------------------------------------------------------------
       
   331 //
       
   332 void CGlxIconManager::HandleItemModifiedL(const RArray<TInt>& /*aItemIndexes*/, MGlxMediaList* /*aList*/)
       
   333 	{
       
   334 	// No implementation
       
   335 	}
       
   336     
       
   337 // -----------------------------------------------------------------------------
       
   338 // HandleAttributesAvailableL
       
   339 // -----------------------------------------------------------------------------
       
   340 //
       
   341 void CGlxIconManager::HandleAttributesAvailableL(TInt /*aItemIndex*/,     
       
   342     const RArray<TMPXAttribute>& /*aAttributes*/, MGlxMediaList* /*aList*/)
       
   343 	{
       
   344 	// No implementation
       
   345 	}
       
   346         
       
   347 // -----------------------------------------------------------------------------
       
   348 // HandleFocusChangedL
       
   349 // -----------------------------------------------------------------------------
       
   350 //
       
   351 void CGlxIconManager::HandleFocusChangedL(NGlxListDefs::TFocusChangeType /*aType*/, TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/)
       
   352 	{
       
   353 	// No implementation
       
   354 	}
       
   355 
       
   356 // -----------------------------------------------------------------------------
       
   357 // HandleItemSelectedL
       
   358 // -----------------------------------------------------------------------------
       
   359 //
       
   360 void CGlxIconManager::HandleItemSelectedL(TInt /*aIndex*/, TBool /*aSelected*/, MGlxMediaList* /*aList*/)
       
   361 	{
       
   362 	// No implementation
       
   363 	}
       
   364 
       
   365 // -----------------------------------------------------------------------------
       
   366 // HandleMessageL
       
   367 // -----------------------------------------------------------------------------
       
   368 //
       
   369 void CGlxIconManager::HandleMessageL(const CMPXMessage& /*aMessage*/, MGlxMediaList* /*aList*/)
       
   370 	{
       
   371 	// No implementation
       
   372 	}
       
   373 
       
   374 
       
   375 // -----------------------------------------------------------------------------
       
   376 // HandleFocusChangedL
       
   377 // -----------------------------------------------------------------------------
       
   378 //
       
   379 void CGlxIconManager::HandleFocusChangedL(TInt /*aFocusIndex*/, TReal32 /*aItemsPerSecond*/, MGlxVisualList* /*aList*/, NGlxListDefs::TFocusChangeType /*aType*/)
       
   380 	{
       
   381 	// No implementation
       
   382 	}
       
   383 
       
   384 // -----------------------------------------------------------------------------
       
   385 // HandleSizeChanged
       
   386 // -----------------------------------------------------------------------------
       
   387 //
       
   388 void CGlxIconManager::HandleSizeChanged( const TSize& /*aSize*/, MGlxVisualList* /*aList*/)
       
   389 	{
       
   390 	// No implementation
       
   391 	}
       
   392 
       
   393 // -----------------------------------------------------------------------------
       
   394 // HandleVisualRemoved
       
   395 // -----------------------------------------------------------------------------
       
   396 //
       
   397 void CGlxIconManager::HandleVisualRemoved( const CAlfVisual* /*aVisual*/,  MGlxVisualList* /*aList*/ )
       
   398 	{
       
   399 	// No implementation
       
   400 	}
       
   401 
       
   402 // -----------------------------------------------------------------------------
       
   403 // HandleVisualAddedL
       
   404 // -----------------------------------------------------------------------------
       
   405 //
       
   406 void CGlxIconManager::HandleVisualAddedL(CAlfVisual* /*aVisual*/, TInt /*aIndex*/,MGlxVisualList* /*aList*/ )
       
   407 	{
       
   408 	// No implementation
       
   409 	}
       
   410 	
       
   411 // -----------------------------------------------------------------------------
       
   412 // Constructor
       
   413 // -----------------------------------------------------------------------------
       
   414 //
       
   415 EXPORT_C CGlxIconManager::CGlxIconManager(MGlxMediaList& aMediaList, MGlxVisualList& aVisList)
       
   416     : iMediaList(aMediaList), iVisualList(aVisList)
       
   417 	{
       
   418 	// No implementation
       
   419 	}
       
   420 
       
   421