phoneapp/phoneuicontrol/src/cphonenumberentrymanager.cpp
changeset 56 5bcb308bd24d
parent 45 6b911d05207e
child 65 2a5d4ab426d3
equal deleted inserted replaced
46:bc5a64e5bc3c 56:5bcb308bd24d
   142                 &stringParam );  
   142                 &stringParam );  
   143         }
   143         }
   144     }
   144     }
   145 
   145 
   146 // -----------------------------------------------------------
   146 // -----------------------------------------------------------
   147 // CPhoneNumberEntryManager::RestoreNumberEntryContentL
       
   148 // -----------------------------------------------------------
       
   149 //
       
   150 void CPhoneNumberEntryManager::RestoreNumberEntryContentL()
       
   151     {
       
   152     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::RestoreNumberEntryContentL( ) ");
       
   153     if ( iNumberEntryContent )
       
   154         {
       
   155         // Restore the number entry content from cache
       
   156         TPtr ptr( iNumberEntryContent->Des() );            
       
   157         iViewCommandHandle.ExecuteCommandL( EPhoneViewSetNumberEntryContent, 0, ptr );
       
   158         delete iNumberEntryContent;
       
   159         iNumberEntryContent = NULL;
       
   160         }
       
   161     }
       
   162 
       
   163 // -----------------------------------------------------------
       
   164 // CPhoneNumberEntryManager::IsNumberEntryContentStored
   147 // CPhoneNumberEntryManager::IsNumberEntryContentStored
   165 // -----------------------------------------------------------
   148 // -----------------------------------------------------------
   166 //
   149 //
   167 TBool CPhoneNumberEntryManager::IsNumberEntryContentStored()
   150 TBool CPhoneNumberEntryManager::IsNumberEntryContentStored()
   168     {
   151     {
   179     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::ClearNumberEntryContentCache( ) ");
   162     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::ClearNumberEntryContentCache( ) ");
   180     delete iNumberEntryContent;
   163     delete iNumberEntryContent;
   181     iNumberEntryContent = NULL;
   164     iNumberEntryContent = NULL;
   182     }
   165     }
   183 
   166 
   184 // -----------------------------------------------------------
       
   185 // CPhoneNumberEntryManager::CreateNumberEntryL
       
   186 // -----------------------------------------------------------
       
   187 void CPhoneNumberEntryManager::CreateNumberEntryL()
       
   188     {
       
   189     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::CreateNumberEntryL( ) ");
       
   190     iViewCommandHandle.ExecuteCommandL( EPhoneViewCreateNumberEntry );
       
   191     }
       
   192  
   167  
   193 // -----------------------------------------------------------
   168 // -----------------------------------------------------------
   194 // CPhoneNumberEntryManager::SetNumberEntryVisibilityL
   169 // CPhoneNumberEntryManager::SetNumberEntryVisibilityL
   195 // -----------------------------------------------------------
   170 // -----------------------------------------------------------
   196 //
   171 //
   199     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::SetNumberEntryVisibilityL( ) ");
   174     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::SetNumberEntryVisibilityL( ) ");
   200     __PHONELOG1( EBasic, EPhoneControl, 
   175     __PHONELOG1( EBasic, EPhoneControl, 
   201             "CPhoneNumberEntryManager::SetNumberEntryVisibilityL : aVisible =%d", 
   176             "CPhoneNumberEntryManager::SetNumberEntryVisibilityL : aVisible =%d", 
   202             aVisible.Boolean() );
   177             aVisible.Boolean() );
   203     iViewCommandHandle.ExecuteCommandL( EPhoneViewSetNumberEntryVisible, &aVisible );
   178     iViewCommandHandle.ExecuteCommandL( EPhoneViewSetNumberEntryVisible, &aVisible );
   204     if ( aVisible.Boolean() )
       
   205         {
       
   206         // Set Number Entry CBA
       
   207         iCbaManager.UpdateCbaL( EPhoneNumberAcqCBA );
       
   208         }
       
   209     }
       
   210 
       
   211 // -----------------------------------------------------------
       
   212 // CPhoneNumberEntryManager::HandleCreateNumberEntryL
       
   213 // add conditions here regarding when NE can be opened:
       
   214 // - activeidle is not the top most application
       
   215 // - any query is not visible
       
   216 // - dialog is not visible ("new call")
       
   217 // - information note is not visible ("life timer")
       
   218 // - options menu bar is not visible
       
   219 // - "switch to ..." -operation  is not ongoing
       
   220 // -----------------------------------------------------------
       
   221 //
       
   222 void CPhoneNumberEntryManager::HandleCreateNumberEntryL()
       
   223     {
       
   224     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::HandleCreateNumberEntryL() ");
       
   225     
       
   226     const TBool autoLcokOn = iState->IsAutoLockOn();
       
   227     const TBool idleVal = false;
       
   228     const TBool queryActive = iState->IsAnyQueryActiveL();
       
   229     const TBool menuBarVisible = iState->IsMenuBarVisibleL();
       
   230     
       
   231     if( autoLcokOn || 
       
   232         ( idleVal /*== EPSAiForeground*/ ) ||
       
   233         ( menuBarVisible || queryActive ) )
       
   234         {
       
   235         __PHONELOG( EBasic, EPhoneControl, 
       
   236              "CPhoneNumberEntryManager::HandleCreateNumberEntryL() NE NOT CREATED" );
       
   237         __PHONELOG2( EBasic, EPhoneControl, 
       
   238              "CPhoneNumberEntryManager::HandleCreateNumberEntryL() autoLcokOn(%d) idleVal(%d)", 
       
   239              autoLcokOn, idleVal );
       
   240         __PHONELOG2( EBasic, EPhoneControl, 
       
   241              "CPhoneNumberEntryManager::HandleCreateNumberEntryL() queryActive(%d) menuBarVisible(%d)", 
       
   242              queryActive, menuBarVisible );
       
   243         }
       
   244     else
       
   245         {
       
   246         //creates NE
       
   247         if( ( !iStateMachine.PhoneEngineInfo()->IsSwitchToOperationOngoing () ) &&
       
   248             ( !IsNumberEntryUsedL() ) &&
       
   249             ( !queryActive || FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) )
       
   250             {
       
   251             __PHONELOG( EBasic, EPhoneControl,
       
   252                         "CPhoneNumberEntryManager::HandleCreateNumberEntryL() --create NE" );
       
   253             
       
   254             if ( iState->IsNoteDismissableL() )
       
   255                 {
       
   256                 iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveNote );
       
   257                 }
       
   258             
       
   259             TPhoneCmdParamBoolean isSecurityMode;      
       
   260             iViewCommandHandle.ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode );
       
   261             if( isSecurityMode.Boolean() )
       
   262                 {
       
   263                 iState->HandleCommandL( EPhoneNumberAcqSecurityDialer );
       
   264                 }
       
   265             else
       
   266                 {
       
   267                 // Effect is shown when dialer is created.
       
   268                 iState->BeginTransEffectLC( ENumberEntryCreate );
       
   269                 iViewCommandHandle.ExecuteCommandL( EPhoneViewCreateNumberEntry );
       
   270                 iState->EndTransEffect();
       
   271                 // Go to current state implementation
       
   272                 iCbaManager.UpdateInCallCbaL();
       
   273                 iState->UpdateInCallContextMenuL();
       
   274                 iEnv.SyncNotifyFocusObserversOfChangeInFocus();
       
   275                 }
       
   276             }
       
   277 
       
   278         //shows existing NE
       
   279         if ( ( !iStateMachine.PhoneEngineInfo()->IsSwitchToOperationOngoing () ) &&
       
   280              ( !IsNumberEntryVisibleL() ) &&
       
   281              ( !queryActive || FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) )
       
   282             {
       
   283             __PHONELOG( EBasic, EPhoneControl, 
       
   284                         "CPhoneNumberEntryManager::HandleCreateNumberEntryL() -- show NE" );
       
   285             
       
   286             if ( iState->IsNoteDismissableL() )
       
   287                 {
       
   288                 iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveNote );
       
   289                 }
       
   290             
       
   291             TPhoneCmdParamBoolean booleanParam;
       
   292             booleanParam.SetBoolean( ETrue );
       
   293             // Show the number entry
       
   294             SetNumberEntryVisibilityL(booleanParam);
       
   295             }
       
   296         }
       
   297     
       
   298     }
   179     }
   299 
   180 
   300 // -----------------------------------------------------------
   181 // -----------------------------------------------------------
   301 // CPhoneNumberEntryManager::IsNumberEntryUsedL
   182 // CPhoneNumberEntryManager::IsNumberEntryUsedL
   302 // -----------------------------------------------------------
   183 // -----------------------------------------------------------
   336         EPhoneViewGetNumberFromEntry,
   217         EPhoneViewGetNumberFromEntry,
   337         &stringParam );
   218         &stringParam );
   338     return phoneNumber;
   219     return phoneNumber;
   339     }
   220     }
   340 
   221 
   341 // -----------------------------------------------------------
       
   342 // CPhoneNumberEntryManager::HandleNumberEntryEdited
       
   343 // -----------------------------------------------------------
       
   344 //
       
   345 void CPhoneNumberEntryManager::HandleNumberEntryEdited()
       
   346     {
       
   347     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::HandleNumberEntryEdited( ) ");
       
   348     TBool isNumberEntryVisible( EFalse );
       
   349     TRAP_IGNORE( isNumberEntryVisible = IsNumberEntryVisibleL() );
       
   350 
       
   351     if( isNumberEntryVisible )
       
   352         {
       
   353         HBufC* phoneNumber( NULL );
       
   354         TRAP_IGNORE( phoneNumber = HBufC::NewL( KPhoneNumberEntryBufferSize ) );
       
   355         if( phoneNumber )
       
   356             {
       
   357             phoneNumber->Des().Zero();
       
   358             TPtr ptr( phoneNumber->Des() );
       
   359             TPhoneCmdParamString stringParam;
       
   360             stringParam.SetString( &ptr );
       
   361             TRAP_IGNORE( iViewCommandHandle.ExecuteCommandL(
       
   362                     EPhoneViewGetNumberFromEntry,
       
   363                     &stringParam ) );
       
   364             // Save the phone number
       
   365             iStateMachine.PhoneEngineInfo()->SetPhoneNumber( ptr );
       
   366 
       
   367             iStateMachine.SendPhoneEngineMessage(
       
   368                     MPEPhoneModel::EPEMessagePhoneNumberEdited );
       
   369 
       
   370             // remove the phone number
       
   371             delete phoneNumber;
       
   372 
       
   373             // Set service code flag to view
       
   374             TPhoneCmdParamBoolean serviceCodeParam;
       
   375             serviceCodeParam.SetBoolean(
       
   376                 iStateMachine.PhoneEngineInfo()->PhoneNumberIsServiceCode() );
       
   377             TRAP_IGNORE( iViewCommandHandle.ExecuteCommandL( 
       
   378                     EPhoneViewSetServiceCodeFlag,
       
   379                     &serviceCodeParam ) );
       
   380             }
       
   381         }
       
   382     }
       
   383 
       
   384 // -----------------------------------------------------------
       
   385 // CPhoneNumberEntryManager::KeyEventForExistingNumberEntryL
       
   386 // -----------------------------------------------------------
       
   387 //
       
   388 void CPhoneNumberEntryManager::KeyEventForExistingNumberEntryL( 
       
   389         const TKeyEvent& aKeyEvent,
       
   390         TEventCode aEventCode )
       
   391     {
       
   392     __LOGMETHODSTARTEND(EPhoneControl, "CPhoneNumberEntryManager::KeyEventForExistingNumberEntryL( ) ");
       
   393 
       
   394     TPhoneCmdParamKeyEvent keyEventParam;
       
   395     keyEventParam.SetKeyEvent( aKeyEvent );
       
   396     keyEventParam.SetEventCode( aEventCode );
       
   397 
       
   398     if ( IsValidAlphaNumericKey( aKeyEvent, aEventCode ) )
       
   399         {
       
   400         iViewCommandHandle.HandleCommandL(
       
   401                 EPhoneViewSendKeyEventToNumberEntry, &keyEventParam );
       
   402         }
       
   403     else if ( aKeyEvent.iCode == EKeyBackspace )
       
   404         {
       
   405         TPhoneViewResponseId resp = iViewCommandHandle.HandleCommandL(
       
   406                     EPhoneViewSendKeyEventToNumberEntry, &keyEventParam );
       
   407 
       
   408         if ( resp == EPhoneViewResponseNumberEntryCleared )
       
   409             {
       
   410             // Remove number entry from screen
       
   411             iViewCommandHandle.ExecuteCommandL(
       
   412                 EPhoneViewRemoveNumberEntry );
       
   413 
       
   414             // Stop DTMF tone playing just in case (user might be holding down a number
       
   415             // key when pressed 'clear' key).
       
   416             iStateMachine.SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
       
   417 
       
   418             // Handle state-specific behaviour when number entry is
       
   419             // cleared
       
   420             HandleNumberEntryClearedL();
       
   421             }
       
   422 
       
   423         }
       
   424     else if( aKeyEvent.iCode == EKeyLeftArrow ||
       
   425            aKeyEvent.iCode == EKeyRightArrow ||
       
   426            aKeyEvent.iCode == EKeyUpArrow ||
       
   427            aKeyEvent.iCode == EKeyDownArrow )
       
   428            {
       
   429            iViewCommandHandle.HandleCommandL(
       
   430                EPhoneViewSendKeyEventToNumberEntry, &keyEventParam );
       
   431            }
       
   432     }
       
   433 
       
   434 // -----------------------------------------------------------------------------
   222 // -----------------------------------------------------------------------------
   435 // CPhoneNumberEntryManager::IsValidAlphaNumericKey
   223 // CPhoneNumberEntryManager::IsValidAlphaNumericKey
   436 // Checks is the key event a number, a special character
   224 // Checks is the key event a number, a special character
   437 // or if VoIP is enabled some other character
   225 // or if VoIP is enabled some other character
   438 // -----------------------------------------------------------------------------
   226 // -----------------------------------------------------------------------------
   494     {
   282     {
   495     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::NumberEntryClearL( ) ");
   283     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::NumberEntryClearL( ) ");
   496     iViewCommandHandle.ExecuteCommandL( EPhoneViewClearNumberEntryContent );
   284     iViewCommandHandle.ExecuteCommandL( EPhoneViewClearNumberEntryContent );
   497     }
   285     }
   498 
   286 
   499 // -----------------------------------------------------------
   287 
   500 // CPhoneNumberEntryManager::NumberEntryInNumericModeL
   288 
   501 // -----------------------------------------------------------
   289 
   502 //
       
   503 TBool CPhoneNumberEntryManager::NumberEntryInNumericModeL()
       
   504     {
       
   505     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::NumberEntryInNumericModeL( ) ");
       
   506     return iViewCommandHandle.HandleCommandL(
       
   507         EPhoneViewIsNumberEntryNumericMode ) == EPhoneViewResponseSuccess;
       
   508     }
       
   509 
       
   510 // -----------------------------------------------------------
       
   511 // CPhoneNumberEntryManager::NumberEntryToggleAlphaNumericModeL
       
   512 // -----------------------------------------------------------
       
   513 //
       
   514 TBool CPhoneNumberEntryManager::NumberEntryToggleAlphaNumericModeL()
       
   515     {
       
   516     __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::NumberEntryToggleAlphaNumericModeL( ) ");
       
   517     TPhoneCmdParamBoolean newModeAlpha;
       
   518     // Toggle number entry alpha/numeric mode
       
   519     iViewCommandHandle.ExecuteCommandL(
       
   520         EPhoneViewToggleNumberEntryAlphaNumericMode, &newModeAlpha );
       
   521     return newModeAlpha.Boolean();
       
   522     }
       
   523 
       
   524