phoneapp/phoneuicontrol/src/cphonenumberentrymanager.cpp
changeset 36 2eacb6118286
parent 30 ebdbd102c78a
child 37 ba76fc04e6c2
--- a/phoneapp/phoneuicontrol/src/cphonenumberentrymanager.cpp	Fri May 14 15:51:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,524 +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:  -
-*
-*/
-
-
-#include <StringLoader.h>
-#include <featmgr.h>
-#include <eikenv.h>
-
-#include "cphonenumberentrymanager.h"
-#include "mpeengineinfo.h"
-#include "mphoneviewcommandhandle.h"
-#include "mphonestatemachine.h"
-#include "mphonecustomization.h"
-
-#include "cphonecbamanager.h"
-#include "cphonepubsubproxy.h"
-#include "cphonekeys.h"
-#include "tphonecmdparamstring.h"
-#include "tphonecmdparamboolean.h"
-#include "tphonecmdparaminteger.h"
-#include "tphonecmdparamcallheaderdata.h"
-#include "cphonemainresourceresolver.h"
-#include "phonerssbase.h"
-#include "phoneui.pan"
-#include "phoneviewcommanddefinitions.h"
-#include "phoneappcommands.hrh"
-#include "phonelogger.h"
-
-const TInt  KPhoneKeyStart            = 33;
-const TInt  KPhoneKeyEnd              = 127;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CPhoneNumberEntryManager::CPhoneNumberEntryManager
-// ---------------------------------------------------------------------------
-//
-CPhoneNumberEntryManager::CPhoneNumberEntryManager(
-         CPhoneState* aState,
-         MPhoneViewCommandHandle& aViewCommandHandle,
-         MPhoneStateMachine& aStateMachine,
-         MPhoneCustomization* aCustomization,
-         CPhoneCbaManager& aCbaManager )
-   : iState ( aState ),
-     iViewCommandHandle ( aViewCommandHandle ),
-     iStateMachine ( aStateMachine ),
-     iCustomization ( aCustomization ),
-     iCbaManager ( aCbaManager ),
-     iEnv( *CEikonEnv::Static() )
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::CPhoneNumberEntryManager() ");
-    }
-
- // ---------------------------------------------------------------------------
- // CPhoneNumberEntryManager::NewL
- // ---------------------------------------------------------------------------
- //
-CPhoneNumberEntryManager* CPhoneNumberEntryManager::NewL( 
-        CPhoneState* aState,
-        MPhoneViewCommandHandle& aViewCommandHandle,
-        MPhoneStateMachine& aStateMachine,
-        MPhoneCustomization* aCustomization,
-        CPhoneCbaManager& aCbaManager )
-     {
-     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::NewL() ");
-     CPhoneNumberEntryManager* self = new (ELeave) CPhoneNumberEntryManager(
-             aState,
-             aViewCommandHandle,
-             aStateMachine,
-             aCustomization,
-             aCbaManager );
-     
-     CleanupStack::PushL( self );
-     self->ConstructL();
-     CleanupStack::Pop( self );
-     
-     return self;
-     }
-
-// ---------------------------------------------------------------------------
-// CPhoneNumberEntryManager::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CPhoneNumberEntryManager::ConstructL()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::ConstructL() ");
-    }
-
-// ---------------------------------------------------------------------------
-//  CPhoneNumberEntryManager::~CPhoneNumberEntryManager
-// ---------------------------------------------------------------------------
-//
-CPhoneNumberEntryManager::~CPhoneNumberEntryManager()
-     {
-     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::~CPhoneNumberEntryManager() ");
-     delete iNumberEntryContent;  
-     }
- 
-// ======== LOCAL FUNCTIONS ========
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::StoreNumberEntryContentL
-// -----------------------------------------------------------
-//
-void CPhoneNumberEntryManager::StoreNumberEntryContentL()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::StoreNumberEntryContentL( ) ");
-    // Store the number entry content to cache
-    if ( !iNumberEntryContent )
-        {
-        iNumberEntryContent = HBufC::NewL( KPhoneNumberEntryBufferSize );
-        }    
-    TPtr ptr( iNumberEntryContent->Des() );
-    ptr.Zero();   
-      
-    TPhoneCmdParamInteger numberEntryCountParam;
-    iViewCommandHandle.ExecuteCommandL( 
-            EPhoneViewGetNumberEntryCount,
-            &numberEntryCountParam );
-    
-    TInt neLength( numberEntryCountParam.Integer() );
-    if ( neLength > 0 )
-        {                    
-        TPhoneCmdParamString stringParam;
-        stringParam.SetString( &ptr );
-        iViewCommandHandle.ExecuteCommandL(
-                EPhoneViewGetNumberFromEntry,
-                &stringParam );  
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::RestoreNumberEntryContentL
-// -----------------------------------------------------------
-//
-void CPhoneNumberEntryManager::RestoreNumberEntryContentL()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::RestoreNumberEntryContentL( ) ");
-    if ( iNumberEntryContent )
-        {
-        // Restore the number entry content from cache
-        TPtr ptr( iNumberEntryContent->Des() );            
-        iViewCommandHandle.ExecuteCommandL( EPhoneViewSetNumberEntryContent, 0, ptr );
-        delete iNumberEntryContent;
-        iNumberEntryContent = NULL;
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::IsNumberEntryContentStored
-// -----------------------------------------------------------
-//
-TBool CPhoneNumberEntryManager::IsNumberEntryContentStored()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::IsNumberEntryContentStored( ) ");
-    return iNumberEntryContent ? ETrue : EFalse;
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::ClearNumberEntryContentCache
-// -----------------------------------------------------------
-//
-void CPhoneNumberEntryManager::ClearNumberEntryContentCache()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::ClearNumberEntryContentCache( ) ");
-    delete iNumberEntryContent;
-    iNumberEntryContent = NULL;
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::CreateNumberEntryL
-// -----------------------------------------------------------
-void CPhoneNumberEntryManager::CreateNumberEntryL()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::CreateNumberEntryL( ) ");
-    iViewCommandHandle.ExecuteCommandL( EPhoneViewCreateNumberEntry );
-    }
- 
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::SetNumberEntryVisibilityL
-// -----------------------------------------------------------
-//
-void CPhoneNumberEntryManager::SetNumberEntryVisibilityL( TPhoneCmdParamBoolean aVisible )
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::SetNumberEntryVisibilityL( ) ");
-    __PHONELOG1( EBasic, EPhoneControl, 
-            "CPhoneNumberEntryManager::SetNumberEntryVisibilityL : aVisible =%d", 
-            aVisible.Boolean() );
-    iViewCommandHandle.ExecuteCommandL( EPhoneViewSetNumberEntryVisible, &aVisible );
-    if ( aVisible.Boolean() )
-        {
-        // Set Number Entry CBA
-        iCbaManager.UpdateCbaL( EPhoneNumberAcqCBA );
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::HandleCreateNumberEntryL
-// add conditions here regarding when NE can be opened:
-// - activeidle is not the top most application
-// - any query is not visible
-// - dialog is not visible ("new call")
-// - information note is not visible ("IMEI code", "life timer")
-// - options menu bar is not visible
-// - "switch to ..." -operation  is not ongoing
-// -----------------------------------------------------------
-//
-void CPhoneNumberEntryManager::HandleCreateNumberEntryL()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::HandleCreateNumberEntryL() ");
-    
-    const TBool autoLcokOn = iState->IsAutoLockOn();
-    const TBool idleVal = false;
-    const TBool queryActive = iState->IsAnyQueryActiveL();
-    const TBool menuBarVisible = iState->IsMenuBarVisibleL();
-    
-    if( autoLcokOn || 
-        ( idleVal /*== EPSAiForeground*/ ) ||
-        ( menuBarVisible || queryActive ) )
-        {
-        __PHONELOG( EBasic, EPhoneControl, 
-             "CPhoneNumberEntryManager::HandleCreateNumberEntryL() NE NOT CREATED" );
-        __PHONELOG2( EBasic, EPhoneControl, 
-             "CPhoneNumberEntryManager::HandleCreateNumberEntryL() autoLcokOn(%d) idleVal(%d)", 
-             autoLcokOn, idleVal );
-        __PHONELOG2( EBasic, EPhoneControl, 
-             "CPhoneNumberEntryManager::HandleCreateNumberEntryL() queryActive(%d) menuBarVisible(%d)", 
-             queryActive, menuBarVisible );
-        }
-    else
-        {
-        //creates NE
-        if( ( !iStateMachine.PhoneEngineInfo()->IsSwitchToOperationOngoing () ) &&
-            ( !IsNumberEntryUsedL() ) &&
-            ( !queryActive || FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) )
-            {
-            __PHONELOG( EBasic, EPhoneControl,
-                        "CPhoneNumberEntryManager::HandleCreateNumberEntryL() --create NE" );
-            
-            if ( iState->IsNoteDismissableL() )
-                {
-                iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveNote );
-                }
-            
-            TPhoneCmdParamBoolean isSecurityMode;      
-            iViewCommandHandle.ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode );
-            if( isSecurityMode.Boolean() )
-                {
-                iState->HandleCommandL( EPhoneNumberAcqSecurityDialer );
-                }
-            else
-                {
-                // Effect is shown when dialer is created.
-                iState->BeginTransEffectLC( ENumberEntryCreate );
-                iViewCommandHandle.ExecuteCommandL( EPhoneViewCreateNumberEntry );
-                iState->EndTransEffect();
-                // Go to current state implementation
-                iCbaManager.UpdateInCallCbaL();
-                iState->UpdateInCallContextMenuL();
-                iEnv.SyncNotifyFocusObserversOfChangeInFocus();
-                }
-            }
-
-        //shows existing NE
-        if ( ( !iStateMachine.PhoneEngineInfo()->IsSwitchToOperationOngoing () ) &&
-             ( !IsNumberEntryVisibleL() ) &&
-             ( !queryActive || FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) )
-            {
-            __PHONELOG( EBasic, EPhoneControl, 
-                        "CPhoneNumberEntryManager::HandleCreateNumberEntryL() -- show NE" );
-            
-            if ( iState->IsNoteDismissableL() )
-                {
-                iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveNote );
-                }
-            
-            TPhoneCmdParamBoolean booleanParam;
-            booleanParam.SetBoolean( ETrue );
-            // Show the number entry
-            SetNumberEntryVisibilityL(booleanParam);
-            }
-        }
-    
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::IsNumberEntryUsedL
-// -----------------------------------------------------------
-//
-TBool CPhoneNumberEntryManager::IsNumberEntryUsedL() const
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::IsNumberEntryUsedL( ) ");
-    return iViewCommandHandle.HandleCommandL(
-        EPhoneViewGetNumberEntryIsUsedStatus ) ==
-        EPhoneViewResponseSuccess;
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::IsNumberEntryVisibleL
-// -----------------------------------------------------------
-//
-TBool CPhoneNumberEntryManager::IsNumberEntryVisibleL() const
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::IsNumberEntryVisibleL( ) ");
-    return iViewCommandHandle.HandleCommandL(
-        EPhoneViewGetNumberEntryIsVisibleStatus ) ==
-        EPhoneViewResponseSuccess;
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::PhoneNumberFromEntryLC()
-// -----------------------------------------------------------
-//
-HBufC* CPhoneNumberEntryManager::PhoneNumberFromEntryLC() const
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::PhoneNumberFromEntryLC( ) ");
-    HBufC* phoneNumber = HBufC::NewLC( KPhoneNumberEntryBufferSize );
-    TPtr ptr( phoneNumber->Des() );
-    TPhoneCmdParamString stringParam;
-    stringParam.SetString( &ptr );
-    iViewCommandHandle.ExecuteCommand(
-        EPhoneViewGetNumberFromEntry,
-        &stringParam );
-    return phoneNumber;
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::HandleNumberEntryEdited
-// -----------------------------------------------------------
-//
-void CPhoneNumberEntryManager::HandleNumberEntryEdited()
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::HandleNumberEntryEdited( ) ");
-    TBool isNumberEntryVisible( EFalse );
-    TRAP_IGNORE( isNumberEntryVisible = IsNumberEntryVisibleL() );
-
-    if( isNumberEntryVisible )
-        {
-        HBufC* phoneNumber( NULL );
-        TRAP_IGNORE( phoneNumber = HBufC::NewL( KPhoneNumberEntryBufferSize ) );
-        if( phoneNumber )
-            {
-            phoneNumber->Des().Zero();
-            TPtr ptr( phoneNumber->Des() );
-            TPhoneCmdParamString stringParam;
-            stringParam.SetString( &ptr );
-            TRAP_IGNORE( iViewCommandHandle.ExecuteCommandL(
-                    EPhoneViewGetNumberFromEntry,
-                    &stringParam ) );
-            // Save the phone number
-            iStateMachine.PhoneEngineInfo()->SetPhoneNumber( ptr );
-
-            iStateMachine.SendPhoneEngineMessage(
-                    MPEPhoneModel::EPEMessagePhoneNumberEdited );
-
-            // remove the phone number
-            delete phoneNumber;
-
-            // Set service code flag to view
-            TPhoneCmdParamBoolean serviceCodeParam;
-            serviceCodeParam.SetBoolean(
-                iStateMachine.PhoneEngineInfo()->PhoneNumberIsServiceCode() );
-            TRAP_IGNORE( iViewCommandHandle.ExecuteCommandL( 
-                    EPhoneViewSetServiceCodeFlag,
-                    &serviceCodeParam ) );
-            }
-        }
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::KeyEventForExistingNumberEntryL
-// -----------------------------------------------------------
-//
-void CPhoneNumberEntryManager::KeyEventForExistingNumberEntryL( 
-        const TKeyEvent& aKeyEvent,
-        TEventCode aEventCode )
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::KeyEventForExistingNumberEntryL( ) ");
-
-    TPhoneCmdParamKeyEvent keyEventParam;
-    keyEventParam.SetKeyEvent( aKeyEvent );
-    keyEventParam.SetEventCode( aEventCode );
-
-    if ( IsValidAlphaNumericKey( aKeyEvent, aEventCode ) )
-        {
-        iViewCommandHandle.HandleCommandL(
-                EPhoneViewSendKeyEventToNumberEntry, &keyEventParam );
-        }
-    else if ( aKeyEvent.iCode == EKeyBackspace )
-        {
-        TPhoneViewResponseId resp = iViewCommandHandle.HandleCommandL(
-                    EPhoneViewSendKeyEventToNumberEntry, &keyEventParam );
-
-        if ( resp == EPhoneViewResponseNumberEntryCleared )
-            {
-            // Remove number entry from screen
-            iViewCommandHandle.ExecuteCommandL(
-                EPhoneViewRemoveNumberEntry );
-
-            // Stop DTMF tone playing just in case (user might be holding down a number
-            // key when pressed 'clear' key).
-            iStateMachine.SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
-
-            // Handle state-specific behaviour when number entry is
-            // cleared
-            HandleNumberEntryClearedL();
-            }
-
-        }
-    else if( aKeyEvent.iCode == EKeyLeftArrow ||
-           aKeyEvent.iCode == EKeyRightArrow ||
-           aKeyEvent.iCode == EKeyUpArrow ||
-           aKeyEvent.iCode == EKeyDownArrow )
-           {
-           iViewCommandHandle.HandleCommandL(
-               EPhoneViewSendKeyEventToNumberEntry, &keyEventParam );
-           }
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneNumberEntryManager::IsValidAlphaNumericKey
-// Checks is the key event a number, a special character
-// or if VoIP is enabled some other character
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneNumberEntryManager::IsValidAlphaNumericKey( 
-        const TKeyEvent& aKeyEvent,
-        TEventCode aEventCode )
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::IsValidAlphaNumericKey( ) ");
-    TBool ret(EFalse);
-    const TBool numericKeyEntered( CPhoneKeys::IsNumericKey(
-          aKeyEvent, aEventCode ) );
-
-    // a numeric key (1,2,3,4,6,7,8,9,0,+,*,p,w )
-    // or
-    // a letter from fullscreen qwerty, miniqwerty or handwriting
-    // when voip is enabled.
-    if ( numericKeyEntered
-        || IsAlphanumericSupportedAndCharInput( aKeyEvent ) )
-        {
-        ret= ETrue;
-        }
-
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneNumberEntryManager::IsAlphanumericSupportedAndCharInput
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneNumberEntryManager::IsAlphanumericSupportedAndCharInput(
-        const TKeyEvent& aKeyEvent ) const
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::IsAlphanumericSupportedAndCharInput( ) ");
-    TBool ret = ( ( iCustomization &&
-                 iCustomization->AllowAlphaNumericMode() ) &&
-                 ( ( aKeyEvent.iScanCode >= KPhoneKeyStart &&
-                     aKeyEvent.iScanCode <= KPhoneKeyEnd ) ||
-                     aKeyEvent.iModifiers & EModifierSpecial ) );
-    __PHONELOG1( EBasic, EPhoneControl, 
-            "CPhoneNumberEntryManager::IsAlphanumericSupportedAndCharInput: %d", ret );
-    return ret;
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::HandleNumberEntryClearedL
-// -----------------------------------------------------------
-//
-void CPhoneNumberEntryManager::HandleNumberEntryClearedL()
-    {
-    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::HandleNumberEntryClearedL( ) ");
-    }
-
-// ---------------------------------------------------------
-// CPhoneNumberEntryManager::NumberEntryClearL
-// ---------------------------------------------------------
-//
-void CPhoneNumberEntryManager::NumberEntryClearL() const
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::NumberEntryClearL( ) ");
-    iViewCommandHandle.ExecuteCommandL( EPhoneViewClearNumberEntryContent );
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::NumberEntryInNumericModeL
-// -----------------------------------------------------------
-//
-TBool CPhoneNumberEntryManager::NumberEntryInNumericModeL()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::NumberEntryInNumericModeL( ) ");
-    return iViewCommandHandle.HandleCommandL(
-        EPhoneViewIsNumberEntryNumericMode ) == EPhoneViewResponseSuccess;
-    }
-
-// -----------------------------------------------------------
-// CPhoneNumberEntryManager::NumberEntryToggleAlphaNumericModeL
-// -----------------------------------------------------------
-//
-TBool CPhoneNumberEntryManager::NumberEntryToggleAlphaNumericModeL()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::NumberEntryToggleAlphaNumericModeL( ) ");
-    TPhoneCmdParamBoolean newModeAlpha;
-    // Toggle number entry alpha/numeric mode
-    iViewCommandHandle.ExecuteCommandL(
-        EPhoneViewToggleNumberEntryAlphaNumericMode, &newModeAlpha );
-    return newModeAlpha.Boolean();
-    }
-
-