diff -r c84cf270c54f -r 92ab7f8d0eab phoneplugins/csplugin/inc/cspconferencecall.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneplugins/csplugin/inc/cspconferencecall.h Fri Mar 19 09:28:42 2010 +0200 @@ -0,0 +1,316 @@ +/* +* Copyright (c) 2007-2008 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: Implements CSPConferenceCall for CS Call Plug-in +* +*/ + + + +#ifndef CSPCONFERENCECALL_H +#define CSPCONFERENCECALL_H + +#include +#include +#include +#include +#include +#include + +#include "mcspconferencestatusobserver.h" +#include "cspconsts.h" +#include "cspetelconferencecallrequester.h" // For the requester and TConferenceRequestType + + +class MCCPForwardProvider; +class MCCPTransferProvider; +class MCCPObserver; +class MCSPCallInformation; +class CSPConferenceCallObserver; +class RMobileConferenceCall; +class CSPEtelConferenceStatusMonitor; +class CSPEtelConferenceEventMonitor; +class CSPEtelConferenceCapsMonitor; + + +/** +* Call class for CS Call Plug-in. Implements the API defined by CCP in classes +* MCCPCall and MCCPCSCall +* +* @lib csplugin.dll +*/ +class CSPConferenceCall : public CBase, + public MCCPConferenceCall, + public MCSPConferenceStatusObserver + { + + public: + /* + * Creates a new CSPConferenceCall object. + * @param aPhone reference to phone object + * @return pointer to created call object + * @param aServiceId the service id + */ + static CSPConferenceCall* NewL( + RMobilePhone& aPhone, + MCSPCallInformation& aCallInfo, + TUint32 aServiceId ); + + /* + * C++ default destructor + */ + virtual ~CSPConferenceCall( ); + + /** + * Getter for observer + * @return observer for CS calls. + */ + MCCPCallObserver* Observer() const; + + /** + * Notifies call specific event to observers. + * @param aEvent conference event that was occurred + * @param aCallName the name of the related call object + */ + void NotifyEvent( + MCCPConferenceCallObserver::TCCPConferenceCallEvent aEvent, + TName& aCallName ); + + /** + * Notifies non-'call specific' event to observers. + * @param aEvent conference event that was occurred, + */ + void NotifyEvent( + MCCPConferenceCallObserver::TCCPConferenceCallEvent aEvent ); + + /** + * Notifies about conference call request related errors. + */ + void NotifyConferenceError( TCCPConferenceCallError aErr ); + + /** + * Handles caps change. + * @param aNewCaps new caps + */ + void ConferenceCapsChanged( TUint32 aNewCaps ); + +// from base class MCSPConferenceStatusObserver + + /** + * From MCSPConferenceStatusObserver. + * Notifies event to observers. + * @param aStatus new status of the conference call + */ + void NotifyStateChange( + MCSPConferenceStatusObserver::TCSPConferenceState aStatus ); + +// from base class MCCPConferenceCall + + /** + * From MCCPConferenceCall. + * Adds new call to conference call. + * @param aCall Call to be added to conference + * @return Leaves in case of an error. + * KErrArgument, KErrNoMemory + */ + void AddCallL( MCCPCall* aCall ); + + /** + * From MCCPConferenceCall. + * Removes call from conference call. + * @param aCall Call to be removed from conference + * @return In error case leaves. + * KErrArgument, KErrNotFound + */ + void RemoveCallL( MCCPCall* aCall ); + + /** + * From MCCPConferenceCall. + * Returns number of calls in conference call. + * @param aCallCount Number of calls in conference. + * @return KErrNone if succesfull, otherwise system wide error code. + */ + TInt CallCount( ) const; + + /** + * From MCCPConferenceCall. + * Switch to a private call with one call from conference call. + * @param aCall Call to be removed from conference + * @return In error case leaves. + * KErrArgument, KErrNotFound + */ + void GoOneToOneL( MCCPCall& aCall ); + + /** + * Adds current calls (1 hold + connected ) + * to part of conference + * @leave In case of an error system wide error code + */ + void CurrentCallsToConferenceL(); + + /** + * From MCCPConferenceCall + * Returns serviceId + * @since S60 3.2 + * @return TUint32 ServiceId + */ + TUint32 ServiceId() const; + + /** + * From MCCPConferencCall + * Ends an ongoing call. + * @since S60 3.2 + */ + TInt HangUp(); + + /** + * From MCCPConferenceCall + * Puts the specified call on hold. + * @since S60 3.2 + */ + TInt Hold(); + + /** + * From MCCPConferenceCall + * Resumes the call. + * @since S60 3.2 + */ + TInt Resume(); + + /** + * From MCCPConferenceCall + * Swaps a connected call to its opposite state either active or on hold + * @since S60 3.2 + */ + TInt Swap(); + + /** + * Adds a new observer for the conference call object. + * @since S60 3.2 + * @param aObserver the conference observer to be added + */ + void AddObserverL( const MCCPConferenceCallObserver& aObserver ); + + /** + * Removes an observer. + * @since S60 3.2 + * @param aObserver the observer to be removed + * @return system wide error code + */ + TInt RemoveObserver( const MCCPConferenceCallObserver& aObserver ); + + /** + * Get conference participants. + * @since S60 5.0 + * @param aCallArray array where participating calls are stored + * @return system wide error code + */ + TInt GetCallArray( RPointerArray& aCallArray ); + + private: + + /* + * C++ default constructor + * @param aPhone handle to the ETel Phone + * @param aCallInfo call information + * @param aServiceId service id + */ + CSPConferenceCall( RMobilePhone& aPhone, + MCSPCallInformation& aCallInfo, + TUint32 aServiceId ); + + /* + * Constructing 2nd phase. + * @since S60 3.2 + * @param aObserver the CCP call observer, + */ + void ConstructL( ); + + /** + * Get conference state from ETel. + * @since S60 5.0 + * @param aState param for storing conference call state + * @return system wide error code + */ + TInt GetConferenceCallState( + MCCPConferenceCallObserver::TCCPConferenceCallState& aState ); + + private: + + /** + * Call status monitor. + * Own. + */ + CSPEtelConferenceStatusMonitor* iCallStatusMonitor; + + /** + * Call event monitor. + * Own. + */ + CSPEtelConferenceEventMonitor* iCallEventMonitor; + + /** + * Call caps monitor. + * Own. + */ + CSPEtelConferenceCapsMonitor* iCallCapsMonitor; + + /** + * ETel call object + */ + RMobileConferenceCall iCall; + + /** + * ETel phone + */ + RMobilePhone& iPhone; + + /** + * Conference call state. + */ + MCCPConferenceCallObserver::TCCPConferenceCallState iCallState; + + /** + * Makes the asynchronic requests for various purposes. + */ + CSPEtelConferenceCallRequester* iRequester; + + /** + * Observer array for conference states, events and errors. + */ + RPointerArray iObservers; + + /** + * Call count for adding call. + */ + TInt iCallCountForAddCall; + + /** + * Call Information for resolving call pointers from + * the call names. + */ + MCSPCallInformation& iCallInfo; + + /** + * Service ID + */ + TUint32 iServiceId; + + /** + * Call name of a last call added to this conference.. + */ + TName iAddedCallName; + + }; + +#endif // CSPCONFERENCECALL_H \ No newline at end of file