--- /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 <AknIconArray.h>
+#include <gulicon.h>
+#include <pslnicon.mbg>
+#include <variatedbitmaps.mbg>
+#include <data_caging_path_literals.hrh>
+
+// Resource loading
+#include <bautils.h>
+#include <barsread.h>
+#include <StringLoader.h>
+#include <ConeResLoader.h>
+
+// Listboxes
+#include <eikclb.h>
+#include <eikclbd.h>
+
+// Skins
+#include <AknsUtils.h>
+#include <aknconsts.h>
+
+// 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<CEikColumnListBox*>( aListBox );
+
+ CArrayPtr<CGulIcon>* 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