phoneplugins/csplugin/inc/cspconferencecall.h
changeset 21 92ab7f8d0eab
child 50 377c906a8701
--- /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 <mccpconferencecall.h>
+#include <mccpconferencecallobserver.h>
+#include <mccpcallobserver.h>
+#include <mccpcscall.h>
+#include <etel.h>
+#include <etelmm.h>
+
+#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<MCCPCall>& 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<MCCPConferenceCallObserver> 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