diff -r 000000000000 -r 5f000ab63145 phoneuis/ConnectUtil/inc/CCoUtlActive.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/ConnectUtil/inc/CCoUtlActive.h Mon Jan 18 20:18:27 2010 +0200 @@ -0,0 +1,385 @@ +/* +* Copyright (c) 2003-2004,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: Implementation of connection termination plug-in. +* +*/ + + + +#ifndef CCOUTLACTIVE_H +#define CCOUTLACTIVE_H + +// INCLUDES +#include +#include +#include +#include +#include + +// FORWARD DECLARATION +class CAknGlobalConfirmationQuery; + +// CLASS DECLARATION + +/** +* CCoUtlInterface implementation. +* +* @since 2.6 +*/ +class CCoUtlActive + : public CActive, + public MConnectionMonitorObserver + { + public: // Constructors and destructor + + /** + * Constructor. + */ + CCoUtlActive(); + + /** + * Destructor. + */ + virtual ~CCoUtlActive(); + + public: // New functions + + /** + * Enumerates state of the operation. + */ + enum TState + { + EIdle, + EStarted, + ECheckIfAttached, + ECheckIfNetworkModeIII, + EStopConnectionsAndDetach, + EGetConnectionCount, + EGoThroughConnections, + EGoThroughConnectionsGetBearer, + EGoThroughConnectionsGetStatus, + ECheckConnectionCount, + ECheckDetachRequired, + EStopConnectionsAndCheckDetachRequired, + EConfirmAllConnectionsTermination, + EGetBearerThenNameThenConfirmTermination, + EGetNameThenConfirmTermination, + EDetach + }; + + /** + * Returns current state. + * @return current state. + */ + TState CurrentState() const; + + /** + * Starts termination. + * @param aStatus request to be completed once finished. + */ + void Start( TRequestStatus& aStatus ); + + public: // Functions from base classes + + /** + * From CActive, handles completion of current operation. + */ + virtual void RunL(); + + /** + * From CActive, cancels ongoing asynchronous operation. + */ + virtual void DoCancel(); + + /** + * From CActive, handles errors from CActive. + * @param aError error to be handled. + * @return error to be passed to scheduler. + */ + virtual TInt RunError( TInt aError ); + + /** + * From MConnectionMonitorObserver, receive notifications. + */ + void EventL( const CConnMonEventBase &aConnMonEvent ); + + private: + + /** + * Gets attach status. + */ + void GetAttachStatusL(); + + /** + * Gets network mode. + */ + void GetNetworkModeL(); + + /** + * Stop connections and detach. + */ + void StopConnectionsAndDetachL(); + + /** + * Gets number of connections. + */ + void GetConnectionCountL(); + + /** + * Goes through connections. + */ + void CheckConnectionsL(); + + /** + * Goes through connections - get bearer. + */ + void GoThroughConnectionsGetBearerL(); + + /** + * Goes through connections - get status. + */ + void GoThroughConnectionsGetStatusL(); + + /** + * Gets attach mode - detach if required, + * i.e. attach mode is 'on demand'. + */ + void GetAttachModeAndDetachIfRequiredL(); + + /** + * Confirms all connections termination. + */ + void ConfirmAllConnectionsTerminationL(); + + /** + * Gets bearer of the connection. + */ + void GetBearerThenNameThenConfirmTerminationL(); + + /** + * Gets name of connection. + */ + void GetNameThenConfirmTerminationL(); + + /** + * Confirms termination. + * @param aAmount amount of connections. + */ + void ConfirmTerminationL( TInt aAmount ); + + /** + * Confirms termination. + * @param aName name of connection. + */ + void ConfirmTerminationL( const TDesC& aName ); + + /** + * Confirms termination. + * @param aText text shown in query. + */ + void DoConfirmTerminationL( const TDesC& aText ); + + /** + * Stop all connections and detach if required. + */ + void StopAllConnectionsAndDetachIfRequiredL(); + + /** + * Stops all connections. + * @return error code. + */ + TInt DoStopAllConnectionsL(); + + /** + * Detaches from network. + */ + void DetachL(); + + /** + * Checks if attached. + * @return EFalse if not attached. Otherwise ETrue. + */ + inline TBool IsAttached() const; + + /** + * Checks if current network mode is III. + * @return ETrue if operating in network mode III. + * Otherwise EFalse. + */ + inline TBool IsNetworkModeIII() const; + + /** + * Returns ETrue if there are connections. + * @return ETrue if there are connections. + * Otherwise EFalse. + */ + inline TBool IsConnections() const; + + /** + * Returns ETrue if bearer is GPRS. + * @return ETrue if bearer is GPRS. + * Otherwise EFalse. + */ + inline TBool AcceptConnectionBearer() const; + + /** + * Returns ETrue if connection is active. + * @return ETrue if connection is active. + * Otherwise EFalse. + */ + inline TBool IsConnectionActive() const; + + /** + * Returns ETrue if attach mode is 'on demand'. + * @return ETrue if attach mode is 'on demand'. + * Otherwise EFalse. + */ + inline TBool IsAttachModeOnDemand() const; + + /** + * Returns ETrue if user confirmed connection termination. + * @return ETrue if termination has been confirmed. + * Otherwise EFalse. + */ + inline TBool IsConfirmed() const; + + /** + * Returns telephony server session. + * @return ETel session. + */ + inline RTelServer& TelServerL(); + + /** + * Returns mobile phone. + * @return phone subsession. + */ + inline RMobilePhone& MobilePhoneL(); + + /** + * Returns packet service. + * @return packet service subsession. + */ + inline RPacketService& PacketServiceL(); + + /** + * Returns connection monitor. + * @return connection monitor session. + */ + inline RConnectionMonitor& ConnectionMonitorL(); + + /** + * Completes client's request with aErrorCode code. + * @param aErrorCode error code. + */ + void CompleteRequest( TInt aErrorCode ); + + /** + * Go to specified state. + * @param aNewState new state. + */ + inline void GoToState( TState aNewState ); + + /** + * Go to specified state and complete - operation + * continues with next RunL call. + * @param aNewState new state. + * @param aError error code, KErrNone by default. + */ + inline void GoToStateAndComplete( + TState aNewState, + TInt aError = KErrNone ); + + private: // Data + + // Current state. + TState iState; + + // Packet service status. + TInt iServiceStatus; + + // Packet service current class. + RPacketService::TMSClass iCurrentClass; + + // Packet service max class. + RPacketService::TMSClass iMaxClass; + + // Packet service attach mode. + RPacketService::TAttachMode iAttachMode; + + // Amount of connections. + TUint iConnectionCount; + + // Telephony server session. + /***************************************************** + * Series 60 Customer / ETel + * Series 60 ETel API + *****************************************************/ + RTelServer iServer; + + // Owned mobile phone subsession. + /***************************************************** + * Series 60 Customer / ETel + * Series 60 ETel API + *****************************************************/ + RMobilePhone iMobilePhone; + + // Owned packet service subsession. + /***************************************************** + * Series 60 Customer / ETel + * Series 60 ETel API + *****************************************************/ + RPacketService iPacketService; + + // Owned connection monitor session. + RConnectionMonitor iConnectionMonitor; + + struct TConnectionId + { + TUint iConnectionId; + TUint iSubConnectionId; + }; + + // Owned array of connection ids. + RArray< TConnectionId > iConnections; + + // Current index in connections array. + TInt iConnectionsIndex; + + // Connection bearer . + TInt iConnectionBearer; + + // Connection status. + TInt iConnectionStatus; + + // Connection name. + TName iConnectionName; + + // Owned confirmation query. + CAknGlobalConfirmationQuery* iConfirmationQuery; + + // Owned text in confirmation query. + HBufC* iConfirmationText; + + // Ref to request status to be completed. NULL if + // operation is not ongoing. + TRequestStatus* iRequestStatus; + + //WCDMA connection status. + TInt iWcdmaConnectionStatus; + + }; + +#endif // CCOUTLACTIVE_H + +// End of File