coreapplicationuis/SysAp/Src/SysApAppUi.cpp
branchRCL_3
changeset 18 0818dd463d41
parent 17 5e7d68cc22e0
child 19 924385140d98
--- a/coreapplicationuis/SysAp/Src/SysApAppUi.cpp	Thu Jul 15 18:49:38 2010 +0300
+++ b/coreapplicationuis/SysAp/Src/SysApAppUi.cpp	Thu Aug 19 10:05:08 2010 +0300
@@ -59,6 +59,7 @@
 #include <secui.h>
 #include <settingsinternalcrkeys.h>
 
+#include "sysapganhandler.h"
 #include <AknNotifierController.h>
 #include <eikappui.h>
 #include <es_enum.h>
@@ -247,7 +248,8 @@
     iSysApAudioRoutingObserver( NULL ),
     iSysApCenRepCallForwardingObserver( NULL ),
     iSysApCenRepMsgWaitingObserver( NULL ),
-	iKeyBoardRepeatCount(-1)
+    iSysApGanHandler( NULL ),
+  	iKeyBoardRepeatCount(-1)
     {
     TRACES( RDebug::Print( _L("CSysApAppUi::CSysApAppUi()") ) );
     }
@@ -490,6 +492,15 @@
     
     DeactivatePSMifBatteryNotLowL ();
     
+    if( iSysApFeatureManager->GanSupported() )
+        {
+
+
+				RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsGanPropertyGanMode, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy  );
+				RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsGanPropertySignalLevel, RProperty::EInt, KAlwaysPassPolicy, KWriteDeviceDataPolicy  );
+        iSysApGanHandler = CSysApGanHandler::NewL( *this );
+        }
+
     TRACES( RDebug::Print( _L("CSysApAppUi::ConstructL: END") ) );
     }
 
@@ -570,6 +581,8 @@
 
     delete iSysApStartupController;
 
+    delete iSysApGanHandler;
+
 #ifdef RD_MULTIPLE_DRIVE
     iInsertedMemoryCards.Close();
     delete  iSysApDriveEjectHandler;
@@ -747,6 +760,7 @@
 				TInt errorCode2 = RProperty::Get( KPSUidStartup, KStartupSecurityCodeQueryStatus, securityQueryState);
             	TRACES( RDebug::Print( _L( "CSysApAppUi::HandleKeyEventL(): Reading value of KCoreAppUIsDisableKeyguard - State Value: %d"),alarmState));
             	TRACES( RDebug::Print( _L( "CSysApAppUi::HandleKeyEventL(): Reading value of KStartupSecurityCodeQueryStatus - State Value: %d"),securityQueryState));
+            	TInt callState( StateOfProperty( KPSUidCtsyCallInformation, KCTsyCallState ) );
 				//Disable keylock if Alarm is active or if a Security code query is active on the display
 				if ( alarmState == ECoreAppUIsDisableKeyguard || securityQueryState == ESecurityQueryActive )
                  	{
@@ -754,7 +768,10 @@
                  	}
 			    else
          		 	{
-         			KeyLock().EnableWithoutNote();
+                    if( callState != EPSCTsyCallStateConnected && !iDeviceLockEnabled)
+                        {
+                        KeyLock().EnableWithoutNote();
+                        }
          			}
                 }
             else
@@ -1888,8 +1905,11 @@
 void CSysApAppUi::UpdateSignalBarsL( const TInt aState )
     {
     TRACES( RDebug::Print( _L("CSysApAppUi::UpdateSignalBarsL aState: %d"), aState ) );
-
-    if( aState == KAknSignalOffLineMode || (iSysApOfflineModeController->OfflineModeActive() && !iEmergencyCallActive) )
+    if( iSysApGanHandler && iSysApGanHandler->IsInGanMode() )
+        {
+        iSignalNotify->SetSignalLevelL( iSysApGanHandler->GanSignalLevel() );
+        }
+	else if( aState == KAknSignalOffLineMode || (iSysApOfflineModeController->OfflineModeActive() && !iEmergencyCallActive) )
         {
         iSignalNotify->SetSignalLevelL( KAknSignalOffLineMode );
         }
@@ -1942,22 +1962,39 @@
             }
         iSignalNotify->SetWcdmaStateL( EAknSignalWcdmaIndicatorOff );
         iSignalNotify->SetHsdpaStateL( EAknSignalHsdpaIndicatorOff);
+        TRACES( RDebug::Print(_L("CSysApAppUi::SetSignalIndicatorL: gan off" ) ) );
+        iSignalNotify->SetUmaStateL( EAknSignalUmaIndicatorOff );
         }
     else
         {
-        // The device is in Online Mode
-        switch ( networkMode )
-            {
-            case ESysApGSM:
-                SetSignalIndicatorGsmL();
-                break;
-
-            case ESysApWCDMA:
-                SetSignalIndicatorWcdmaL();
-                break;
-
-            default:
-                break;
+        if( iSysApGanHandler && iSysApGanHandler->IsInGanMode() )
+            {
+            // Enter GAN: set GAN signal bar
+            SetSignalIndicatorGanL();
+            iGanEnabled = ETrue;
+            }
+        else
+            {
+            if( iGanEnabled )
+                {
+                UpdateSignalBarsL();
+                iGanEnabled = EFalse;
+                }
+
+            // The device is in Online Mode
+            switch ( networkMode )
+                {
+                case ESysApGSM:
+                    SetSignalIndicatorGsmL();
+                    break;
+
+                case ESysApWCDMA:
+                    SetSignalIndicatorWcdmaL();
+                    break;
+
+                default:
+                    break;
+                }
             }
         }
     }
@@ -2209,6 +2246,47 @@
     }
 
 // ----------------------------------------------------------------------------
+// CSysApAppUi::SetSignalIndicatorGanL()
+// ----------------------------------------------------------------------------
+void CSysApAppUi::SetSignalIndicatorGanL()
+    {
+    TRACES( RDebug::Print(_L("CSysApAppUi::SetSignalIndicatorGanL: available" ) ) );
+
+    TInt gprsStatus( 0 );
+    gprsStatus = StateOfProperty( KUidSystemCategory, KPSUidGprsStatusValue );
+
+    TRACES( RDebug::Print( _L("CSysApAppUi::SetSignalIndicatorGanL gprsStatus: %d" ), gprsStatus ) );
+
+    switch ( gprsStatus )
+        {
+        case EPSGprsContextActive:
+            iSignalNotify->SetUmaStateL( EAknSignalUmaIndicatorContext );
+            break;
+
+        case EPSGprsContextActivating:
+            iSignalNotify->SetUmaStateL( EAknSignalUmaIndicatorEstablishingContext );
+            break;
+
+        case EPSGprsSuspend:
+            iSignalNotify->SetUmaStateL( EAknSignalUmaIndicatorSuspended );
+            break;
+
+        case EPSGprsAttach:
+            iSignalNotify->SetUmaStateL( EAknSignalUmaIndicatorAttached );
+            break;
+
+        case EPSGprsMultibleContextActive:
+            iSignalNotify->SetUmaStateL( EAknSignalUmaIndicatorMultipdp );
+            break;
+
+        case EPSGprsUnattached:
+        default:
+            iSignalNotify->SetUmaStateL( EAknSignalUmaIndicatorAvailable );
+            break;
+        }
+    }
+
+// ----------------------------------------------------------------------------
 // CSysApAppUi::HandleGprsNotesL()
 // ----------------------------------------------------------------------------