multimediacommsengine/tsrc/MCETestUI/MCETestUIEngine/src/CMCETestUIEngineProfileContainer.cpp
changeset 0 1bce908db942
--- /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<CSIPProfile> 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<CMCETestUIEngineProfile>& 
+        CMCETestUIEngineProfileContainer::AvailableProfiles()
+    {
+    return iProfiles;
+    }
+
+// -----------------------------------------------------------------------------
+// CMCETestUIEngineProfileContainer::UsedProfiles
+// -----------------------------------------------------------------------------
+//
+const RPointerArray<CMCETestUIEngineProfile>& 
+        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
+
+
+
+
+
+
+