--- /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 <musmanagercommon.h>
+#include "mussessionproperties.h"
+#include "musresourceproperties.h"
+#include "mussesseioninformationapi.h"
+#include "mussettingskeys.h"
+#include "mussettings.inl"
+
+#include <e32property.h>
+#include <e32base.h>
+#include <e32err.h>
+#include <QDebug>
+
+_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 )
+ }