callcontinuity/vcc/src/cvccconferencecall.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/callcontinuity/vcc/src/cvccconferencecall.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,418 +0,0 @@
-/*
-* Copyright (c) 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:   Base class of VCC conference call object
-*
-*/
-
-#include <mccpcscall.h> //CCP API
-
-#include "cvccconferencecall.h"
-#include "cvccperformer.h"
-#include "cconvergedcallprovider.h"
-#include "rubydebug.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// C'tor
-// ---------------------------------------------------------------------------
-//
-CVccConferenceCall::CVccConferenceCall( const TUint32 aServiceId,
-                                   const MCCPConferenceCallObserver& aObserver,
-                                   RVccCallArray& aCallArray )
-: iServiceId( aServiceId ), 
-  iObserver( const_cast<MCCPConferenceCallObserver*>( &aObserver ) ),
-  iCallArray( aCallArray )
-    {
-    RUBY_DEBUG_BLOCK("CVccConferenceCall::CVccConferenceCall");
-    }
-
-// ---------------------------------------------------------------------------
-// C'tor
-// ---------------------------------------------------------------------------
-//
-CVccConferenceCall::CVccConferenceCall( MCCPConferenceCall& aConferenceCall,
-                                   RVccCallArray& aCallArray )
-: iServiceId( aConferenceCall.ServiceId() ), 
-  iCallArray( aCallArray )
-    {
-    RUBY_DEBUG_BLOCK("CVccConferenceCall::CVccConferenceCall");
-    RUBY_DEBUG0("CVccConferenceCall::CVccConferenceCall2");
-    iConferenceCall = &aConferenceCall;
-    // Get reference to CS plugin
-    CConvergedCallProvider& csProv = iCallArray[0]->CsProvider();
-    iCsProvider = &csProv;
-    }
-// ---------------------------------------------------------------------------
-// 2nd phase C'tor
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::ConstructL()
-    {
-    RUBY_DEBUG_BLOCKL( "CVccConferenceCall::ConstructL" );
-    
-    __ASSERT_ALWAYS( iCallArray.Count() > 0, User::Leave( KErrArgument ) );
-    
-    // Get reference to CS plugin
-    CConvergedCallProvider& csProv = iCallArray[0]->CsProvider();
-    iCsProvider = &csProv;
-    
-    // Order CS plugin to create new conference
-    iConferenceCall = iCsProvider->NewConferenceL( iServiceId, *this );
-    }
-
-// ---------------------------------------------------------------------------
-// Two phased C'tor
-// ---------------------------------------------------------------------------
-//
-CVccConferenceCall* CVccConferenceCall::NewL( const TUint32 aServiceId,
-                                   const MCCPConferenceCallObserver& aObserver,
-                                   RVccCallArray& aCallArray )
-    {
-    CVccConferenceCall* self = new( ELeave ) CVccConferenceCall( aServiceId,
-                                                                 aObserver,
-                                                                 aCallArray );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Two phased C'tor
-// ---------------------------------------------------------------------------
-//
-CVccConferenceCall* CVccConferenceCall::NewL( MCCPConferenceCall& aConferenceCall, 
-                                    RVccCallArray& aCallArray )
-    {
-    RUBY_DEBUG0("CVccConferenceCall::NewL2");
-        
-    CVccConferenceCall* self = new( ELeave ) CVccConferenceCall( 
-                                                aConferenceCall,
-                                                aCallArray );
-    
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// D'tor
-// ---------------------------------------------------------------------------
-//
-CVccConferenceCall::~CVccConferenceCall()
-    {
-    RUBY_DEBUG0( "CVccConferenceCall::~CVccConferenceCall() - ENTER" );
-    
-    RUBY_DEBUG0( "CVccConferenceCall::~CVccConferenceCall() - EXIT" );
-    }
-
-// ---------------------------------------------------------------------------
-// Signals CS plugin that conference is released
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::ReleaseConference()
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::ReleaseConference" );
-    iCsProvider->ReleaseConferenceCall( *iConferenceCall );
-    }
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::ServiceId 
-// ---------------------------------------------------------------------------
-//
-TUint32 CVccConferenceCall::ServiceId() const
-    {
-    RUBY_DEBUG_BLOCK("CVccConferenceCall::ServiceId");
-    
-    return iServiceId;
-    }
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::HangUp 
-// ---------------------------------------------------------------------------
-//
-TInt CVccConferenceCall::HangUp()
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::HangUp" );
-    
-    TInt retValue( iConferenceCall->HangUp() );
-    
-    RUBY_DEBUG1( "Error: %d", retValue );
-    
-    return retValue;
-    }
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::Hold 
-// ---------------------------------------------------------------------------
-//
-TInt CVccConferenceCall::Hold()
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::Hold" );
-
-    TInt retValue( iConferenceCall->Hold() );
-    
-    RUBY_DEBUG1( "Error: %d", retValue );
-    
-    return retValue;
-    }
-
-   
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::Resume 
-// ---------------------------------------------------------------------------
-//
-TInt CVccConferenceCall::Resume()
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::Resume" );
-    
-    TInt retValue(  iConferenceCall->Resume() );
-    
-    RUBY_DEBUG1( "Error: %d", retValue );
-    
-    return retValue;
-    }
-
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::Swap 
-// ---------------------------------------------------------------------------
-//
-TInt CVccConferenceCall::Swap()
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::Swap" );
-    
-    TInt retValue( iConferenceCall->Swap() );
-    
-    RUBY_DEBUG1( "Error: %d", retValue );
-    
-    return retValue;
-    }
-
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::AddCallL 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::AddCallL( MCCPCall* aCall )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::AddCallL" );
-
-    // NULL pointer
-    __ASSERT_ALWAYS( aCall, User::Leave( KErrArgument ) );
-    RUBY_DEBUG0( "- Not a NULL pointer" );
-    
-    CVccPerformer* call = static_cast<CVccPerformer*>( aCall );
-
-    // Tell CS plugin to add the call in conference and add it to the
-    // local conference array
-    iConferenceCall->AddCallL( call->PrimaryCall() );
-        
-    }
-
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::RemoveCallL 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::RemoveCallL( MCCPCall* aCall )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::RemoveCallL" );
-    
-    // NULL pointer
-    __ASSERT_ALWAYS( aCall, User::Leave( KErrArgument ) );
-    RUBY_DEBUG0( "- Not a NULL pointer" );
-    
-    CVccPerformer* call = static_cast<CVccPerformer*>( aCall );
-
-    // Tell CS plugin to remeove call from conference
-    iConferenceCall->RemoveCallL( call->PrimaryCall() );
-    
-    }
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::CallCount 
-// ---------------------------------------------------------------------------
-//
-TInt CVccConferenceCall::CallCount() const
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::CallCount" );
-    
-    return iConferenceCall->CallCount();
-    }
-
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::GoOneToOneL 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::GoOneToOneL( MCCPCall& aCall )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::GoOneToOneL" );
-    
-    // Find call from conference array
-    CVccPerformer* call = dynamic_cast<CVccPerformer*>( &aCall );
-    
-    // Check that the call was found in conference array
-    __ASSERT_ALWAYS( call, User::Leave( KErrNotFound ) );   
-    
-    // Tell CS plugin to go one-on-one
-    iConferenceCall->GoOneToOneL( *call->PrimaryCall() );
-    }
-
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::CurrentCallsToConferenceL 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::CurrentCallsToConferenceL()
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::CurrentCallsToConferenceL" );
-    iConferenceCall->CurrentCallsToConferenceL();
-    }
-  
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::AddObserverL 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::AddObserverL( 
-                                   const MCCPConferenceCallObserver& aObserver )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::AddObserverL" );
-    
-    iObserver = const_cast<MCCPConferenceCallObserver*>( &aObserver );
-    }
-
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCall::RemoveObserver 
-// ---------------------------------------------------------------------------
-//
-TInt CVccConferenceCall::RemoveObserver( 
-                                   const MCCPConferenceCallObserver& aObserver )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::RemoveObserver" );
-    
-    TInt retValue( KErrNone );
-    
-    if ( iObserver ==  &aObserver )
-        {
-        iObserver = NULL;
-        }
-    else
-        {
-        retValue = KErrNotFound;
-        }
-    
-    return retValue;
-    }
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCallObserver::ErrorOccurred 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::ErrorOccurred( TCCPConferenceCallError aError )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::ErrorOccurred" );
-    RUBY_DEBUG1( "- Error code [%d]", aError );
-    
-    // Tell CCE level that error occurred
-    iObserver->ErrorOccurred( aError );
-    }
-
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCallObserver::ConferenceCallCapsChanged 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::ConferenceCallCapsChanged( 
-    const TCCPConferenceCallCaps aCaps )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::ConferenceCallStateChanged()" );
-    RUBY_DEBUG1( "- Caps = %d", aCaps  );
-    
-    iObserver->ConferenceCallCapsChanged( aCaps );
-    }
-
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCallObserver::ConferenceCallStateChanged 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::ConferenceCallStateChanged( 
-    const TCCPConferenceCallState aState )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::ConferenceCallStateChanged" );
-    RUBY_DEBUG1( "- State = %d", aState );
-    iObserver->ConferenceCallStateChanged( aState );
-    }
-
-// ---------------------------------------------------------------------------
-//  @see MCCPConferenceCallObserver::ConferenceCallEventOccurred 
-// ---------------------------------------------------------------------------
-//
-void CVccConferenceCall::ConferenceCallEventOccurred( 
-     const TCCPConferenceCallEvent aEvent, MCCPCall* aReferredCall )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::ConferenceCallEventOccurred" );
-    iObserver->ConferenceCallEventOccurred( aEvent, 
-            MatchPluginToVccCall( aReferredCall ) );
-    }
-
-
-// ---------------------------------------------------------------------------
-// Search a specific call from call array
-// ---------------------------------------------------------------------------
-//
-CVccPerformer* CVccConferenceCall::MatchPluginToVccCall( MCCPCall* aPluginCall )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::FindInCallArray()" );
-    
-    CVccPerformer* call = NULL;
-    
-    if ( aPluginCall )
-        {
-        for ( TInt i = 0; i < iCallArray.Count(); i++ )
-            {
-            // Comparison is made to CVccPerformer and MCCPCall objects
-            // for simplicity sake
-            if ( iCallArray[i]->PrimaryCall() == aPluginCall )
-                {
-                RUBY_DEBUG0( "- Call found" );
-                call = iCallArray[i];
-                break;
-                }
-            }
-        }
-    
-    return call;
-    }
-
-// ---------------------------------------------------------------------------
-// Collect all conference participants into array
-// ---------------------------------------------------------------------------
-//
-TInt CVccConferenceCall::GetCallArray( RPointerArray<MCCPCall>& aCallArray )
-    {
-    RUBY_DEBUG_BLOCK( "CVccConferenceCall::GetCallArray" );
-    RPointerArray<MCCPCall> pluginCalls;
-    iConferenceCall->GetCallArray( pluginCalls );
-    for( TInt i = 0; i < pluginCalls.Count(); i++ )
-        {
-        aCallArray.Append( MatchPluginToVccCall( pluginCalls[i] ) );
-        }
-        
-    pluginCalls.Close();    
-    return KErrNone;
-    }
-