diff -r f742655b05bf -r d38647835c2e voipplugins/voipadapters/dmgenvoipsettings/inc/NSmlDmGeneralVoIPSettingsAdapter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voipplugins/voipadapters/dmgenvoipsettings/inc/NSmlDmGeneralVoIPSettingsAdapter.h Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,498 @@ +/* +* Copyright (c) 2006 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: Device Management General VoIP settings adapter +* +*/ + + +#ifndef __NSMLDMGENERALVOIPSETTINGSADAPTER_H__ +#define __NSMLDMGENERALVOIPSETTINGSADAPTER_H__ + +#include + +/** + * Cleanup item for deleting contents of RPointerArray. + * + */ +template +class CleanupResetAndDestroy + { +public: + + inline static void PushL(T& aRef); + +private: + + static void ResetAndDestroy(TAny *aPtr); + }; + +template +inline void CleanupResetAndDestroyL(T& aRef); + +/** + * Entry point for general VoIP settings. + * + * Holds general VoIP settings transiently before they are stored permanently + * in Central Repository. + * @since S60 v3.0 + */ +class TGenVoIPEntry + { + + public: + + /** + * Status reference for this command. + */ + TInt iStatusRef; + + /** + * For telling whether general VoIP settings are loaded from + * Central Repository. + */ + TInt iAreSettingsLoaded; + + /** + * CLIR, Calling Line Identification Restriction. + */ + TInt iClir; + + /** + * Anonymous Call Block rule. Determines the rule for Anonymous Call + * Block feature. + */ + TInt iACBRule; + + /** + * Preferred telephony. Tells which telephony mode is preferred. + */ + TInt iPrefTel; + + /** + * Do Not Disturb (DND) setting. + */ + TInt iDnd; + + /** + * Call waiting. Tells whether call waiting is enabled or disabled. + */ + TInt iPSCallWaiting; + + /** + * Telephony preference lock. Tells whether preferred telephony mode + * is UI editable. + */ + TInt iPrefTelLock; + + /** + * Shut down CS radio in WiFi mode. Tells whether CS radio is turned + * off in WiFi mode. + */ + TInt iCsRadioWifiOff; + + /** + * VoIP profile name. If preferred telephony mode is set to VoIP, + * the service id of this VoIP profile is set as preferred service id. + */ + TBuf8<64> iVoipProfileId; + }; + +/** + * CNSmlDmGeneralVoIPSettingsAdapter. + * + * Main implementation of Device Management General VoIP Settings Adapter. + * @lib cnsmldmgeneralvoipsettingsadapter.lib + * @since S60 v3.0 + */ +class CNSmlDmGeneralVoIPSettingsAdapter : public CSmlDmAdapter + { + +#ifdef EUNIT_TESTING + /** + * Friend class for unit testing. + */ + friend class UT_CNSmlDmGeneralVoIPSettingsAdapter; +#endif + + public: + + static CNSmlDmGeneralVoIPSettingsAdapter* NewL( MSmlDmCallback* aDmCallback ); + + static CNSmlDmGeneralVoIPSettingsAdapter* NewLC( MSmlDmCallback* aDmCallback ); + + virtual ~CNSmlDmGeneralVoIPSettingsAdapter(); + + private: + + CNSmlDmGeneralVoIPSettingsAdapter( TAny* aEcomArguments ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Fetches leaf object values + * + * @since S60 v3.0. + * @param aURI URI of the object. + * @param aLUID LUID of the object. + * @param aObject Data of the object. + * @return Status code of operation + */ + CSmlDmAdapter::TError FetchObjectL( + const TDesC8& aURI, + CBufBase& aObject ); + + /** + * Loads general VoIP settings from Central Repository. + * + * @since S60 v3.0. + * @param aEntry General VoIP settings entry. + * @return Error code for the operation. + */ + TInt LoadSettingsL(); + + /** + * Converts descriptor to int. + * + * @since S60 v3.0. + * @param aDes Descriptor to convert. + * @return Converted value. + */ + TInt DesToInt( const TDesC8& aDes ); + + /** + * Removes last URI segment from aURI + * + * @since S60 v3.0. + * @param aDes Descriptor to handle. + * @return Pointer to URI. + */ + TPtrC8 RemoveLastURISeg( const TDesC8& aURI ); + + /** + * Gets number of URI segments. + * + * @since S60 v3.0. + * @param aURI Descriptor to handle. + * @return Number of URI segments. + */ + TInt NumOfURISegs( const TDesC8& aURI ); + + /** + * Gets last URI segment. + * + * @since S60 v3.0. + * @param aURI Descriptor to handle. + * @return Pointer to beginning of last URI segment. + */ + TPtrC8 LastURISeg( const TDesC8& aURI ) const; + + /** + * Removes ./ from URI + * + * @since S60 v3.0. + * @param aURI Descriptor to handle. + * @return Pointer to URI. + */ + TPtrC8 RemoveDotSlash( const TDesC8& aURI ); + + // from base class MSmlDmAdapter + + /** + * From MSmlDmAdapter. + * + * @since S60 v3.0. + * @param aDDFVersion for returning DDF version of adapter. + */ + void DDFVersionL( CBufBase& aDDFVersion ); + + /** + * From MSmlDmAdapter. + * + * @since S60 v3.0. + * @param aDDF for returning DDF structure of adapter. + */ + void DDFStructureL( MSmlDmDDFObject& aDDF ); + + /** + * From MSmlDmAdapter. + * + * @since S60 v3.0. + * @param aURI URI of the object. + * @param aLUID LUID of the object. + * @param aObject Data of the object. + * @param aType MIME type of the object. + * @param aStatusRef Reference to correct command. + */ + void UpdateLeafObjectL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aObject, + const TDesC8& aType, + const TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @param aURI URI of the object. + * @param aLUID LUID of the object. + * @param aStream Data of the object. + * @param aType MIME type of the object. + * @param aStatusRef Reference to correct command. + */ + void UpdateLeafObjectL( + const TDesC8& aURI, + const TDesC8& aLUID, + RWriteStream*& aStream, + const TDesC8& aType, + TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Deletes (resets) General VoIP Settings profile. + * + * @since S60 v3.0. + * @param aURI URI of the object. + * @param aLUID LUID of the object. + * @param aStatusRef Reference to correct command. + */ + void DeleteObjectL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Fetches the values of leaf objects. + * + * @since S60 v3.0. + * @param aURI URI of the object. + * @param aLUID LUID of the object. + * @param aType MIME type of the object. + * @param aResultsRef Reference to correct results. + * @param aStatusRef Reference to correct command. + */ + void FetchLeafObjectL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aType, + const TInt aResultsRef, + const TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Fetches the size of a leaf object. + * + * @since S60 v3.0. + * @param aURI URI of the object. + * @param aLUID LUID of the object. + * @param aType MIME type of the object. + * @param aResultsRef Reference to correct results. + * @param aStatusRef Reference to correct command. + */ + void FetchLeafObjectSizeL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aType, + TInt aResultsRef, + TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Asks for the list of child objects of the node. + * + * @since S60 v3.0. + * @param aURI URI from DM module. + * @param aLUID LUID of the parent object. + * @param aPreviousURISegmentList from DM module. + * @param aResultsRef results reference from DM module. + * @param aStatusRef Reference to correct command. + */ + void ChildURIListL( + const TDesC8& aURI, + const TDesC8& aLUID, + const CArrayFix& aPreviousURISegmentList, + const TInt aResultsRef, + const TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Not supported (there can only be one general VoIP settings node). + * + * @since S60 v3.0. + * @param aURI URI of the object. + * @param aParentLUID LUID of the parent object. + * @param aStatusRef Reference to correct command. + */ + void AddNodeObjectL( + const TDesC8& aURI, + const TDesC8& aParentLUID, + const TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @since S60 v3.0. + * @param aURI URI from DM module. + * @param aLUID LUID of the object. + * @param aArgument Argument for the command. + * @param aType MIME type of the object. + * @param aStatusRef Reference to correct command. + */ + void ExecuteCommandL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aArgument, + const TDesC8& aType, + const TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @since S60 v3.0. + * @param aURI URI from DM module. + * @param aLUID LUID of the object. + * @param aStream Argument for the command. + * @param aType MIME type of the object. + * @param aStatusRef Reference to correct command. + */ + void ExecuteCommandL( + const TDesC8& aURI, + const TDesC8& aLUID, + RWriteStream*& aStream, + const TDesC8& aType, + const TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @since S60 v3.0. + * @param aTargetURI Target URI for the command. + * @param aTargetLUID LUID of the target object. + * @param aSourceURI Source URI for the command. + * @param aSourceLUID LUID of the source object. + * @param aType MIME type of the objects. + * @param aStatusRef Reference to correct command. + */ + void CopyCommandL( + const TDesC8& aTargetURI, + const TDesC8& aTargetLUID, + const TDesC8& aSourceURI, + const TDesC8& aSourceLUID, + const TDesC8& aType, + TInt aStatusRef ); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @since S60 v3.0. + */ + void StartAtomicL(); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @since S60 v3.0. + */ + void CommitAtomicL(); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @since S60 v3.0. + */ + void RollbackAtomicL(); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @since S60 v3.0. + * @param aItemSize Size limit for stream usage. + * @return Streaming support. + */ + TBool StreamingSupport( TInt& aItemSize ); + + /** + * From MSmlDmAdapter. + * Not supported. + * + * @since S60 v3.0. + */ + void StreamCommittedL(); + + /** + * From MSmlDmAdapter. + * Saves modified profiles back to permanent store. + * + * @since S60 v3.0. + */ + void CompleteOutstandingCmdsL(); + + /** + * Gets VoIP profile id. + * + * @since S60 v3.2.3. + * @param aObject URI of the object to fetch. + */ + TUint32 VoIPProfileIdL( const TDesC8& aObject ) const; + + /** + * Resolves the name of the preferred service and saves it to an + * internal variable. + * + * @since S60 v3.2.3. + * @param aRepository Reference to a previously opened repository. + */ + TInt ResolvePreferredServiceNameL( CRepository& aRepository ); + + private: // data + + /** + * For returning data to DM module. + */ + MSmlDmCallback* iDmCallback; + + /** + * Profile ID currently being modified. + */ + TInt iProfileID; + + /** + * For knowing status of DM module. + */ + TInt iStatus; + + /** + * Entry point for general VoIP settings. + */ + TGenVoIPEntry iEntry; + + /** + * For returning results to DM module. + */ + CBufBase* iResults; + + }; + +#endif // __NSMLDMGENERALVOIPSETTINGSADAPTER_H__