diff -r 2a26698d78ba -r 38529f706030 phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp --- a/phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp Mon Mar 15 12:40:24 2010 +0200 +++ b/phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp Wed Mar 31 21:30:06 2010 +0300 @@ -19,6 +19,7 @@ // INCLUDE FILES #include // for FeatureManager #include +#include #include "cphoneuicontroller.h" #include "pevirtualengine.h" @@ -26,7 +27,6 @@ #include "cphoneenginehandler.h" #include "cphonesystemeventhandler.h" #include "cphoneremotecontrolhandler.h" -#include "mphoneviewcommandhandle.h" #include "phonestatedefinitions.h" #include "phonelogger.h" #include "phoneconstants.h" @@ -35,7 +35,8 @@ #include "cphonecenrepproxy.h" #include "cphonemediatorfactory.h" #include "tphonecmdparamnumberentryobserver.h" -#include +#include "cphonesecuritymodeobserver.h" +#include "cphoneviewcontroller.h" // ================= MEMBER FUNCTIONS ======================= @@ -54,12 +55,11 @@ // (other items were commented in a header). // ----------------------------------------------------------- // -void CPhoneUIController::ConstructL( - MPhoneViewCommandHandle* aViewCommandHandle ) +void CPhoneUIController::ConstructL( CPhoneViewController& aViewController ) { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneUIController::ConstructL()"); // Creates correct protocol DLL - CreateProtocolDllL( aViewCommandHandle ); + CreateProtocolDllL( aViewController ); // Reference the phone state machine iStateMachine = CPhoneStateHandle::Instance()->StateMachine(); @@ -72,7 +72,7 @@ iRemoteControlHandler = CPhoneRemoteControlHandler::NewL( iStateMachine ); // Create the key event forwarder iKeyEventForwarder = CPhoneKeyEventForwarder::NewL( - CEikonEnv::Static()->EikAppUi()->ClientRect(), iStateMachine, aViewCommandHandle ); + CEikonEnv::Static()->EikAppUi()->ClientRect(), iStateMachine, &aViewController ); TInt leaveCode( 0 ); TInt retry( 0 ); @@ -112,13 +112,22 @@ // Store the phone engine information in the state machine iStateMachine->SetPhoneEngine( iPhoneEngine ); - + + // Set up security mode observer. + iSecurityModeObserver = CPhoneSecurityModeObserver::NewL(); + iSecurityModeObserver->SetPhoneEngineInfo( iPhoneEngine->EngineInfo() ); + iStateMachine->SetSecurityModeObserver( iSecurityModeObserver ); + iStateMachine->SetSecurityMessageHandler( iSecurityModeObserver ); + // Set Number Entry observer TPhoneCmdParamNumberEntryObserver cmdParamNumberEntryObserver; cmdParamNumberEntryObserver.SetObserver( TCallBack( HandlePhoneNumberEditorCallBack, this ) ); - aViewCommandHandle->ExecuteCommand( EPhoneViewSetNumberEntryObserver, + aViewController.ExecuteCommand( EPhoneViewSetNumberEntryObserver, &cmdParamNumberEntryObserver); + // Set up controller to observe security mode state changes. + iStateMachine->SecurityMode()->RegisterStateObserver( aViewController ); + // Go to the startup state iStateMachine->ChangeState( EPhoneStateStartup ); @@ -132,12 +141,10 @@ // ----------------------------------------------------------------------------- // EXPORT_C CPhoneUIController* CPhoneUIController::NewL( - MPhoneViewCommandHandle* aViewCommandHandle ) + CPhoneViewController& aViewCommandHandle ) { - __ASSERT_DEBUG( aViewCommandHandle, - Panic( EPhoneCtrlParameterNotInitialized ) ); - - CPhoneUIController* self = new( ELeave ) CPhoneUIController; + + CPhoneUIController* self = new( ELeave ) CPhoneUIController(); CleanupStack::PushL( self ); self->ConstructL( aViewCommandHandle ); @@ -154,6 +161,7 @@ EXPORT_C CPhoneUIController::~CPhoneUIController() { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneUIController::~CPhoneUIController()"); + delete iSecurityModeObserver; delete iRemoteControlHandler; delete iSystemEventHandler; delete iEngineHandler; @@ -324,7 +332,6 @@ { __ASSERT_DEBUG( iStateMachine->State(), Panic( EPhoneCtrlInvariant ) ); - // Send key up message to engine so that we wouldn't accidentally play // any DTMF tone. @@ -353,8 +360,7 @@ // CPhoneUIController::CreateProtocolDllL // --------------------------------------------------------- // -void CPhoneUIController::CreateProtocolDllL( - MPhoneViewCommandHandle* aViewCommandHandle ) +void CPhoneUIController::CreateProtocolDllL( CPhoneViewController& aViewController ) { TBool voipSupported( EFalse ); @@ -373,14 +379,14 @@ if( voipSupported ) { iStateHandle = CPhoneStateHandle::CreateL( - aViewCommandHandle, + &aViewController, KVoIPExtension, KUidAppVoIPExtensionStates ); } else { iStateHandle = CPhoneStateHandle::CreateL( - aViewCommandHandle, + &aViewController, KGSMProtocol, KUidAppGSMStates ); }