diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/MCETestUI/MCETestUIPlugin/src/MCETestUIPlugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/MCETestUI/MCETestUIPlugin/src/MCETestUIPlugin.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,180 @@ +/* +* Copyright (c) 2002-2004 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: Implementation of MCETestUI client resolver for incoming SIP messages +* +*/ + + + + +// INCLUDE FILES +#include "MCETestUIPlugin.h" +#include "EComImplementationProxy.h" +#include +#include +#include +#include +// CONSTANTS +const TUid KMyApplicationUid = { 0x10281F9C }; +_LIT(KCapabiliesFileName, "C:\\MCETestUICaps.xml"); + +// ----------------------------------------------------------------------------- +// CMCETestUIPlugin::NewL +// ----------------------------------------------------------------------------- +// +CMCETestUIPlugin* CMCETestUIPlugin::NewL() + { + CMCETestUIPlugin* self = new( ELeave ) CMCETestUIPlugin; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIPlugin::CMCETestUIPlugin +// ----------------------------------------------------------------------------- +// +CMCETestUIPlugin::CMCETestUIPlugin() + { + } + +// ----------------------------------------------------------------------------- +// CMCETestUIPlugin::ConstructL +// ----------------------------------------------------------------------------- +// +void CMCETestUIPlugin::ConstructL() + { + RImplInfoPtrArray infoArray; + REComSession::ListImplementationsL( KSIPResolvedClientIFUid, infoArray ); + CleanupStack::PushL( TCleanupItem( ResetAndDestroy, &infoArray ) ); + + TBool found = EFalse; + for (TInt i=0; !found && iImplementationUid() == KMyApplicationUid ) + { + TLex8 lex( info->DataType() ); + TUint value( 0 ); + User::LeaveIfError( lex.Val( value, EHex ) ); + iApplicationUID.iUid = value; + found = ETrue; + } + } + + CleanupStack::PopAndDestroy( 1 ); // infoArray + + if ( !found ) + { + User::Leave( KErrNotFound ); + } + + iCapabilitiesFromFile = KNullDesC8().AllocL(); + } + +// ----------------------------------------------------------------------------- +// CMCETestUIPlugin::~CMCETestUIPlugin +// ----------------------------------------------------------------------------- +// +CMCETestUIPlugin::~CMCETestUIPlugin() + { + delete iCapabilitiesFromFile; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIPlugin::ChannelL +// ----------------------------------------------------------------------------- +// +TUid CMCETestUIPlugin::ChannelL( + RStringF aMethod, + const TDesC8& /*aRequestUri*/, + const RPointerArray& /*aHeaders*/, + const TDesC8& /*aContent*/, + const CSIPContentTypeHeader* /*aContentType*/) + { + RDebug::Print(_L("New TestUI with KUidFCTestUI channel ID")); + const TUid KUidFCTestUI = { 0x10281F9B }; + const TUid KUIOptionsUid = { 0x10123F9E }; + if ( aMethod == SIPStrings::StringF( SipStrConsts::EOptions ) ) + { + return KUIOptionsUid; + } + else + { + return KUidFCTestUI; + } + } + +// ----------------------------------------------------------------------------- +// ChannelL::ConnectL +// ----------------------------------------------------------------------------- +// +void CMCETestUIPlugin::ConnectL( TUid /*aUid*/ ) + { + } + +// ----------------------------------------------------------------------------- +// CMCETestUIPlugin::Capabilities +// ----------------------------------------------------------------------------- +// +const TDesC8& CMCETestUIPlugin::Capabilities() + { + TRAP_IGNORE(RefreshCapabilitiesL()) + return *iCapabilitiesFromFile; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIPlugin::RefreshCapabilitiesL +// ----------------------------------------------------------------------------- +// +void CMCETestUIPlugin::RefreshCapabilitiesL() + { + RFs fs; + User::LeaveIfError( fs.Connect() ); + CleanupClosePushL( fs ); + + RFile capabilitiesFile; + TInt err = capabilitiesFile.Open( fs, KCapabiliesFileName, EFileRead ); + User::LeaveIfError( err ); + + CleanupClosePushL( capabilitiesFile ); + + TInt size( 0 ); + User::LeaveIfError( capabilitiesFile.Size( size ) ); + HBufC8* tmp = HBufC8::NewLC( size ); + TPtr8 ptr( tmp->Des() ); + User::LeaveIfError( capabilitiesFile.Read( ptr ) ); + CleanupStack::Pop( tmp ); + delete iCapabilitiesFromFile; + iCapabilitiesFromFile = tmp; + + CleanupStack::PopAndDestroy(); // capabilitiesFile + CleanupStack::PopAndDestroy(); // fs + } + +// ----------------------------------------------------------------------------- +// CMCETestUIPlugin::ResetAndDestroy +// ----------------------------------------------------------------------------- +// +void CMCETestUIPlugin::ResetAndDestroy( TAny* anArray ) + { + RImplInfoPtrArray* array = reinterpret_cast( anArray ); + if (array) + { + array->ResetAndDestroy(); + } + } + +// End of File