diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/MCETestUI/MCETestUIEngine/src/CMCETestUIEngineProfileContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/MCETestUI/MCETestUIEngine/src/CMCETestUIEngineProfileContainer.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,348 @@ +/* +* Copyright (c) 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. +* +*/ + + + + + +// INCLUDES +#include "CMCETestUIEngineProfileContainer.h" +#include "MCETestUIEngineDefaultValues.h" +#include "CMCETestUIEngineProfile.h" +#include "sipprofile.h" +#include "MCETestUIEngineConstants.h" +#include "MCETestUIDebug.h" + + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::NewL +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineProfileContainer* CMCETestUIEngineProfileContainer::NewL( + CMCETestUIEngine& aEngine, CSIP& aSip ) + { + CMCETestUIEngineProfileContainer* self = + new( ELeave ) CMCETestUIEngineProfileContainer( aEngine, aSip ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::~CMCETestUIEngineProfileContainer +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineProfileContainer::~CMCETestUIEngineProfileContainer() + { + iProfiles.ResetAndDestroy(); + iUsedProfiles.ResetAndDestroy(); + + delete iProfileRegistry; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::CMCETestUIEngineProfileContainer +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineProfileContainer::CMCETestUIEngineProfileContainer( + CMCETestUIEngine& aEngine, CSIP& aSip ) + : iEngine( aEngine ), + iProfiles( 2 ), + iSip( aSip ) + { + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::ConstructL +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineProfileContainer::ConstructL() + { + iProfileRegistry = CSIPProfileRegistry::NewL( iSip, *this ); + + // Instantiate and store all profiles + RPointerArray profiles; + iProfileRegistry->ProfilesL( profiles ); + + for ( TInt i = 0; i < profiles.Count(); ++i ) + { + CMCETestUIEngineProfile* item = + CMCETestUIEngineProfile::NewL( profiles[i], iEngine ); + CleanupStack::PushL( item ); + User::LeaveIfError( iProfiles.Append( item ) ); + CleanupStack::Pop( item ); + } + + profiles.Reset(); + + if ( MCETestUIEngineDefaultValues::TakeDefaultProfileIntoUse() ) + { + TakeProfileIntoUseL( GetDefaultProfileL() ); + } + + } + + +// +// -- MSIPProfileRegistryObserver functions ----------------------------------- +// + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::ProfileRegistryEventOccurred +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineProfileContainer::ProfileRegistryEventOccurred( + TUint32 /*aProfileId*/, TEvent aEvent) + { + + TPtrC aMessage; + MCE_TESTUI_DEBUG3( "CMCETestUIEngineProfileContainer::ProfileRegistryEventOccurred", aEvent ); + switch (aEvent) + { + case MSIPProfileRegistryObserver::EProfileUpdated: + { + aMessage.Set( KUserNotificationProfileUpdated ); + break; + } + case MSIPProfileRegistryObserver::EProfileRegistered: + { + aMessage.Set( KUserNotificationProfileRegistered ); + break; + } + case MSIPProfileRegistryObserver::EProfileDeregistered: + { + aMessage.Set( KUserNotificationProfileDeregistered ); + break; + } + /* + case MSIPProfileRegistryObserver::EProfileCreated: + { + break; + } + case MSIPProfileRegistryObserver::EProfileDestroyed: + { + break; + } + */ + default: + { + aMessage.Set( KUserNotificationProfileUnknownEvent ); + break; + } + } + + iEngine.NotifyUser( aMessage ); + iEngine.EngineStateChangedL(); + + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::ProfileRegistryErrorOccurred +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineProfileContainer::ProfileRegistryErrorOccurred( + TUint32 /*aProfileId*/, TInt /*aError*/ ) + { + // Not implemented yet + } + +// +// -- MSIPConnectionObserver dummy functions +// + +void CMCETestUIEngineProfileContainer::IncomingRequest (CSIPServerTransaction* /*aTransaction*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::IncomingRequest (CSIPServerTransaction* /*aTransaction*/, + CSIPDialog& /*aDialog*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::IncomingResponse (CSIPClientTransaction& /*aTransaction*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::IncomingResponse (CSIPClientTransaction& /*aTransaction*/, + CSIPDialogAssocBase& /*aDialogAssoc*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::IncomingResponse (CSIPClientTransaction& /*aTransaction*/, + CSIPInviteDialogAssoc* /*aDialogAssoc*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::IncomingResponse (CSIPClientTransaction& /*aTransaction*/, + CSIPRegistrationBinding& /*aRegistration*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::ErrorOccured (TInt /*aError*/, + CSIPTransactionBase& /*aTransaction*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::ErrorOccured (TInt /*aError*/, + CSIPClientTransaction& /*aTransaction*/, + CSIPRegistrationBinding& /*aRegistration*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::ErrorOccured (TInt /*aError*/, + CSIPTransactionBase& /*aTransaction*/, + CSIPDialogAssocBase& /*aDialogAssoc*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::ErrorOccured (TInt /*aError*/, CSIPRefresh& /*aSIPRefresh*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::ErrorOccured (TInt /*aError*/, + CSIPRegistrationBinding& /*aRegistration*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::ErrorOccured (TInt /*aError*/, + CSIPDialogAssocBase& /*aDialogAssoc*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::InviteCompleted (CSIPClientTransaction& /*aTransaction*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::InviteCanceled (CSIPServerTransaction& /*aTransaction*/) + { + // NOP + } +void CMCETestUIEngineProfileContainer::ConnectionStateChanged (CSIPConnection::TState /*aState*/) + { + // NOP + } + +// +// -- Public functions -------------------------------------------------------- +// + + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::AvailableProfiles +// ----------------------------------------------------------------------------- +// +const RPointerArray& + CMCETestUIEngineProfileContainer::AvailableProfiles() + { + return iProfiles; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::UsedProfiles +// ----------------------------------------------------------------------------- +// +const RPointerArray& + CMCETestUIEngineProfileContainer::UsedProfiles() + { + return iUsedProfiles; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::IsProfileInUse +// ----------------------------------------------------------------------------- +// +TBool CMCETestUIEngineProfileContainer::IsProfileInUse( + CMCETestUIEngineProfile& aProfile ) + { + for ( TInt i = 0; i < iUsedProfiles.Count(); ++i ) + { + if ( iUsedProfiles[i] == &aProfile ) + { + return ETrue; + } + } + return EFalse; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::TakeProfileIntoUseL +// ----------------------------------------------------------------------------- +// +void CMCETestUIEngineProfileContainer::TakeProfileIntoUseL( + CMCETestUIEngineProfile& aProfile ) + { + // for every available profile + for ( TInt i = 0; i < iProfiles.Count(); ++i ) + { + // check if it is the one to be taken into use + if ( iProfiles[i] == &aProfile ) + { + // check that this is not allready in use + if ( !IsProfileInUse( aProfile ) ) + { + iUsedProfiles.AppendL( iProfiles[i] ); + iProfiles.Remove( i ); + iProfiles.Compress(); + + if ( MCETestUIEngineDefaultValues::RegisterUsedProfiles() ) + { + iProfileRegistry->EnableL( aProfile.Profile(), *this ); + } + iEngine.EngineStateChangedL(); + } + } + } + } + +// ----------------------------------------------------------------------------- +// CMCETestUIEngineProfileContainer::GetDefaultProfileL +// ----------------------------------------------------------------------------- +// +CMCETestUIEngineProfile& CMCETestUIEngineProfileContainer::GetDefaultProfileL() + { + for ( TInt i = 0; i < iProfiles.Count(); ++i ) + { + if ( iProfiles[i]->IsDefault() ) + { + return *(iProfiles[i]); + } + } + + for ( TInt i = 0; i < iUsedProfiles.Count(); ++i ) + { + if ( iUsedProfiles[i]->IsDefault() ) + { + return *(iUsedProfiles[i]); + } + } + + User::Leave( KErrNotFound ); + return *(CMCETestUIEngineProfile::NewL( NULL, iEngine )); // To keep compiler happy; + } + + +// End of file + + + + + + +