uiservicetab/vimpstengine/tsrc/vimpstengine_ut/src/stubs/s_spsettings.cpp
changeset 0 5e5d6b214f4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstengine/tsrc/vimpstengine_ut/src/stubs/s_spsettings.cpp	Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,241 @@
+/*
+* Copyright (c) 2009 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: s_spsettings.cpp
+*
+*/
+#include <spsettings.h>
+#include <spentry.h>
+#include <spproperty.h>
+
+RArray< TServiceId > gServiceIds;
+RPointerArray< CSPEntry > gEntries;
+
+
+CSPSettings* myCSPSettings = NULL;
+
+
+extern TServicePropertyName gPropertyName;
+extern TInt gContactViewPluginId;
+extern HBufC* gPropertyContactStoreId;
+extern HBufC* gPropertyBrandId;
+extern TBool gPropertyInvalid;
+extern TInt gPropertyBrandLanguage;
+extern TInt gPropertyBrandVersion;
+extern TInt gPropertyXIMP;
+extern TOnOff gPropertyPresenceRequestPreference;
+extern TInt gContactViewId;
+
+CSPSettings* CSPSettings::NewL()
+    {
+    if (!myCSPSettings)
+	    {
+	    myCSPSettings = new ( ELeave ) CSPSettings;
+	    }
+    return myCSPSettings;
+    }
+
+CSPSettings* CSPSettings::NewLC()
+    {
+    CSPSettings* settings = CSPSettings::NewL();
+    CleanupStack::PushL( settings );
+    return settings;
+    }
+
+CSPSettings::~CSPSettings()
+    {
+    gServiceIds.Close();
+    
+    gEntries.ResetAndDestroy();
+    gEntries.Close();
+    delete gPropertyContactStoreId;
+    delete gPropertyBrandId;
+   
+    
+    myCSPSettings = NULL;
+    gPropertyName = EPropertyUnknown;
+	gContactViewPluginId = 0;
+	gPropertyContactStoreId = 0;
+	gPropertyBrandId = 0;
+	gPropertyInvalid = EFalse;
+	gPropertyBrandLanguage = 0;
+	gPropertyBrandVersion = 0;
+	gPropertyXIMP = 0;
+	gPropertyPresenceRequestPreference = EOff;
+	gContactViewId = 0;
+    }
+
+void CopyEntry( const CSPEntry& aOriginal, CSPEntry& aTarget )
+    {    
+    aTarget.SetServiceId( aOriginal.GetServiceId() );
+    aTarget.SetServiceName( aOriginal.GetServiceName() );
+    RPropertyArray array = aOriginal.GetAllProperties();
+    for( TInt i = 0; i < array.Count(); i++ )
+        {
+        TRAP_IGNORE( aTarget.AddPropertyL( *array[i] ) );
+        }
+    }
+
+TInt CSPSettings::AddEntryL( CSPEntry& aEntry )
+    {
+    TInt err = gServiceIds.Append( aEntry.GetServiceId() );
+    if( err )
+        {
+        User::Leave( err );
+        }
+
+    CSPEntry* entry = CSPEntry::NewLC();
+    CopyEntry( aEntry, *entry );
+    // If property counts difference from each other,
+    // alloc failure has happened in CopyEntry
+    if( aEntry.GetAllProperties().Count() != 
+        entry->GetAllProperties().Count() )
+    	{
+    	User::Leave( KErrNoMemory );
+    	}
+
+    err = gEntries.Append( entry );
+    if( err )
+        {
+        User::Leave( err );
+        }
+    CleanupStack::Pop( entry );
+    return KErrNone;
+    }
+
+TInt CSPSettings::FindEntryL( TServiceId aServiceId, CSPEntry& aEntry )
+    {
+    for( TInt i=0; i<gServiceIds.Count(); i++ )
+        {
+        if( gServiceIds[ i ] == aServiceId )
+            {
+            CSPEntry* entry = gEntries[ i ];
+
+            CopyEntry( *entry, aEntry );
+            // If property counts difference from each other,
+            // alloc failure has happened in CopyEntry
+            if( aEntry.GetAllProperties().Count() != 
+	            entry->GetAllProperties().Count() )
+	        	{
+	        	User::Leave( KErrNoMemory );
+	        	}
+
+            return KErrNone;
+            }
+        }
+
+    return KErrNotFound;
+    }
+
+
+TInt CSPSettings::UpdateEntryL( const CSPEntry& aEntry )
+    {
+    for( TInt i=0; i<gServiceIds.Count(); i++ )
+        {
+        if( gServiceIds[ i ] == aEntry.GetServiceId() )
+            {
+            gEntries[i]->SetServiceName( aEntry.GetServiceName() );
+            RPropertyArray propOrig = gEntries[i]->GetAllProperties();
+            RPropertyArray propNew = aEntry.GetAllProperties();
+            TBool found = EFalse;
+            for( TInt j = 0; j < propNew.Count(); j++ )
+                {
+                for( TInt k = 0; k < propOrig.Count() && !found; k++ )
+                    {
+                    if( propNew[j] == propOrig[k] )
+                        {
+                        found = ETrue;
+                        }
+                    }
+                if( !found )
+                    {
+                    gEntries[i]->AddPropertyL( *propNew[j] );
+                    }
+                found = EFalse;
+                }
+            return KErrNone;
+            }
+        }
+    
+    return KErrNotFound;
+    }
+    
+TInt CSPSettings::FindPropertyL( TServiceId aServiceId,
+                                TServicePropertyName aPropertyName,
+                                CSPProperty& aProperty )
+    {
+    for( TInt i=0; i<gServiceIds.Count(); i++ )
+        {
+        if( gServiceIds[ i ] == aServiceId )
+            {
+            CSPEntry* entry = gEntries[ i ];
+			
+			const CSPProperty* property = NULL;
+			
+			TInt err = entry->GetProperty( property, 
+    					    aPropertyName );
+    		
+    		if (KErrNone == err)
+	    		{
+	    		aProperty.CopyL(*property);			    
+	    		return KErrNone;
+	    		}
+            }
+        }
+
+    return KErrNotFound;    
+    }
+
+
+TInt CSPSettings::FindServiceIdsL( RIdArray& aServiceIds )
+    {
+    if( gServiceIds.Count() == 0 )
+        {
+        return KErrNotFound;
+        }
+
+    for( TInt i=0; i<gServiceIds.Count(); i++ )
+        {
+        TInt err = aServiceIds.Append( gServiceIds[ i ] );
+        if( err )
+            {
+            User::Leave( err );
+            }
+        }
+
+    return KErrNone;
+    }
+
+
+CSPSettings::CSPSettings()
+    {
+    }
+
+void CSPSettings::ConstructL()
+    {
+    }
+
+TInt CSPSettings::SettingsCountL()
+    {
+    return 0;
+    }
+
+TInt CSPSettings::AddOrUpdatePropertyL( TServiceId /*aServiceId*/, 
+	                                  		const CSPProperty& /*aProperty*/ )
+	{
+	return KErrNone;	
+	}
+
+	               
+
+