--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/mmcecli/src/mceinevent.cpp Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,267 @@
+/*
+* 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:
+*
+*/
+
+
+
+
+#include "mceinevent.h"
+#include "mceitcsender.h"
+#include "mceserial.h"
+#include "mceclilogs.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::~CMceInEvent
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceInEvent::~CMceInEvent()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::AcceptEventL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInEvent::AcceptL()
+ {
+ MCECLI_DEBUG("CMceInEvent::AcceptL, Entry");
+ TUint state = State();
+ MCECLI_DEBUG_EVENTSTATE( "state", state );
+
+ User::LeaveIfError( State() == EIdle ? KErrNone : KErrNotReady );
+ TMceIds ids;
+ PrepareForITC( ids );
+ ids.iState = State();
+ iSender->SendL( ids, EMceItcAcceptEvent );
+ //update the state
+ iState = static_cast<TState>( ids.iState );
+
+ state = State();
+ MCECLI_DEBUG_EVENTSTATE( "CMceEvent::AcceptL, after ITC, state", state );
+ MCECLI_DEBUG("CMceInEvent::AcceptL, Exit");
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::RejectEventL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInEvent::RejectL()
+ {
+ MCECLI_DEBUG("CMceInEvent::RejectL, Entry");
+ TUint state = State();
+ MCECLI_DEBUG_EVENTSTATE( "state", state );
+
+ User::LeaveIfError( State() == EIdle ? KErrNone : KErrNotReady );
+ TMceIds ids;
+ PrepareForITC( ids );
+ ids.iState = State();
+ iSender->SendL( ids, EMceItcRejectEvent );
+ //update the state
+ iState = static_cast<TState>( ids.iState );
+
+ state = State();
+ MCECLI_DEBUG_EVENTSTATE( "CMceEvent::RejectL, after ITC, state", state );
+ MCECLI_DEBUG("CMceInEvent::RejectL, Exit");
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::RespondEventL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInEvent::RespondL(
+ const TDesC8& aReason,
+ TUint32 aCode,
+ CDesC8Array* aHeaders,
+ HBufC8* aContentType,
+ HBufC8* aContent )
+ {
+ MCECLI_DEBUG("CMceInEvent::RespondL, Entry");
+ TUint state = State();
+ MCECLI_DEBUG_EVENTSTATE( "state", state );
+ MCECLI_DEBUG_SVALUE( "reason", aReason );
+ MCECLI_DEBUG_DVALUE( "code", aCode );
+
+
+ User::LeaveIfError( State() == EIdle ? KErrNone : KErrNotReady );
+ User::LeaveIfError(
+ ( aContentType && aContent ) || !( aContentType || aContent ) ?
+ KErrNone : KErrArgument );
+
+ //copy reason
+ HBufC8* reason = aReason.AllocLC();
+ //create reply
+ CMceMsgSIPReply* reply = new (ELeave) CMceMsgSIPReply( *reason,
+ aCode,
+ *aHeaders,
+ *aContentType );
+ CleanupStack::PushL( reply );
+
+ TMceIds ids;
+ PrepareForITC( ids );
+ ids.iState = State();
+
+ iSender->SendL( ids, EMceItcRespondEvent , *reply, aContent );
+
+ //update the state
+ iState = static_cast<TState>( ids.iState );
+
+ //cleanup
+ CleanupStack::PopAndDestroy( reply );
+ CleanupStack::PopAndDestroy( reason );
+ delete aHeaders;
+ delete aContentType;
+
+ state = State();
+ MCECLI_DEBUG_EVENTSTATE( "CMceEvent::RespondL, after ITC, state", state );
+ MCECLI_DEBUG("CMceInEvent::RespondL, Exit");
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::NotifyL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInEvent::NotifyL(
+ CDesC8Array* aHeaders,
+ HBufC8* aContentType,
+ HBufC8* aContent )
+ {
+ MCECLI_DEBUG("CMceInEvent::NotifyL, Entry");
+ TUint state = State();
+ MCECLI_DEBUG_EVENTSTATE( "state", state );
+
+ User::LeaveIfError( State() == EActive ? KErrNone : KErrNotReady );
+ User::LeaveIfError(
+ ( aContentType && aContent ) || !( aContentType || aContent ) ?
+ KErrNone : KErrArgument );
+
+ //create notify message
+ CMceMsgSIPEvent* notify = new (ELeave) CMceMsgSIPEvent(
+ iId,
+ iDialogId,
+ EMceItcEventTypeEither,
+ CMceRefer::ENoSuppression,
+ ( TUint32 ) KErrNotFound,
+ aHeaders,
+ aContentType );
+ CleanupStack::PushL( notify );
+
+ notify->OwnershipRollbackPushLC();
+
+ TMceIds ids;
+ PrepareForITC( ids );
+ ids.iState = State();
+
+ iSender->SendL( ids, EMceItcNotify, *notify, aContent );
+
+ CleanupStack::Pop(); // notify->OwnershipRollbackPushLC()
+
+ //update the state
+ iState = static_cast<TState>( ids.iState );
+
+ //cleanup
+ CleanupStack::PopAndDestroy( notify );
+
+ state = State();
+ MCECLI_DEBUG_EVENTSTATE( "CMceEvent::NotifyL, after ITC, state", state );
+ MCECLI_DEBUG("CMceInEvent::NotifyL, Exit");
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::NewL
+// -----------------------------------------------------------------------------
+//
+CMceInEvent* CMceInEvent::NewL( CMceManager& aManager,
+ TUint32 aProfileId,
+ CMceMsgSIPEvent& aEventMsg )
+ {
+ MCECLI_DEBUG("CMceInEvent::NewL, Entry");
+ MCECLI_DEBUG_DVALUE("profile", aProfileId );
+
+ CMceInEvent* self = new (ELeave) CMceInEvent( aManager,
+ aProfileId,
+ aEventMsg.Id(),
+ aEventMsg.DialogId(),
+ aEventMsg.RefreshInterval() );
+ CleanupStack::PushL( self );
+
+ HBufC8* eventHeader = aEventMsg.EventHeader();
+ CleanupStack::PushL( eventHeader );
+ HBufC8* recipient = aEventMsg.Recipient();
+ CleanupStack::PushL( recipient );
+ HBufC8* originator = aEventMsg.Originator();
+ CleanupStack::PushL( originator );
+ self->ConstructL( eventHeader,
+ recipient,
+ originator,
+ KMceDlgTypeSubscribe );
+
+ CleanupStack::Pop( originator );
+ CleanupStack::Pop( recipient );
+ CleanupStack::Pop( eventHeader );
+ CleanupStack::Pop( self );
+ MCECLI_DEBUG("CMceInEvent::NewL, Exit");
+ return self;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::CMceInEvent
+// -----------------------------------------------------------------------------
+//
+CMceInEvent::CMceInEvent( CMceManager& aManager,
+ TUint32 aProfileId,
+ TUint32 aId,
+ TUint32 aDialogId,
+ TUint32 aRefreshInterval )
+ : CMceEvent( aManager, aProfileId, aDialogId, aRefreshInterval )
+ {
+ iId = aId;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceInEvent::ConstructL( HBufC8* aEventHeader,
+ HBufC8* aRecipient,
+ HBufC8* aOriginator,
+ TUint32 aDialogType )
+ {
+ CMceEvent::ConstructL( aEventHeader,
+ aRecipient,
+ aOriginator,
+ aDialogType,
+ NULL );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceInEvent::IsInEvent
+// -----------------------------------------------------------------------------
+//
+TBool CMceInEvent::IsInEvent() const
+ {
+ return ETrue;
+ }