cellular/telephonysettings/xqbindings/psetwrapper/src/psetcalldivertingwrapper_p.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:45:17 +0300
branchRCL_3
changeset 19 7d48bed6ce0c
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
 * Copyright (c) 2009 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:  
 *
 */

#ifndef DIVERTINGOBSERVER_H_
#define DIVERTINGOBSERVER_H_

#include <mpsetdivertobs.h>
#include <mphcltemergencycallobserver.h>
#include <mpsetrequestobs.h>
#include <voicemailboxdefs.h>
#include "psetcalldivertingwrapper.h"
#include "psetwrappertypes.h"

class PSetCallDivertingWrapperPrivate : 
        public MPsetDivertObserver,
        public MPhCltEmergencyCallObserver,
        public MPsetRequestObserver
{
public:
    PSetCallDivertingWrapperPrivate(PSetCallDivertingWrapper &owner);

    virtual ~PSetCallDivertingWrapperPrivate();

public:
    // Functions from base classes (observer interface):     

    /**
     * Handles showing notes, when diverts change.
     *
     * @param aSetting Setting which was changed.
     * @param aPlural Plural notes to be used.
     */
    void HandleDivertingChangedL(const TCallDivertSetting& aSetting,
            TBool aPlural);

    /**
     * Handles showing of status inquiry notes.
     *
     * @param aBsc List of basic services.
     * @param aSetting Divert setting which was queried.
     * @param aPlural Plural notes to be used.
     */

    void HandleDivertingStatusL(CMobilePhoneCFList& aSetting, TBool aPlural);

    /**
     * Handles showing of error notes.
     *
     * @param aReason Reason for diverting error.
     */
    void HandleDivertingErrorL(TInt aReason);

    /**
     * Handles requesting notes.
     *
     * @param aOngoing Is there a request going on.
     * @param aInterrupted Request needs to immediately cancelled.
     */
    void HandleCFRequestingL(TBool aOngoing, TBool aInterrupted);

    /**
     * Sets pointer so that message is passed succesfully
     * from requester to observer.
     *
     * @param aDivertEngine Source for the events to observer.
     */
    void SetEngineContact(MPsetCallDiverting* aDivertEngine);

public:
    // From MPhCltEmergencyCallObserver   

    /**
     * It is called whenever client's dial request is completed.
     *
     * @param aStatus error code of the success of the operation.
     */
    void HandleEmergencyDialL(const TInt aStatus);

public:
    // From MPsetRequestObserver
    /**
    * Informs the receiver that request has been completed.
    */
    void RequestComplete();

    /**
    * Informs the receiver that request state has changed.
    * @param new status, or when finished KErrNone or error code.
    */
    void RequestStatusChanged( TInt aNewStatus );
    
public:
    TCallDivertingCondition convert(PsCallDivertingCondition type);
    TDivertingStatus convert(PsCallDivertingStatus type);
    TServiceGroup convert(PsServiceGroup type);
    TDivertingSetting convert(PsCallDivertingSetting type);
    TVmbxType convert(PsService aService);
    
private:
    PsCallDivertingCondition convert(TCallDivertingCondition type);
    PsCallDivertingCondition convert(RMobilePhone::TMobilePhoneCFCondition type);
    PsCallDivertingStatus convert(TDivertingStatus type);
    PsCallDivertingStatus convert(RMobilePhone::TMobilePhoneCFStatus type);
    PsServiceGroup convert(TServiceGroup type);
    PsServiceGroup convert(RMobilePhone::TMobileService service);
    
    
private:
    PSetCallDivertingWrapper &m_Owner;

    QList<PSCallDivertingStatus*> m_DivertingStatusList;

    PSCallDivertingCommand m_callDivertingSetting;
};

#endif /* DIVERTINGOBSERVER_H_ */