phoneapp/phoneuistates/src/cphoneconferenceandwaitingandcallsetup.cpp
changeset 36 2eacb6118286
parent 30 ebdbd102c78a
child 37 ba76fc04e6c2
--- a/phoneapp/phoneuistates/src/cphoneconferenceandwaitingandcallsetup.cpp	Fri May 14 15:51:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,497 +0,0 @@
-/*
-* Copyright (c) 2006-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: Implementation of CPhoneConferenceAndWaitingAndCallSetup class.
-*
-*/
-
-
-// INCLUDES
-#include <StringLoader.h>
-#include <cpephonemodelif.h>
-#include "cphoneconferenceandwaitingandcallsetup.h"
-#include "mphonestatemachine.h"
-#include "phoneviewcommanddefinitions.h"
-#include "tphonecmdparamcallheaderdata.h"
-#include "phonestatedefinitionsgsm.h"
-#include "phonelogger.h"
-#include "tphonecmdparamboolean.h"
-#include "tphonecmdparaminteger.h"
-#include "tphonecmdparamcallstatedata.h"
-#include "cphonemainresourceresolver.h"
-#include "phonerssbase.h"
-#include "tphonecmdparamglobalnote.h"
-#include "phoneui.hrh"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-CPhoneConferenceAndWaitingAndCallSetup::CPhoneConferenceAndWaitingAndCallSetup( 
-    MPhoneStateMachine* aStateMachine, 
-    MPhoneViewCommandHandle* aViewCommandHandle,
-    MPhoneCustomization* aPhoneCustomization ) : 
-    CPhoneConference( aStateMachine, aViewCommandHandle, aPhoneCustomization )
-    {
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::~CPhoneConferenceAndWaitingAndCallSetup()
-// Destructor
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-CPhoneConferenceAndWaitingAndCallSetup::~CPhoneConferenceAndWaitingAndCallSetup()
-    {
-    // Reset flag
-    if ( iViewCommandHandle )
-        {
-        TPhoneCmdParamBoolean dtmfSendFlag;
-        dtmfSendFlag.SetBoolean( EFalse );
-        iViewCommandHandle->ExecuteCommand( EPhoneViewSetDtmfOptionsFlag, 
-            &dtmfSendFlag );
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::ConstructL()
-// Constructor
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::ConstructL()
-    {
-    CPhoneConference::ConstructL();
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::NewL()
-// Constructor
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-CPhoneConferenceAndWaitingAndCallSetup* CPhoneConferenceAndWaitingAndCallSetup::NewL( 
-    MPhoneStateMachine* aStateMachine, 
-    MPhoneViewCommandHandle* aViewCommandHandle,
-    MPhoneCustomization* aPhoneCustomization )
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, 
-        "CPhoneConferenceAndWaitingAndCallSetup::NewL");
-    CPhoneConferenceAndWaitingAndCallSetup* self = 
-        new( ELeave ) CPhoneConferenceAndWaitingAndCallSetup( 
-            aStateMachine, aViewCommandHandle, aPhoneCustomization );
-    
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    return self;
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::HandlePhoneEngineMessageL
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::HandlePhoneEngineMessageL( 
-    const TInt aMessage, 
-    TInt aCallId )
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, 
-        "CPhoneConferenceAndWaitingAndCallSetup::HandlePhoneEngineMessageL()");
-    switch ( aMessage )
-        {
-        case MEngineMonitor::EPEMessageConnecting:
-            iAlerting = ETrue;
-            HandleConnectingL( aCallId );
-            break;
-            
-        case MEngineMonitor::EPEMessageConnected:
-            HandleConnectedL( aCallId );
-            break;
-        
-        case MEngineMonitor::EPEMessageConferenceIdle:
-            HandleConferenceIdleL();
-            break;
-
-        case MEngineMonitor::EPEMessageIdle:
-            HandleIdleL( aCallId );
-            break;
-
-        default:
-            CPhoneConference::HandlePhoneEngineMessageL( aMessage, 
-                aCallId );
-            break;
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::HandleCommandL
-// -----------------------------------------------------------
-//
-TBool CPhoneConferenceAndWaitingAndCallSetup::HandleCommandL( TInt aCommand )
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, 
-        "CPhoneConferenceAndWaitingAndCallSetup::HandleCommandL()");
-    TBool commandStatus = ETrue;
-    
-    switch( aCommand )
-        {   
-        case EPhoneDtmfDialerCancel:
-            {
-            CloseDTMFEditorL();
-            }
-            break;    
-    
-        default:
-            commandStatus = CPhoneConference::HandleCommandL( aCommand );
-            break;
-        }
-
-    return commandStatus;
-    }
-
-// --------------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::HandleKeyMessageL
-// --------------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::HandleKeyMessageL( 
-    TPhoneKeyEventMessages aMessage,
-    TKeyCode aCode )
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, 
-        "CPhoneConferenceAndWaitingAndCallSetup::HandleKeyMessageL");
-    switch ( aCode )
-        {
-        // send-key
-        case EKeyYes:
-            if( IsNumberEntryVisibleL() )
-                 {
-                CallFromNumberEntryL();                             
-                 }
-             else
-                 {
-                // Number entry is behind waiting call bubble.
-                // We can't answer to call in this state so display
-                // Not allowed -note.
-                SendGlobalErrorNoteL( 
-                    EPhoneNoteTextNotAllowed );                                             
-                 }
-            break;
-            
-        default:
-            // do base operation
-            CPhoneConference::HandleKeyMessageL( aMessage, aCode );
-            break;
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::OpenMenuBarL
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::OpenMenuBarL()
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, 
-        "CPhoneConferenceAndWaitingAndCallSetup::OpenMenuBarL");
-
-    // Set specific flag to view so that DTMF menu item available
-    TPhoneCmdParamBoolean dtmfSendFlag;
-    dtmfSendFlag.SetBoolean( ETrue );
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, 
-        &dtmfSendFlag );
-   
-    TInt resourceId ( EPhoneAlertingWaitingAndConfHeldCallMenuBar );
-    if ( iOnScreenDialer && IsDTMFEditorVisibleL() )
-        {
-        resourceId = EPhoneDtmfDialerMenubar;
-        }
-    else if ( IsNumberEntryVisibleL() )
-        {
-        resourceId = 
-            EPhoneAlertingWaitingAndConfHeldCallMenuBarWithNumberEntry;
-        }
-    else if ( IsConferenceBubbleInSelectionMode() )
-        {
-        resourceId = EPhoneConfCallParticipantsDropMenubar;    
-        }         
-
-    TPhoneCmdParamInteger integerParam;
-    integerParam.SetInteger( 
-                CPhoneMainResourceResolver::Instance()->
-                ResolveResourceID( resourceId ) );    
-
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, 
-        &integerParam );
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::UpdateInCallCbaL
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::UpdateInCallCbaL()
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, 
-        "CPhoneConferenceAndWaitingAndCallSetup::SetCallSetupCbaL() ");    
-    
-    if ( iAlerting )
-        {
-        UpdateCbaL ( EPhoneCallHandlingCallWaitingCBA );
-        }
-    else
-        {
-        UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::HandleConnectingL
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::HandleConnectingL( TInt aCallId )
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, 
-        "CPhoneConferenceAndWaitingAndCallSetup::HandleConnectingL");
-    
-    BeginUiUpdateLC();
-    
-    UpdateRemoteInfoDataL ( aCallId );
-
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveGlobalNote );
-    // Re-enable global notes
-    TPhoneCmdParamBoolean globalNotifierParam;
-    globalNotifierParam.SetBoolean( EFalse );
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
-        &globalNotifierParam );
-
-    // Stop capturing keys
-    CaptureKeysDuringCallNotificationL( EFalse );
-    
-    TPhoneCmdParamCallHeaderData callHeaderParam;
-    callHeaderParam.SetCallState( EPEStateConnecting );
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, 
-        &callHeaderParam );
-        
-    // Remove the number entry if it isn't DTMF dialer
-    if ( !iOnScreenDialer || !IsNumberEntryVisibleL() || !IsDTMFEditorVisibleL() )
-        {
-        iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
-        }
-    
-    EndUiUpdate();
-        
-    UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );    
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::HandleConnectedL
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::HandleConnectedL( TInt aCallId )
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, 
-        "CPhoneConferenceAndWaitingAndCallSetup::HandleConnectedL");
-    
-    BeginUiUpdateLC();
-    
-    UpdateRemoteInfoDataL ( aCallId );
-    
-    // Show bubble
-    TPhoneCmdParamCallHeaderData callHeaderParam;
-    callHeaderParam.SetCallState( EPEStateConnected );
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId, 
-        &callHeaderParam );
-    
-    // Capturing keys and number entry must be removed because some
-    // networks jump over connecting state directly to connected state.
-    CaptureKeysDuringCallNotificationL( EFalse );
-    
-    // Remove the number entry if it isn't DTMF dialer
-    if ( !iOnScreenDialer || !IsNumberEntryVisibleL() || !IsDTMFEditorVisibleL() )
-        {
-        iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
-        }
-        
-    HandleColpNoteL( aCallId );
-    
-    SetTouchPaneButtons( EPhoneWaitingCallButtons );    
-    SetTouchPaneButtonDisabled( EPhoneCallComingCmdAnswer );
-    EndUiUpdate();
-    
-    // Go to Conference And Single And Waiting state
-    UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );  
-    iStateMachine->ChangeState( EPhoneStateConferenceAndSingleAndWaiting );                
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::UpdateConnectingCbaL
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::UpdateConnectingCbaL()
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, 
-        "CPhoneConferenceAndCallSetup::UpdateInCallCbaL() ");
-        
-    UpdateCbaL( EPhoneCallHandlingInCallCBA );
-    } 
-    
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::HandleConferenceIdleL
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::HandleConferenceIdleL()
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, 
-        "CPhoneConferenceAndWaitingAndCallSetup::HandleConferenceIdleL");
-    
-    BeginTransEffectLC( ENumberEntryOpen );
-    BeginUiUpdateLC();
-        
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveConferenceBubble );
-        
-    // Close menu bar, if it is displayed
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
-
-    if ( IsNumberEntryUsedL() )
-        {
-        // Show the number entry if it exists
-        SetNumberEntryVisibilityL(ETrue);
-        }
-
-    TPhoneCmdParamCallStateData callStateData;
-    callStateData.SetCallState( EPEStateConnected );
-    iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState,
-        &callStateData );
- 
-    if( callStateData.CallId() > KErrNotFound )
-        {        
-        // Go to Single And Waiting And Call Setup state
-        SetTouchPaneButtons( EPhoneCallSetupButtons );        
-        // No need update cbas
-        iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting );
-        }
-    else 
-        {
-        callStateData.SetCallState( EPEStateHeld );
-        iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState,
-            &callStateData );
-        if( callStateData.CallId() > KErrNotFound )
-            {
-            // Go to Single And Waiting And Call Setup state
-            SetTouchPaneButtons( EPhoneCallSetupButtons ); 
-            // No need update cbas         
-            iStateMachine->ChangeState( EPhoneStateSingleAndCallSetupAndWaiting );
-            }
-        else
-            {
-            // Reset Hold flag to view
-            TPhoneCmdParamBoolean holdFlag;
-            holdFlag.SetBoolean( EFalse );
-            iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );       
-
-            // Go to Call Setup And Waiting state
-            SetTouchPaneButtons( EPhoneCallSetupButtons ); 
-
-            SetToolbarDimming( ETrue );
-
-            // No need update cbas            
-            iStateMachine->ChangeState( EPhoneStateCallSetupAndWaiting );
-            }
-        }
-    EndUiUpdate();
-    EndTransEffect();               
-    }
-
-// -----------------------------------------------------------
-// CPhoneConferenceAndWaitingAndCallSetup::HandleIdleL
-// -----------------------------------------------------------
-//
-void CPhoneConferenceAndWaitingAndCallSetup::HandleIdleL( TInt aCallId )
-    {
-    __LOGMETHODSTARTEND( EPhoneUIStates, 
-         "CPhoneConferenceAndWaitingAndCallSetup::HandleIdleL");        
-
-    // Re-enable global notes
-    TPhoneCmdParamBoolean globalNotifierParam;
-    globalNotifierParam.SetBoolean( EFalse );
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
-        &globalNotifierParam );
-
-    // Stop capturing keys
-    CaptureKeysDuringCallNotificationL( EFalse );
-
-    // Close menu bar, if it is displayed
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
-
-    TPhoneCmdParamBoolean conferenceExistsForCallId;
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewGetCallExistsInConference,
-        aCallId, &conferenceExistsForCallId );
-    
-    if( conferenceExistsForCallId.Boolean() )
-        {
-        // Remove conference member from conference bubble
-        iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveFromConference, 
-            aCallId );            
-        return;
-        }
-    else
-        {
-        // Remove call 
-        iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
-
-        TPhoneCmdParamBoolean conferenceBubbleExists;
-        iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsConference, 
-            &conferenceBubbleExists );                            
-        if( !conferenceBubbleExists.Boolean() )
-            {
-            // Idle message came for last conference member.
-            // Don't do anything, wait for ConferenceIdle message
-            }            
-        else
-            {
-            BeginTransEffectLC( ENumberEntryOpen );
-            BeginUiUpdateLC();
-            TPhoneCmdParamCallStateData callStateData;
-            callStateData.SetCallState( EPEStateRinging );
-            iViewCommandHandle->HandleCommandL( EPhoneViewGetCallIdByState,
-                &callStateData );
-            if( callStateData.CallId() > KErrNotFound )
-                {
-                CheckIfRestoreNEContentAfterDtmfDialer();
-                
-                if ( IsNumberEntryUsedL() )
-                    {
-                    // Show the number entry if callsetup failed with number busy
-                    // etc reason.
-                    SetNumberEntryVisibilityL(ETrue);
-                    }
-                
-                // Go to Conference And Waiting state
-                SetTouchPaneButtons( EPhoneWaitingCallButtons );
-                UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );                 
-                iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting );
-                }
-            else
-                {
-                // Go to Conference And Call Setup state
-                SetTouchPaneButtons( EPhoneCallSetupButtons );
-                UpdateCbaL( EPhoneCallHandlingInCallCBA );                  
-                iStateMachine->ChangeState( EPhoneStateConferenceAndCallSetup );
-                }
-            EndUiUpdate();
-            EndTransEffect();                
-            }
-        }
-    }
-    
-// End of File