--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pressrv_plat/xdm_settings_api/inc/XdmSettingsApi.h Tue Feb 02 01:05:17 2010 +0200
@@ -0,0 +1,236 @@
+/*
+* 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: XDM Settings API
+*
+*/
+
+
+
+
+#ifndef __XDMSETTINGSAPI__
+#define __XDMSETTINGSAPI__
+
+#include <badesca.h>
+#include "XdmEngineDomainCRKeys.h"
+
+/**
+* The list of configurable XDM Settings
+**/
+enum TXdmSettingsProperty
+ {
+ EXdmPropSettingsId = KXdmSettingsId,
+ EXdmPropAppId = KXDMAppId,
+ EXdmPropName = KXDMAppName,
+ EXdmPropProvId = KXDMProviderId,
+ EXdmPropToNapId = KXDMNAPID,
+ EXdmPropToAppRef = KXDMSipReference,
+ EXdmPropUri = KXDMXcapRootURI,
+ EXdmPropAuthName = KXDMUserName,
+ EXdmPropAuthSecret = KXDMPassword,
+ EXdmPropAuthType = KXDMAuthType,
+ EXdmPropNotFound = KErrNotFound // for initialization
+ };
+
+//The authentication types = possible values for EXdmPropAuthType
+_LIT( KXdmAuthGaa, "GAA" );
+_LIT( KXdmAuthEarlyIms, "EARLY-IMS" );
+_LIT( KXdmAuthHttpDigest, "HTTP-DIGEST" );
+
+//Logging constants
+_LIT( KXdmSettingsLogDir, "XDM" );
+_LIT( KXdmSettingsLogFile, "SettingsApi.txt" );
+const TInt KXdmSettingsLogBufferMaxSize = 2000;
+
+//Forward declarations
+class CRepository;
+class CXdmSettingsCollection;
+
+//CLASS DECLARATION
+class TXdmSettingsApi
+ {
+ public:
+
+ /**
+ * Return the name of each settings collection
+ * stored in the repository
+ *
+ * @return CDesCArray* Names of all settings collections
+ */
+ IMPORT_C static CDesCArray* CollectionNamesLC( RArray<TInt>& aSettingIds );
+
+ /**
+ * Set the XDM properties as a collection of settings
+ *
+ * @param CXdmSettingsCollection A collection of properties
+ * @return TInt The ID of the newly created collection
+ */
+ IMPORT_C static TInt CreateCollectionL( const CXdmSettingsCollection& aCollection );
+
+ /**
+ * Remove a collection from the Central Repository
+ *
+ * NOTE:
+ *
+ * - Leaves with KErrNotFound if a collection of properties
+ * by the specified ID does not exist in the repository.
+ *
+ * @param TInt ID of the collection to be removed
+ * @return void
+ */
+ IMPORT_C static void RemoveCollectionL( TInt aSettingsId );
+
+ /**
+ * Create an individual property to the specified
+ * collection of properties.
+ *
+ * NOTE:
+ *
+ * - Leaves with KErrAlreadyExists, if the property to be
+ * created already exists in the specified collection.
+ *
+ * - Leaves with KErrNotFound, if a property set by the
+ * specified ID cannot be found from the repository
+ *
+ * @param TInt ID of the target property set
+ * @param TDesC& Value for the property to be created
+ * @param TXdmSettingsProperty Name of the property
+ * @return void
+ */
+ IMPORT_C static void CreatePropertyL( TInt aSettingsId,
+ const TDesC& aPropertyValue,
+ TXdmSettingsProperty aPropertyName );
+
+ /**
+ * Remove an individual property from the specified
+ * collection of properties.
+ *
+ * NOTE:
+ *
+ * - Leaves with KErrNotFound, if a property set by the
+ * specified ID cannot be found from the repository
+ *
+ * @param TInt Name of the target property set
+ * @param TXdmSettingsProperty Name of the property to remove
+ * @return void
+ */
+ IMPORT_C static void RemovePropertyL( TInt aSettingsId,
+ TXdmSettingsProperty aPropertyName );
+
+ /**
+ * Update an individual property in a named property set
+ *
+ * NOTE:
+ *
+ * - Leaves with KErrNotFound, if a property set by the
+ * specified ID cannot be found
+ *
+ * - Also note that an attempt to update a non-existent
+ * property effectively creates a new one.
+ *
+ * @param TInt ID of the target property set
+ * @param TDesC& New value for the property to be updated
+ * @param TXdmSettingsProperty Name of the property
+ * @return void
+ */
+ IMPORT_C static void UpdatePropertyL( TInt aSettingsId,
+ const TDesC& aPropertyValue,
+ TXdmSettingsProperty aPropertyName );
+
+ /**
+ * Return an XDM property set/collection
+ *
+ * NOTE:
+ *
+ * - Leaves with KErrNotFound, if a property set by the
+ * specified ID cannot be found from the repository.
+ *
+ * @param TInt ID of the property set
+ * @return CDesCArray& Colletion of properties
+ */
+ IMPORT_C static CXdmSettingsCollection* SettingsCollectionL( TInt aSettingsId );
+
+ /**
+ * Return an individual XDM settings property
+ *
+ * NOTE:
+ *
+ * - Leaves with KErrNotFound, if a property set by the
+ * specified ID cannot be found from the repository.
+ *
+ * @param TInt ID of the target property set
+ * @param TXdmSettingsProperty Name of the property
+ * @return HBufC* Value of the property on top of CleanupStack
+ */
+ IMPORT_C static HBufC* PropertyL( TInt aSettingsId,
+ TXdmSettingsProperty aSingleProp );
+
+ private:
+
+ /**
+ * Write to the log file
+ *
+ * @param TRefByValue<const TDesC> Log string
+ * @return void
+ */
+ static void WriteToLog( TRefByValue<const TDesC8> aFmt,... );
+
+ /**
+ * Find keys by their ID
+ *
+ * @param TInt ID of the desired property set
+ * @param CRepository* An opened repository
+ */
+ static RArray<TUint32> FindByIdL( TInt aSettingsId, CRepository* aRepository );
+
+
+ /**
+ * Find keys by their type
+ *
+ * @param CRepository* An opened repository
+ * @param TXdmSettingsProperty Type of the desired property set
+ */
+ static RArray<TUint32> FindByTypeL( CRepository* aRepository,
+ TXdmSettingsProperty aSingleProp );
+
+ /**
+ * Create a unique ID for a collection of settings
+ *
+ * @param CRepository* An opened repository
+ * @param TInt Number of the target row
+ * @return TInt32 A new Central Repository key
+ */
+ static TInt CreateUniqueIdL( CRepository* aRepository, TInt aRow );
+
+ /**
+ * Find the row for the specified collection of settings
+ *
+ * @param TInt the ID of the desired property set
+ * @param CRepository* An opened repository
+ * @return TInt Row number for the target property set
+ */
+ static TInt FindRowL( TInt aSettingsId, CRepository* aRepository );
+
+ /**
+ * Return the last row from the repository
+ *
+ * @param CRepository* An opened repository
+ * @param TInt32 Column
+ * @return TInt Row number for the last property set
+ */
+ static TInt LastRow( CRepository* aRepository );
+ };
+
+#endif //__XDMSETTINGSAPI__
+
+// End of File