diff -r 95243422089a -r 491b3ed49290 filemanager/View/src/CFileManagerIconArray.cpp --- a/filemanager/View/src/CFileManagerIconArray.cpp Thu Aug 19 09:42:45 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,273 +0,0 @@ -/* -* Copyright (c) 2002-2006 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: All the files and folders icons are stored here -* -*/ - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include "CFileManagerIconArray.h" -#include "FileManagerView.hrh" - - - -// CONSTANTS -const TInt KGranularity = 1; - -// needed because _LIT macro does not expand parameter, which is also macro -#define _CREATE_LIT( a, b ) _LIT( a, b ) - -_CREATE_LIT( KFileManagerMifFile, filemanager_mbm_file_location ); - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::CFileManagerIconArray -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CFileManagerIconArray::CFileManagerIconArray() : - CArrayPtrFlat( KGranularity ) - { - } - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::NewL -// -// ----------------------------------------------------------------------------- -// -EXPORT_C CFileManagerIconArray* CFileManagerIconArray::NewL() - { - CFileManagerIconArray* self = new (ELeave) CFileManagerIconArray(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::ConstructL -// -// ----------------------------------------------------------------------------- -// -void CFileManagerIconArray::ConstructL() - { - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC( - reader, R_FILEMANAGER_ICON_ARRAY ); - - TInt count( reader.ReadInt16() ); - iIconInfo.ReserveL( count ); - SetReserveL( count ); - - // Get File Manager mif drive from exe location - TFileName exeFileName( RProcess().FileName() ); - - // Load icon info now and actual icon data later when needed to decrease - // construction time - for( TInt i( 0 ); i < count; i++ ) - { - TIconInfo info; - - info.iId = reader.ReadInt8(); - info.iFile = reader.ReadHBufCL(); - info.iIconId = reader.ReadInt16(); - - TPtr ptr( info.iFile->Des() ); - if ( !ptr.CompareF( KFileManagerMifFile ) ) - { - // Set correct File Manager mif drive - ptr[ 0 ] = exeFileName[ 0 ]; - } - - info.iMaskId = reader.ReadInt16(); - info.iMajorSkinId = reader.ReadInt32(); - info.iMinorSkinId = reader.ReadInt32(); - info.iIconType = reader.ReadInt8(); - info.iIndex = KErrNotFound; - - CleanupStack::PushL( info.iFile ); - iIconInfo.AppendL( info ); - CleanupStack::Pop( info.iFile ); - } - - CleanupStack::PopAndDestroy(); // reader - - LoadMandatoryIconsL(); - } - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::~CFileManagerIconArray -// Destructor -// ----------------------------------------------------------------------------- -// -EXPORT_C CFileManagerIconArray::~CFileManagerIconArray() - { - TInt count( iIconInfo.Count() ); - for( TInt i( 0 ); i < count; i++ ) - { - TIconInfo& info = iIconInfo[ i ]; - delete info.iFile; - info.iFile = NULL; - } - iIconInfo.Close(); - } - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::UpdateIconsL -// -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFileManagerIconArray::UpdateIconsL() - { - // Remove icon data and set info to load icon data again when needed - ResetAndDestroy(); - - TInt count( iIconInfo.Count() ); - SetReserveL( count ); - - for( TInt i( 0 ); i < count; i++ ) - { - TIconInfo& info = iIconInfo[ i ]; - info.iIndex = KErrNotFound; - } - - LoadMandatoryIconsL(); - } - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::FindIcon -// -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CFileManagerIconArray::FindIcon( TInt aIconId ) - { - TInt count( iIconInfo.Count() ); - for( TInt i( 0 ); i < count; i++ ) - { - TIconInfo& info = iIconInfo[ i ]; - if ( info.iId == aIconId ) - { - if ( info.iIndex == KErrNotFound ) - { - TRAPD( err, LoadIconL( info ) ); - if ( err != KErrNone ) - { - return err; - } - } - return info.iIndex; - } - } - return KErrNotFound; - } - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::LoadIconL -// -// ----------------------------------------------------------------------------- -// -void CFileManagerIconArray::LoadIconL( TIconInfo& aInfo ) - { - CGulIcon* icon = LoadIconL( - *aInfo.iFile, - aInfo.iIconId, - aInfo.iMaskId, - aInfo.iMajorSkinId, - aInfo.iMinorSkinId, - aInfo.iIconType == EFileManagerIconColorIcon ); - CleanupStack::PushL( icon ); - TInt index( Count() ); - AppendL( icon ); - CleanupStack::Pop( icon ); - aInfo.iIndex = index; - } - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::LoadMandatoryIconsL -// -// ----------------------------------------------------------------------------- -// -void CFileManagerIconArray::LoadMandatoryIconsL() - { - // At least these icons must be loaded on startup. - // Other icons can be loaded first time when needed. - - // Make sure that selection icon is always loaded to first index. - // Required by list control. - User::LeaveIfError( FindIcon( EFileManagerMarkIcon ) ); - - } - -// ----------------------------------------------------------------------------- -// CFileManagerIconArray::LoadIconL -// -// ----------------------------------------------------------------------------- -// -EXPORT_C CGulIcon* CFileManagerIconArray::LoadIconL( - const TDesC& aIconFile, - TInt aIconId, - TInt aMaskId, - TInt aMajorSkin, - TInt aMinorSkin, - TBool aIsColorIcon ) - { - TAknsItemID aknsItemId; - aknsItemId.Set( aMajorSkin, aMinorSkin ); - MAknsSkinInstance* aknsSkin = AknsUtils::SkinInstance(); - CGulIcon* ret = NULL; - if ( aIsColorIcon ) - { - TRgb defaultColour( KRgbBlack ); - CFbsBitmap* bmap = NULL; - CFbsBitmap* mask = NULL; - AknsUtils::GetCachedColor( - aknsSkin, - defaultColour, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG13 ); - AknsUtils::CreateColorIconLC( - aknsSkin, - aknsItemId, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG13, - bmap, - mask, - aIconFile, - aIconId, - aMaskId, - defaultColour ); - ret = CGulIcon::NewL( bmap, mask ); - ret->SetBitmapsOwnedExternally( EFalse ); - CleanupStack::Pop( 2 ); // icon owns the bitmaps now - } - else - { - ret = AknsUtils::CreateGulIconL( - aknsSkin, aknsItemId, aIconFile, aIconId, aMaskId ); - ret->SetBitmapsOwnedExternally( EFalse ); - } - return ret; - } - -// End of File