phoneapp/phoneuivoipextension/src/cphoneunattendedtransfercmdhandler.cpp
branchRCL_3
changeset 25 5266b1f337bd
parent 24 41a7f70b3818
child 26 8baf28733c3d
equal deleted inserted replaced
24:41a7f70b3818 25:5266b1f337bd
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include <featmgr.h>
    18 #include <featmgr.h>
    19 #include <mpeengineinfo.h>
    19 #include <mpeengineinfo.h>
       
    20 #include <StringLoader.h>
       
    21 
    20 #include "cphoneunattendedtransfercmdhandler.h"
    22 #include "cphoneunattendedtransfercmdhandler.h"
    21 
    23 
    22 #include "cphonelogger.h"
    24 #include "cphonelogger.h"
    23 #include "mphonestatemachine.h"
    25 #include "mphonestatemachine.h"
    24 #include "cphonetransferdialercontroller.h"
    26 #include "cphonetransferdialercontroller.h"
    30 #include "tphonecmdparaminteger.h"
    32 #include "tphonecmdparaminteger.h"
    31 #include "tphonecmdparamstring.h"
    33 #include "tphonecmdparamstring.h"
    32 #include "tphonecmdparamquery.h"
    34 #include "tphonecmdparamquery.h"
    33 #include "tphonecmdparamglobalnote.h"
    35 #include "tphonecmdparamglobalnote.h"
    34 #include "cphonemainresourceresolver.h"
    36 #include "cphonemainresourceresolver.h"
       
    37 #include "cphonestatemachinevoip.h"
       
    38 #include "cphonestateutilsvoip.h"
       
    39 
    35 
    40 
    36 
    41 
    37 // ======== MEMBER FUNCTIONS ========
    42 // ======== MEMBER FUNCTIONS ========
    38 
    43 
    39 // ---------------------------------------------------------------------------
    44 // ---------------------------------------------------------------------------
   138             iStateMachine.PhoneEngineInfo()->
   143             iStateMachine.PhoneEngineInfo()->
   139                 SetTransferTargetCommand( fetchContent );
   144                 SetTransferTargetCommand( fetchContent );
   140             iStateMachine.SendPhoneEngineMessage( 
   145             iStateMachine.SendPhoneEngineMessage( 
   141                 MPEPhoneModel::EPEMessageDoUnattendedTransfer );
   146                 MPEPhoneModel::EPEMessageDoUnattendedTransfer );
   142             
   147             
   143             ShowWaitingAcceptanceNoteL();
   148             if ( KErrNone == iStateMachine.PhoneEngineInfo()->
       
   149                     ErrorInfo().iErrorCode )
       
   150                 {
       
   151                 ShowWaitingAcceptanceNoteL();
       
   152                 }
   144             }
   153             }
   145             break;
   154             break;
   146         
   155         case EPhoneCmdUnattendedTransferCallBackOk:
       
   156             {
       
   157             MPEEngineInfo* info = iStateMachine.PhoneEngineInfo();
       
   158             const TDesC& callBackToAddr = info->CallBackAddress();
       
   159             // Service id used for last call is used to call back
       
   160             TUint32 serviceId = info->ServiceIdCommand();
       
   161             static_cast<CPhoneStateMachineVoIP&>( 
       
   162                 iStateMachine ).StateUtils().SelectServiceAndDialL( 
       
   163                     callBackToAddr, serviceId );
       
   164             }
       
   165             break;
       
   166         case EPhoneCmdUnattendedTransferCallBackCancel:
       
   167             {
       
   168             MPEEngineInfo* info = iStateMachine.PhoneEngineInfo();
       
   169             info->SetCallBackAddress( KNullDesC );
       
   170             }
       
   171             break;
   147         default:
   172         default:
   148             __PHONELOG( EOnlyFatal, PhoneUIVoIPExtension, 
   173             __PHONELOG( EOnlyFatal, PhoneUIVoIPExtension, 
   149                 "CPhoneUnattendedTransferCmdHandler::HandleCommandL, DEFAULT" );    
   174                 "CPhoneUnattendedTransferCmdHandler::HandleCommandL, DEFAULT" );    
   150             ASSERT( EFalse );
   175             ASSERT( EFalse );
   151         }
   176         }
   158 //
   183 //
   159 void CPhoneUnattendedTransferCmdHandler::ShowTransferDialerL()
   184 void CPhoneUnattendedTransferCmdHandler::ShowTransferDialerL()
   160     {
   185     {
   161     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   186     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   162         "CPhoneUnattendedTransferCmdHandler::ShowTransferDialerL" )
   187         "CPhoneUnattendedTransferCmdHandler::ShowTransferDialerL" )
   163 
   188     
       
   189     CPhoneState* phoneState = static_cast<CPhoneState*>( iStateMachine.State() );
       
   190     if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) )
       
   191         {
       
   192         TPhoneCmdParamCustomDialer customDialerParam;
       
   193         customDialerParam.SetDialerController( iTransferDialerController );
       
   194            
       
   195         // Set dialer to transfer mode.
       
   196         iViewCommandHandle.ExecuteCommandL( 
       
   197             EPhoneViewShowCustomizedDialer,
       
   198             &customDialerParam );
       
   199         
       
   200         // Open transfer dialer
       
   201         phoneState->BeginTransEffectLC( ECallUiDisappear );
       
   202         iViewCommandHandle.ExecuteCommandL( EPhoneViewCreateNumberEntry );
       
   203         phoneState->EndTransEffect();
       
   204         
       
   205         // Update CBA to transfer dialer CBA
       
   206         TPhoneCmdParamInteger resourceId;
       
   207         resourceId.SetInteger( CPhoneMainResourceResolver::Instance()->
       
   208             ResolveResourceID( iTransferDialerController->CbaResourceId() ) );
       
   209         iViewCommandHandle.ExecuteCommandL( EPhoneViewUpdateCba,
       
   210             &resourceId );
       
   211         }
       
   212     else
       
   213         {
       
   214         HBufC *text = HBufC::NewLC( KPhoneNumberEntryBufferSize );
       
   215         TPtr ptr( text->Des() );
       
   216         // Pre-populate the query with the number entry contents, if it exists
       
   217         if ( phoneState->IsNumberEntryUsedL() )
       
   218             {
       
   219             // get the number entry contents
       
   220             TPhoneCmdParamString stringParam;
       
   221             stringParam.SetString( &ptr );
       
   222             iViewCommandHandle.ExecuteCommandL(
       
   223                 EPhoneViewGetLocalizedNumberFromEntry,
       
   224                 &stringParam );
       
   225             }
       
   226         
       
   227         TPhoneCmdParamQuery queryDialogParam;
       
   228         queryDialogParam.SetQueryType( EPhoneGenericTextQuery );
       
   229         queryDialogParam.SetQueryResourceId( 
       
   230             CPhoneMainResourceResolver::Instance()->
       
   231             ResolveResourceID( EPhoneVoIPTransferAddressQuery ) );
       
   232         
       
   233         queryDialogParam.SetDefaultCba( CPhoneMainResourceResolver::Instance()->
       
   234             ResolveResourceID( EPhoneVoIPTransferAddressQueryEmptySoftkeys ) );
       
   235         
       
   236         queryDialogParam.SetContentCba( CPhoneMainResourceResolver::Instance()->
       
   237             ResolveResourceID( EPhoneVoIPTransferAddressQueryNotEmptySoftkeys ) );
       
   238         
       
   239         queryDialogParam.SetDataText( &ptr );
       
   240         queryDialogParam.SetSendKeyEnabled( ETrue );
       
   241         
       
   242         // Display dialog        
       
   243         iViewCommandHandle.ExecuteCommandL( 
       
   244             EPhoneViewShowQuery, &queryDialogParam );
       
   245         
       
   246         CleanupStack::PopAndDestroy( text );
       
   247         }
   164     }
   248     }
   165 
   249 
   166 
   250 
   167 // ---------------------------------------------------------------------------
   251 // ---------------------------------------------------------------------------
   168 // CPhoneUnattendedTransferCmdHandler::DoUnattendedTransferL
   252 // CPhoneUnattendedTransferCmdHandler::DoUnattendedTransferL
   184          phoneState->IsCustomizedDialerVisibleL() )
   268          phoneState->IsCustomizedDialerVisibleL() )
   185         {
   269         {
   186         iViewCommandHandle.ExecuteCommand(
   270         iViewCommandHandle.ExecuteCommand(
   187             EPhoneViewGetNumberFromEntry,
   271             EPhoneViewGetNumberFromEntry,
   188             &transferTarget );  
   272             &transferTarget );  
       
   273         
       
   274         phoneState->CloseCustomizedDialerL();
       
   275         }
       
   276     else
       
   277         {
       
   278         iViewCommandHandle.ExecuteCommandL( 
       
   279             EPhoneViewGetTextQueryContent, &transferTarget );
   189         }
   280         }
   190     
   281     
   191     // Set transfer to address to the phoneengine
   282     // Set transfer to address to the phoneengine
   192     iStateMachine.PhoneEngineInfo()->SetTransferTargetCommand( ptr );
   283     iStateMachine.PhoneEngineInfo()->SetTransferTargetCommand( ptr );
   193     iStateMachine.SendPhoneEngineMessage( 
   284     iStateMachine.SendPhoneEngineMessage( 
   194         MPEPhoneModel::EPEMessageDoUnattendedTransfer );
   285         MPEPhoneModel::EPEMessageDoUnattendedTransfer );
   195     
   286     
   196     ShowWaitingAcceptanceNoteL();
   287     if ( KErrNone == iStateMachine.PhoneEngineInfo()->ErrorInfo().iErrorCode )
       
   288         {
       
   289         ShowWaitingAcceptanceNoteL();
       
   290         }
   197     CleanupStack::PopAndDestroy( content );
   291     CleanupStack::PopAndDestroy( content );
   198     }
   292     }
   199 
   293 
   200 
   294 
   201 // ---------------------------------------------------------------------------
   295 // ---------------------------------------------------------------------------
   204 //
   298 //
   205 void CPhoneUnattendedTransferCmdHandler::CloseTransferDialerL()
   299 void CPhoneUnattendedTransferCmdHandler::CloseTransferDialerL()
   206     {
   300     {
   207     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   301     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   208         "CPhoneUnattendedTransferCmdHandler::CloseTransferDialerL" )
   302         "CPhoneUnattendedTransferCmdHandler::CloseTransferDialerL" )
       
   303     
       
   304     CPhoneState* phoneState = 
       
   305         static_cast< CPhoneState* >( iStateMachine.State() );
       
   306     phoneState->CloseCustomizedDialerL();
   209     }
   307     }
   210 
   308 
   211 
   309 
   212 // ---------------------------------------------------------------------------
   310 // ---------------------------------------------------------------------------
   213 // CPhoneUnattendedTransferCmdHandler::OpenSingleItemContactFetchL
   311 // CPhoneUnattendedTransferCmdHandler::OpenSingleItemContactFetchL
   220        "CPhoneUnattendedTransferCmdHandler::OpenSingleItemContactFetchL" )
   318        "CPhoneUnattendedTransferCmdHandler::OpenSingleItemContactFetchL" )
   221     
   319     
   222     TPhoneCmdParamInteger integerParam;
   320     TPhoneCmdParamInteger integerParam;
   223     integerParam.SetInteger( aFetchType );
   321     integerParam.SetInteger( aFetchType );
   224     
   322     
   225     /*iViewCommandHandle.HandleCommandL( 
   323     iViewCommandHandle.HandleCommandL( 
   226         EPhoneViewOpenSingleItemFetchDialog, 
   324         EPhoneViewOpenSingleItemFetchDialog, 
   227         &integerParam );*/
   325         &integerParam );
   228     }
   326     }
   229 
   327 
   230 // ---------------------------------------------------------------------------
   328 // ---------------------------------------------------------------------------
   231 // CPhoneUnattendedTransferCmdHandler::ShowWaitingAcceptanceNoteL
   329 // CPhoneUnattendedTransferCmdHandler::ShowWaitingAcceptanceNoteL
   232 // ---------------------------------------------------------------------------
   330 // ---------------------------------------------------------------------------
   233 //
   331 //
   234 void CPhoneUnattendedTransferCmdHandler::ShowWaitingAcceptanceNoteL()
   332 void CPhoneUnattendedTransferCmdHandler::ShowWaitingAcceptanceNoteL()
   235     {
   333     {
   236     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   334     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   237         "CPhoneUnattendedTransferCmdHandler::ShowWaitingAcceptanceNoteL" )
   335         "CPhoneUnattendedTransferCmdHandler::ShowWaitingAcceptanceNoteL" )
   238     //TODO: Show "Waiting acceptance..." note
   336     // Show "Waiting acceptance..." note
   239 //    TPhoneCmdParamGlobalNote globalNoteParam;
   337     TPhoneCmdParamGlobalNote globalNoteParam;
   240 //    globalNoteParam.SetType( EAknGlobalWaitNote );
   338     globalNoteParam.SetType( EAknGlobalWaitNote );
   241 //    globalNoteParam.SetTone( EAvkonSIDNoSound );
   339     globalNoteParam.SetTone( EAvkonSIDNoSound );
   242 //    globalNoteParam.SetSoftkeys( R_AVKON_SOFTKEYS_EMPTY );
   340     globalNoteParam.SetSoftkeys( R_AVKON_SOFTKEYS_EMPTY );
   243 //    globalNoteParam.SetTextResourceId( CPhoneMainResourceResolver::Instance()->
   341     globalNoteParam.SetTextResourceId( CPhoneMainResourceResolver::Instance()->
   244 //        ResolveResourceID( EPhoneVoIPWaitingAcceptanceNote ) );
   342         ResolveResourceID( EPhoneVoIPWaitingAcceptanceNote ) );
   245 //    iViewCommandHandle.ExecuteCommandL( 
   343     iViewCommandHandle.ExecuteCommandL( 
   246 //        EPhoneViewShowGlobalNote, &globalNoteParam );
   344         EPhoneViewShowGlobalNote, &globalNoteParam );
   247     }
   345     }
       
   346 
       
   347 // ---------------------------------------------------------------------------
       
   348 // CPhoneUnattendedTransferCmdHandler::LaunchCallBackQuery
       
   349 // ---------------------------------------------------------------------------
       
   350 //
       
   351 void CPhoneUnattendedTransferCmdHandler::LaunchCallBackQueryL()
       
   352     {
       
   353     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
       
   354           "CPhoneUnattendedTransferCmdHandler::LaunchCallBackQueryL() ")
       
   355     MPEEngineInfo* info = iStateMachine.PhoneEngineInfo();
       
   356     const TDesC& callBackToAddr = info->CallBackAddress();
       
   357     // We cannot do call back if original call had private address
       
   358     if ( callBackToAddr.Compare( KNullDesC ) == 0 )
       
   359         {
       
   360         return;
       
   361         }
       
   362           
       
   363     TPhoneCmdParamQuery queryParam;
       
   364     queryParam.SetQueryType( EPhoneGlobalMsgQuery );
       
   365     
       
   366     HBufC* msgHeader = 
       
   367       StringLoader::LoadLC( CPhoneMainResourceResolver::Instance()->
       
   368           ResolveResourceID( EPhoneVoIPTransferCallBackHeader ) );
       
   369     queryParam.SetQueryPrompt( *msgHeader );
       
   370          
       
   371     HBufC* queryText = 
       
   372       StringLoader::LoadLC( CPhoneMainResourceResolver::Instance()->
       
   373           ResolveResourceID( 
       
   374                   EPhoneVoIPTransferCallBackText ), callBackToAddr );
       
   375     
       
   376     queryParam.SetDataText( &queryText->Des() );
       
   377     
       
   378     queryParam.SetDefaultCba( R_AVKON_SOFTKEYS_OK_CANCEL );
       
   379     
       
   380     // configure custom command mappings for user responses
       
   381     queryParam.SetCbaCommandMapping( 
       
   382       EAknSoftkeyOk, EPhoneCmdUnattendedTransferCallBackOk );
       
   383     queryParam.SetCbaCommandMapping( 
       
   384       EAknSoftkeyCancel, EPhoneCmdUnattendedTransferCallBackCancel );
       
   385     
       
   386     iViewCommandHandle.ExecuteCommandL( EPhoneViewShowQuery, &queryParam );
       
   387     
       
   388     CleanupStack::PopAndDestroy( queryText );
       
   389     CleanupStack::PopAndDestroy( msgHeader );
       
   390     }