wlanutilities/wlansniffer/aiplugin/src/wsficonarraycreator.cpp
changeset 0 56b72877c1cb
child 16 8b0eae1b1d71
--- /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 <AknIconArray.h>
+#include <AknIconUtils.h>
+#include <AknsUtils.h>
+#include <eikenv.h>
+#include <AknsConstants.h>
+#include <wsficons.mbg>
+#include <gulicon.h>
+
+//  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<CBase>* array=(CArrayPtrFlat<CBase>*)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 );
+    }
+