/*
* Copyright (c) 2002-2008 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:  This file contains the header file of the CPEParserSSCallHandler 
*		 		 class
*
*/


#ifndef CPEPARSERSSCALLHANDLER_H
#define CPEPARSERSSCALLHANDLER_H

//INCLUDES
#include <CPhoneGsmSsCallHandler.h>
#include <pevirtualengine.h>

// CONSTANTS
// None.

// MACROS
// None.

// DATA TYPES
// None.

// FUNCTION PROTOTYPES
// None.

// FORWARD DECLARATIONS
class CPEMessageHandler;
class CPEGsmPhoneData;
class MPEPhoneModelInternal;
class CPEManualCallControlHandler;

// CLASS DECLARATION

/**
*  Provides processing for supplementary service related Phone Parser requests
*
*  @lib phoneenginegsm.lib
*  @since Series 60 4.0
*/
NONSHARABLE_CLASS( CPEParserSSCallHandler ) : public CPhoneGsmSsCallHandler
{
    public:  //Constructors and descructor    
        /**
        * C++ default constructor.
        */
        CPEParserSSCallHandler( 
            CPEMessageHandler& aOwner, 
            MPEPhoneModelInternal& aModel,
            CPEManualCallControlHandler& aManualCallControlHandler );

        /**
        * Destructor.
        */
        virtual ~CPEParserSSCallHandler();

    public: // Functions from base classes

        /**
        * Ends a call and accepts another.
        *
        * Command: 1 SEND.
        * @param None. 
        * @return None. 
        */
        void ProcessEndAndAcceptL();

        /**
        * End specific active call.
        *
        * Command: 1X SEND.
        * @param aCallNo, the number of the call
        * @return None.
        */
        void ProcessEndCallL( TInt aCallNo );

        /**
        * Reject a call.
        *
        * Command: 0 SEND.
        * @param None.
        * @return None.
        */
        void ProcessEndOrRejectL();

        /**
        * Perform explicit call transfer
        *
        * Command: 4 SEND.
        * @param None.
        * @return None.
        */ 
        void ProcessExplicitCallTransferL();

        /**
        * Hold all active calls except specific call.
        *
        * Command: 2X SEND.
        * @param None.
        * @return None.
        */
        void ProcessHoldAllCallsExceptL( TInt aCallNo );

        /**
        * Join two calls to conference.
        *
        * Command: 3 SEND.
        * @param aCallNo, the number of the call.
        * @return None.
        */
        void ProcessJoinL();

        /**
        * Swap
        *
        * Command: 2 SEND.
        * @param None.
        * @return None.
        */
        void ProcessSwapL();

    private:  
        // CPEMessageHandler object which owns this requester.
        CPEMessageHandler& iOwner;
        // MPEPhoneModelInternal is used to send message to the phone application
        MPEPhoneModelInternal& iModel;
        // Manual Call Control Handler
        CPEManualCallControlHandler& iManualCallControlHandler;
    };

#endif // CPEPARSERSSCALLHANDLER_H
            
// End of File
