/*
* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
* which accompanies this distribution, and is available
* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:   Encapsulates the ECom plugged sending service data.
*
*/



#ifndef CSENDINGSERVICEINFO_H
#define CSENDINGSERVICEINFO_H

// INCLUDES
#include <e32Base.h>
//#include <SendUi.h>     // TSendingCapabilities

// FORWARD DECLARATIONS
class TSendingCapabilities;
class CSendingServiceInfoImpl;

// CLASS DECLARATION

/**
 * Encapsulates the ECom plugged sending service data.
 *
 * @lib Sendui
 * @since Series 60 3.0
 */ 
class CSendingServiceInfo : public CBase
    {
    public:
    
    enum TServiceFeatures
        {
        EServiceInValid = 1,
        EServiceHidden = 2,
        EServiceCanSendDirectly = 4,
        ENotUsed3 = 8
        };
        
    public:  // Constructors and destructor
    
        /**
        * Two-phased constructor.
        * @return Pointer to object of CSendingServiceInfo.
        */
        IMPORT_C static CSendingServiceInfo* NewL();
        
        /**
        * Two-phased constructor.
        * @return Pointer to object of CSendingServiceInfo.
        */
        IMPORT_C static CSendingServiceInfo* NewLC();

        /**
        * Destructor.
        */
        IMPORT_C virtual ~CSendingServiceInfo();

    public: // New functions

        /**
        * Creates a copy of CSendingServiceInfo object.
        * @since Series 60 3.0
        * @return A pointer to the new copy of the CSendingServiceInfo object.
        */
        IMPORT_C CSendingServiceInfo* CopyLC() const;

        /**
        * Set service human readable name.
        * Service name is used in editors "To"-field.
        * @since Series 60 3.0
        * @param aServiceName Service human readable name.
        * @return None.
        */
        IMPORT_C void SetServiceNameL( const TDesC& aServiceName );

        /**
        * Returns service human readable name.
        * Service name is used in editors "To"-field.
        * @since Series 60 3.0
        * @return Service human readable name.
        */
        IMPORT_C const TPtrC ServiceName() const;

        /**
        * Set service human readable name for the "Send"-menu.
        * @since Series 60 3.0
        * @param aServiceMenuName Service human readable name for the
        *        "Send"-menu.
        * @return None.
        */
        IMPORT_C void SetServiceMenuNameL( const TDesC& aServiceMenuName );

        /**
        * Returns service human readable name for the "Send"-menu.
        * @since Series 60 3.0
        * @return Service human readable name for the "Send"-menu.
        */
        IMPORT_C const TPtrC ServiceMenuName() const;

        /**
        * Set service address.
        * @since Series 60 3.0
        * @param aServiceAddress Service address.
        * @return None.
        */
        IMPORT_C void SetServiceAddressL( const TDesC& aServiceAddress );

        /**
        * Returns service address. 
        * @since Series 60 3.0
        * @return Service address.
        */
        IMPORT_C const TPtrC ServiceAddress() const;

        /**
        * Set sending service id.
        * @since Series 60 3.0
        * @param aServiceId Service id.
        * @return None.
        */
        IMPORT_C void SetServiceId( TUid aServiceId );

        /**
        * Returns sending service id.
        * @since Series 60 3.0
        * @return Service id.
        */
        IMPORT_C TUid ServiceId() const;

        /**
        * Set sending service provider id.
        * @since Series 60 3.0
        * @param aServiceProviderId Service provider id.
        * @return None.
        */
        IMPORT_C void SetServiceProviderId( TUid aServiceProviderId );

        /**
        * Returns sending service provider id.
        * @since Series 60 3.0
        * @return Service provider id.
        */
        IMPORT_C TUid ServiceProviderId() const;

        
          /**
        * Returns sending service technology type id.
        * @since Series 60 3.2
        * @return Service id.
        */
        IMPORT_C void SetTechnologyTypeId( TUid aTechnologyType );
        /**
        * Returns sending service technology type id.
        * @since Series 60 3.2
        * @return Service id.
        */
        IMPORT_C TUid TechnologyTypeId() const;


        /**
        * Set service sending capabilities.
        * @since Series 60 3.0
        * @param aServiceCapabilities Service sending capabilities.
        * @return None.
        */
        IMPORT_C void SetServiceCapabilities(
            TSendingCapabilities aServiceCapabilities );

        /**
        * Returns service sending capabilities.
        * @since Series 60 3.0
        * @return Service sending capabilities.
        */
        IMPORT_C TSendingCapabilities ServiceCapabilities() const;

       /**
        * Set sending service features
        * @since Series 60 3.2
        * @param aServiceCapabilities Sending service features.
        * @return None.
        */
        IMPORT_C void SetServiceFeatures(
            TInt aServiceFeatures );

        /**
        * Returns service features.
        * @since Series 60 3.2
        * @return Sending service features.
        */
        IMPORT_C TInt ServiceFeatures() const;
        

    private:


        /**
        * C++ default constructor.
        */
        CSendingServiceInfo();

        /**
        * By default Symbian 2nd phase constructor is private.
        */
        void ConstructL();

    private:  // Data

        CSendingServiceInfoImpl*            iServiceInfoImpl;
    };

#endif      // CSENDINGSERVICEINFO_H

// End of File
