diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/livecommsui/lcui/tsrc/mustester/app/mustestdirector.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/mustestdirector.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -0,0 +1,373 @@ +/* +* 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: +* +*/ + + +// USER +#include "mustestdirector.h" +#include +#include "mussessionproperties.h" +#include "musresourceproperties.h" +#include "mussesseioninformationapi.h" +#include "mussettingskeys.h" +#include "mussettings.inl" + +#include +#include +#include +#include + +_LIT(KTestTelNumber,"+358504869612"); +_LIT( KTestCallProvider,"MultimediaSharing" ); +_LIT( KTestRemoteSipAddress,"sip:siva@musworld.com" ); +_LIT( KTestRemoteSipAddressProposal,"sip:wondering@nokia.com,sip:package@gone.com" ); +_LIT( KTestContactName,"Michel Jackson" ); + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CMusTestDirector::CMusTestDirector() + { + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// + +CMusTestDirector* CMusTestDirector::NewL() + { + CMusTestDirector* self = new( ELeave )CMusTestDirector(); + self->ConstructL(); + return self; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// + +void CMusTestDirector::ConstructL() + { + DefinePropertiesL(); + } +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// + +CMusTestDirector::~CMusTestDirector() + { + DeleteProperties(); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// + +void CMusTestDirector::ConfigureLiveSharing( ) + { + SetUseCase( MultimediaSharing::EMusLiveVideo ); + + TInt error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMusTelNumber, KTestTelNumber); + MUS_LOG1("mus: [TEST] return value = %d",error ) + + error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMusCallDirection, NMusSessionInformationApi::ECallOrginated); + MUS_LOG1("mus: [TEST] return value = %d",error ) + + error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMUSCallProvider, KTestCallProvider); + MUS_LOG1("mus: [TEST] return value = %d",error ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// + +void CMusTestDirector::ConfigureReceiveSharing( ) + { + SetUseCase( MultimediaSharing::EMusReceive ); + + TInt error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMusTelNumber, KTestTelNumber); + MUS_LOG1("mus: [TEST] return value = %d",error ) + + error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMusCallDirection, NMusSessionInformationApi::ECallOrginated); + MUS_LOG1("mus: [TEST] return value = %d",error ) + + error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMUSCallProvider, KTestCallProvider); + MUS_LOG1("mus: [TEST] return value = %d",error ) + } +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// + +void CMusTestDirector::SetUseCase( MultimediaSharing::TMusUseCase aUseCase ) + { + TInt err = RProperty::Set( NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase, ( TInt )aUseCase); + } + +// ----------------------------------------------------------------------------- +// CMusAoPlugin::DefineResourcePropertiesL() +// Note : Ignore Define Errors . Because if define fails for sure Set +// will fail too . But there are some cases in Define Error should +// be ignored like KErrAlreadyExists , KErrPersmissionDenied.So It +// could be better if we dont care Define Error but care about Set Err. +// ----------------------------------------------------------------------------- +// +void CMusTestDirector::DefinePropertiesL() + { + MUS_LOG( "mus: [TEST] -> CMusAoPlugin::DefineResourceProperties") ; + // define resource properties + // they need to be defined here to make them exist always + // Read from cenrep key about the availability of camera and keypad + // if the availability is dynamic then define a key else no. + MusSettingsKeys::TAvailability camera = MusSettingsKeys::EAvailabilityStatic; + MusSettingsKeys::TAvailability keypad = MusSettingsKeys::EAvailabilityStatic ; + MultimediaSharingSettings::ResourceAvailability(camera,keypad); + if( camera == MusSettingsKeys::EAvailabilityDynamic ) + { + DefinePropertyL(NMusResourceApi::KCameraAvailability, + RProperty::EInt,( TInt ) NMusResourceApi::ENotAvailable); + } + if( keypad == MusSettingsKeys::EAvailabilityDynamic ) + { + DefinePropertyL(NMusResourceApi::KKeypadAvailability, + RProperty::EInt,( TInt ) NMusResourceApi::ENotAvailable); + } + DefinePropertyL(NMusResourceApi::KCameraInformation, + RProperty::EInt,( TInt ) NMusResourceApi::EUsePrimaryCamera); + DefinePropertyL(NMusSessionInformationApi::KMusCallEvent, + RProperty::EInt,( TInt ) NMusSessionInformationApi::ENoCall); + DefinePropertyL(NMusSessionInformationApi::KMusCallCount,RProperty::EInt,0); + + DefinePropertyL(NMusSessionInformationApi::KMusTelNumber, + RProperty::EText,KTestTelNumber); + DefinePropertyL(NMusSessionInformationApi::KMUSForbidden, + RProperty::EInt,( TInt ) NMusSessionInformationApi::EMUSAllowed); + DefinePropertyL(NMusSessionInformationApi::KMusCallDirection, + RProperty::EInt,( TInt ) NMusSessionInformationApi::ENoDirection); + + DefinePropertyL(NMusSessionInformationApi::KMUSCallProvider, + RProperty::EText,KTestCallProvider); + + DefineSessionPropertyL(NMusSessionApi::KUseCase, + RProperty::EInt,MultimediaSharing::EMusLiveVideo); + + DefineSessionPropertyL(NMusSessionApi::KStatus, + RProperty::EInt,MultimediaSharing::EMultimediaSharingAvailable); + + DefineSessionPropertyL(NMusSessionApi::KTelNumber, + RProperty::EText,KTestTelNumber); + + DefineSessionPropertyL(NMusSessionApi::KRemoteSipAddress, + RProperty::EText,KTestRemoteSipAddress); + + DefineSessionPropertyL(NMusSessionApi::KRemoteSipAddressProposal, + RProperty::EText,KTestRemoteSipAddressProposal); + + DefineSessionPropertyL(NMusSessionApi::KContactId, + RProperty::EInt,1); + + DefineSessionPropertyL(NMusSessionApi::KContactName, + RProperty::EText,KTestContactName); + + DefineSessionPropertyL(NMusSessionApi::KSipProfileId, + RProperty::EInt,1); + + CRepository* repository = CRepository::NewL(MusSettingsKeys::KRepositoryUid); + TInt uid = 0; + TBool exist = (repository->Get(MusSettingsKeys::KEncodingDevice,uid) == KErrNone); + if( !exist ) + { + TInt uid = 1234; + repository->Create(MusSettingsKeys::KEncodingDevice,uid); + TUint32 modifiedKeyCount(0); + User::LeaveIfError(repository->CommitTransaction(modifiedKeyCount)); + } + delete repository; + + MUS_LOG( "mus: [TEST] <- CMusAoPlugin::DefineResourceProperties" ) + } + +// ----------------------------------------------------------------------------- +// CMusAoPlugin::DefineProperty() +// ----------------------------------------------------------------------------- +// +void CMusTestDirector::DefineSessionPropertyL(TInt aKey,RProperty::TType aType,TInt aVal) + { + MUS_LOG( "mus: [TEST] -> CMusTestDirector::DefineSessionPropertyL( intValue )" ) + + TInt error = RProperty::Define( NMusSessionApi::KCategoryUid, + aKey, + aType ); + MUS_LOG2( "mus: [TEST] Key=%d defining tried, return=%d", aKey, error ) + + if ( error == KErrNone ) + { + error = RProperty::Set( NMusSessionApi::KCategoryUid, aKey, aVal ); + MUS_LOG2( "mus: [TEST] RProperty value %d set, return = %d", + aVal, error ) + User::LeaveIfError( error ); + } + else + { + MUS_LOG( "mus: [TEST] Defining failed, do not set value" ) + } + + MUS_LOG( "mus: [TEST] <- CMusTestDirector::DefineSessionPropertyL( intValue )" ) + } + +// ----------------------------------------------------------------------------- +// CTESTPlugin::DefineProperty() +// ----------------------------------------------------------------------------- +// +void CMusTestDirector::DefineSessionPropertyL( TInt aKey, + RProperty::TType aType, + const TDesC& aVal ) + { + MUS_LOG( "mus: [TEST] -> CTESTPlugin::DefineSessionPropertyL( DesCValue )" ) + + TInt error = RProperty::Define( NMusSessionApi::KCategoryUid, + aKey, + aType ); + MUS_LOG2( "mus: [TEST] Key=%d defining tried, return=%d", aKey, error ) + + if ( error == KErrNone ) + { + error = RProperty::Set( NMusSessionApi::KCategoryUid, aKey, aVal); + MUS_LOG_TDESC( "mus: [TEST] Tried to set RProperty value: ", aVal ) + MUS_LOG1("mus: [TEST] return value = %d",error ) + User::LeaveIfError( error ); + } + else + { + MUS_LOG( "mus: [TEST] Defining failed, do not set value" ) + } + + MUS_LOG( "mus: [TEST] <- CTESTPlugin::DefineSessionPropertyL( DesCValue )" ) + } + +// ----------------------------------------------------------------------------- +// CMusAoPlugin::DefineProperty() +// ----------------------------------------------------------------------------- +// +void CMusTestDirector::DefinePropertyL(TInt aKey,RProperty::TType aType,TInt aVal) + { + MUS_LOG( "mus: [TEST] -> CMusAoPlugin::DefinePropertyL( intValue )" ) + + TInt error = RProperty::Define( NMusResourceApi::KCategoryUid, + aKey, + aType ); + MUS_LOG2( "mus: [TEST] Key=%d defining tried, return=%d", aKey, error ) + + if ( error == KErrNone ) + { + error = RProperty::Set( NMusResourceApi::KCategoryUid, aKey, aVal ); + MUS_LOG2( "mus: [TEST] RProperty value %d set, return = %d", + aVal, error ) + User::LeaveIfError( error ); + } + else + { + MUS_LOG( "mus: [TEST] Defining failed, do not set value" ) + } + + MUS_LOG( "mus: [TEST] <- CTESTPlugin::DefinePropertyL( intValue )" ) + } + +// ----------------------------------------------------------------------------- +// CTESTPlugin::DefineProperty() +// ----------------------------------------------------------------------------- +// +void CMusTestDirector::DefinePropertyL( TInt aKey, + RProperty::TType aType, + const TDesC& aVal ) + { + MUS_LOG( "mus: [TEST] -> CTESTPlugin::DefinePropertyL( DesCValue )" ) + + TInt error = RProperty::Define( NMusResourceApi::KCategoryUid, + aKey, + aType ); + MUS_LOG2( "mus: [TEST] Key=%d defining tried, return=%d", aKey, error ) + + if ( error == KErrNone ) + { + error = RProperty::Set( NMusResourceApi::KCategoryUid, aKey, aVal); + MUS_LOG_TDESC( "mus: [TEST] Tried to set RProperty value: ", aVal ) + MUS_LOG1("mus: [TEST] return value = %d",error ) + User::LeaveIfError( error ); + } + else + { + MUS_LOG( "mus: [TEST] Defining failed, do not set value" ) + } + + MUS_LOG( "mus: [TEST] <- CTESTPlugin::DefinePropertyL( DesCValue )" ) + } + +// ----------------------------------------------------------------------------- +// CTESTPlugin::DeleteSessionProperties() +// ----------------------------------------------------------------------------- +// +void CMusTestDirector::DeleteSessionProperties() + { + TInt retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KStatus); + retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KRemoteSipAddress); + retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KRemoteSipAddressProposal); + retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KContactId); + retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KContactName); + } +// ----------------------------------------------------------------------------- +// CTESTPlugin::DeleteResourceProperties() +// Note : There is no need of caring the return value in deleting +// This will be called when AO Plugin destroyed which is rare to happen +// Any unwanted deletion of AO Plugin should leave some PS Keys open. +// But this is OK if we ignore KErrAlreadyExists while defining next time. +// ----------------------------------------------------------------------------- +// +void CMusTestDirector::DeleteProperties() + { + MUS_LOG( "mus: [TEST] -> CTESTPlugin::DeleteResourcePropertiesL" ) + // Delete resource properties + // they need to be defined here to make them exist always + DeleteProperty(NMusResourceApi::KCameraAvailability); + DeleteProperty(NMusResourceApi::KKeypadAvailability); + DeleteProperty(NMusResourceApi::KCameraInformation); + DeleteProperty(NMusSessionInformationApi::KMusCallEvent); + DeleteProperty(NMusSessionInformationApi::KMusCallCount); + DeleteProperty(NMusSessionInformationApi::KMusTelNumber); + DeleteProperty(NMusSessionInformationApi::KMUSCallProvider); + DeleteProperty(NMusSessionInformationApi::KMUSForbidden); + DeleteProperty(NMusSessionInformationApi::KMusCallDirection); + MUS_LOG( "mus: [TEST] <- CTESTPlugin::DeleteResourcePropertiesL" ) + } + +// ----------------------------------------------------------------------------- +// CTESTPlugin::DeleteProperty() +// ----------------------------------------------------------------------------- +// +void CMusTestDirector::DeleteProperty(TInt aKey) + { + TInt retVal = RProperty::Delete( NMusResourceApi::KCategoryUid,aKey); + MUS_LOG2( "mus: [TEST] RProperty::Delete Type=%d return=%d",\ + aKey, retVal ) + }