diff -r 000000000000 -r 56b72877c1cb wlanutilities/wlansniffer/aiplugin/src/wsficonarraycreator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlanutilities/wlansniffer/aiplugin/src/wsficonarraycreator.cpp Thu Dec 17 09:20:28 2009 +0200 @@ -0,0 +1,370 @@ +/* +* Copyright (c) 2007-2008 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: Implementation of CWsfIconArrayCreator. +* +*/ + +// EXTERNAL INCLUDES +#include +#include +#include +#include +#include +#include +#include + +// INTERNAL INCLUDES +#include "wsfaiplugincommon.h" +#include "wsficonarraycreator.h" + + +// LOCAL DEFINITIONS +const TInt KAIShortcutPluginGranularity = 10; +#ifdef _DEBUG + _LIT( KIconArrayCreatorPanic, "CWsfIconArrayCreator" ); + #define _ASS_D( cond ) __ASSERT_DEBUG( (cond), \ + User::Panic( KIconArrayCreatorPanic, __LINE__) ) +#else + #define _ASS_D( cond ) {} +#endif //_DEBUG + +// -------------------------------------------------------------------------- +// CleanUpResetAndDestroy +// -------------------------------------------------------------------------- +// +void CleanUpResetAndDestroy(TAny* aArray) + { + if(aArray) + { + CArrayPtrFlat* array=(CArrayPtrFlat*)aArray; + array->ResetAndDestroy(); + delete array; + } + } + +// -------------------------------------------------------------------------- +// LoadIconLC +// -------------------------------------------------------------------------- +// +CGulIcon* LoadIconLC( const TInt aIconId, const TFileName aBitmapFile ) + { + CGulIcon* icon = CGulIcon::NewLC(); + CFbsBitmap* bitmap; + CFbsBitmap* mask; + + // Creates bitmap an icon. + AknIconUtils::CreateIconL( bitmap, + mask, + aBitmapFile, + aIconId, + aIconId+1 ); + + icon->SetBitmap( bitmap ); + icon->SetMask( mask ); + return icon; + } + +// -------------------------------------------------------------------------- +// LoadSkinnableIconLC +// -------------------------------------------------------------------------- +// +CGulIcon* LoadSkinnableIconLC( const TAknsItemID aAknItemId, + const TInt aIconId, + const TFileName aBitmapFile ) + { + CGulIcon* icon = CGulIcon::NewLC(); + CFbsBitmap* bitmap; + CFbsBitmap* mask; + + // Creates bitmap an icon. + + AknsUtils::CreateIconL( AknsUtils::SkinInstance(), + aAknItemId, + bitmap, + mask, + aBitmapFile, + aIconId, + aIconId+1 ); + + icon->SetBitmap( bitmap ); + icon->SetMask( mask ); + return icon; + } + +// --------------------------------------------------------- +// LoadSkinnableBlackIconLC +// --------------------------------------------------------- +// +CGulIcon* LoadSkinnableBlackIconLC( const TAknsItemID aAknItemId, + const TInt aIconId, + const TFileName aBitmapFile ) + { + CGulIcon* icon = CGulIcon::NewLC(); + CFbsBitmap* bitmap; + CFbsBitmap* mask; + + // Creates bitmap an icon. + + AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), + aAknItemId, + KAknsIIDQsnIconColors, EAknsCIQsnIconColorsCG13, + bitmap, + mask, + aBitmapFile, + aIconId, + aIconId+1, + KRgbBlack ); + + icon->SetBitmap( bitmap ); + icon->SetMask( mask ); + return icon; + } + +// -------------------------------------------------------------------------- +// CWsfIconArrayCreator::CreateArrayL +// -------------------------------------------------------------------------- +// +CAknIconArray* CWsfIconArrayCreator::CreateArrayL( ) + { + // try to locate the resorce file + TFindFile finder( CEikonEnv::Static()->FsSession() ); + User::LeaveIfError( finder.FindByDir( + KBitmapFile, KDC_APP_BITMAP_DIR ) ); + TFileName bitmapFileName = finder.File(); + + CAknIconArray* icons = new(ELeave) CAknIconArray( + KAIShortcutPluginGranularity ); + + CleanupStack::PushL( TCleanupItem( CleanUpResetAndDestroy,icons) ); + + //ESecureNetworkIcon + icons->InsertL( ESecureNetworkIcon, LoadSkinnableBlackIconLC( + KAknsIIDQgnIndiWlanSecureNetworkAdd, + EMbmWsficonsQgn_indi_wlan_secure_network_add, + bitmapFileName ) ); + + CleanupStack::Pop(); /*icon*/ + + //ENoSignalIcon + icons->InsertL( ENoSignalIcon, LoadIconLC( + EMbmWsficonsEmpty13x13, + bitmapFileName ) ); + CleanupStack::Pop(); /*icon*/ + + //EPoorSignal + icons->InsertL( EPoorSignal, LoadSkinnableBlackIconLC( + KAknsIIDQgnIndiWlanSignalLowAdd, + EMbmWsficonsQgn_indi_wlan_signal_low_add, + bitmapFileName ) ); + + CleanupStack::Pop(); /*icon*/ + + //EAverageSignal + icons->InsertL( EAverageSignal, LoadSkinnableBlackIconLC( + KAknsIIDQgnIndiWlanSignalMedAdd, + EMbmWsficonsQgn_indi_wlan_signal_med_add, + bitmapFileName ) ); + CleanupStack::Pop(); /*icon*/ + + //EExcelentSignal + icons->InsertL( EExcelentSignal, LoadSkinnableBlackIconLC( + KAknsIIDQgnIndiWlanSignalGoodAdd , + EMbmWsficonsQgn_indi_wlan_signal_good_add, + bitmapFileName ) ); + CleanupStack::Pop(); /*icon*/ + + //EConnectedNWIcon + icons->InsertL( EConnectedNWIcon, + LoadSkinnableIconLC( KAknsIIDQgnIndiWlanSnifferPluginOn, + EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on, + bitmapFileName ) ); + + CleanupStack::Pop(); /*icon*/ + + //EKnownNWIcon + icons->InsertL( EKnownNWIcon, LoadSkinnableIconLC( + KAknsIIDQgnIndiWlanSnifferPluginOn, + EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on, + bitmapFileName ) ); + CleanupStack::Pop(); /*icon*/ + + //ETransparentIcon + icons->InsertL( ETransparentIcon, LoadIconLC( + EMbmWsficonsQgn_prop_empty, + bitmapFileName ) ); + CleanupStack::Pop(); /*icon*/ + + //EWlanOnIcon + icons->InsertL( EWlanOnIcon, LoadSkinnableIconLC( + KAknsIIDQgnIndiWlanSnifferPluginOn, + EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on, + bitmapFileName ) ); + CleanupStack::Pop(); /*icon*/ + + icons->InsertL( EWlanOnIcon_0, LoadSkinnableIconLC( + KAknsIIDQgnIndiWlanSnifferPluginOn0, + EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on_0, + bitmapFileName ) ); + CleanupStack::Pop(); /*icon*/ + + icons->InsertL( EWlanOnIcon_1, LoadSkinnableIconLC( + KAknsIIDQgnIndiWlanSnifferPluginOn1, + EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on_1, + bitmapFileName ) ); + CleanupStack::Pop(); /*icon*/ + + //ETransparentIcon + icons->InsertL( EWlanOffIcon, LoadSkinnableIconLC( + KAknsIIDQgnIndiWlanSnifferPluginOff, + EMbmWsficonsQgn_indi_wlan_sniffer_plugin_off, + bitmapFileName ) ); + CleanupStack::Pop(); + + icons->InsertL( EWlanNaviBarIcon, LoadSkinnableIconLC( + KAknsIIDQgnMenuWlanSniffer, + EMbmWsficonsQgn_menu_wlan_sniffer, + bitmapFileName ) ); + + CleanupStack::Pop(); /*icon*/ + CleanupStack::Pop( icons ); + + return icons; + } + +// -------------------------------------------------------------------------- +// CWsfIconArrayCreator::GetIconLC +// -------------------------------------------------------------------------- +// +CGulIcon* CWsfIconArrayCreator::GetIconLC( TInt aIconId ) + { + + // try to locate the resorce file + TFindFile finder( CEikonEnv::Static()->FsSession() ); + User::LeaveIfError( finder.FindByDir( KBitmapFile, + KDC_APP_BITMAP_DIR ) ); + TFileName bitmapFileName = finder.File(); + TAknsItemID localAknItemId( KAknsIIDQgnMenuWlanSniffer ); + TInt iconId( EMbmWsficonsQgn_menu_wlan_sniffer ); + + switch( aIconId ) + { + case ESecureNetworkIcon: + { + localAknItemId = KAknsIIDQgnIndiWlanSecureNetworkAdd; + iconId = EMbmWsficonsQgn_indi_wlan_secure_network_add; + break; + } + + case ENoSignalIcon: + return LoadIconLC( EMbmWsficonsEmpty13x13, bitmapFileName ); + + case EPoorSignal: + { + localAknItemId = KAknsIIDQgnIndiWlanSignalLowAdd; + iconId = EMbmWsficonsQgn_indi_wlan_signal_low_add; + break; + } + + case EAverageSignal: + { + localAknItemId = KAknsIIDQgnIndiWlanSignalMedAdd; + iconId = EMbmWsficonsQgn_indi_wlan_signal_med_add; + break; + } + + case EExcelentSignal: + { + localAknItemId = KAknsIIDQgnIndiWlanSignalGoodAdd; + iconId = EMbmWsficonsQgn_indi_wlan_signal_good_add; + break; + } + + case EConnectedNWIcon: + { + localAknItemId = KAknsIIDQgnIndiWlanSnifferPluginOn; + iconId = EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on; + break; + } + + case EKnownNWIcon: + { + localAknItemId = KAknsIIDQgnIndiWlanSnifferPluginOn; + iconId = EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on; + break; + } + + case ETransparentIcon: + return LoadIconLC( EMbmWsficonsQgn_prop_empty, bitmapFileName ); + + case EWlanOnIcon: + { + localAknItemId = KAknsIIDQgnIndiWlanSnifferPluginOn; + iconId = EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on; + break; + } + + case EWlanOnIcon_0: + { + localAknItemId = KAknsIIDQgnIndiWlanSnifferPluginOn0; + iconId = EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on_0; + break; + } + + case EWlanOnIcon_1: + { + localAknItemId = KAknsIIDQgnIndiWlanSnifferPluginOn1; + iconId = EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on_1; + break; + } + + case EWlanOffIcon: + { + localAknItemId = KAknsIIDQgnIndiWlanSnifferPluginOff; + iconId = EMbmWsficonsQgn_indi_wlan_sniffer_plugin_off; + break; + } + + case EWlanNaviBarIcon: + { + localAknItemId = KAknsIIDQgnMenuWlanSniffer; + iconId = EMbmWsficonsQgn_menu_wlan_sniffer; + break; + } + default: + { + _ASS_D( 0 ); + } + } + + switch( aIconId ) + { + case ESecureNetworkIcon: + case EPoorSignal: + case EAverageSignal: + case EExcelentSignal: + { + return LoadSkinnableBlackIconLC( localAknItemId, + iconId, + bitmapFileName ); + } + default: + { + break; + } + } + return LoadSkinnableIconLC( localAknItemId, + iconId, + bitmapFileName ); + } +