iptel_plat/richcallsettingsengine_api/inc/rcseregistrybase.h
changeset 0 a4daefaec16c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iptel_plat/richcallsettingsengine_api/inc/rcseregistrybase.h	Mon Jan 18 20:12:36 2010 +0200
@@ -0,0 +1,232 @@
+/*
+* Copyright (c) 2004-2007 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:  Base class for RCSE registry classes
+*
+*/
+
+
+#ifndef CRCSEREGISTRYBASE_H
+#define CRCSEREGISTRYBASE_H
+
+//#include <centralrepository.h>
+#include <e32base.h>
+#include <d32dbms.h>
+#include <mrcsebackupobserver.h>
+
+#include <cenrepdatabaseutil.h>
+const TInt KMaxNameLength = 100;
+
+
+class CRCSEBackupObserver;
+
+/**
+ *  Base class for RCSE registry classes
+ *
+ *  Encapsules settings repository connections and handles backup events.
+ *
+ *  @lib rcse.lib
+ *  @since S60 v3.0
+ */
+class CRCSERegistryBase : public CBase, public MRCSEBackupObserver
+    {
+protected:
+
+    /**  Registry type */
+    enum TRCSERegistryType
+        {
+        EUnknown,
+        EVoIPProfile,
+        ESIPSetting,        // Not supported
+        EAudioCodecSetting,
+        ESCCPProfile        // Not supported
+        };
+
+    /**  Item types in settings table */
+    enum TItemType
+        {
+        EItemUnknown    = 0,            // Unknown item
+        EItemDeleted    = 1,            // Row (item) deleted
+        EItemVoIPEntry  = 2,            // VoIP profile entry
+        EItemCodecEntry = 3,            // Audio codec entry
+        EItemAttribute  = 4,            // Attribute of entry
+        };
+
+
+public:
+
+    virtual ~CRCSERegistryBase();
+
+    /**
+     * From MRCSEBackupObserver.
+     * Handle backup observer event.
+     *
+     * @since S60 v3.0
+     */
+    void HandleBackupOperationEventL();
+
+protected:
+
+    CRCSERegistryBase( TRCSERegistryType aType );
+
+    void BaseConstructL();
+
+    /**
+    * Prepares operation. Checks that there is not backup/restore
+    * opearation ongoing and begins transaction.
+    *    
+    * @since S60 v3.2
+    * @leave KErrNotReady if there is backuoperation ongoing.
+    * @leave KErrLocked if there is write operation already ongoing.
+    */
+    void BeginL();
+
+    /**
+    * Ends user operations. Commits transaction.
+    *
+    * @since S60 v3.2
+    * @param aType Type of performed operation
+    */
+    void EndL();
+
+    /**
+    * Helper method that converts TInt32 type to descriptor.
+    *
+    * @since S60 v3.2
+    * @param aFrom TInt32 value to be converted.
+    * @param aTo Descriptor containing the converted value.
+    * @return Reference to descriptor containing the converted value.
+    */
+    TDesC& ToDes( TInt32 aFrom, TDes& aTo );
+
+    /**
+    * Helper method that converts TUint32 type to descriptor.
+    *
+    * @since S60 v3.2
+    * @param aFrom TUint32 value to be converted.
+    * @param aTo Descriptor containing the converted value.
+    * @return Reference to descriptor containing the converted value.
+    */
+    TDesC& ToDes( TUint32 aFrom, TDes& aTo );
+
+    /**
+    * Helper method that converts descriptor type to TInt32.
+    *
+    * @since S60 v3.2
+    * @param aFrom Descriptor to be converted.
+    * @return Converted TInt32 value.
+    */
+    TInt32 ToTInt32L( const TDesC& aFrom );
+
+    /**
+    * Helper method that converts descriptor type to TUint32.
+    *
+    * @since S60 v3.2
+    * @param aFrom Descriptor to be converted.
+    * @return Converted TUint32 value.
+    */
+    TUint32 ToTUint32L( const TDesC& aFrom );
+
+    /**
+    * Imports rcse settings from restored database file 
+    *
+    * @since S60 v3.2
+    */
+    void ImportSettingsL();
+
+    /**
+    * Create CenRep db property to given property array.
+    *
+    * @since S60 v3.2
+    * @param aPropertyName Name of created property.
+    * @param aPropertyValue Value of created property.
+    * @param aPropertyArray Container of properties.
+    */
+    void CreatePropertyL( TUint aPropertyName,
+                          const TDesC& aPropertyValue,
+                          RIpAppPropArray& aPropertyArray );
+
+    /**
+    * Find value of property from given property array.
+    *
+    * @since S60 v3.2
+    * @param aPropertyName Name of requested property.
+    * @param aPropertyValue Value of requested property.
+    * @param aPropertyArray Container of properties.
+    */
+    void GetPropertyValueL( TUint aPropertyName,
+                            TDes& aPropertyValue,
+                            RIpAppPropArray& aPropertyArray );
+
+    /**
+    * Create CenRep db property to given property array.
+    *
+    * @since S60 v3.2
+    * @param aPropertyName Searh criteria.
+    * @param aPropertyValue Searh criteria.
+    * @param aIdArray Contains all found entry IDs.
+    */
+    void FindIdsByValueL( TUint aPropertyName,
+                          const TDesC& aPropertyValue,
+                          RArray<TUint32>& aIdArray );
+
+    /**
+    * Search all entry IDs from CenRep database.
+    *
+    * @since S60 v3.2
+    * @param aIdArray Contains all found entry IDs.
+    */
+    void FindAllIdsL( RArray<TUint32>& aIdArray );
+
+    /**
+     * Custom cleanup for cenrep db property array.
+     *
+     * @since S60 v3.2
+     * @param aPointer Array pointer
+     */
+    static void CleanupDbPropArray( TAny* aPointer );
+
+
+protected: // data
+
+    /**
+     * Registry type of this object
+     */
+    TRCSERegistryType iType;
+
+    /**
+     * Backup observer
+     * Own.
+     */
+    CRCSEBackupObserver* iBackupObserver;
+
+    /**
+     * Backup flag
+     */
+    TBool iBackupActive;
+
+    /**
+     * Interface to RCSE's settings storage
+     * Own.
+     */
+    CCenRepDatabaseUtil* iCenRepDb;
+
+
+    // For testing
+    #ifdef TEST_EUNIT
+        friend class UT_CRCSERegistryBase;
+    #endif                                  
+
+    };
+
+#endif // CRCSEREGISTRYBASE_H