uifw/AvKon/src/AknSignalIcon.cpp
branchRCL_3
changeset 10 9f56a4e1b8ab
parent 0 2f259fa3e83a
child 51 fcdfafb36fe7
--- a/uifw/AvKon/src/AknSignalIcon.cpp	Fri Mar 12 15:43:43 2010 +0200
+++ b/uifw/AvKon/src/AknSignalIcon.cpp	Mon Mar 15 12:41:34 2010 +0200
@@ -24,6 +24,9 @@
 #include <avkon.mbg>
 
 #include <AknTasHook.h>
+#include <AvkonInternalCRKeys.h>
+#include <centralrepository.h> 
+
 #include "AknSignalIcon.h"
 #include "aknconsts.h"
 #include "AknUtils.h"
@@ -162,6 +165,93 @@
 	return iColorIndex;	
 	}
 
+void CAknSignalIcon::LoadATTIconL(TInt aIconState, 
+                                  TInt aIconColorIndex )
+    {
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    CFbsBitmap* bitmap      = NULL;
+    CFbsBitmap* mask        = NULL;
+    
+    switch ( aIconState )
+        {
+        case EAknSignalHsdpaIndicatorAvailable:
+            AknsUtils::CreateColorIconL( skin,
+                                         KAknsIIDQgnIndiSignalWcdmaIcon,
+                                         KAknsIIDQsnIconColors,
+                                         aIconColorIndex,
+                                         bitmap,
+                                         mask,
+                                         AknIconUtils::AvkonIconFileName(), 
+                                         EMbmAvkonQgn_indi_signal_wcdma_icon,
+                                         EMbmAvkonQgn_indi_signal_wcdma_icon_mask,
+                                         KRgbGray );
+            break;
+        case EAknSignalHsdpaIndicatorAttached:
+        case EAknSignalHsdpaIndicatorEstablishingContext: 
+            AknsUtils::CreateColorIconL( skin,
+                                         KAknsIIDQgnIndiSignalWcdmaAttach,
+                                         KAknsIIDQsnIconColors,
+                                         aIconColorIndex,
+                                         bitmap,
+                                         mask, 
+                                         AknIconUtils::AvkonIconFileName(), 
+                                         EMbmAvkonQgn_indi_signal_wcdma_attach,
+                                         EMbmAvkonQgn_indi_signal_wcdma_attach_mask,
+                                         KRgbGray );
+            break;
+        case EAknSignalHsdpaIndicatorContext:
+            AknsUtils::CreateColorIconL( skin,
+                                         KAknsIIDQgnIndiSignalWcdmaContext,
+                                         KAknsIIDQsnIconColors,
+                                         aIconColorIndex,
+                                         bitmap,
+                                         mask, 
+                                         AknIconUtils::AvkonIconFileName(), 
+                                         EMbmAvkonQgn_indi_signal_wcdma_context,
+                                         EMbmAvkonQgn_indi_signal_wcdma_context_mask,
+                                         KRgbGray );
+            break;
+        case EAknSignalHsdpaIndicatorMultipdp:
+            AknsUtils::CreateColorIconL( skin,
+                                         KAknsIIDQgnIndiSignalWcdmaMultipdp,
+                                         KAknsIIDQsnIconColors,
+                                         aIconColorIndex,
+                                         bitmap,
+                                         mask,
+                                         AknIconUtils::AvkonIconFileName(), 
+                                         EMbmAvkonQgn_indi_signal_wcdma_multipdp,
+                                         EMbmAvkonQgn_indi_signal_wcdma_multipdp_mask,
+                                         KRgbGray );
+            break;
+        case EAknSignalHsdpaIndicatorSuspended:
+            AknsUtils::CreateColorIconL( skin,
+                                         KAknsIIDQgnIndiSignalWcdmaSuspended,
+                                         KAknsIIDQsnIconColors,
+                                         aIconColorIndex,
+                                         bitmap,
+                                         mask, 
+                                         AknIconUtils::AvkonIconFileName(), 
+                                         EMbmAvkonQgn_indi_signal_wcdma_suspended,
+                                         EMbmAvkonQgn_indi_signal_wcdma_suspended_mask,
+                                         KRgbGray ); 
+            break;
+        }
+    if ( bitmap )
+        {
+        delete iSignalIcon;
+        iSignalIcon = bitmap;
+        AknIconUtils::SetSize( iSignalIcon, Size() );
+        }
+
+    if ( mask )
+        {
+        delete iSignalIconMask;
+        iSignalIconMask = mask;
+        }
+
+    iIconState  = aIconState;
+    iColorIndex = aIconColorIndex;
+    }
 // ---------------------------------------------------------------------------
 // CAknSignalIcon::LoadIconL
 // ---------------------------------------------------------------------------
@@ -182,6 +272,8 @@
     CFbsBitmap* bitmap      = NULL;
     CFbsBitmap* mask        = NULL;
 
+    TBool isHsdpa = ( aIconState >= EAknSignalHsdpaIndicatorAvailable
+                    && aIconState <= EAknSignalHsdpaIndicatorMultipdp );
     if ( iOffLine )
         {
         // Offline mode is not an actual signal state in the signal icon
@@ -200,6 +292,11 @@
         }
     else
         {
+        if( iATTEnable && isHsdpa)
+            {
+            LoadATTIconL( aIconState, aIconColorIndex );
+            return;
+            }
         switch( aIconState )
             {
             // Old legacy GPRS icons.
@@ -678,6 +775,17 @@
 //
 void CAknSignalIcon::ConstructL()
 	{
+	CRepository* repo = CRepository::NewL( KCRUidAvkon );
+
+    TInt aTTEnabled = EFalse;
+    iATTEnable = EFalse;
+    TInt crErr = repo->Get( KAknATTSignalIconEnable, aTTEnabled );
+    if ( crErr == KErrNone )
+        {
+        iATTEnable = aTTEnabled;
+        }
+    delete repo;
+    repo = NULL;
 	}
 
 //  End of File