sipplugins/sippsipadapter/inc/CWPSIPItem.h
changeset 0 307788aac0a8
child 18 f54bfd820e04
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sipplugins/sippsipadapter/inc/CWPSIPItem.h	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,697 @@
+/*
+* Copyright (c) 2005-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:  Settings item for SIP settings, handles also the saving of
+*                settings item. 
+*
+*/
+
+
+#ifndef CWPSIPITEM_H
+#define CWPSIPITEM_H
+
+// INCLUDES
+#include <e32base.h>                // CBase
+#include <sipprofiletypeinfo.h>
+
+// FORWARD DECLARATIONS
+class CWPCharacteristic;
+class CWPSIPAdapter;
+class CSIPProfileRegistryObserver;
+class CSIPManagedProfileRegistry;
+
+// CLASS DECLARATION
+
+/**
+ * CWPSIPItem handles saving of SIP settings item.
+ * @lib WPSIPAdapter.
+ * @since 3.0.
+ */ 
+class CWPSIPItem : public CBase
+    {
+    public:
+
+        static CWPSIPItem* NewL();
+
+        virtual ~CWPSIPItem();
+
+        /**
+         * Setter for profile type.
+         * @since 3.0.
+         * @param const TDesC8& aPTYPE.
+         */
+        void SetProfileTypeL( const TDesC8& aPTYPE );
+
+        /**
+         * Setter for APPREF.
+         * @since .
+         * @param const TDesC8& aAPPREF.
+         */
+        void SetAppRefL( const TDesC8& aAPPREF );
+
+        /**
+         * Setter for AOL/Public User Identity.
+         * @since 3.0.
+         * @param const TDesC8& aPUID.
+         */
+        void SetAORL( const TDesC8& aPUID );
+
+        /**
+         * Setter for provider.
+         * @since 3.0.
+         * @param const TDesC8& aPROVIDERID.
+         */
+        void SetProviderIdL( const TDesC8& aPROVIDERID );
+
+        /**
+         * Setter for user viewable name of the setting.
+         * @since 3.0.
+         * @param const TDesC& aNAME. Value is TCP or UDP.
+         */
+        void SetNameL( const TDesC& aNAME );
+
+        /**
+         * Setter for transport protocol between UE and outbound proxy/P-CSCF.
+         * @since 3.0.
+         * @param const TDesC8& aAPROTOCOL.
+         */
+        void SetProtocolForOutboundConnectionL( const TDesC8& aAPROTOCOL );
+
+        /**
+         * Setter for NAPDEF name. Name of IAP.
+         * @since 3.0.
+         * @param const TDesC8& aTONAPID.
+         */
+        void SetNapDefNameL( const TDesC8& aTONAPID );
+
+        /**
+         * Setter for signal compression usage.
+         * @since 3.0.
+         * @param TBool aEnabled.
+         */
+        void SetSignalCompressionEnabled( TBool aEnabled );
+
+        /**
+         * Setter for security negotiation usage.
+         * @since 3.0.
+         * @param TBool aEnabled.
+         */
+        void SetSecurityNegotiationEnabled( TBool aEnabled );
+
+        /**
+         * Setter for loose routing usage.
+         * @since 3.0.
+         * @param TBool aEnabled.
+         */
+        void SetLooseRoutingForOutboundConnectionEnabled( TBool aEnabled );
+
+        /**
+         * Setter for profile lock usage.
+         * @since 3.1.
+         * @param TBool aEnabled.
+         */
+        void SetProfileLockEnabled( TBool aEnabled );
+
+        /**
+         * Setter for outbound proxy/P-CSCF address.
+         * @since 3.0.
+         * @param const TDesC8& aOutboundAddr.
+         */
+        void SetOutboundAddrL( const TDesC8& aOutboundAddr );
+
+        /**
+         * Setter for port number to be used when connecting outbound
+         * proxy/P-CSCF.
+         * @since 3.0.
+         * @param const TDesC8& aPORT.
+         */
+        void SetPortNumberForOutboundConnectionL( const TDesC8& aPORT );
+
+        /**
+         * Setter for authentication type when autenticating to outbound
+         * proxy.
+         * @since 3.0.
+         * @param const TDesC8& aAAUTHTYPE.
+         */
+        void SetAuthenticationTypeForOutboundL( const TDesC8& aAAUTHTYPE );
+
+        /**
+         * Setter for username when autenticating to outbound proxy.
+         * @since 3.0.
+         * @param const TDesC8& aAAUTHNAME.
+         */
+        void SetUsernameForOutboundL( const TDesC8& aAAUTHNAME );
+
+        /**
+         * Setter for password when autenticating to outbound proxy.
+         * @since 3.0.
+         * @param const TDesC8& aAAUTHSECRET.
+         */
+        void SetPasswordForOutboundL( const TDesC8& aAAUTHSECRET );
+
+        /**
+         * Setter for realm when autenticating to outbound proxy.
+         * @since 3.0.
+         * @param const TDesC8& aAAUTHDATA.
+         */
+        void SetRealmForOutboundL( const TDesC8& aAAUTHDATA );
+
+        /**
+         * Setter for registrar/S-CSCF address.
+         * @since 3.0.
+         * @param const TDesC8& aRegistrarAddr.
+         */
+        void SetRegistrarAddrL( const TDesC8& aRegistrarAddr );
+
+        /**
+         * Setter for authentication type when autenticating to registrar
+         * proxy/S-CSCF.
+         * @since 3.0.
+         * @param const TDesC8& aAAUTHTYPE.
+         */
+        void SetAuthenticationTypeForRegistrarL( const TDesC8& aAAUTHTYPE );
+
+        /**
+         * Setter for username when autenticating to registrar proxy/S-CSCF.
+         * @since 3.0.
+         * @param const TDesC8& aAAUTHNAME.
+         */
+        void SetUsernameForRegistrarL( const TDesC8& aAAUTHNAME );
+
+        /**
+         * Setter for password when autenticating to registrar proxy/S-CSCF.
+         * @since 3.0.
+         * @param const TDesC8& aAAUTHSECRET.
+         */
+        void SetPasswordForRegistrarL( const TDesC8& aAAUTHSECRET );
+
+        /**
+         * Setter for realm when autenticating to registrar proxy/S-CSCF.
+         * @since 3.0.
+         * @param const TDesC8& aAAUTHDATA.
+         */
+        void SetRealmForRegistrarL( const TDesC8& aAAUTHDATA );
+
+        /**
+         * Setter for NAPDEF (IAP settings).
+         * @since 3.0.
+         * @param CWPCharacteristic* aNapDef.
+         */
+        void SetNapDef( CWPCharacteristic* aNapDef );
+
+        /**
+         * Sets the id of IAP to save item.
+         * @since 3.0.
+         * @param aUid the uid of IAP.
+         */
+        void SetIAPId( TUint32 aUid );
+
+        /**
+         * Sets the SIP profile as default.
+         * @since 3.0.
+         */
+        void SetAsDefaultL();
+
+        /**
+         * Sets automatic registration enabled.
+         * @since 3.0.
+         */
+        void SetAutomaticRegistrationEnabled( 
+            TBool aAutomaticRegistrationEnabled );
+
+         /**
+          * Gets SIP ID.
+          * @since 3.0.
+          */
+        TDesC8& GetAppRef();
+
+        /**
+         * Getter for Address-Of-Record/Public User Identity.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetAOR();
+
+        /**
+         * Getter for provider.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetProviderId();
+
+        /**
+         * Getter for user viewable nema of SIP settings item.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC& GetName();
+
+        /**
+         * Getter for protocol name for usage between UE and outbound proxy.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetProtocolForOutboundConnection();
+
+        /**
+         * Getter for NAPDEF name (IAP settings name).
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetNapDefName();
+
+        /**
+         * Getter for signal compression usage.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TBool GetSignalCompressionEnabled();
+
+        /**
+         * Getter for security negotiation usage.
+         * @since 3.0.
+         * @return TBool.
+         */
+        TBool GetSecurityNegotiationEnabled();
+
+        /**
+         * Getter for loose routing usage.
+         * @since 3.0.
+         * @return TBool.
+         */
+        TBool GetLooseRoutingForOutboundConnectionEnabled();
+
+        /**
+         * Getter for profile lock.
+         * @since 3.1.
+         * @return TBool.
+         */
+        TBool GetProfileLockEnabled();
+
+        /**
+         * Getter for outbound proxy/P-CSCF address.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetOutboundAddr();
+
+        /**
+         * Getter for port number of outbound proxy.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetPortNumberForOutboundConnection();
+
+        /**
+         * Getter for authentication type of outbound proxy.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetAuthenticationTypeForOutbound();
+
+        /**
+         * Getter for username of outbound proxy realm.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetUsernameForOutbound();
+
+        /**
+         * Getter for password of outbound proxy realm.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetPasswordForOutbound();
+
+        /**
+         * Getter for outbound proxy realm.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetRealmForOutbound();
+
+        /**
+         * Getter for registrar proxy/S-CSCF address.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetRegistrarAddr();
+
+        /**
+         * Getter for authentication type of registrar proxy/S-CSCF.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetAuthenticationTypeForRegistrar();
+
+        /**
+         * Getter for username of registrar proxy/S-CSCF realm.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetUsernameForRegistrar();
+
+        /**
+         * Getter for password of registrar proxy/S-CSCF realm.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetPasswordForRegistrar();
+
+        /**
+         * Getter for registrar proxy/S-CSCF realm.
+         * @since 3.0.
+         * @return TDesC8&.
+         */
+        TDesC8& GetRealmForRegistrar();
+
+        /**
+         * Getter for automatic registration state
+         * @since 3.0.
+         * @return TBool.
+         */
+        TBool GetAutomaticRegistrationEnabled();
+
+        /**
+         * Getter for IAPId.
+         * @since 3.0.
+         * @return TUint32.
+         */
+        TUint32 GetIAPId();
+
+        /**
+         * Getter for NAPDEF (IAP settings).
+         * @since 3.0.
+         * @return CWPCharacteristic*.
+         */
+        CWPCharacteristic* GetNapDef();
+
+        /**
+         * Getter for SIP profile id.
+         * @since 3.0.
+         * @return TUint32. Uid of the SIP profile in SIP Profile Registry.
+         */
+        TUint32 GetProfileId();
+
+        /**
+         * Saves SIP settings point by using .
+         * @since 3.0.
+         * @return Id of saved service access point.
+         */
+        TUint32 StoreL();
+
+        /**
+         * Return profile id.
+         * @since 3.0.
+         * @return TDesC8&. Id of the SIP item.
+         */
+        const TDesC8& SaveData();
+
+        /**
+         * Check for duplicate providername and rename if same
+         * @since Series 60_3.0
+         * @param aProfile Profile to check.
+         * @param aProfileId ProfileId to be skipped in check.
+         */
+        void CheckDuplicateNameL( CSIPManagedProfile& aProfile, 
+            const TInt& aProfileId );
+
+        /**
+         * Set wlan availability switch
+         * @since Series 60_3.0
+         * @param aScanRate Scan rate to be set.
+         */
+        void SetAvailabilitySwitchL( const TUint32 aScanRate );
+
+        /**
+         * Cleanup method for array.
+         *
+         * @since S60 3.1
+         * @param aParameter Parameter to be cleaned.
+         */
+        static void CleanupArrayItem( TAny* aArray );
+
+        /**
+         * Setter for TO-APPREF value.
+         *
+         * @since S60 3.2
+         * @param aToAppRef TO-APPREF value to be set.
+         */
+        void SetToAppRefL( const TDesC8& aToAppRef );
+
+        /**
+         * Getter for TO-APPREF value.
+         *
+         * @since S60 3.2
+         * @return TO-APPREF value.
+         */
+        const TDesC8& ToAppRef() const;
+
+        /**
+         * Setter for Destination network name.
+         *
+         * @since S60 3.2.
+         * @param aDestination Destination name to be set.
+         */
+        void SetNetworkL( const TDesC& aNetwork );
+
+        /**
+         * Getter for Destination network name.
+         *
+         * @since S60 3.2.
+         * @return Destination network name.
+         */
+        const TDesC& Network() const;
+
+        /**
+         * Setter for SNAP ID.
+         *
+         * @since S60 3.2.
+         * @param aSnapId SNAP ID.
+         */
+        void SetSnapId( TInt aSnapId );
+
+        /**
+         * Setter for Signalling QoS value.
+         *
+         * @since S60 3.2.
+         * @param aSigQos Signalling QoS value.
+         */
+        void SetSigQos( TUint32 aSigQos );
+
+    private:
+
+        void ConstructL();
+        CWPSIPItem();
+
+        /**
+         * Getter for Destination Network ID.
+         *
+         * @since S60 3.2.
+         * @param aName Destination Network name.
+         * @return Destination Network ID.
+         */
+        TInt NetworkIdL( const TDesC& aName );
+
+    private:
+
+        /**
+         * SIP Profile reference identity in provisioning document.
+         * Own.
+         */
+        HBufC8* iAppRef;
+
+        /**
+         * Address-Of-Record/Public User Identity.
+         * Own.
+         */
+        HBufC8* iAOR;
+
+        /**
+         * Protocol used between UE and outbound proxy/P-CSCF.
+         * Own.
+         */
+        HBufC8* iProtocolForOutboundConnection;
+
+        /**
+         * Name of SIP settings visible to user when viewing the provisioning 
+         * message.
+         * Own.
+         */
+        HBufC* iName;
+
+        /**
+         * Provider of settings.
+         * Own.
+         */
+        HBufC8* iProviderId;
+
+        /** 
+         * The access point name.
+         * Own.
+         */
+        HBufC8* iNapDefName;        
+
+        /**
+         * Signal compression usage.
+         */
+        TBool iSignalCompressionEnabled;      
+
+        /**
+         * Security negotiation usage.
+         */
+        TBool iSecurityNegotiationEnabled;
+
+        /**
+         * Loose routing usage.
+         */
+        TBool iLooseRoutingForOutboundConnectionEnabled;
+
+        /**
+         * Registration mode (always on/when needed).
+         */
+        TBool iAutomaticRegistrationEnabled;
+
+        /**
+         * Profile Lock.
+         */
+        TBool iProfileLockEnabled;
+
+        /**
+         * Outbound proxy/P-CSCF address.
+         * Own.
+         */
+        HBufC8* iOutboundAddr;
+
+        /**
+         * Port number of outbound proxy/P-CSCF.
+         * Own.
+         */
+        HBufC8* iPortNumberForOutboundConnection;
+
+        /**
+         * Authentication type of outbound proxy.
+         * Own.
+         */
+        HBufC8* iAuthenticationTypeForOutbound;
+
+        /**
+         * Username of outbound proxy realm.
+         * Own.
+         */
+        HBufC8* iUsernameForOutbound;
+
+        /**
+         * Password of outbound proxy realm.
+         * Own.
+         */
+        HBufC8* iPasswordForOutbound;
+
+        /**
+         * Outbound proxy realm.
+         * Own.
+         */
+        HBufC8* iRealmForOutbound;
+
+        /**
+         * Registrar proxy/S-CSCF address.
+         * Own.
+         */
+        HBufC8* iRegistrarAddr;
+
+        /**
+         * Authentication type of registrar proxy/S-CSCF.
+         * Own.
+         */
+        HBufC8* iAuthenticationTypeForRegistrar;  
+
+        /**
+         * Username of registrar proxy/S-CSCF realm.
+         * Own.
+         */
+        HBufC8* iUsernameForRegistrar;
+
+        /**
+         * Password of registrar proxy/S-CSCF realm.
+         * Own.
+         */
+        HBufC8* iPasswordForRegistrar;
+
+        /**
+         * Registrar proxy/S-CSCF realm.
+         * Own.
+         */
+        HBufC8* iRealmForRegistrar;
+
+        /**
+         * NAPDEF. Pointer to IAP settings.
+         */
+        CWPCharacteristic* iNapDef;
+
+        /**
+         * ID value of the referred IAP.
+         */
+        TUint32 iIAPId;
+
+        /**
+         * ID of the SIP profile in profile registry after saving.
+         */
+        TUint32 iProfileId;
+
+        /**
+         * Defaultness of the SIP profile.
+         */
+        TBool iSetAsDefault;
+
+        /**
+         * Type of profile + name of type.
+         */
+        TSIPProfileTypeInfo iSIPProfileTypeInfo;  
+
+        /**
+         * SIP ID as descriptor to be returned by the SaveData method to the
+         * framework via adapter SaveDataL.
+         * Own.
+         */
+        HBufC8* iSavedProfileId;
+
+        /**
+         * TO-APPREF value for linking SIP profile to a destination network.
+         * Own.
+         */
+        HBufC8* iToAppRef;
+
+        /**
+         * Destination network name to be set.
+         * Own.
+         */
+        HBufC* iNetwork;
+
+        /**
+         * SNAP ID.
+         */
+        TInt iSnapId;
+
+        /**
+         * Signalling QoS value.
+         */
+        TUint32 iSigQos;
+
+    private:
+        //friend class UT_CWPSIPItem; // For testing purposes.
+        //friend class UT_CWPSIPAdapter; // For testing purposes.
+
+
+    }; // class
+
+#endif // CWPSIPITEM_H