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 <smldmadapter.h>
+
+/**
+ * Cleanup item for deleting contents of RPointerArray.
+ *
+ */
+template <class T>
+class CleanupResetAndDestroy
+ {
+public:
+
+ inline static void PushL(T& aRef);
+
+private:
+
+ static void ResetAndDestroy(TAny *aPtr);
+ };
+
+template <class T>
+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<TSmlDmMappingInfo>& 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__