photosgallery/viewframework/visuallistmanager/src/glxbordericonmanager.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:45:44 +0200
changeset 0 4e91876724a2
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* 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:    Adds a border to icons in visual lists
*
*/




/**
 * @internal reviewed 31/07/2007 by Rowland Cook
 */

#include "glxbordericonmanager.h"
//#include "mglxmedialistobserver.h"
#include "mglxvisuallist.h"

#include <AknsUtils.h>
#include <alf/alfvisual.h>
#include <alf/alfbrush.h>
#include <alf/alfbrusharray.h>
#include <glxuiutility.h>
#include <alf/alfborderbrush.h>

const TInt KGlxBorderIconWidth = 1;
const TInt KGlxBorderIconOffset = 1;

// ---------------------------------------------------------------------------
// 1st phase constructor
// ---------------------------------------------------------------------------
//
EXPORT_C CGlxBorderIconManager* CGlxBorderIconManager::NewL(
                           MGlxMediaList& aMediaList, MGlxVisualList& aVisualList)
	{
	CGlxBorderIconManager* self = 
	                new(ELeave)CGlxBorderIconManager(aMediaList, aVisualList);
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);
	return self;
	}

// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//	
CGlxBorderIconManager::~CGlxBorderIconManager()
	{
	iVisualList.RemoveObserver(this);
	delete iBorderBrush;
	}
	
// ---------------------------------------------------------------------------
// HandleVisualAddedL
// ---------------------------------------------------------------------------
// 
void CGlxBorderIconManager::HandleVisualAddedL( CAlfVisual* aVisual, 
    TInt /*aIndex*/, MGlxVisualList* /*aList*/ )
	{
	AddBorderBrushL(aVisual);
	}

// ---------------------------------------------------------------------------
// Constructor
// ---------------------------------------------------------------------------
//	
CGlxBorderIconManager::CGlxBorderIconManager(MGlxMediaList& aMediaList, 
                                            MGlxVisualList& aVisualList)
	: CGlxIconManager(aMediaList, aVisualList)
	{
	// No  implementation
	}

// ---------------------------------------------------------------------------
// 2nd phase construction
// ---------------------------------------------------------------------------
//	
void CGlxBorderIconManager::ConstructL()
	{
	BaseConstructL();
	
	// add as observer
	iVisualList.AddObserverL(this);
	
    TRgb brushColor;
    AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), brushColor, 
        KAknsIIDQsnOtherColors, EAknsCIQsnOtherColorsCG12);

    iBorderBrush = 
        CAlfBorderBrush::NewL( 
            *( iUiUtility->Env() ),
            KGlxBorderIconWidth, KGlxBorderIconWidth, 
            KGlxBorderIconOffset, KGlxBorderIconOffset );
                                
    iBorderBrush->SetLayer(EAlfBrushLayerForeground);
    iBorderBrush->SetColor(brushColor);
	
	// check for any visual already present in list
	TInt itemCount = iVisualList.ItemCount();
	for(TInt i = 0; i < itemCount; i++)
	    {
	    AddBorderBrushL(iVisualList.Visual(i));
	    }
	}

    
// ---------------------------------------------------------------------------
// AddBorderBrushL
// ---------------------------------------------------------------------------
//	
void CGlxBorderIconManager::AddBorderBrushL(CAlfVisual* aVisual)
    {
	if ( aVisual )
	    {
    	aVisual->EnableBrushesL();
        	
    	aVisual->Brushes()->AppendL( iBorderBrush, EAlfDoesNotHaveOwnership );
    	}
    }
    
// ---------------------------------------------------------------------------
// SetThumbnailBorderColor
// ---------------------------------------------------------------------------
//
EXPORT_C void CGlxBorderIconManager::SetThumbnailBorderColor()
	{
	TRgb brushColor;
    TInt errCode = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), brushColor, 
        KAknsIIDQsnOtherColors, EAknsCIQsnOtherColorsCG12);
        
	if( KErrNone == errCode )
		{
		iBorderBrush->SetColor( brushColor );	
		}
  }