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 <MCEManager.h>
+#include <MCEOutRefer.h>
+#include <MCERefer.h>
+#include <Uri8.h>
+
+#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<TMCETestUIEngineCmdBase>&
+ 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