--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuivoipextension/src/cphonestatemachinevoip.cpp Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,221 @@
+/*
+* Copyright (c) 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 CPhoneStateMachineVoIP class.
+*
+*/
+
+// INCLUDE FILES
+#include "cphonestatemachinevoip.h"
+#include "phonelogger.h"
+#include "phonestatedefinitionsvoip.h"
+#include "cphonestateidlevoip.h"
+#include "cphonestateincomingvoip.h"
+#include "cphonestatecallsetupvoip.h"
+#include "cphonestatesinglevoip.h"
+#include "cphonestatealertingvoip.h"
+#include "cphonecustomizationvoip.h"
+#include "cphonevoiperrormessageshandler.h"
+#include "cphonestateutilsvoip.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------------------------
+// CPhoneStateMachineVoIP::CPhoneStateMachineVoIP
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ---------------------------------------------------------------------------
+//
+CPhoneStateMachineVoIP::CPhoneStateMachineVoIP(
+ MPhoneViewCommandHandle* aViewCommandHandle ) :
+ CPhoneStateMachineGSM( aViewCommandHandle )
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneStateMachineVoIP::~CPhoneStateMachineVoIP()
+// Destructor
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CPhoneStateMachineVoIP::~CPhoneStateMachineVoIP()
+ {
+ __LOGMETHODSTARTEND( PhoneUIVoIPExtension,
+ "CPhoneStateMachineVoIP::~CPhoneStateMachineVoIP()" );
+
+ delete iVoipCustomization;
+ delete iStateUtils;
+ Dll::FreeTls();
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneStateMachineVoIP::ConstructL
+// Constructor
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CPhoneStateMachineVoIP::ConstructL()
+ {
+ __LOGMETHODSTARTEND(
+ PhoneUIVoIPExtension, "CPhoneStateMachineVoIP::ConstructL()" );
+
+ iVoipCustomization = CPhoneCustomizationVoip::NewL( *this, *iViewCommandHandle );
+ iCustomization = iVoipCustomization;
+ iStateUtils = CPhoneStateUtilsVoip::NewL( *this, *iViewCommandHandle );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneStateMachineVoIP::State
+// ---------------------------------------------------------------------------
+//
+MPhoneState* CPhoneStateMachineVoIP::State()
+ {
+ __LOGMETHODSTARTEND(
+ PhoneUIVoIPExtension, "CPhoneStateMachineVoIP::State()" );
+
+ TInt err( KErrNone );
+ TBool madeStateTransition( EFalse );
+ TBool deleteOldState( ETrue );
+
+ if( iOldStateId != iNewStateId )
+ {
+ if( iOldStateId == EPhoneStateIdle ||
+ iOldStateId == EPhoneStateEmergency )
+ {
+ deleteOldState = EFalse;
+ }
+ if ( deleteOldState )
+ {
+ // Possible that derived class has been deleted iState,
+ // so this delete statement may be useless.
+ delete iState;
+ iState = NULL;
+ }
+
+ // State transition need to be made - construct new state and
+ // destruct old
+ switch( iNewStateId )
+ {
+ case EPhoneStateCallSetup:
+ TRAP( err, iState = CPhoneStateCallSetupVoIP::NewL(
+ *this, *iViewCommandHandle, *iVoipCustomization ) );
+ __ASSERT_ALWAYS( KErrNone == err, User::Invariant() );
+ madeStateTransition = ETrue;
+ break;
+
+ case EPhoneStateIdle:
+ if( iIdleState == NULL )
+ {
+ TRAP( err, iIdleState = CPhoneStateIdleVoIP::NewL(
+ *this, *iViewCommandHandle, *iVoipCustomization ) );
+ __ASSERT_ALWAYS( KErrNone == err, User::Invariant() );
+ }
+ iState = iIdleState;
+ madeStateTransition = ETrue;
+ break;
+
+ case EPhoneStateIncoming:
+ TRAP( err, iState = CPhoneStateIncomingVoIP::NewL(
+ *this, *iViewCommandHandle, *iVoipCustomization ) );
+ __ASSERT_ALWAYS( KErrNone == err, User::Invariant() );
+ madeStateTransition = ETrue;
+ break;
+
+ case EPhoneStateSingle:
+ TRAP( err, iState = CPhoneStateSingleVoIP::NewL(
+ *this, *iViewCommandHandle, *iVoipCustomization ));
+ __ASSERT_ALWAYS( KErrNone == err, User::Invariant() );
+ madeStateTransition = ETrue;
+ break;
+
+ case EPhoneStateAlerting:
+ TRAP( err, iState = CPhoneStateAlertingVoIP::NewL(
+ *this, *iViewCommandHandle, *iVoipCustomization ));
+ __ASSERT_ALWAYS( KErrNone == err, User::Invariant() );
+ madeStateTransition = ETrue;
+ break;
+
+ default:
+ iState = CPhoneStateMachineGSM::State();
+ break;
+ }
+ }
+
+ if ( madeStateTransition )
+ {
+ iOldStateId = iNewStateId;
+ }
+
+ return iState;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneStateMachineVoIP::SetVoipErrorMessageHandler
+// ---------------------------------------------------------------------------
+//
+void CPhoneStateMachineVoIP::SetVoipErrorMessageHandler(
+ CPhoneVoIPErrorMessagesHandler& iErrorHandler )
+ {
+ iVoipErrorMessageHandler = &iErrorHandler;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneStateMachineVoIP::VoipErrorMessageHandler
+// ---------------------------------------------------------------------------
+//
+CPhoneVoIPErrorMessagesHandler&
+ CPhoneStateMachineVoIP::VoipErrorMessageHandler() const
+ {
+ __ASSERT_DEBUG( NULL != iVoipErrorMessageHandler, User::Invariant() );
+ return *iVoipErrorMessageHandler;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneStateMachineVoIP::StateUtils
+// ---------------------------------------------------------------------------
+//
+CPhoneStateUtilsVoip& CPhoneStateMachineVoIP::StateUtils()
+ {
+ return *iStateUtils;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneStateMachineVoIP::NewL()
+// Constructor
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CPhoneStateMachineVoIP* CPhoneStateMachineVoIP::NewL(
+ MPhoneViewCommandHandle* aViewCommandHandle )
+ {
+ __LOGMETHODSTARTEND(
+ PhoneUIVoIPExtension, "CPhoneStateMachineVoIP::NewL()" );
+
+ CPhoneStateMachineVoIP* self =
+ new (ELeave) CPhoneStateMachineVoIP( aViewCommandHandle );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// End of File