phoneapp/phoneuicontrol/src/cphonestatestartup.cpp
changeset 0 5f000ab63145
child 14 24062c24fe38
child 21 92ab7f8d0eab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuicontrol/src/cphonestatestartup.cpp	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,313 @@
+/*
+* Copyright (c) 2005-2007 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 CPhoneStateStartup class.
+*
+*/
+
+
+// INCLUDES
+#include "cphonestatestartup.h"
+#include "phonestatedefinitions.h"
+#include "mphonestatemachine.h"
+#include "tphonecmdparamKeycapture.h"
+#include "tphonecmdparamboolean.h"
+#include "phonelogger.h"
+#include "phonerssbase.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+EXPORT_C CPhoneStateStartup::CPhoneStateStartup( 
+    MPhoneStateMachine* aStateMachine, 
+    MPhoneViewCommandHandle* aViewCommandHandle,
+    MPhoneCustomization* aPhoneCustomization
+     ) : 
+    CPhoneState( aStateMachine, aViewCommandHandle, aPhoneCustomization ),
+    iPEReady( EFalse ),
+    iPhoneReady( EFalse )
+    {
+    }
+
+// -----------------------------------------------------------
+// CPhoneStateStartup::~CPhoneStateStartup()
+// Destructor
+// (other items were commented in a header).
+// -----------------------------------------------------------
+//
+EXPORT_C CPhoneStateStartup::~CPhoneStateStartup()
+    {
+    delete iCreateNote;
+    }
+
+// -----------------------------------------------------------
+// CPhoneStateStartup::ConstructL()
+// Constructor
+// (other items were commented in a header).
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateStartup::ConstructL()
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::ConstructL() ");
+    CPhoneState::BaseConstructL();
+    
+    // Set send key activation off.
+    TPhoneCmdParamBoolean boolean;
+    boolean.SetBoolean( EFalse );
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSendKeyDialerActivationFlag, 
+            &boolean );
+
+    // CAPTURE KEY EVENTS PERMANENTLY
+        
+    // Capture the up and down events for the No key
+    TPhoneCmdParamKeyCapture noKeyCaptureParam;
+    noKeyCaptureParam.SetKey( EStdKeyNo );
+    noKeyCaptureParam.SetKeyCode( EKeyNo );
+    noKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents );
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewStartCapturingKey, 
+        &noKeyCaptureParam );
+          
+    // Capture the up and down events for the EStdKeyEnd key
+    TPhoneCmdParamKeyCapture endKeyCaptureParam;
+    endKeyCaptureParam.SetKey( EStdKeyEnd );
+    endKeyCaptureParam.SetKeyCode( EKeyEnd );
+    endKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents );
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewStartCapturingKey, 
+        &endKeyCaptureParam );
+    }
+
+// -----------------------------------------------------------
+// CPhoneStateStartup::NewL()
+// Constructor
+// (other items were commented in a header).
+// -----------------------------------------------------------
+//
+EXPORT_C CPhoneStateStartup* CPhoneStateStartup::NewL( 
+    MPhoneStateMachine* aStateMachine, 
+    MPhoneViewCommandHandle* aViewCommandHandle,
+    MPhoneCustomization* aPhoneCustomization )
+    {
+    CPhoneStateStartup* self = new (ELeave) CPhoneStateStartup( 
+        aStateMachine, aViewCommandHandle, aPhoneCustomization );
+    
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    
+    return self;
+    }
+
+// -----------------------------------------------------------
+// CPhoneStateStartup::HandlePhoneEngineMessageL
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateStartup::HandlePhoneEngineMessageL( 
+    const TInt aMessage, 
+    TInt aCallId )
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandlePhoneEngineMessageL() ");
+    switch ( aMessage )
+        {
+        case MEngineMonitor::EPEMessagePEConstructionReady:
+            HandlePEConstructionReadyL( aCallId );
+            break;
+            
+        default:
+            CPhoneState::HandlePhoneEngineMessageL( aMessage, aCallId );
+            break;
+        }
+    }
+
+// -----------------------------------------------------------
+// CPhoneStateStartup::HandlePEConstructionReadyL
+// -----------------------------------------------------------
+//
+void CPhoneStateStartup::HandlePEConstructionReadyL( TInt /*aCallId*/ )
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandlePEConstructionReadyL() ");
+    // Indicate that phone engine construction is ready
+    iPEReady = ETrue;
+
+    // Only go to the idle state if phone is also ready
+    if ( iPhoneReady )
+        {
+        // Security mode check. 
+	    TPhoneCmdParamBoolean isSecurityMode;      
+        iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode );        
+        if ( !isSecurityMode.Boolean() && !IsSimOk() )
+            {
+            TPhoneCmdParamBoolean securityMode;
+            securityMode.SetBoolean( ETrue );
+            iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSecurityMode, &securityMode );
+            iCreateNote = CIdle::NewL( CActive::EPriorityHigh );
+            
+            CreateAndShowNoteAfterIdle(); 
+            }
+        // Go to idle state
+        SetDefaultFlagsL();
+        iCbaManager->UpdateCbaL( EPhoneEmptyCBA );
+        
+        iViewCommandHandle->ExecuteCommand( EPhoneViewPrepareIcons );
+        
+        iStateMachine->ChangeState( EPhoneStateIdle );
+        }
+    }
+
+// -----------------------------------------------------------
+// CPhoneStateStartup::HandleKeyMessageL
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateStartup::HandleKeyMessageL( 
+    TPhoneKeyEventMessages /*aMessage*/,
+    TKeyCode /*aCode*/ )
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandleKeyMessageL( ) ");
+
+    // TBD: Panic if PE Construction fails
+    // For Debug use only
+    // If a key event is received in this state, either the phone engine
+    // is not ready or the phone has not started up yet. Display an error note
+    // if the phone engine is not ready.
+    if ( iPhoneReady && !iPEReady )
+        {
+        SendGlobalErrorNoteL( EPhoneNoteTextPEFailedAtStartup );
+        }
+    }
+
+// -----------------------------------------------------------
+// CPhoneStateStartup::HandleKeyEventL
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateStartup::HandleKeyEventL(
+        const TKeyEvent& /*aKeyEvent*/, TEventCode /*aEventCode*/ )
+    {
+    // Empty implementation
+    }
+
+// CPhoneStateStartup::HandleCreateNumberEntryL
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateStartup::HandleCreateNumberEntryL( 
+        const TKeyEvent& /* aKeyEvent */ ,
+        TEventCode /* aEventCode */ )
+    {
+    // Empty implementation
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandleCreateNumberEntryL() ");   
+    }
+
+// -----------------------------------------------------------
+// CPhoneStateStartup::HandleDtmfKeyToneL
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateStartup::HandleDtmfKeyToneL( 
+        const TKeyEvent& /* aKeyEvent */,
+        TEventCode /* aEventCode */ )
+    {
+    // Empty implementation
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandleDtmfKeyToneL() ");
+    }
+    
+// -----------------------------------------------------------
+// CPhoneStateStartup::HandlePhoneStartupL
+// -----------------------------------------------------------
+//
+EXPORT_C void CPhoneStateStartup::HandlePhoneStartupL()
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandlePhoneStartupL() ");
+    // Indicate that the phone is ready
+    iPhoneReady = ETrue;
+
+    // Only go to idle state when Phone engine is also ready
+    if ( iPEReady )
+        {
+        // Security mode check.
+	    TPhoneCmdParamBoolean isSecurityMode;      
+        iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode );
+        if ( !isSecurityMode.Boolean() && !IsSimOk() )
+            {
+            TPhoneCmdParamBoolean securityMode;
+            securityMode.SetBoolean( ETrue );
+            iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSecurityMode, &securityMode );
+            iCreateNote = CIdle::NewL( CActive::EPriorityHigh );
+            
+            CreateAndShowNoteAfterIdle(); 
+            }
+        // Go to idle state
+        SetDefaultFlagsL();
+        iCbaManager->UpdateCbaL( EPhoneEmptyCBA );
+        
+        iViewCommandHandle->ExecuteCommand( EPhoneViewPrepareIcons );
+        iViewCommandHandle->ExecuteCommand( EPhoneViewLoadPlugins );
+        
+        iStateMachine->ChangeState( EPhoneStateIdle );
+        }
+    }
+
+// ---------------------------------------------------------
+// CPhoneStateStartup::HandleIdleForegroundEventL
+// Phone should show security note asap. 
+// Active idle might be in front quite early if f.e. rejected SIM 
+// ---------------------------------------------------------
+//
+EXPORT_C void CPhoneStateStartup::HandleIdleForegroundEventL()
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandleIdleForegroundEventL( ) ");
+    // Security mode check. 
+    TPhoneCmdParamBoolean isSecurityMode;      
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode );        
+    if ( !isSecurityMode.Boolean() && !IsSimOk() )
+        {
+        TPhoneCmdParamBoolean securityMode;
+        securityMode.SetBoolean( ETrue );
+        iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSecurityMode, &securityMode );
+        iCreateNote = CIdle::NewL( CActive::EPriorityHigh );
+        
+        CreateAndShowNoteAfterIdle(); 
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneStateStartup::CreateAndShowNoteAfterIdle
+//
+// Callback function.
+// -----------------------------------------------------------------------------
+//
+void CPhoneStateStartup::CreateAndShowNoteAfterIdle()
+    {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneStateStartup::CreateAndShowNoteAfterIdle ");
+        
+    if ( !iCreateNote->IsActive() )
+        {
+        iCreateNote->Start( 
+            TCallBack( DoShowNoteL, this ) );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneStateStartup::DoShowNoteL
+//
+// Callback function.
+// -----------------------------------------------------------------------------
+//
+TInt CPhoneStateStartup::DoShowNoteL( TAny* aAny )
+    {        
+    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneStateStartup::DoShowNoteL ");
+    static_cast< CPhoneStateStartup* >( aAny )->
+        StartShowSecurityNoteL();
+
+    return KErrNone;
+    }
+
+// End of File