--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/richcallsettingsengine/rcse2/inc/rcsedbimporter.h Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,256 @@
+/*
+* Copyright (c) 2007-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: RCSE Settings Import from DBMS
+*
+*/
+
+
+
+#ifndef C_RCSEDBIMPORTER_H
+#define C_RCSEDBIMPORTER_H
+
+
+#include <e32base.h>
+#include <d32dbms.h>
+
+#include "crcseprofileentry.h"
+#include "crcseaudiocodecentry.h"
+
+
+/** Struct for mapping old and new ids of entries */
+class TRCSEIdPair
+ {
+public:
+ TUint32 iOldId;
+ TUint32 iNewId;
+ };
+
+/**
+ * Utility class that imports rcse settings from database and
+ * stores them to central repository.
+ *
+ * Enables the restoring of voip settings from previous SW versions.
+ *
+ * @code
+ * if ( CRCSEDbImporter::ImportExists() &&
+ !CRCSEDbImporter::IsImportRunning() )
+ {
+ CRCSEDbImporter* importer = CRCSEDbImporter::NewLC();
+ importer->ImportAndStoreL();
+ CleanupStack::PopAndDestroy( importer );
+ }
+
+ * @endcode
+ *
+ * @lib rcse.lib
+ * @since S60 v3.2
+ */
+class CRCSEDbImporter : public CBase
+ {
+
+public:
+
+ static CRCSEDbImporter* NewL();
+
+ static CRCSEDbImporter* NewLC();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CRCSEDbImporter();
+
+ /**
+ * Check if there is imported (restored) rcse database file.
+ *
+ * @since S60 v3.2
+ * @return ETrue if imported db file found
+ */
+ static TBool ImportExists();
+
+ /**
+ * Check if there is import operation already started.
+ *
+ * @since S60 v3.2
+ * @return ETrue if import is already ongoing
+ */
+ static TBool IsImportRunning();
+
+ /**
+ * Imports rcse entries from database and stores them to repository.
+ *
+ * @since S60 v3.2
+ */
+ void ImportAndStoreL();
+
+private:
+
+ CRCSEDbImporter();
+
+ void ConstructL();
+
+ /**
+ * Sets lock that prevents other instances to start import operation.
+ *
+ * @since S60 v3.2
+ */
+ void SetImportLock();
+
+ /**
+ * Release import lock.
+ *
+ * @since S60 v3.2
+ */
+ void ReleaseImportLock();
+
+ /**
+ * Imports RCSE profile entries from database to the iProfiles array.
+ *
+ * @since S60 v3.2
+ */
+ void ImportVoIPProfilesL();
+
+ /**
+ * Imports RCSE audio codec entries from database to the iCodecs array.
+ *
+ * @since S60 v3.2
+ */
+ void ImportAudioCodecsL();
+
+ /**
+ * Deletes all imported db files
+ *
+ * @since S60 v3.2
+ */
+ void DeleteImports();
+
+ /**
+ * Maps data from database query to profile entry.
+ *
+ * @since S60 v3.2
+ * @param aColumnIndex Column that is mappped.
+ * @param aView Query results.
+ * @param aEntry Data from requested column is mapped and
+ * stored to this entry.
+ */
+ void MapColumnToEntryL( TInt aColumnIndex,
+ const RDbView& aView,
+ CRCSEProfileEntry& aEntry );
+
+ /**
+ * Maps data from database query to audio codec entry.
+ *
+ * @since S60 v3.2
+ * @param aColumnIndex Column that is mappped.
+ * @param aView Query results.
+ * @param aEntry Data from requested column is mapped and
+ * stored to this entry.
+ */
+ void MapColumnToEntryL( TInt aColumnIndex,
+ const RDbView& aView,
+ CRCSEAudioCodecEntry& aEntry );
+
+
+ /**
+ * Reads TSettingIds structs from given descriptor to array.
+ *
+ * @since S60 v3.2
+ * @param aNumbers Descriptor containing TSettingIds structs.
+ * @param aArray Container for TSettingIds structs.
+ */
+ void GetProfileIdsFromDescriptorL( const TDesC& aNumbers,
+ RArray<TSettingIds>& aArray );
+
+
+
+ /**
+ * Reads IDs from given descriptor to array.
+ *
+ * @since S60 v3.2
+ * @param aNumbers Descriptor containing list of IDs.
+ * @param aArray Container for IDs.
+ */
+ template<class T>
+ void GetNumbersFromDescriptorL( const TDesC& aNumbers,
+ RArray<T>& aArray );
+
+
+ /**
+ * Updates new preferred audio codec IDs to imported VoIP
+ * profile entries.
+ *
+ * @since S60 v3.2
+ */
+ void UpdatePreferredCodecs();
+
+ /**
+ * Stores imported voip profiles.
+ *
+ * @since S60 v3.2
+ */
+ void StoreVoIPProfilesL();
+
+ /**
+ * Stores imported audio codecs.
+ *
+ * @since S60 v3.2
+ */
+ void StoreAudioCodecsL();
+
+
+
+private: // data
+
+ /**
+ * Database object.
+ * Own.
+ */
+ RDbNamedDatabase iDb;
+
+ /**
+ * Database session.
+ * Own.
+ */
+ RDbs iDbSession;
+
+ /**
+ * Container for imported VoIP profiles.
+ * Own.
+ */
+ RPointerArray<CRCSEProfileEntry> iProfiles;
+
+ /**
+ * Container for imported Audio Codecs.
+ * Own.
+ */
+ RPointerArray<CRCSEAudioCodecEntry> iCodecs;
+
+ /**
+ * An array for pairs of old and new codec IDs
+ * Own.
+ */
+ RArray<TRCSEIdPair> iCodecIds;
+
+private:
+ // For testing
+ #ifdef TEST_EUNIT
+ friend class UT_CRCSEDbImporter;
+ #endif
+
+
+
+ };
+
+
+
+#endif // C_RCSEDBIMPORTER_H