--- a/landmarksui/uicontrols/src/CLmkSelectorIconMgr.cpp Thu Aug 19 09:48:36 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +0,0 @@
-/*
-* Copyright (c) 2002 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: LandmarksUi Content File -
-*
-*/
-
-
-
-
-
-
-
-
-// INCLUDE FILES
-#include "CLmkSelectorIconMgr.h"
-#include "LmkConsts.h"
-#include "CLmkUiUtils.h"
-#include <data_caging_path_literals.hrh>
-#include <gulicon.h>
-#include <AknIconArray.h>
-#include <avkon.mbg>
-#include <AknsConstants.h>
-#include <AknsUtils.h>
-#include <AknIconUtils.h>
-#include <AknUtils.h>
-#include <lmkerrors.h>
-
-
-// CONSTANTS
-/// Unnamed namespace for local definitions
-namespace {
-const TInt KLmkIconCacheGranularity = 30;
-const TInt KLmkIconFilesGranularity = 5;
-#if defined(_DEBUG)
-
-_LIT(KPanicMsg,"CLmkSelectorIconMgr");
-
-void Panic( TPanicCode aReason )
- {
- User::Panic( KPanicMsg, aReason );
- }
-#endif
-} // namespace
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::TIconData
-// ----------------------------------------------------
-//
-CLmkSelectorIconMgr::TIconData::TIconData():
- iFileIndex( KErrNotFound ),
- iIconIndexWithinFile( KErrNotFound ),
- iIconType( EDefinedIcon ),
- iIconArrayId( KErrNotFound )
- {
- }
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CLmkSelectorIconMgr::CLmkSelectorIconMgr
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CLmkSelectorIconMgr::CLmkSelectorIconMgr( CAknIconArray& aArray )
- : iArray( &aArray ),
- iCache( KLmkIconCacheGranularity )
- {
- }
-
-// -----------------------------------------------------------------------------
-// CLmkSelectorIconMgr::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CLmkSelectorIconMgr::ConstructL()
- {
- iIconFiles = new( ELeave ) CDesCArrayFlat( KLmkIconFilesGranularity );
- ResetMgrL();
- }
-
-// -----------------------------------------------------------------------------
-// CLmkSelectorIconMgr::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-
-CLmkSelectorIconMgr* CLmkSelectorIconMgr::NewL(
- CAknIconArray& aArray )
- {
- CLmkSelectorIconMgr* self = new( ELeave ) CLmkSelectorIconMgr( aArray );
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
-
- return self;
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::~CLmkSelectorIconMgr
-// ----------------------------------------------------
-//
-CLmkSelectorIconMgr::~CLmkSelectorIconMgr()
- {
- iCache.Close();
- delete iIconFiles;
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::GetIconL
-// ----------------------------------------------------
-//
-TInt CLmkSelectorIconMgr::GetIconL(
- const TDesC& aMbmFileName,
- TInt aIconIdInFile )
- {
- TInt position( 0 );
- if ( iIconFiles->Find( aMbmFileName, position, ECmpNormal ) == 0 )
- { // same file has been used already and so it exists in the array
- TInt count = iCache.Count();
- for ( TInt i( 0 ); i < count; ++i )
- {
- if ( position == iCache[i].iFileIndex &&
- aIconIdInFile == iCache[i].iIconIndexWithinFile )
- { // icon was found in icon manager!
- // If Array Index was not set properly, then set the index propely
- if (( iCache[i].iIconArrayId < 0) ||
- (iCache[i].iIconArrayId > KLmkIconCacheGranularity) )
- {
- break;
- }
- return iCache[i].iIconArrayId;
- }
- }
- }
-
- // aMbmFileName does not yet exist in the file name array OR it exists but
- // this specific icon hasn't been requested yet:
-
- // create icon manager item:
- TInt iconMgrId = CreateIconMgrItemL( aMbmFileName, aIconIdInFile );
-
- // try to load new icon:
- iCache[iconMgrId].iIconArrayId =
- LoadAndAppendIconL( aMbmFileName, aIconIdInFile );
-
- return iCache[iconMgrId].iIconArrayId;
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::GetDefaultIconL
-// ----------------------------------------------------
-//
-TInt CLmkSelectorIconMgr::GetDefaultIconL( TIconType aIcon )
- {
- TInt count = iCache.Count();
- for ( TInt i( 0 ); i < count ; ++i )
- {
- TIconData tmp = iCache[i];
- if ( tmp.iIconType == aIcon )
- { // default icon was found
- if ( tmp.iIconArrayId < 0 )
- { // try to load new icon.
- TPtrC iconFile = ( *iIconFiles )[tmp.iFileIndex];
- tmp.iIconArrayId =
- LoadAndAppendIconL( iconFile, tmp.iIconIndexWithinFile );
- }
- return tmp.iIconArrayId;
- }
- }
- return KErrNotFound; // default icon was not found
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::SetDefaultIconL
-// ----------------------------------------------------
-//
-void CLmkSelectorIconMgr::SetDefaultIconL(
- TIconType aIcon,
- const TDesC& aMbmFileName,
- TInt aIconIdInFile )
- {
- if ( GetDefaultIconL( aIcon ) >= 0 )
- { // default icon already set
- User::Leave( KErrAlreadyExists );
- }
-
- TInt iconMgrId = CreateIconMgrItemL( aMbmFileName, aIconIdInFile );
- iCache[iconMgrId].iIconType = aIcon;
- // Added for updating Icon index
- iCache[iconMgrId].iIconArrayId =
- LoadAndAppendIconL( aMbmFileName, aIconIdInFile );
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::SetIconAtIndexZeroL
-// ----------------------------------------------------
-//
-void CLmkSelectorIconMgr::SetIconAtIndexZeroL(
- const TDesC& aMbmFileName,
- TAknsItemID aSkinID,
- TInt aIconId,
- TInt aMaskId )
- {
- __ASSERT_DEBUG( iArray->Count() >= 2,
- Panic( KLmkPanicIndexesZeroOneNotSet ) );
-
- CGulIcon* icon = LoadIconL( aMbmFileName, aSkinID, aIconId, aMaskId );
- CleanupStack::PushL( icon );
-
- CGulIcon* old = iArray->At( 0 );
- iArray->Delete( 0 );
- delete old;
- iArray->InsertL( 0, icon );
-
- CleanupStack::Pop( icon ); // ownership transferred to icon array
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::SetIconAtIndexOneL
-// ----------------------------------------------------
-//
-void CLmkSelectorIconMgr::SetIconAtIndexOneL(
- const TDesC& aMbmFileName,
- TAknsItemID aSkinID,
- TInt aIconId,
- TInt aMaskId )
- {
- __ASSERT_DEBUG( iArray->Count() >= 2,
- Panic( KLmkPanicIndexesZeroOneNotSet ) );
-
- CGulIcon* icon = LoadIconL( aMbmFileName, aSkinID, aIconId, aMaskId );
- CleanupStack::PushL( icon );
-
- CGulIcon* old = iArray->At( 1 );
- iArray->Delete( 1 );
- delete old;
- iArray->InsertL( 1, icon );
-
- CleanupStack::Pop( icon ); // ownership transferred to icon array
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::ResetMgrL
-// ----------------------------------------------------
-//
-void CLmkSelectorIconMgr::ResetMgrL()
- {
- iArray->ResetAndDestroy();
- iIconFiles->Reset();
- iCache.Reset();
-
- // By default set empty icons as selection icons:
-
- TFileName* iconFile = CLmkUiUtils::AvkonIconFileLC();
- CGulIcon* icon = LoadIconL( *iconFile,
- KAknsIIDQgnPropEmpty,
- EMbmAvkonQgn_prop_empty,
- EMbmAvkonQgn_prop_empty_mask );
- CleanupStack::PushL( icon );
- iArray->AppendL( icon );
- CleanupStack::Pop( icon ); // ownership transferred to icon array
- icon = NULL;
-
- icon = LoadIconL( *iconFile,
- KAknsIIDQgnPropEmpty,
- EMbmAvkonQgn_prop_empty,
- EMbmAvkonQgn_prop_empty_mask );
- CleanupStack::PushL( icon );
- iArray->AppendL( icon );
- CleanupStack::Pop( icon ); // ownership transferred to icon array
- CleanupStack::PopAndDestroy( ); // iconFile
- }
-
-// ============================= HELPER METHODS ================================
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::LoadIconL
-// ----------------------------------------------------
-//
-CGulIcon* CLmkSelectorIconMgr::LoadIconL(
- const TDesC& aMbmFileName,
- TInt aIconIdInFile )
- {
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* bitmapMask = NULL;
-
- AknIconUtils::CreateIconLC(bitmap, bitmapMask, aMbmFileName,
- aIconIdInFile, aIconIdInFile + 1);
- CGulIcon* icon = CGulIcon::NewL( bitmap, bitmapMask );
- CleanupStack::Pop( 2 ); // bitmapMask, bitmap. icon has now ownership
- return icon;
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::LoadIconL
-// ----------------------------------------------------
-//
-CGulIcon* CLmkSelectorIconMgr::LoadIconL(
- const TDesC& aMbmFileName,
- TAknsItemID aSkinID,
- TInt aIconId,
- TInt aMaskId )
- {
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* bitmapMask = NULL;
- AknsUtils::CreateIconLC( skin, aSkinID, bitmap, bitmapMask, aMbmFileName,
- aIconId, aMaskId );
- CGulIcon* icon = CGulIcon::NewL( bitmap, bitmapMask );
- CleanupStack::Pop( 2 ); // bitmapMask, bitmap. icon has now ownership
- return icon;
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::LoadAndAppendIconL
-// ----------------------------------------------------
-//
-TInt CLmkSelectorIconMgr::LoadAndAppendIconL(
- const TDesC& aMbmFileName,
- TInt aIconIdInFile )
- {
- CGulIcon* icon = LoadIconL( aMbmFileName, aIconIdInFile );
- CleanupStack::PushL( icon );
- iArray->AppendL( icon );
- CleanupStack::Pop( icon );
- // Added for avoiding returning -1 as bitmap Index
- if (iArray->Count() > 0)
- {
- return iArray->Count() - 1;
- }
- else
- {
- return 0;
- }
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::CreateIconMgrItemL
-// ----------------------------------------------------
-//
-TInt CLmkSelectorIconMgr::CreateIconMgrItemL(
- const TDesC& aMbmFileName,
- TInt aIconIdInFile )
- {
- TIconData tmp;
-
-
- tmp.iFileIndex = AppendedIconFileIndexL( aMbmFileName );
- tmp.iIconIndexWithinFile = aIconIdInFile;
-
- User::LeaveIfError( iCache.Append( tmp ) );
- if (iCache.Count() > 0)
- {
- return iCache.Count() - 1;
- }
- else
- {
- return 0;
- }
- }
-
-// ----------------------------------------------------
-// CLmkSelectorIconMgr::AppendedIconFileIndexL
-// ----------------------------------------------------
-//
-TInt CLmkSelectorIconMgr::AppendedIconFileIndexL( const TDesC& aMbmFileName )
- {
- TInt position( 0 );
- if ( iIconFiles->Find( aMbmFileName, position, ECmpNormal ) != 0 )
- { // file does not yet exist in the file name array
- iIconFiles->AppendL( aMbmFileName );
- return iIconFiles->Count() - 1;
- }
- else
- { // file already exists, just return its position
- return position;
- }
- }
-
-// End of File