satengine/SatServer/Commands/SendSSCmd/inc/csatsendsshandler.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:15:03 +0100
branchRCL_3
changeset 20 987c9837762f
parent 19 7d48bed6ce0c
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002-2006 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:  Process forwarding procedures.
*
*/


#ifndef CSATSENDSSHANDLER_H
#define CSATSENDSSHANDLER_H

#include <CPhoneGsmSsHandler.h>
#include <nwdefs.h>
#include <PsetCallWaiting.h>
#include <PsetContainer.h>
#include <PsetCallBarring.h>
#include <PsetCallDiverting.h>
#include <PsetCli.h>
#include <MPsetRequestObs.h>

class CSatSendSsBarringNoUiObs;
class CSatSendSsCliNoUiObs;
class CSatSendSsCallWaitingNoUiObs;
class CSatSendSsDivertNoUiObs;

/**
*  Handles process forwarding procedures.
*
*  @lib SendSsCmd
*  @since S60 v3.1
*/
class CSatSendSsHandler : public CPhoneGsmSsHandler,
                          public MPsetRequestObserver
    {

public:

    /**
     * Destructor.
     */
    ~CSatSendSsHandler();

    /**
     * From CPhoneGsmSsHandler, Process forwarding procedures.
     *
     * If a parameter is not allowed for a procedure,
     * then it is empty. If a parameter is not explicitly given,
     * then it is empty. If a parameter is present, then it can
     * be asumed to contain appropriate values.
     *
     * @param aAction It is action.
     * @param aForwarding It contains forwarding procedure.
     * @param aNumber It is directory number.
     * @param aBasicCode It is basic service code.
     * @param aTimer It is timer.
     */
    void ProcessForwardingL(
        TAction aAction,
        TForwardingProcedure aForwarding,
        const TDesC& aNumber,
        const TDesC& aBasicCode,
        const TDesC& aTimer );

    /**
     * From CPhoneGsmSsHandler, Process barring procedures.
     *
     * See comments for forwarding, they apply also in here.
     *
     * @param aAction It is action.
     * @param aBarring It contains barring procedure.
     * @param aPassword It should be barring password, if required.
     * @param aBasicCode It is basic service code.
     */
    void ProcessBarringL(
        TAction aAction,
        TBarringProcedure aBarring,
        const TDesC& aPassword,
        const TDesC& aBasicCode );

    /**
     * From CPhoneGsmSsHandler, Process password change
     *
     * @param aPassword It is password procedure.
     * @param aOldPassword It should be old password.
     * @param aNewPassword1 It is new password.
     * @param aNewPassword2 It is new password.
     */
    void ProcessPasswordChangeL(
        TPasswordProcedure aPassword,
        const TDesC& aOldPassword,
        const TDesC& aNewPassword1,
        const TDesC& aNewPassword2 );

    /**
     * From CPhoneGsmSsHandler, Process waiting.
     *
     * @param aAction It is action.
     * @param aBasicCode It is basic service code.
     */
    void ProcessWaitingL(
        TAction aAction,
        const TDesC& aBasicCode );

    /**
     * From CPhoneGsmSsHandler, Process calling line
     * identification presentation status.
     */
    void ProcessClipStatusL();

    /**
     * From CPhoneGsmSsHandler, Process calling line
     * idnetification restriction status.
     */
    void ProcessClirStatusL();

    /**
     * From CPhoneGsmSsHandler, Process connected line
     * presentation status.
     */
    void ProcessColpStatusL();

    /**
     * From CPhoneGsmSsHandler, Process connected line
     * restriction status.
     */
    void ProcessColrStatusL();

    /**
     * From CPhoneGsmSsHandler, Processes result
     */
    void ProcessCnapStatusL();

    /**
     * From MPsetRequestObs, called when request is completed
     * so that also ui browsing is ended
     */
    void RequestComplete();

    /**
     * From MPsetRequestObs, called when request status is changed
     * so that also ui browsing is ended
     */
    void RequestStatusChanged( TInt aNewStatus );

    /**
     * cancel function cancels current request
     */
    void Cancel();

private:

    /**
     * Changes parameter to basic service code
     */
    TBasicServiceGroups ChangeToBsc( const TDesC& aBasicCode ) const;

    /**
     * Connects class to the phonesettings
     */
    void ConnectToSsEngineL();

private:    // Data

    /**
     * Pointer to PhoneSettings
     */
    CPsetContainer* iSettings;

    /**
     * Call waiting handler in Phone Settings
     */
    CPsetCallWaiting* iWaiting;

    /**
     * Call waiting observer
     */
    CSatSendSsCallWaitingNoUiObs* iSatCwObserver;

    /**
     * Call barring handler in Phone Settings
     */
    CPsetCallBarring* iBarring;

    /**
     * Call barring observer
     */
    CSatSendSsBarringNoUiObs* iSatCbObserver;

    /**
     * Cli handler in Phone Settings
     */
    CPsetCli* iCli;

    /**
     * Cli observer
     */
    CSatSendSsCliNoUiObs* iSatCliObserver;

    /**
     * Call diverting handler in Phone Settings
     */
    CPsetCallDiverting* iDivert;

    /**
     * Call diverting observer
     */
    CSatSendSsDivertNoUiObs* iSatCfObserver;

    };

#endif      // CSATSENDSSHANDLER_H