diff -r f742655b05bf -r d38647835c2e iptel_plat/richcallsettingsengine_api/inc/crcseprofileregistry.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iptel_plat/richcallsettingsengine_api/inc/crcseprofileregistry.h Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,367 @@ +/* +* Copyright (c) 2002-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: Offers API for storing, getting and updating profiles. +* +*/ + + + +#ifndef CRCSEPROFILEREGISTRY_H +#define CRCSEPROFILEREGISTRY_H + +// INCLUDES +#include +#include +#include +#include + + + +// FORWARD DECLARATION +class CSIPManagedProfileRegistry; +class CSIPProfile; + + +// CLASS DECLARATION + +/** +* Offers getting, setting and updating of profiles. +* +* @lib RCSE.lib +* @since S60 3.0 +*/ +class CRCSEProfileRegistry: public CRCSERegistryBase, + public MSIPProfileRegistryObserver + { +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CRCSEProfileRegistry* NewL(); + + /** + * Two-phased constructor. + */ + IMPORT_C static CRCSEProfileRegistry* NewLC(); + + /** + * Destructor. + */ + IMPORT_C virtual ~CRCSEProfileRegistry(); + +public: // New functions + + /** + * Search a profile, which provider name setting is same as + * aProviderName. Leaves with KErrNotFound if such profile + * is not found. Default values are reseted to aFoundEntry + * before the search. + * + * @since S60 v3.0 + * @param aProviderName Search criteria for profiles. + * @param aFoundEntry A found profile entry, which provider name is + * same than aProviderName. + */ + IMPORT_C void FindL( const TDesC& aProviderName, + CRCSEProfileEntry& aFoundEntry ); + + /** + * Search a profile, which profile id is same as aProfileId. + * Leaves with KErrNotFound if such profile is not found. + * Default values are reseted to aFoundEntry before the search. + * + * @since S60 v3.0. + * @param aProfileId Search criteria for profiles. + * @param aFoundEntry A found profile entry, which provider name is + * same than aProviderName. + */ + IMPORT_C void FindL( TUint32 aProfileId, + CRCSEProfileEntry& aFoundEntry ); + + /** + * Gets all profile identifiers which are stored to RCSE. If there are + * no profiles stored, aAllIds will contain zero entries. + * + * @since S60 v3.0 + * @param aAllIds Array, where the profile identifiers are stored. + */ + IMPORT_C void GetAllIdsL( RArray& aAllIds ); + + /** + * Adds new profile entry. + * + * @since S60 v3.0 + * @param aNewEntry New entry. + * @return Profile identifier of the added profile. + */ + IMPORT_C TUint32 AddL( const CRCSEProfileEntry& aNewEntry ); + + /** + * Deletes a profile, which profile id is same than aProfileId. + * + * @since S60 v3.0 + * @param aProfileId Profile identifier + */ + IMPORT_C void DeleteL( TUint32 aProfileId ); + /** + * Updates profile, which profile identifier is same than aProfileId. + * Only settings that are set in aUpdateData are updated in profile. + * Leaves with KErrNotFound if profile is not found. + * + * @since S60 v3.0 + * @param aId Profile identifier. + * @param aUpdateData Updated data, which are updated to profile. + */ + IMPORT_C void UpdateL( TUint32 aId, + const CRCSEProfileEntry& aUpdateData ); + + /** + * Resets default values for profile. Default profile is a profile, + * which can be used when no other profile is available. + * + * @since S60 v3.0 + * @param aDefaultProfile Default profile settings are set to this. + */ + IMPORT_C void GetDefaultProfile( + CRCSEProfileEntry& aDefaultProfile ) const; + + /** + * Search a profiles, where service provider id is same as aServiceId. + * Content of aFoundEntries array is deleted before the search. + * On return, aFoundEntries is empty if requested entries are not found. + * + * @since S60 v3.2. + * @param aServiceId Search criteria for profiles. + * @param aFoundEntries Container for found profiles + */ + IMPORT_C void FindByServiceIdL( TUint32 aServiceId, + RPointerArray& aFoundEntries ); + + /** + * Search a profiles that have requested aSipProfileId. + * Content of aFoundEntries array is deleted before the search. + * On return, aFoundEntries is empty if requested entries are not found. + * + * @since S60 v3.2. + * @param aSipProfileId Search criteria for profiles. + * @param aFoundEntries Container for found profiles + */ + IMPORT_C void FindBySIPProfileIdL( TUint32 aSipProfileId, + RPointerArray& aFoundEntries ); + + /** + * Adds bunch of profile entries to store in one transaction. + * Creates new service provider setting entry to service table + * if iServiceProviderId has not been set in given profile entry. + * + * @since S60 v3.2 + * @param aEntries + */ + void AddL( RPointerArray& aEntries ); + + + /** + * From MSIPProfileRegistryObserver + * SIP profile information event. + * + * @since S60 v3.1 + * @param aSIPProfileId id for profile + * @param aEvent type of information event + */ + void ProfileRegistryEventOccurred( TUint32 aSIPProfileId, + TEvent aEvent ); + + /** + * From MSIPProfileRegistryObserver + * An asynchronous error has occurred related to SIP profile. + * + * @since S60 v3.1 + * @param aSIPProfileId the id of failed profile + * @param aError a error code + * @return none + */ + void ProfileRegistryErrorOccurred( TUint32 aSIPProfileId, + TInt aError ); + + +private: + + /** + * C++ default constructor. + */ + CRCSEProfileRegistry(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Do actual search of requested entry. + * Leaves with KErrNotFound if such profile is not found. + * Default values are reseted to aFoundEntry before the search. + * + * @since S60 v3.0. + * @param aProfileId Search criteria for profiles. + * @param aFoundEntry A found profile entry + * @leave KErrNotFound if profile doesn't exist. + */ + void FindEntryL( TUint32 aProfileId, CRCSEProfileEntry& aFoundEntry ); + + /** + * Adds or updates settings entry to storage depending of the aId + * parameter. Entry is stored as new entry if aId parameter have + * been set to KNoEntryId, otherwise existing entry is updated. + * + * @since S60 v3.2 + * @param aId ID of entry if exists. + * @param aEntry Entry to be added to storage. + * @param aUpdate Determines add or update operation. + * New entry is added when value is set to EFalse (default). + * @return ID of entry. + */ + void AddOrUpdateEntryL( TUint32& aId, const CRCSEProfileEntry& aEntry ); + + /** + * Convert xxx + * . + * + * @since S60 v3.2. + * @param aEntry + * @param aProperties + */ + void ConvertPropertiesToEntryL( CRCSEProfileEntry& aEntry, + RIpAppPropArray& aProperties ); + + + /** + * Convert xxx + * . + * + * @since S60 v3.2. + * @param aEntry + * @param aProperties + */ + void ConvertEntryToPropertiesL( const CRCSEProfileEntry& aEntry, + RIpAppPropArray& properties ); + + /** + * Extract protocol ids from descriptor. + * + * @since S60 v3.2 + * @param aDes Contains TSettingIds structs. + * @param aArray Contains extracted TSettingIds struct when return. + */ + void ExtractProtocoIdsL( const TDesC& aDes, RArray& aArray ); + + /** + * Validates that linked SIP profiles are up to date. + * Removes invalid links and updates entry to data base + * + * @since S60 v3.1 + * @param aEntry Profile entry fetched from data base + * @return + */ + void UpdateSIPProfileLinksL( CRCSEProfileEntry& aEntry ); + + /** + * Creates and stores service provider settings entry with + * default values, when new profile is created. + * Service ID of stored service settings is set to profile. + * + * @since S60 v3.2. + * @param aNewEntry New entry. + */ + void CreateDefaultServiceSettingsL( CRCSEProfileEntry& aNewEntry ); + + /** + * Deletes service settings and audio codec settings referenced + * from profile. + * + * @since S60 v3.2. + * @param aProfileId Id of deleted VoIP profile + */ + void DeleteReferenceSettingsL( TUint32 aProfileId ); + + /** + * Checks if Service table exist with rerenced entry name. + * @since S60 3.2. + * @param aProviderName. + */ + TBool NameExistsInServiceTableL( const TDesC& aProviderName ) const; + + /** + * Checks if service id is used for profile. + * @since S60 3.2. + * @param aEntry. + */ + void LeaveIfServiceIdInUseL( const CRCSEProfileEntry& aEntry ); + + /** + * Updates service settings related to aEntry if needed + * @since S60 3.2. + * @param aEntry. + */ + void UpdateServiceSettingsL( const CRCSEProfileEntry& aEntry ); + + /** + * Updates service id related to given entry id. + * @since S60 3.2. + * @param aId. + * @param aServiceId New service id. + */ + void UpdateServiceIdL( TUint32 aId, TUint32 aServiceId ); + + /** + * Implementation for cleanup item. + * Resets and destroys array of the entries. + * @param anArray RPointerArray pointer. + */ + static void ResetAndDestroyEntries( TAny* anArray ); + + /** + * Copies values from a const entry to a modifiable one. + * @since S60 3.2. + * @param aSourceEntry Entry whose values are to be copied. + * @param aDestinationEntry Entry to whom values are copied. + */ + void CopyEntryValues( const CRCSEProfileEntry& aSourceEntry, + CRCSEProfileEntry& aDestinationEntry ); +private: // Data + + /** + * SIP registry ( from SIP Profile Client ) + * Own. + */ + CSIPManagedProfileRegistry* iSIPRegistry; + + /** + * SIP profiles ( from SIP Profile Client ) + * Own. + */ + RPointerArray iSIPProfiles; + + +private: + + // For testing + #ifdef TEST_EUNIT + friend class UT_CRCSEProfileRegistry; + #endif + }; + +#endif // CRCSEPROFILEREGISTRY_H + +// End of File