convergedcallengine/csplugin/inc/rcsplinecontainer.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:15:03 +0100
branchRCL_3
changeset 20 987c9837762f
parent 0 ff3b6d0fd310
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002-2003 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:  Encapsulates all of the lines required by the CS Plugin.
*
*/


#ifndef RCSPLINECONTAINER_H
#define RCSPLINECONTAINER_H

// INCLUDES

#include    <etelmm.h>         // ETel
#include    <mccpcscall.h>
#include    <mccecall.h>

//  CLASS DEFINITIONS 

/**
*  Encapsulates all of the lines required by the phone
*  engine.
*
*  @lib phoneengine.lib
*  @since 1.2
*/
NONSHARABLE_CLASS(RCSPLineContainer)
    {
    public:
    
    enum TCSPLineId {
        ECSPLineSpeech = 0,
        ECSPLineAuxSpeech,
        ECSPLineData,
        ECSPLineFax
    };
    
    public: // Constructors

        // Default c++ constructor
        RCSPLineContainer();

    public: // new functions
        /**
        * Open voice, aux, data and fax lines. 
        * @since 3.2
        * @param aPhone open lines on this phone
        * @return Returns an error only if the primary 
        *         line cannot be opened, otherwise KErrNone.
        */
        TInt Open( RMobilePhone& aPhone,
                   TUint32 aServiceId );


        /**
        * @since 3.2
        * Close the lines. Frees all resources owned by
        * this container.
        */
        void Close();

        /**
        * Access a specific line
        * @since 1.2
        * @param aLine The type of line to return
        * @returns The line specified
        */
        RMobileLine& LineByType( TCSPLineId aLine );

        /**
        * Returns whether the specified line is open
        * @since 3.2
        * @param aLine line to check
        * @return ETrue if specified line is open.
        */
        TBool LineIsOpen( TCSPLineId aLine );
        
        /**
        * Resolve call information.
        * @param aLineId line id (input)
        * @param aServiceId service id (output)
        * @param aCallType call type (output)
        * @param aLineType line type (output)
        */
        TInt ResolveCallInfo( RCSPLineContainer::TCSPLineId aLineId, 
                              TUint32& aServiceId,
                              CCPCall::TCallType& aCallType,
                              CCCECallParameters::TCCELineType& aLineType ) const;

        /**
        * Resolves line id based on call parameters.
        * @param aCallParameters
        * @return line id
        */
        RCSPLineContainer::TCSPLineId ResolveLineIdL( 
                    const CCCECallParameters& aCallParameters ) const;


    private:

        // Prohibit copy constructor if not deriving from CBase.
        RCSPLineContainer( RCSPLineContainer& );
        // Prohibit assigment operator if not deriving from CBase.
        RCSPLineContainer& operator=( const RCSPLineContainer& );

    private:
        RMobileLine iPrimaryLine;
        RMobileLine iAls2Line;
        RMobileLine iDataLine;
        RMobileLine iFaxLine;
        
        TUint32 iServiceId;
    };

#endif // RCSPLINECONTAINER_H

// End of File