diff -r f742655b05bf -r d38647835c2e richcallsettingsengine/rcse2/inc/rcsedbimporter.h --- /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 +#include + +#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& 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 + void GetNumbersFromDescriptorL( const TDesC& aNumbers, + RArray& 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 iProfiles; + + /** + * Container for imported Audio Codecs. + * Own. + */ + RPointerArray iCodecs; + + /** + * An array for pairs of old and new codec IDs + * Own. + */ + RArray iCodecIds; + +private: + // For testing + #ifdef TEST_EUNIT + friend class UT_CRCSEDbImporter; + #endif + + + + }; + + + +#endif // C_RCSEDBIMPORTER_H