diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/MCETestUI/MCETestUIEngine/src/CMCETestUIEngineOutEvent.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/MCETestUI/MCETestUIEngine/src/CMCETestUIEngineOutEvent.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,312 @@ +/* +* 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 "MCETestUIEngineDefaultValues.h" +#include "CMCETestUIQuestionDataQuery.h" +#include "CMCETestUIEngine.h" +#include "CMCETestUIEngineProfileContainer.h" +#include "CMCETestUIEngineProfile.h" +#include "CMCETestUIEngineOutEvent.h" +#include "TMCETestUIEngineCmdSubscribeEvent.h" +#include "TMCETestUIEngineCmdUpdateEvent.h" +#include "TMCETestUIEngineCmdDeleteEvent.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::NewL() +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutEvent* CMCETestUIEngineOutEvent::NewL( + CMCETestUIEngine& aEngine, + CMCETestUIEngineProfile& aProfile) + { + + CMCETestUIEngineOutEvent* self = + new (ELeave) CMCETestUIEngineOutEvent( aEngine, + aProfile); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::CMCETestUIEngineOutEvent +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutEvent::CMCETestUIEngineOutEvent( + CMCETestUIEngine& aEngine, + CMCETestUIEngineProfile& aProfile ) + : CMCETestUIEngineEvent( aEngine ), + iProfile( &aProfile ), + iId( 0 ) + { + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::ConstructL() +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineOutEvent::ConstructL() + { + + ///////////////////// + // + // 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(); + FillProfileRegistrar(); + + if(EventParamsL(iEventParams)) + { + // Solve recipient + CMCETestUIQuestionDataQuery* question = + CMCETestUIQuestionDataQuery::NewLC(); + question->SetCaptionL( KUserQuestionInputRecipient ); + question->SetDefaultValueL(iEventParams.iRecipentAddress ); + question->SetAnswerL( iEventParams.iRecipentAddress ); + TBufC8<100> recipient( question->Answer8() ); + + CleanupStack::PopAndDestroy( question ); + //solve eventheader + + CMCETestUIQuestionDataQuery* questioneventheader = + CMCETestUIQuestionDataQuery::NewLC(); + questioneventheader->SetCaptionL( KUserQuestionInputEventHeader ); + questioneventheader->SetDefaultValueL(iEventParams.iEventHeader ); + questioneventheader->SetAnswerL( iEventParams.iEventHeader ); + TBufC8<100> eventHeader( questioneventheader->Answer8() ); + + CleanupStack::PopAndDestroy( questioneventheader ); + // solve originator + + if ( iEventParams.originator.Compare(KNone)) + { + HBufC8* orig8 = HBufC8::NewL(iEventParams.originator.Length()); + TPtr8 ptr = orig8->Des(); + ptr.Copy(iEventParams.originator); + // Create OutEvent + CMceOutEvent* outEvent = CMceOutEvent::NewL( + iEngine.MCEManager(), + iProfile->Profile(), + recipient,eventHeader,iEventParams.refreshInterval,orig8 ); + CleanupStack::PushL(outEvent); + CleanupStack::Pop( outEvent ); + iEvent = outEvent; + iOutEvent = outEvent; + } + else + { + // Create OutEvent + CMceOutEvent* outEvent = CMceOutEvent::NewL( + iEngine.MCEManager(), + iProfile->Profile(), + recipient,eventHeader,iEventParams.refreshInterval ); + CleanupStack::PushL(outEvent); + CleanupStack::Pop( outEvent ); + iEvent = outEvent; + iOutEvent = outEvent; + } + // Get identity + iId = iEngine.NextOutEventId(); + } + + } +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::NewL() +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutEvent* CMCETestUIEngineOutEvent::NewL( + CMCETestUIEngine& aEngine, + CMceOutEvent* aOutEvent) + { + + CMCETestUIEngineOutEvent* self = + new (ELeave) CMCETestUIEngineOutEvent( aEngine, + aOutEvent); + CleanupStack::PushL( self ); + self->ConstructL(aOutEvent); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::CMCETestUIEngineOutEvent +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineOutEvent::CMCETestUIEngineOutEvent( + CMCETestUIEngine& aEngine, + CMceOutEvent* aOutEvent ) + : CMCETestUIEngineEvent( aEngine ), + iOutEvent( aOutEvent ), + iId( 0 ) + { + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::ConstructL() +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineOutEvent::ConstructL(CMceOutEvent* /*aOutEvent*/) + { + + ///////////////////// + // + // 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. + // + ////////////////////// + + + User::LeaveIfError( iOutEvent ? KErrNone : KErrArgument ); + + BaseConstructL(); + iEvent = iOutEvent; + + // Get identity + iId = iEngine.NextOutEventId(); + + } + + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::~CMCETestUIEngineOutEvent +// ----------------------------------------------------------------------------- +// +EXPORT_C CMCETestUIEngineOutEvent::~CMCETestUIEngineOutEvent() + { + delete iOutEvent; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::GetCommands +// ----------------------------------------------------------------------------- +// +const RPointerArray& + CMCETestUIEngineOutEvent::GetCommandsL() + { + iCommands.ResetAndDestroy(); + + // Get base class commands + CMCETestUIEngineEvent::GetCommandsL(); + + // Get own commands + TInt state = iOutEvent->State(); + + switch( state ) + { + case CMceEvent::EIdle: + iCommands.Append( new (ELeave) TMCETestUIEngineCmdSubscribeEvent( + iEngine, *this ) ); + iCommands.Append( new (ELeave) + TMCETestUIEngineCmdDeleteEvent( iEngine, *this ) ); + break; + case CMceEvent::EActive: + iCommands.Append( new (ELeave) TMCETestUIEngineCmdUpdateEvent( + iEngine, *this ) ); + iCommands.Append( new (ELeave) + TMCETestUIEngineCmdDeleteEvent( iEngine, *this ) ); + break; + case CMceEvent::EPending: + iCommands.Append( new (ELeave) TMCETestUIEngineCmdSubscribeEvent( + iEngine, *this ) ); + iCommands.Append( new (ELeave) TMCETestUIEngineCmdUpdateEvent( + iEngine, *this ) ); + iCommands.Append( new (ELeave) + TMCETestUIEngineCmdDeleteEvent( iEngine, *this ) ); + break; + default: + break; + } + + return iCommands; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::Id +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CMCETestUIEngineOutEvent::Id() const + { + return iId; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutSession::OutSession +// ----------------------------------------------------------------------------- +// +CMceOutEvent& CMCETestUIEngineOutEvent::OutEvent() + { + return *iOutEvent; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::EventParams +// ----------------------------------------------------------------------------- +// + +TBool CMCETestUIEngineOutEvent::EventParamsL(TEventParams &aEventParams) +{ + return iEngine.EventParamsL( aEventParams); + +} + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineOutEvent::FillProfileRegistrar +// ----------------------------------------------------------------------------- +// + +void CMCETestUIEngineOutEvent::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 ); + + iEventParams.iRecipentAddress.Append(KRecipent) ; + iEventParams.iRecipentAddress.Append(*registrar16) ; + + CleanupStack::PopAndDestroy( registrar16 ); + registrar16 = NULL; + + CleanupStack::PopAndDestroy( uri8 ); + uri8 = NULL; + // profile registrar end ..... + } \ No newline at end of file