diff -r 000000000000 -r dd21522fd290 browserutilities/schemehandler/SchemeDispatcher/src/TelHandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserutilities/schemehandler/SchemeDispatcher/src/TelHandler.cpp Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,194 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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 Scheme handler interface implementation for wtai:// scheme +* +* +*/ + + +// INCLUDE FILES + +#include "SchemeDispLogger.h" +#include "TelHandler.h" +#include // For REComSession +#include +#include +#include + +// ================= CONSTANTS ======================= +_LIT( KPattern,"tel:"); +_LIT( KSIPPattern,"sip:"); + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// CTelHandler::NewL() +// --------------------------------------------------------- +// +CTelHandler* CTelHandler::NewL( const TDesC& aUrl ) + { + CLOG_ENTERFN( "CTelHandler::NewL()" ); + + CTelHandler* self=new(ELeave) CTelHandler(); + CleanupStack::PushL(self); + self->ConstructL( aUrl ); + CleanupStack::Pop(self); + + CLOG_LEAVEFN( "CTelHandler::NewL()" ); + + return self; + } + +// --------------------------------------------------------- +// CTelHandler::~CTelHandler() +// --------------------------------------------------------- +// +CTelHandler::~CTelHandler() + { + CLOG_ENTERFN( "CTelHandler::~CTelHandler()" ); + + if( iTelService != NULL ) + { + iTelService->RemoveObserver(this); + delete iTelService; + iTelService = NULL; + } + + CLOG_LEAVEFN( "CTelHandler::~CTelHandler()" ); + } + +// --------------------------------------------------------- +// CTelHandler::CTelHandler() +// --------------------------------------------------------- +// +CTelHandler::CTelHandler() : CBaseHandler() + { + // Deliberately do nothing here : See ConstructL() for initialisation + // completion. + } + +// --------------------------------------------------------- +// CTelHandler::ConstructL() +// --------------------------------------------------------- +// +void CTelHandler::ConstructL( const TDesC& aUrl ) + { + CLOG_ENTERFN( "CTelHandler::ConstructL()" ); + + BaseConstructL( aUrl ); + + CLOG_LEAVEFN( "CTelHandler::ConstructL()" ); + } + +// --------------------------------------------------------- +// CTelHandler::HandleUrlEmbeddedL() +// --------------------------------------------------------- +// +void CTelHandler::HandleUrlEmbeddedL() + { + CLOG_ENTERFN( "CTelHandler::HandleUrlEmbeddedL()" ); + + TPtrC path; + TInt err; + + iTelService = CBrowserTelService::NewL(); + iTelService->AddObserver(this); + + TRAP( err, path.Set( RemoveSchemeFromUrlL( KPattern ) ) ); + if( err == KErrNone ) + { + TBool confirmDtmfValue = ReadSdConfirmDtmfValueL(); + CLOG_WRITE_FORMAT( "CTelHandler::HandleUrlEmbeddedL: path: %S", &path ); + + if( 0 != path.Length() ) + { + err = iTelService->MakeCall(path, confirmDtmfValue); + } + else + { + err = KErrCancel; + } + } + else + { + TRAP( err, path.Set( RemoveSchemeFromUrlL( KSIPPattern ) ) ); + if( err == KErrNone ) + { + TBool confirmDtmfValue = ReadSdConfirmDtmfValueL(); + CLOG_WRITE_FORMAT( "CTelHandler::HandleUrlEmbeddedL: path: %S", &path ); + + if( 0 != path.Length() ) + { + err = iTelService->MakeVOIPCall(path, confirmDtmfValue); + } + else + { + err = KErrCancel; + } + } + } + + + NotifyClient(); + + ErrorHandlerL( err ); + + CLOG_LEAVEFN( "CTelHandler::HandleUrlEmbeddedL()" ); + } + +// --------------------------------------------------------- +// CTelHandler::HandleUrlStandaloneL() +// --------------------------------------------------------- +// +void CTelHandler::HandleUrlStandaloneL() + { + CLOG_ENTERFN( "CTelHandler::HandleUrlStandaloneL()" ); + + LaunchSchemeAppWithCommandLineL(); + + CLOG_LEAVEFN( "CTelHandler::HandleUrlStandaloneL()" ); + } + +// --------------------------------------------------------- +// CTelHandler::BrowserTelServiceEvent() +// --------------------------------------------------------- +// +void CTelHandler::BrowserTelServiceEvent( TBrowserTelServiceState aEvent ) + { + if( ( EIdle == aEvent ) && ( NULL !=iSchemeDoc ) ) + { + iSchemeDoc->HandleServerAppExit( KErrNone ); + } + } + +// --------------------------------------------------------- +// CTelHandler::BrowserTelServiceError() +// --------------------------------------------------------- +// +void CTelHandler::BrowserTelServiceError( TBrowserTelServiceError /*aError*/) + { + } + +// --------------------------------------------------------- +// CTelHandler::BrowserTelServiceError() +// --------------------------------------------------------- +// +void CTelHandler::NotifyClient() + { + if( NULL !=iSchemeDoc ) + { + iSchemeDoc->HandleServerAppExit( KErrNone ); + } + }