sipplugins/sippsipsettingsui/inc/gssipprofileutil.h
author Petteri Saari <petteri.saari@digia.com>
Thu, 02 Dec 2010 15:23:48 +0200
branchMSRP_FrameWork
changeset 60 7634585a4347
parent 0 307788aac0a8
permissions -rw-r--r--
This release addresses the following: - Multiple concurrent file transfer bug fixes. i.e. one device is concurrently receiving multiple files from multiple devices

/*
* Copyright (c) 2003 - 2005 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:  Utility class for manipulating profiles and their attributes
*
*/



#ifndef GS_SIP_PPROFILE_UTIL_H
#define GS_SIP_PPROFILE_UTIL_H

// INCLUDES

#include <sipprofile.h>

// FORWARD DECLARATIONS

class TSIPSettingsData;
class TGSSIPServerData;
class CSIPManagedProfile;
class UT_GSSIPProfileUtil;

// CLASS DECLARATION

/**
*  GSSIPProfileUtil utility class
*  @since 3.0
*  Utility class for manipulating profiles and their attributes.
*/
class GSSIPProfileUtil
    {    
    public: // New functions
        
        /**
        * Copies profile parameters from temporary data structure
        * to profile
        * @param aProfile     Profile where the attributes are copied to
        * @param aProfileData Temporary data structure       
        */
        static void CopyProfileAttributesL( 
            CSIPManagedProfile* aProfile, 
            const TSIPSettingsData& aProfileData );
        
        /**
        * Copies proxy server parameters from temporary data structure
        * to profile
        * @param aProfile     Profile where the attributes are copied to
        * @param aServer      Proxy server/registrar server
        * @param aProfileData Temporary data structure       
        */
        static void CopyServerAttributesL(
            CSIPManagedProfile* aProfile,
            TUint32 aServer,
            const TGSSIPServerData& aProfileData );

        /**
        * Copies profiles attributes to temporary data structure
        * @param aProfile      Profile where the attributes are copied from
        * @param aProfileData  Temporary data structure where attribs
        *                      are copied to
        */
        static void CopyToTempStructL(
            CSIPManagedProfile* aProfile,
            TSIPSettingsData& aProfileData );

        /**
        * Copies server attributes to temporary data structure
        * @param aProfile      Profile where the attributes are copied from
        * @param aServer       Proxy server/registrar server
        * @param aProfileData  Temporary data structure where attribs
        *                      are copied to
        */
        static void CopyServerSettingsToTempStructL(
            CSIPManagedProfile* aProfile,
            TUint32 aServer,
            TGSSIPServerData& aProfileData );                
                                                 
        /**
        * Compares the temporary data structure with given profile
        * @param aProfile     Profile
        * @param aProfileData Temporary data structure
        * @return ETrue if the profiles differ
        */
        static TBool ProfileModificationsL(
            CSIPManagedProfile* aProfile,
            const TSIPSettingsData& aProfileData );

        /**
        * Compares the temporary data structure with given profile
        * @param aProfile    Profile
        * @param aServer     Proxy server/registrar server
        * @param aData       Temporary data structure       
        * @return ETrue if the attributes differ
        */
        static TBool ServerModificationsL(
            CSIPManagedProfile* aProfile,
            TUint32 aServer,
            const TGSSIPServerData& aData );
        
        /**
        * Copies profile information from one profile to another
        * @param aOrigProfile   Attributes from here 
        * @param aCopiedProfile Attributes stored here               
        */
        static void CopyProfileL(
            CSIPManagedProfile* aOrigProfile,
            CSIPManagedProfile* aCopiedProfile );

        /**
        * Copies and sets server URI from given parameters
        * Used by CopyServerAttributesL()
        */
        static void CopyServerURIL(
            CSIPManagedProfile* aProfile,
            TUint32 aServer,
            const TGSSIPServerData& aProfileData );

        /**
        * Parses uri path.
        * Used by CopyServerURIL()
        */
        static void ParseUriPathL(
            CSIPManagedProfile* aProfile,
            TUint32 aServer,
            const TGSSIPServerData& aProfileData,
            HBufC8* aFinalPath );
                        
       	/**
        * Checks if sip or sips scheme included.
        * @param aAddr address to be checked               
        * @param aHostBrackets when ETrue, host brackets are checked
        */
        static TBool SchemeIncluded( const TDesC8& aAddr, 
        							TBool aHostBrackets=EFalse );
        
		/**
		* GSSIPProfileUtil::BracketsIncluded
		* Check if brackets included correctly in IPv6 reference.
        * @return ETrue if brackets included, 
        *		  EFalse if brackets not included
        *		  -1 if brackets included incorrectly
		*/
		static TInt BracketsIncluded( TPtrC8 aHost );
        
        /**
        * Adds brackets into IPv6 address, if needed
        * @param aHost address to be checked               
        */
       	static void AddBrackets( TPtr8 aHost );
       
		/**
        * Removes brackets from IPv6 address, if needed
        * @param aHost address to be checked               
        */
       	static void RemoveBrackets( TPtr8 aHost );
       	
       	/**
       	* Check if reference is valid URI
       	* @param aValue reference to a value checked if valid URI
       	*/
       	static TInt URIValid( const TDesC8& aValue );

        /**
        * Replace %20 to ' '
        * @param aValue reference to token
        */
        static void ReplaceEscapedSpace( HBufC8* aValue );
    private:

        /**
        * C++ default constructor.
        * This class can never be instantiated and thus
        * the constructor is declared as private.
        */
        GSSIPProfileUtil();    

	/**
	* For testing purposes
	*/        
    friend class UT_GSSIPProfileUtil;
    };

#endif      // GS_SIP_PPROFILE_UTIL_H   
            
// End of File