diff -r 594d59766373 -r 7d48bed6ce0c vmbx/vmbxengine/src/vmbxemergencycall.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vmbx/vmbxengine/src/vmbxemergencycall.cpp Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,134 @@ +/* +* Copyright (c) 2009 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 the CVmbxEmergencyCall class +* +*/ + +// INCLUDE FILES +#include +#include +#include "vmbxlogger.h" +#include "vmbxemergencycall.h" + +// CONSTANTS + +// ============================ MEMBER FUNCTIONS ============================= + +// --------------------------------------------------------------------------- +// CVmbxEngineBase::CVmbxEngineBase +// C++ default constructor can NOT contain any code, that +// might leave. +// --------------------------------------------------------------------------- +// +CVmbxEmergencyCall::CVmbxEmergencyCall() + { + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::CVmbxEmergencyCall =>" ); + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::CVmbxEmergencyCall <=" ); + } + +// --------------------------------------------------------------------------- +// CVmbxEmergencyCall::~CVmbxEngineBase +// Destructor +// --------------------------------------------------------------------------- +// +CVmbxEmergencyCall::~CVmbxEmergencyCall() + { + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::~CVmbxEmergencyCall =>" ); + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::~CVmbxEmergencyCall <=" ); + } + +// --------------------------------------------------------------------------- +// CVmbxEmergencyCall::NewL +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CVmbxEmergencyCall* CVmbxEmergencyCall::NewL() + { + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::NewL =>" ); + CVmbxEmergencyCall* vmbx = new( ELeave )CVmbxEmergencyCall(); + CleanupStack::PushL( vmbx ); + vmbx->ConstructL(); + CleanupStack::Pop( vmbx ); + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::NewL <=" ); + return vmbx; + } + +// --------------------------------------------------------------------------- +// CVmbxEmergencyCall::ConstructL +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +void CVmbxEmergencyCall::ConstructL() + { + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::ConstructL =>" ); + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::ConstructL <=" ); + } + +// ---------------------------------------------------------------------------- +// CVmbxEmergencyCall::HandleDialL +// +// ---------------------------------------------------------------------------- +// +void CVmbxEmergencyCall::HandleDialL( const TInt /*aStatus*/ ) + { + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::HandleDialL =>" ); + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::HandleDialL <=" ); + } + +// ---------------------------------------------------------------------------- +// CVmbxEmergencyCall::HandleEmergencyDialL() +// ---------------------------------------------------------------------------- +// +void CVmbxEmergencyCall::HandleEmergencyDialL( const TInt /*aStatus*/ ) + { + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::HandleEmergencyDialL =>" ); + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::HandleEmergencyDialL <=" ); + } + +// --------------------------------------------------------------------------- +// CVmbxEmergencyCall::IsEmergencyNumber +// Verifies if the given number is an emergency number +// --------------------------------------------------------------------------- +// +TBool CVmbxEmergencyCall::IsEmergencyNumber( const TDesC& aNumber ) + { + VMBLOGSTRING( "VMBX: CVmbxEmergencyCall::IsEmergencyNumber: =>" ); + TBool isEmergency( EFalse ); + // Emergency Call API does not strip invalid characters like Call UI does, + // so it is done manually here. + + TPhCltTelephoneNumber number( aNumber.Left( KPhCltTelephoneNumberLength ) ); + PhCltUtils::RemoveInvalidChars( number ); + // Return value is KErrArgument, when number is more than 6 digits and + // then number cannot be emergency number. + // So no need to check the return value here. + CPhCltEmergencyCall* emCall( NULL ); + TRAPD( err, emCall = CPhCltEmergencyCall::NewL( this ) ); + if ( KErrNone == err ) + { + TInt result = emCall->IsEmergencyPhoneNumber( aNumber, isEmergency ); + if ( result != KErrNone ) + { + isEmergency = EFalse; + } + } + delete emCall; + + VMBLOGSTRING2( "VMBX: CVmbxEmergencyCall::IsEmergencyNumber%I <=", + isEmergency); + + return isEmergency; + } + +// End of file