pressrv_plat/simple_settings_api/inc/pressettingsapi.h
changeset 0 c8caa15ef882
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pressrv_plat/simple_settings_api/inc/pressettingsapi.h	Tue Feb 02 01:05:17 2010 +0200
@@ -0,0 +1,222 @@
+/*
+* 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:    PresSettingsAPI deals with the Sets of all
+*               presence settings.
+*
+*/
+
+
+
+
+#ifndef __PRESSETTINGSAPI__
+#define __PRESSETTINGSAPI__
+
+//includes
+#include <badesca.h>
+
+#include "simpleenginedomaincrkeys.h"
+#include "pressettingsset.h"
+
+// Forward declarations
+class CRepository;
+
+// FOR INTERNAL USE    
+// consts related to hex calc.
+const TInt KLastRow = 0x10000;
+const TUint32 KOnlyRowInfo = 0xFFFFFF00;
+const TInt KOnlyColumnInfo = 0x000000FF;
+const TUint KFullValue = 0xFFFFFFFF;
+const TInt KUnitRow = 0x100;
+const TInt KLastUseableRow = KLastRow - 1;
+
+// FOR CLIENTS
+
+/**
+* The list of configurable Presence Settings
+* If change in future match them with pressetttingsapiprivatecrkeys.h
+**/
+enum TPresSettingsProperty
+    {
+    EPresPropSetID =        KSimpleSetId,               // int, not for client use         
+    EPresStatusOfProps  =   KSimpleStatusofProps,       // Integer
+    EPresPropSetName =      KSimpleSetName,             // Descriptor
+    EPresPropSIPProfile =   KSimpleSipProfile,          // Integer
+    EPresPropXDMSet =       KSimpleXDMSet,              // Integer
+    EPresPropObjectSize =   KSimpleClientObjDataLimit,  // Integer
+    EPresPropContSrvAdd =   KSimpleContentSvrAdd,       // Descriptor
+    EPresPropPubInterval =  KSimpleSourceThrottlePublish,   // Integer
+    EPresPropMaxSubs =      KSimpleMaxNbrPresenceSubs,      // Integer
+    EPresPropMaxCntInList = KSimpleMaxNbrSubsInList,        // Integer
+    EPresPropDomainSyntax = KSimpleServiceUriTemplate,      // Descriptor
+    EPresPropProviderID   = KSimpleProviderID,              // Descriptor
+    EPresPropResrv2,                        // Resevered 2
+    };
+    
+/**
+* These are the open/locked/hidden values for each settings item.
+* Masked in a single integer, each set item takes 2 bits.
+**/
+enum TPresPropStatus
+    {
+    EPresSettingOpened =     0,      
+    EPresSettingLocked =   1,
+    EPresSettingHidden =   2
+    };
+    
+    
+/**
+* This is the class which clients need to use for manipulating presence settings.
+**/
+class PresSettingsApi
+    {
+    public:
+        
+        /**
+        * Returns the name of all setting sets stored in the repository.
+        * This function is useful for displaying a list of available sets,
+        * elements of RArray can be used to access each set seperately.
+        * Make sure that CDesCArray* didnt allocated any memory before
+        * this method. Caller may also want to reset aSetIds before
+        * calling this method.
+        *
+        * @param RArray<TInt>& a list of available sets Ids
+        * @return CDesCArray* Names of all settings sets
+        */
+        IMPORT_C static CDesCArray* GetAllSetsNamesLC( RArray<TInt>& aSetIds );
+
+        /**
+        * Creates a new set in the repository. This method may leave if some
+        * system error occur while creating new set.
+        *
+        * @param TPresSettingsSet A Set of properties
+        * @return TInt The ID of the newly created Set
+        */
+        IMPORT_C static TInt CreateSetL(TPresSettingsSet aSet );
+        
+        /**
+        * Updats a set in the repository
+        *
+        * @param TPresSettingsSet A Set of properties
+        *   TInt aSetId, ID of the Set to be updated
+        * @return error code, KErrNotFound if id not found
+        */
+        IMPORT_C static TInt UpdateSetL(TPresSettingsSet aSet, TInt aSetId );
+        
+        /**
+        * Removes a settings Set from the Repository
+        *
+        * @param TInt aSetId, ID of the Set to be removed
+        * @return error code, KErrNotFound if set doesnt found.
+        */
+        IMPORT_C static TInt RemoveSetL( TInt aSetId );
+        
+        /**
+        * Updates a single integer property in a settings set.
+        * @param TPresSettingsProperty Name of the property 
+        * @param TInt aSetId ID of the target property set
+        * @param TInt aPropValueInt Value of the property
+        * @return error code, KErrNotFound if set doesnt found.
+        */
+        IMPORT_C static TInt UpdatePropertyL( TInt aSetId, 
+                                            TPresSettingsProperty aPropertyName,
+                                            TInt aPropValueInt
+                                            );
+                                            
+        /**
+        * Updates a single descriptor property in a settings set.
+        * @param TPresSettingsProperty Name of the property 
+        * @param TInt aSetId ID of the target property set
+        * @param TDesC& Value for the property to be created
+        * @return error code, KErrNotFound if set doesnt found.
+        */
+        IMPORT_C static TInt UpdatePropertyL( TInt aSetId, 
+                                            TPresSettingsProperty aPropertyName,
+                                            const TDesC& aPropValueDes
+                                            );
+
+        /**
+        * Returns a Pres settings set
+        *
+        * @param TInt aSetID, ID of the property set
+        *  TPresSettingsSet& aSet, set returns here as reference 
+        * @return error code, KErrNotFound if set doesnt found.
+        */
+        IMPORT_C static TInt SettingsSetL(TInt aSetID, 
+                                                        TPresSettingsSet& aSet);
+                                                        
+        /**
+        * Returns TPresPropStatus for a given property from the given integer.
+        * Use aPropertyName=EPresStatusOfProps to get the status of a set as a whole
+        *
+        * @param TInt aStatusOfProps, integer to decode from
+        *  TPresSettingsProperty Name of the property 
+        * @return TPresPropStatus for the given property
+        */
+        IMPORT_C static TPresPropStatus DecodePropertyStatus(TInt aStatusOfProps,
+                                              TPresSettingsProperty aPropertyName);
+                                              
+        /**
+        * Encodes the given TPresPropStatus to the given integer.
+        * Use aPropertyName=EPresStatusOfProps to set the status of a set as a whole
+        *
+        * @param TInt aStatusOfProps, reference integer to be encoded
+        *  TPresPropStatus status to be encoded to given integer
+        *  TPresSettingsProperty Name of the property
+        * @return none
+        */
+        IMPORT_C static void EncodePropertyStatus(TInt& aStatusOfProps,
+                                              TPresPropStatus aPropertyStatus,
+                                           TPresSettingsProperty aPropertyName);
+                                           
+        /**
+        * Find whether the given property is descriptor or not
+        *
+        * @param TPresSettingsProperty aProperty a settings property
+        * @return TBool, ETrue if its an string
+        */
+        IMPORT_C static TBool IsStr( TPresSettingsProperty aProperty );
+        
+    private:
+    
+        /**
+        * Create a unique ID for a set
+        *
+        * @param CRepository* An opened repository
+        * @param TUint32 aRowInHex, a fresh row
+        * @return TInt created unique ID
+        */
+        static TInt CreateUniqueIdL( CRepository* aRepository, TUint32 aRowInHex );
+        
+        /**
+        * Get a fresh (empty) row, which is used for creating a new set
+        *
+        * @param CRepository* An opened repository
+        * @return TUint32 aRowInHex, a fresh row
+        */
+        static TUint32 GetFreshRawInHex( CRepository* aRepository );
+        
+        /**
+        * Find the row having given set ID
+        *
+        * @param CRepository* An opened repository
+        *   TInt aSetID, ID of the property set
+        * @return TUint32, the row in case found, otherwise this is error code (-ve)
+        */
+        static TUint32 GetRawInHexL( CRepository* aRepository, TInt aSetID );
+        
+    };
+
+#endif      //__PRESSETTINGSAPI__
+            
+// End of File
\ No newline at end of file