voipplugins/sipconnectionprovider/inc/scpsettinghandler.h
changeset 0 a4daefaec16c
child 20 65a3ef1d5bd0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/voipplugins/sipconnectionprovider/inc/scpsettinghandler.h	Mon Jan 18 20:12:36 2010 +0200
@@ -0,0 +1,305 @@
+/*
+* Copyright (c) 2002-2009 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:  
+*
+*/
+
+
+#ifndef C_SCPSETTINGHANDLER_H
+#define C_SCPSETTINGHANDLER_H
+
+#include <e32base.h>
+#include <cchclientserver.h>
+#include <spdefinitions.h>
+
+class CRCSEProfileRegistry;
+class CRCSEProfileEntry;
+class CSPSettings;
+class CSPEntry;
+class CSPSettingsVoIPUtils;
+class CScpService;
+class CScpServiceHandlerBase;
+class CScpProfileHandler;
+class CScpServiceStorage;
+
+/**
+*  Settings handler.
+*  @lib sipconnectionprovider.dll
+*/
+class CScpSettingHandler : public CBase
+    {
+public:
+    
+    /**
+     * Two-phased constructor.
+     */
+    static CScpSettingHandler* NewL( CScpProfileHandler& iProfileHandler );
+    
+    /**
+     * Destructor.
+     */
+    virtual ~CScpSettingHandler();
+
+    /**
+     * Get SIP Profile Id by Service Id.
+     * @param aServiceId Service Id.
+     * @param aSubService Sub service type.
+     * @param aSipId SIP Profile Id.
+     */
+    void GetSipProfileIdByTypeL( TUint32 aServiceId,
+                                 TCCHSubserviceType aSubServiceType, 
+                                 TUint32& aSipId ) const;
+                                 
+    /**
+     * Get SPSetting TInt property by Service Id and property name.
+     * @param aServiceId Service Id.
+     * @param aPropertyName Settings property name.
+     * @param aProperty a property value.
+     */
+    void GetSPSettingsIntPropertyL( TUint32 aServiceId,
+                                    TServicePropertyName aPropertyName, 
+                                    TInt& aProperty ) const;
+     /**
+     * Get settings for service by Service Id.
+     * @param aServiceId Service Id.
+     * @param aSetting Service Settings.
+     */
+    void UpdateSettingsL( CScpService& aSetting,
+                          TCCHSubserviceType aSubServiceType ) const;
+       
+     /**
+     * Updates xdm settings username
+     * @param aService Service handle.
+     * @param aSubServiceType sub service type
+     * @param aUsername username to set
+     */                          
+    void UpdateXdmUsernameL( CScpService& aService, 
+        TCCHSubserviceType aSubServiceType,
+        const TDesC8& aUsername );
+
+     /**
+     * Updates xdm settings password
+     * @param aService Service handle.
+     * @param aSubServiceType sub service type
+     * @param aPassword password to set
+     */                          
+    void UpdateXdmPasswordL( CScpService& aService, 
+        TCCHSubserviceType aSubServiceType,
+        const TDesC8& aPassword );
+
+    /**
+     * Get Service Id by SIP Profile Id.
+     * @param aSipId SIP Profile Id.
+     * @param aServiceId Service id array.
+     */
+    TInt GetServiceIds( TUint32 aSipId, 
+                        RArray<TUint32>& aServiceId ) const;
+
+    /**
+     * Checks if service exists in service table
+     * @param aServiceId Service id array.
+     * @return ETrue if the service exists
+     */
+    TBool ServiceExistsL( TUint32 aServiceId ) const;
+    
+    /**
+     * Checks is VoIP supported.
+     * @return ETrue if Common VoIP and Dynamic VoIP are ON
+     */
+    TBool IsVoIPSupported() const;
+    
+    /**
+     * Checks is VoIP's user agent header terminal type defined.
+     * @param aServiceId service id
+     * @return ETrue if terminal type is defined.
+     */
+    TBool IsUahTerminalTypeDefinedL( TUint32 aServiceId ) const;
+    
+    /**
+     * Checks is VoIP's user agent header WLAN mac address defined.
+     * @param v
+     * @return ETrue if WLAN mac address is defined.
+     */
+    TBool IsUahWLANMacDefinedL( TUint32 aServiceId ) const;
+    
+    /**
+     * VoIP's user agent header free string length getter.
+     * @param aServiceId service id
+     * @return TInt length of free string.
+     */
+    TInt UahStringLengthL( TUint32 aServiceId ) const;
+     
+    /**
+     * Checks is service's VoIP subservice allowed to use WCDMA.
+     * @param aServiceId service id
+     * @return ETrue if allowed to use VoIP over 3G, otherwise EFalse.
+     */
+    TBool IsVoIPOverWcdmaAllowedL( TUint32 aServiceId ) const;
+    
+private: 
+
+    /**
+     * C++ default constructor.
+     */
+    CScpSettingHandler( CScpProfileHandler& iProfileHandler );
+
+    /**
+     * 2nd phase destructor
+     */
+    void ConstructL();
+
+    /**
+     * Get Service Id by SIP Profile Id.
+     * @param aSipId SIP Profile Id.
+     * @param aServiceId Service id array.
+     */
+    void GetServiceIdsL( TUint32 aSipId, 
+                         RArray<TUint32>& aServiceId ) const;
+
+     /**
+     * Updates Presence settings to the given service
+     * @param aService Service
+     */
+    void UpdatePresenceSettingsL( CScpService& aService ) const;
+
+    /**
+     * Check if presence settings are valid
+     * @param aEntry  Entry
+     * @return ETrue if valid
+     */
+    TBool ArePresenceSettingsValid( const CSPEntry& aEntry ) const;
+       
+    /**
+     * Determines presence settings id from the given entry
+     * @param aEntry Entry
+     * @return ETrue if valid
+     */ 
+    TInt GetPresenceSettingsId( const CSPEntry& aEntry ) const;
+
+    /**
+     * Updates VoIP settings to the given service
+     * @param aService Service
+     */
+    void UpdateVoIPSettingsL( CScpService& aService ) const;
+
+    /**
+     * Check if VoIP settings are valid in the given entry
+     * @param aEntry Entry
+     * @return ETrue if valid
+     */
+    TBool AreVoipSettingsValid( const CSPEntry& aEntry ) const;
+
+    /**
+     * Updates voice mail box settings to the given service
+     * @param aService Service
+     */
+    void UpdateVmbxSettingsL( CScpService& aService ) const;
+
+    /**
+     * Check if voice mail box settings are valid
+     * @param aEntry  Entry
+     * @return ETrue if valid
+     */
+    TBool AreVmbxSettingsValid( const CSPEntry& aEntry ) const;
+
+    /**
+     * Gets sip profile id for VoIP sub service
+     * @param aServiceId Service id
+     * @param aSipId
+     */
+    void GetVoipSipProfileIdL( TUint32 aServiceId, TUint32& aSipId ) const;
+
+    /**
+     * Gets sip profile id for VMBx sub service
+     * @param aServiceId Service id
+     * @param aSipId
+     */
+    void GetVmbxSipProfileIdL( TUint32 aServiceId, 
+                               TUint32& aSipId ) const;
+
+    /**
+     * Gets sip profile id for Presence sub service
+     * @param aServiceId Service id
+     * @param aSipId
+     */
+    void GetPresenceSipProfileIdL( TUint32 aServiceId, 
+                                   TUint32& aSipId ) const;
+
+    /**
+     * Gets sip profile id for all sub services within the service.
+     * If subservices contain different sip profile ids, will leave with
+     * KErrArgument.
+     * @param aServiceId Service id
+     * @param aSipId
+     */
+    void GetUnknownSipProfileIdL( TUint32 aServiceId, 
+                                  TUint32& aSipId ) const;
+
+    /**
+     * Update IM settings to the given service.
+     *
+     * @since S60 v5.1
+     * @param aService service
+     */
+    void UpdateImSettingsL( CScpService& aService ) const;
+
+    /**
+     * Check if IM settings are valid in the given entry.
+     *
+     * @since S60 v5.1
+     * @param aEntry Entry
+     * @return ETrue if valid
+     */
+    TBool AreImSettingsValid( const CSPEntry& aEntry ) const;
+
+private:
+
+    /**
+     * Profile registry. Own.
+     */
+    CRCSEProfileRegistry* iRcseProfileRegistry;
+
+    /**
+     * Profile entry. Own.
+     */
+    CRCSEProfileEntry* iRcseProfileEntry;
+
+    /**
+     * SPSettings. Own.
+     */
+    CSPSettings* iSpSettings;
+
+    /**
+     * Profile handler
+     */
+    CScpProfileHandler& iProfileHandler;
+    
+    /**
+     * SPSettings VoIP utils. Own.
+     */
+    CSPSettingsVoIPUtils* iSpsVoIPUtils;
+    
+private:
+
+#ifdef _DEBUG
+    friend class T_CScpSettingHandler;
+    friend class T_CScpServiceManager;
+    friend class T_CScpSipHelper;
+#endif
+
+    };
+
+#endif      // C_SCPSETTINGHANDLER_H   
+            
+// End of File