diff -r 000000000000 -r 2f259fa3e83a psln/PslnFramework/src/PslnFWIconHelper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/psln/PslnFramework/src/PslnFWIconHelper.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,294 @@ +/* +* Copyright (c) 2005-2007 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: Utility class to get icons to setting lists and +* help with loc strings. +* +*/ + + + +// INCLUDE FILES +#include "pslnfwiconhelper.h" + +// Icons +#include +#include +#include +#include +#include + +// Resource loading +#include +#include +#include +#include + +// Listboxes +#include +#include + +// Skins +#include +#include + +// CONSTANTS +// Location of icon file. +_LIT( KPslnFWIconFilename, "z:Pslnicon.mbm" ); +// Granularity of icon array. +const TInt KPslnIconArraySize = 6; + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CPslnFWIconHelper::CPslnFWIconHelper() + { + } + +// ----------------------------------------------------------------------------- +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CPslnFWIconHelper* CPslnFWIconHelper::NewL() + { + CPslnFWIconHelper* self = new( ELeave ) CPslnFWIconHelper; + return self; + } + +// Destructor +EXPORT_C CPslnFWIconHelper::~CPslnFWIconHelper() + { + } + +// --------------------------------------------------------------------------- +// Adds pre- and post-text icons to setting item lists. +// --------------------------------------------------------------------------- +// +EXPORT_C void CPslnFWIconHelper::AddIconsToSettingItemsL( + TBool aAll, TInt aMaxIndexToAdd, CEikTextListBox* aListBox ) + { + // Check that the given parameters are valid. + if ( !aAll && aMaxIndexToAdd <= 0 ) + { + User::Leave( KErrArgument ); + } + + CAknIconArray* icons = + new (ELeave) CAknIconArray( KPslnIconArraySize ); + + CEikColumnListBox* columnListBox = + static_cast( aListBox ); + + CArrayPtr* previcons = + columnListBox->ItemDrawer()->ColumnData()->IconArray(); + if ( previcons ) + { + previcons->ResetAndDestroy(); + delete previcons; + previcons = NULL; + } + columnListBox->ItemDrawer()->ColumnData()->SetIconArray( icons ); + + if ( !icons ) + { + return; + } + + TInt bitmapIndex = 0; + if ( aAll || aMaxIndexToAdd >= bitmapIndex ) + { + // 0: Non active (empty bitmap) + CFbsBitmap *bitmap = new (ELeave) CFbsBitmap; + User::LeaveIfError( + bitmap->Create( TSize(0, 0), EColor256 ) ); + CFbsBitmap *mask = new (ELeave) CFbsBitmap; + User::LeaveIfError( + mask->Create( TSize(0, 0), EColor16 ) ); + icons->AppendL( CGulIcon::NewL( bitmap, mask ) ); + bitmapIndex++; + } + + HBufC* fileName = HBufC::NewLC( KMaxFileName ); + TPtr fileNamePtr = fileName->Des(); + GetIconFilePath( fileNamePtr ); + + if ( aAll || aMaxIndexToAdd >= bitmapIndex ) + { + // 1: Active mark + AddIconL( icons, + KAknsIIDQgnPropPslnActive, + fileNamePtr, + EMbmPslniconQgn_prop_psln_active, + EMbmPslniconQgn_prop_psln_active_mask ); + bitmapIndex++; + } + + if ( aAll || aMaxIndexToAdd >= bitmapIndex ) + { + // 2: URL icon (in front of EEL) + AddIconL( icons, + KAknsIIDQgnPropLinkEmbdSmall, + KAvkonVariatedBitmapsFile, + EMbmVariatedbitmapsQgn_prop_link_embd_small, + EMbmVariatedbitmapsQgn_prop_link_embd_small_mask ); + bitmapIndex++; + } + + if ( aAll || aMaxIndexToAdd >= bitmapIndex ) + { + // 3: MMC icon + AddIconL( icons, + KAknsIIDQgnIndiMmcAdd, + fileNamePtr, + EMbmPslniconQgn_indi_mmc_add, + EMbmPslniconQgn_indi_mmc_add_mask, + ETrue ); + bitmapIndex++; + } + + if ( aAll || aMaxIndexToAdd >= bitmapIndex ) + { + //4: EAknsSrvProtected, + AddIconL( icons, + KAknsIIDQgnIndiDrmRightsAdd, + fileNamePtr, + EMbmPslniconQgn_indi_drm_rights_add, + EMbmPslniconQgn_indi_drm_rights_add_mask, + ETrue ); + bitmapIndex++; + } + + if ( aAll || aMaxIndexToAdd >= bitmapIndex ) + { + //5: EAknsSrvNoRights + AddIconL( icons, + KAknsIIDQgnIndiDrmRightsExpAdd, + fileNamePtr, + EMbmPslniconQgn_indi_drm_rights_exp_add, + EMbmPslniconQgn_indi_drm_rights_exp_add_mask, + ETrue ); + bitmapIndex++; + } + + if ( aAll || aMaxIndexToAdd >= bitmapIndex ) + { + //6: EAknsMinorGenericQgnIndiFmgrMsAdd - mass drive + AddIconL( icons, + KAknsIIDQgnIndiFmgrMsAdd, + fileNamePtr, + EMbmPslniconQgn_indi_fmgr_ms_add, + EMbmPslniconQgn_indi_fmgr_ms_add_mask, + ETrue ); + bitmapIndex++; + } + CleanupStack::PopAndDestroy( fileName ); + } + +// --------------------------------------------------------------------------- +// Retrieves localized string txt. +// --------------------------------------------------------------------------- +// +EXPORT_C HBufC* CPslnFWIconHelper::GetLocalizedStringLC( + const TDesC& aPath, TInt aResourceID, CCoeEnv* aCoeEnv ) + { + RConeResourceLoader resLoader( *aCoeEnv ); + CleanupClosePushL( resLoader ); + // Open resource file: + TFileName* file = new (ELeave) TFileName( aPath ); + CleanupStack::PushL( file ); + resLoader.OpenL( *file ); + CleanupStack::PopAndDestroy( file ); + + HBufC* result = StringLoader::LoadL( aResourceID ); + CleanupStack::PopAndDestroy(); // resLoader - it is closed as well + CleanupStack::PushL( result ); + return result; + } + +// --------------------------------------------------------------------------- +// Adds icon to an icon array. +// --------------------------------------------------------------------------- +// +void CPslnFWIconHelper::AddIconL( + CAknIconArray* aIcons, + const TAknsItemID& aSkinId, + const TDesC& aFileName, + TInt aBitmapId, + TInt aMaskId, + TBool aColorIcon ) + { + if ( aColorIcon ) + { + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + AknsUtils::CreateColorIconL( + AknsUtils::SkinInstance(), + aSkinId, + KAknsIIDQsnIconColors, + EAknsCIQsnIconColorsCG13, + bitmap, + mask, + aFileName, + aBitmapId, + aMaskId, + KRgbBlack ); + CleanupStack::PushL( bitmap ); + CleanupStack::PushL( mask ); + CGulIcon* icon = CGulIcon::NewL( bitmap, mask ); + CleanupStack::Pop( 2, bitmap ); // bitmap, mask + CleanupStack::PushL( icon ); + aIcons->AppendL( icon ); + CleanupStack::Pop( icon ); + } + else + { + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + AknsUtils::CreateIconL( + AknsUtils::SkinInstance(), + aSkinId, + bitmap, + mask, + aFileName, + aBitmapId, + aMaskId ); + CleanupStack::PushL( bitmap ); + CleanupStack::PushL( mask ); + CGulIcon* icon = CGulIcon::NewL( bitmap, mask ); + CleanupStack::Pop( 2, bitmap ); // bitmap, mask + CleanupStack::PushL( icon ); + aIcons->AppendL( icon ); + CleanupStack::Pop( icon ); + } + } + +// --------------------------------------------------------------------------- +// Retrieves icon file path. +// --------------------------------------------------------------------------- +// +void CPslnFWIconHelper::GetIconFilePath( TDes& aPath ) + { + // Find the resource file: + TParse parse; + parse.Set( KPslnFWIconFilename, &KDC_APP_BITMAP_DIR, NULL ); + if ( aPath.MaxLength() >= parse.FullName().Length() ) + { + aPath.Copy( parse.FullName() ); + } + } + + +// End of File