telutils/telephonyservice/inc/ccallremotepartyinformationimpl.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) 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 CCALLREMOTEPARTYINFORMATIONIMPL_H
#define CCALLREMOTEPARTYINFORMATIONIMPL_H

#include <e32base.h>

#include "ctelsrvbase.h"


class MCallRemotePartyInfo;
class CCallRemotePartyInfos;
class MCallRemotePartyInformationObserver;
class CCallRemotePartyInfoIter;

/**
 *  Implementation for CCallRemotePartyInformation API.
 *  
 *  @lib TelephonyService
 *  @since S60 5.2
 */
NONSHARABLE_CLASS( CCallRemotePartyInformationImpl ) : public CTelSrvBase
    {
public:
     static CCallRemotePartyInformationImpl* NewL();
     static CCallRemotePartyInformationImpl* NewLC();

    /**
    * Destructor.
    */
    virtual ~CCallRemotePartyInformationImpl();
    
    /**
     * Sets the observer for changes in remote party info.
     *
     * @since S60 v5.2 
     * @param aObserver Observer for notifications.
     */
    void NotifyChanges( MCallRemotePartyInformationObserver& aObserver );
    
    /**
     * Used to cancel previously placed NotifyChanges call.
     *
     * @since S60 v5.2      
     */
    void CancelNotification();    
       
    /**
     * Gets the snapshot of remote party information of ongoing calls.
     *
     * @since S60 v5.2      
     * @return Remote party info of ongoing calls.
     */
    CCallRemotePartyInfoIter& GetRemotePartyInformationL( );
    
    /**
     * Gets the remote party information of a call.
     *
     * @since S60 v5.2  
     * @param aCallIndex Specifies a call.    
     * @return Remote party information. NULL if the remote party information
     * is not available for call. Ownership not given.
     */
    const MCallRemotePartyInfo* GetRemotePartyInformationL( TInt aCallIndex );
    
// from base class CTelSrvBase
        
    /**
     * From CTelSrvBase.
     * A response to a Mediator Service command.
     *
     * @since S60 v5.1
     * @param aData      The parameters of the response.
     */
    void DoHandleCommandResponseL( const TDesC8& aData );      
          
        
    /**
     * From CTelSrvBase.
     * A Mediator Service event.
     *
     * @since S60 v5.1     
     * @param aData      The parameters of the event.
     * @return None.
     */
    void DoHandleMediatorEventL( const TDesC8& aData );  

protected:

    CCallRemotePartyInformationImpl();

    void ConstructL(CMediatorService* aMediatorService);

private: // data
    
    /**
     * Observer to be notified when call information changes
     * Not own.  
     */    
    MCallRemotePartyInformationObserver* iObserver;
    
    
    CCallRemotePartyInfos*      iRemotePartyInfos;
    CCallRemotePartyInfoIter*   iRemotePartyInfoIter; 
    };

#endif // CCALLREMOTEPARTYINFORMATIONIMPL_H