diff -r 7d48bed6ce0c -r 987c9837762f convergedcallengine/csplugin/inc/cspetelcallwaitingrequester.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convergedcallengine/csplugin/inc/cspetelcallwaitingrequester.h Wed Sep 01 12:15:03 2010 +0100 @@ -0,0 +1,165 @@ +/* +* Copyright (c) 2007 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: Fetches call waiting status from ETel +* +*/ + + +#ifndef CSPETELCALLWAITINGREQUESTER_H +#define CSPETELCALLWAITINGREQUESTER_H + + +#include +#include +#include +#include + +class RMobilePhone; +class CRetrieveMobilePhoneCWList; + +/** +* Makes asynchronic request to ETel interface according to given request type. +* Provides canceling via CActive::Cancel(). +* +*/ +class CSPEtelCallWaitingRequester + : public CActive + { + + public: + + /** + * Constructs the requester via two phase. + * + * @param aPhone mobile phone reference needed for reading cw setting + * @return requester object + */ + static CSPEtelCallWaitingRequester* NewL( RMobilePhone& aPhone ); + + /** + * C++ default destructor + */ + virtual ~CSPEtelCallWaitingRequester( ); + + /** + * Makes the request. Note that ERequestTypeDial is made with a + * separate MakeDialRequest function. + * + * @since S60 3.2 + * @param aRequest type of request + * @return ETrue if active, EFalse if not + */ + void GetCallWaitingL( const CCCECallParameters& iParams, + TBool& aCallWaitingStatus ); + + + + protected: // From CActive + /** + * From CActive + * RunL + * @since S60 3.2 + */ + void RunL(); + + /** + * From CActive + * Cancels the monitor + * @since S60 3.2 + */ + void DoCancel(); + + + private: + + /** + * Requester can be inactive (from boot to first Cw request), + * requesting value from network + * (with first MT call that gets Queue-request from CCE), + * or monitoring (after first request). + */ + enum ECSPCwRequesterMode { + ECwRequesterInactive, + ECwRequesterGetStarted, + ECwRequesterMonitoring + }; + + private: + + /** + * Constructor. + * @param aPhone mobile phone reference needed for reading cw setting + * + */ + CSPEtelCallWaitingRequester::CSPEtelCallWaitingRequester(RMobilePhone& aPhone); + + /** + * Constructs the requester. + * + * @param aPhone phone reference + */ + void CSPEtelCallWaitingRequester::ConstructL(); + + /** + * Starts monitoring call waiting setting. + */ + void StartMonitoring(); + + /** + * Returns the call waiting status from call waiting status list by linetype. + */ + void GetCallWaitingStatusByLineType( const CCCECallParameters& iParams, + TBool& aCallWaitingStatus ); + + + private: // data + + /** + * List of call waiting settings. + * Own. + */ + CRetrieveMobilePhoneCWList* iList; + + /** + * Making the asynchronous request synchronous. + */ + CActiveSchedulerWait iWait; + + /** + * Phone handle for listening cw status changes. + */ + RMobilePhone& iPhone; + + /** + * Cw status descriptor for reading changed cw status. + */ + TPckgBuf iDesCwStatus; + + /** + * Current mode according to the enumeration. + */ + ECSPCwRequesterMode iMode; + + /** + * Actual call waiting status for primary line: On/Off = True/False. + */ + TBool iPrimaryLineCwStatus; + + /** + * Actual call waiting status for aux line: On/Off = True/False. + */ + TBool iAuxLineCwStatus; + }; + +#endif // CSPETELCALLWAITINGREQUESTER_H