diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/MCETestUI/MCETestUIEngine/src/CMCETestUIEngineOutRefer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/MCETestUI/MCETestUIEngine/src/CMCETestUIEngineOutRefer.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,423 @@ +/* +* Copyright (c) 2005 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: +* +*/ + + + + +// MCE API + +#include +#include +#include +#include + +#include "MCETestUIEngineDefaultValues.h" +#include "CMCETestUIQuestionDataQuery.h" +#include "CMCETestUIEngine.h" +#include "CMCETestUIEngineProfileContainer.h" +#include "CMCETestUIEngineProfile.h" +#include "CMCETestUIEngineOutRefer.h" +#include "TMCETestUIEngineCmdSubscribeEvent.h" +#include "TMCETestUIEngineCmdDeleteEvent.h" +#include "cmcetestuienginesession.h" +#include "cmcetestuiengineevent.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::NewL() +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutRefer* CMCETestUIEngineOutRefer::NewL( + CMCETestUIEngine& aEngine, + CMCETestUIEngineProfile& aProfile) + { + + CMCETestUIEngineOutRefer* self = + new (ELeave) CMCETestUIEngineOutRefer( aEngine, + aProfile); + CleanupStack::PushL( self ); + self->ConstructL(aProfile); + CleanupStack::Pop( self ); + return self; + } +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::NewL() +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutRefer* CMCETestUIEngineOutRefer::NewL( + CMCETestUIEngine& aEngine, + CMCETestUIEngineSession& aSession) + { + + CMCETestUIEngineOutRefer* self = + new (ELeave) CMCETestUIEngineOutRefer( aEngine, + aSession); + CleanupStack::PushL( self ); + self->ConstructL(aSession); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::NewL() +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutRefer* CMCETestUIEngineOutRefer::NewL( + CMCETestUIEngine& aEngine, + CMCETestUIEngineEvent& aEvent) + { + + CMCETestUIEngineOutRefer* self = + new (ELeave) CMCETestUIEngineOutRefer( aEngine, + aEvent); + CleanupStack::PushL( self ); + self->ConstructL(aEvent); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::CMCETestUIEngineOutRefer +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutRefer::CMCETestUIEngineOutRefer( + CMCETestUIEngine& aEngine, + CMCETestUIEngineProfile& aProfile ) + : CMCETestUIEngineRefer( aEngine ), + iProfile( &aProfile ), + iId( 0 ) + { + } +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::CMCETestUIEngineOutRefer +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutRefer::CMCETestUIEngineOutRefer( + CMCETestUIEngine& aEngine, + CMCETestUIEngineSession& aSession ) + : CMCETestUIEngineRefer( aEngine ), + iSession( &aSession ), + iId( 0 ) + { + } +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::CMCETestUIEngineOutRefer +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutRefer::CMCETestUIEngineOutRefer( + CMCETestUIEngine& aEngine, + CMCETestUIEngineEvent& aEvent ) + : CMCETestUIEngineRefer( aEngine ), + iEvent( &aEvent ), + iId( 0 ) + { + } + + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::ConstructL() +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineOutRefer::ConstructL(CMCETestUIEngineProfile& /*aProfile*/) + { + + ///////////////////// + // + // TODO: After implementing wrappers for streams, sinks and sources + // this function should be refactored to make use of them. That will + // also simplify the function to some extent. + // + ////////////////////// + + + BaseConstructL(); + if(iProfile ) + { + FillProfileRegistrar(); + + if(ReferParamsL(iReferParams)) + { + // Solve recipient + CMCETestUIQuestionDataQuery* question = + CMCETestUIQuestionDataQuery::NewLC(); + question->SetCaptionL( KUserQuestionInputRecipient ); + question->SetDefaultValueL(iReferParams.iRecipentAddress ); + question->SetAnswerL( iReferParams.iRecipentAddress ); + TBufC8<100> recipient( question->Answer8() ); + + CleanupStack::PopAndDestroy( question ); + //solve referTo + + CMCETestUIQuestionDataQuery* questionreferto = + CMCETestUIQuestionDataQuery::NewLC(); + questionreferto->SetCaptionL( KUserQuestionInputReferTo ); + questionreferto->SetDefaultValueL(iReferParams.iReferTo ); + questionreferto->SetAnswerL( iReferParams.iReferTo ); + TBufC8<100> referTo( questionreferto->Answer8() ); + + CleanupStack::PopAndDestroy( questionreferto ); + // solve originator + + if ( iReferParams.originator.Compare(KNone)) + { + HBufC8* orig8 = HBufC8::NewL(iReferParams.originator.Length()); + TPtr8 ptr = orig8->Des(); + ptr.Copy(iReferParams.originator); + // Create OutRfer + CMceOutRefer* outRefer = CMceOutRefer::NewL( + iEngine.MCEManager(), + iProfile->Profile(), + recipient,referTo); + CleanupStack::PushL(outRefer); + CleanupStack::Pop( outRefer ); + iRefer = outRefer; + iOutRefer = outRefer; + } + else + { + // Create OutEvent + CMceOutRefer* outRefer = CMceOutRefer::NewL( + iEngine.MCEManager(), + iProfile->Profile(), + recipient,referTo ); + CleanupStack::PushL(outRefer); + CleanupStack::Pop( outRefer ); + iRefer = outRefer; + iOutRefer = outRefer; + } + // Get identity + iId = iEngine.NextOutReferId(); + } + } + + + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::ConstructL(CMCETestUIEngineSession& aSession) +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineOutRefer::ConstructL(CMCETestUIEngineSession& aSession) + { + + ///////////////////// + // + // TODO: After implementing wrappers for streams, sinks and sources + // this function should be refactored to make use of them. That will + // also simplify the function to some extent. + // + ////////////////////// + + + BaseConstructL(); + if(iSession ) + { + + if(ReferToParamsL(iReferParams)) + { + + //solve referTo + + CMCETestUIQuestionDataQuery* questionreferto = + CMCETestUIQuestionDataQuery::NewLC(); + questionreferto->SetCaptionL( KUserQuestionInputReferTo ); + questionreferto->SetDefaultValueL(iReferParams.iReferTo ); + questionreferto->SetAnswerL( iReferParams.iReferTo ); + TBufC8<100> referTo( questionreferto->Answer8() ); + + CleanupStack::PopAndDestroy( questionreferto ); + + + // Create OutEvent + CMceOutRefer* outRefer = CMceOutRefer::NewL( + aSession.Session(),referTo ); + iRefer = outRefer; + iOutRefer = outRefer; + // Get identity + iId = iEngine.NextOutReferId(); + } + } + + + } +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::ConstructL() +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineOutRefer::ConstructL(CMCETestUIEngineEvent& aEvent) + { + + ///////////////////// + // + // TODO: After implementing wrappers for streams, sinks and sources + // this function should be refactored to make use of them. That will + // also simplify the function to some extent. + // + ////////////////////// + + + BaseConstructL(); + if(iEvent ) + { + + if(ReferParamsL(iReferParams)) + { + //solve referTo + + CMCETestUIQuestionDataQuery* questionreferto = + CMCETestUIQuestionDataQuery::NewLC(); + questionreferto->SetCaptionL( KUserQuestionInputReferTo ); + questionreferto->SetDefaultValueL(iReferParams.iReferTo ); + questionreferto->SetAnswerL( iReferParams.iReferTo ); + TBufC8<100> referTo( questionreferto->Answer8() ); + + CleanupStack::PopAndDestroy( questionreferto ); + // Create Outrefer + CMceOutRefer* outRefer = CMceOutRefer::NewL( + aEvent.Event(),referTo ); + CleanupStack::PushL(outRefer); + CleanupStack::Pop( outRefer ); + iRefer = outRefer; + iOutRefer = outRefer; + // Get identity + iId = iEngine.NextOutReferId(); + } + } + + + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::~CMCETestUIEngineOutRefer +// ----------------------------------------------------------------------------- +// +EXPORT_C CMCETestUIEngineOutRefer::~CMCETestUIEngineOutRefer() + { + delete iOutRefer; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::GetCommands +// ----------------------------------------------------------------------------- +// +const RPointerArray& + CMCETestUIEngineOutRefer::GetCommandsL() + { + iCommands.ResetAndDestroy(); + + // Get base class commands + CMCETestUIEngineRefer::GetCommandsL(); + + // Get own commands + TInt state = iOutRefer->State(); + + switch( state ) + { + case CMceRefer::EIdle: + { + iCommands.Append( new (ELeave) + TMCETestUIEngineCmdRefer( iEngine, *this ) ); + break; + } + + case CMceRefer::EAccepted: + { + break; + } + + case CMceRefer::EPending: + { + break; + } + default: + break; + } + + return iCommands; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::Id +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CMCETestUIEngineOutRefer::Id() const + { + return iId; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::OutSession +// ----------------------------------------------------------------------------- +// +CMceOutRefer& CMCETestUIEngineOutRefer::OutRefer() + { + return *iOutRefer; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::ReferParams +// ----------------------------------------------------------------------------- +// + +TBool CMCETestUIEngineOutRefer::ReferParamsL(TReferParams &aReferParams) +{ + return iEngine.ReferParamsL( aReferParams); + +} +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::ReferToParams +// ----------------------------------------------------------------------------- +// + +TBool CMCETestUIEngineOutRefer::ReferToParamsL(TReferParams &aReferParams) +{ + return iEngine.ReferToParamsL( aReferParams); + +} +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutRefer::FillProfileRegistrar +// ----------------------------------------------------------------------------- +// + +void CMCETestUIEngineOutRefer::FillProfileRegistrar() + { + // trying to get profile registrar + + TUriParser8 parser; + const TDesC8& aor = iProfile->Aor(); + parser.Parse( aor ) ; + CUri8* uri8 = CUri8::NewLC( parser ); + const TDesC8& registrar = uri8->Uri().Extract( EUriHost ) ; + + HBufC*registrar16 = HBufC16::NewLC( KRecipent().Length() + registrar.Length() ); + TPtr registrarPtr = registrar16->Des(); + registrarPtr.Copy( registrar ); + + iReferParams.iRecipentAddress.Append(KRecipent) ; + iReferParams.iRecipentAddress.Append(*registrar16) ; + + iReferParams.iReferTo.Append(KRecipent) ; + iReferParams.iReferTo.Append(*registrar16) ; + + CleanupStack::PopAndDestroy( registrar16 ); + registrar16 = NULL; + + CleanupStack::PopAndDestroy( uri8 ); + uri8 = NULL; + // profile registrar end ..... + } \ No newline at end of file