phoneapp/phoneuiview/src/cphonedialercontroller.cpp
changeset 0 5f000ab63145
child 9 8871b09be73b
equal deleted inserted replaced
-1:000000000000 0:5f000ab63145
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Handles the updating of dialer buttons
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <eikappui.h>
       
    20 #include <eikenv.h>
       
    21 #include <eikapp.h>
       
    22 #include <eikcolib.h>
       
    23 #include <gulicon.h>
       
    24 #include <akntoolbar.h>
       
    25 #include <aknbutton.h>
       
    26 #include <StringLoader.h>
       
    27 #include <phoneui.rsg>
       
    28 #include <pevirtualengine.h>
       
    29 #include <data_caging_path_literals.hrh>
       
    30 
       
    31 #include "cphonedialercontroller.h"
       
    32 #include "cphonebubblewrapper.h"
       
    33 #include "phoneui.hrh"
       
    34 #include "phonerssbase.h"
       
    35 #include "tphonecmdparaminteger.h"
       
    36 #include "cphonemenucontroller.h"
       
    37 #include "cphonemainresourceresolver.h"
       
    38 #include "tphonecmdparamcallstatedata.h"
       
    39 #include "tphonecmdparamboolean.h"
       
    40 #include "mphonedialercontroller.h"
       
    41 
       
    42 _LIT ( KPhoneMifFileName, "phoneui.mif" );
       
    43 _LIT( KDialerToolbarButtonEmptyStr, "" );
       
    44 
       
    45 const TInt KNumberOfButtons = 6;
       
    46 struct SPhoneDialerToolbarButton
       
    47     {
       
    48     TInt iIconIndex;
       
    49     TInt iMaskIndex;
       
    50     TInt iCommandId;    
       
    51     };
       
    52 
       
    53 const SPhoneDialerToolbarButton bArray[KNumberOfButtons] =
       
    54         {  
       
    55             { EMbmPhoneuiQgn_indi_dialer_call_send,
       
    56               EMbmPhoneuiQgn_indi_dialer_call_send_mask,
       
    57               EPhoneDialerCmdLog
       
    58             },
       
    59             { EMbmPhoneuiQgn_indi_dialer_call_send,
       
    60               EMbmPhoneuiQgn_indi_dialer_call_send_mask,
       
    61               EPhoneNumberAcqCmdSendCommand
       
    62             },        
       
    63             
       
    64             { EMbmPhoneuiQgn_indi_button_send_dtmf,
       
    65               EMbmPhoneuiQgn_indi_button_send_dtmf_mask,
       
    66               EPhoneCmdDtmfOk
       
    67             },               
       
    68             { EMbmPhoneuiQgn_indi_dialer_contacts,
       
    69               EMbmPhoneuiQgn_indi_dialer_contacts_mask,
       
    70               EPhoneDialerCmdContacts
       
    71             },
       
    72             { EMbmPhoneuiQgn_indi_dialer_add_contacts,
       
    73               EMbmPhoneuiQgn_indi_dialer_add_contacts_mask,
       
    74               EPhoneNumberAcqCmdAddToContacts
       
    75             },            
       
    76             { EMbmPhoneuiQgn_indi_dialer_clear,
       
    77               EMbmPhoneuiQgn_indi_dialer_clear_mask,
       
    78               EPhoneDialerCmdClear
       
    79             }
       
    80         }; 
       
    81 
       
    82 const TInt KDialerToolbarButtonCount = 6; 
       
    83 const TInt KDialerToolbarButtonKeyRepeatDelay = 300;
       
    84 const TInt KDialerToolbarKeyRepeatInterval = 75;
       
    85 
       
    86 // ======== MEMBER FUNCTIONS ========
       
    87 
       
    88 // ---------------------------------------------------------------------------
       
    89 // Constructor
       
    90 // ---------------------------------------------------------------------------
       
    91 //
       
    92 CPhoneDialerController::CPhoneDialerController( 
       
    93                                         CPhoneBubbleWrapper& aBubbleWrapper,
       
    94                                         CCoeEnv& aCoeEnv,
       
    95                                         CPhoneMenuController& aMenuController ):
       
    96     iBubbleWrapper ( aBubbleWrapper ),
       
    97     iCoeEnv ( aCoeEnv ),
       
    98     iMenuController( aMenuController ),
       
    99     iUpdateToolbar( EFalse )
       
   100     {
       
   101     }
       
   102 
       
   103 // ---------------------------------------------------------------------------
       
   104 // Second phase constructor
       
   105 // ---------------------------------------------------------------------------
       
   106 //
       
   107 void CPhoneDialerController::ConstructL()
       
   108     {
       
   109    
       
   110     iBubbleWrapper.SetNumberEntryObserver( *this );
       
   111    
       
   112     if ( !iToolbar )
       
   113         {
       
   114         iToolbar = CAknToolbar::NewL( R_PHONEUI_TOOLBAR );
       
   115         }
       
   116   
       
   117     CEikAppUiFactory* appUiFactory =
       
   118         static_cast<CEikAppUiFactory*>( CEikonEnv::Static()->AppUiFactory() );  
       
   119     appUiFactory->SetViewFixedToolbar( iToolbar );
       
   120     
       
   121     if( iToolbar )
       
   122         {
       
   123         iToolbar->SetToolbarObserver( 
       
   124                         static_cast<MAknToolbarObserver*>( this ));  
       
   125         iToolbar->SetWithSliding( EFalse );
       
   126         iToolbar->SetCloseOnAllCommands( EFalse );
       
   127         iToolbar->SetFocusing( EFalse );
       
   128         
       
   129         CAknButton* button( NULL );
       
   130 
       
   131         for( TInt i = 0; i < KDialerToolbarButtonCount; i++ )
       
   132             {
       
   133             TAknsItemID skinId = SkinId( bArray[i].iIconIndex );
       
   134             // Load tooltip text.
       
   135             HBufC* tooltipText;
       
   136             GetTooltipTextL ( bArray[i].iCommandId, tooltipText );  
       
   137             CleanupStack::PushL( tooltipText );      
       
   138          
       
   139             button = CreateButtonLC(
       
   140                 bArray[i].iIconIndex, 
       
   141                 bArray[i].iMaskIndex, 
       
   142                 *tooltipText, 
       
   143                 skinId,
       
   144                 bArray[i].iCommandId );
       
   145             // Takes ownership of the button                    
       
   146             iToolbar->AddItemL( button, EAknCtButton, bArray[i].iCommandId,0 );
       
   147            
       
   148             CleanupStack::Pop( button );
       
   149             CleanupStack::PopAndDestroy( tooltipText );
       
   150             }
       
   151        
       
   152         // Hide 'Send dtmf' icon
       
   153         iToolbar->HideItem( EPhoneCmdDtmfOk, ETrue, EFalse );
       
   154         TRAP_IGNORE(iToolbar->DisableToolbarL( ETrue ));
       
   155         }
       
   156     }
       
   157     
       
   158 // ---------------------------------------------------------------------------
       
   159 // CreateButtonL
       
   160 // ---------------------------------------------------------------------------
       
   161 //
       
   162 CAknButton* CPhoneDialerController::CreateButtonLC( 
       
   163     TInt aNormalIconId,
       
   164     TInt aNormalMaskId,
       
   165     const TDesC& aTooltipText,
       
   166     const TAknsItemID& aSkinIconId,
       
   167     TInt aCommand )
       
   168     {
       
   169     TFileName mifPath( KDriveZ );
       
   170     mifPath.Append( KDC_APP_BITMAP_DIR );
       
   171     mifPath.Append( KPhoneMifFileName );
       
   172 
       
   173    
       
   174     CAknButton* button = CAknButton::NewLC( 
       
   175         mifPath,
       
   176         aNormalIconId,
       
   177         aNormalMaskId,
       
   178         -1, -1, // dimmed
       
   179         -1, -1, // pressed
       
   180         -1, -1, // hover
       
   181         KDialerToolbarButtonEmptyStr(),
       
   182         aTooltipText, // help
       
   183         0, // flags
       
   184         0, // state flags
       
   185         aSkinIconId );
       
   186                                
       
   187     if( aCommand == EPhoneDialerCmdClear )
       
   188         {
       
   189         button->SetButtonFlags( KAknButtonKeyRepeat );
       
   190         // delay 300 ms and repeat 75 ms interval   
       
   191         button->SetKeyRepeatInterval( KDialerToolbarButtonKeyRepeatDelay,
       
   192                                       KDialerToolbarKeyRepeatInterval );
       
   193         }
       
   194                                      
       
   195     button->SetFocusing( EFalse );
       
   196     button->SetBackground( iToolbar );
       
   197 
       
   198     return button;
       
   199     }
       
   200     
       
   201     
       
   202 // ---------------------------------------------------------------------------
       
   203 // Static constructor
       
   204 // ---------------------------------------------------------------------------
       
   205 //
       
   206 CPhoneDialerController* CPhoneDialerController::NewL( 
       
   207                                     CPhoneBubbleWrapper& aBubbleWrapper,
       
   208                                     CCoeEnv& aCoeEnv,
       
   209                                     CPhoneMenuController& aMenuController  )
       
   210     {
       
   211     CPhoneDialerController* self =  new (ELeave) CPhoneDialerController( 
       
   212                                         aBubbleWrapper
       
   213                                        , aCoeEnv
       
   214                                        , aMenuController );
       
   215     CleanupStack::PushL( self );
       
   216     self->ConstructL();
       
   217     CleanupStack::Pop( self );
       
   218     return self;
       
   219     }
       
   220 
       
   221 // ---------------------------------------------------------------------------
       
   222 // Destructor
       
   223 // ---------------------------------------------------------------------------
       
   224 //
       
   225 CPhoneDialerController::~CPhoneDialerController()
       
   226     {
       
   227     delete iToolbar;
       
   228     }
       
   229 
       
   230 // ---------------------------------------------------------------------------
       
   231 // NumberEntryStateChanged
       
   232 // ---------------------------------------------------------------------------
       
   233 //
       
   234 void CPhoneDialerController::NumberEntryStateChanged( TBool aHidePromptText )
       
   235     {
       
   236     if( aHidePromptText != iPreviousHidePromptTextStatus )
       
   237         {
       
   238         iPreviousHidePromptTextStatus = aHidePromptText; 
       
   239         iUpdateToolbar = ETrue;
       
   240         }
       
   241     
       
   242     HandleNumberEntryChanged();
       
   243     
       
   244     }
       
   245 
       
   246 // ---------------------------------------------------------------------------
       
   247 // HandleNumberEntryChanged
       
   248 // ---------------------------------------------------------------------------
       
   249 //
       
   250 void CPhoneDialerController::HandleNumberEntryChanged()
       
   251     {
       
   252     if( iUpdateToolbar )
       
   253         {
       
   254         UpdateToolbar();
       
   255         iUpdateToolbar = EFalse;        
       
   256         }
       
   257     
       
   258     iBubbleWrapper.HandleNumberEntryChanged();
       
   259     
       
   260     } 
       
   261 
       
   262 // ---------------------------------------------------------------------------
       
   263 // HandleNumberEntryChanged
       
   264 // ---------------------------------------------------------------------------
       
   265 //
       
   266 void CPhoneDialerController::SetNumberEntryChangedCallBack( 
       
   267         TPhoneCommandParam* aCommandParam )
       
   268     {
       
   269     iBubbleWrapper.SetNumberEntryChangedCallBack( aCommandParam );
       
   270     
       
   271     }
       
   272      
       
   273 // ---------------------------------------------------------------------------
       
   274 // CreateButtonSetNumberEntryEmpty
       
   275 // ---------------------------------------------------------------------------
       
   276 //
       
   277 void CPhoneDialerController::CreateButtonSetNumberEntryEmpty()
       
   278     {
       
   279     
       
   280     if( iToolbar )
       
   281         {
       
   282         if( iDtmfDialerVisible )
       
   283             {
       
   284             // Dim 'Send dtmf' 
       
   285             iToolbar->SetItemDimmed( EPhoneCmdDtmfOk, ETrue, EFalse );
       
   286             }
       
   287         else if ( iCustomizedDialer )
       
   288             {
       
   289             iCustomizedDialer->HandleNumberEntryIsEmpty( ETrue );
       
   290             }
       
   291         else
       
   292             {         
       
   293             // Show 'Logs ' and 'Contacts' items
       
   294             iToolbar->HideItem( EPhoneDialerCmdLog, EFalse,EFalse );
       
   295             iToolbar->HideItem( EPhoneDialerCmdContacts, EFalse, EFalse );
       
   296             
       
   297             if ( iRestrictedDialer )
       
   298                 {
       
   299                 // Dim 'Logs' 
       
   300                 iToolbar->SetItemDimmed( EPhoneDialerCmdLog, ETrue
       
   301                                        , EFalse );
       
   302                 // Dim 'Contacts' 
       
   303                 iToolbar->SetItemDimmed( EPhoneDialerCmdContacts, ETrue
       
   304                                        , EFalse );
       
   305                 }
       
   306                             
       
   307             // Hide 'Send' and 'Add to contacts'        
       
   308             iToolbar->HideItem( EPhoneNumberAcqCmdSendCommand, ETrue
       
   309                                 , EFalse );
       
   310             iToolbar->HideItem( EPhoneNumberAcqCmdAddToContacts, ETrue
       
   311                                 , EFalse );                
       
   312             }        
       
   313         }
       
   314     }
       
   315 
       
   316 // ---------------------------------------------------------------------------
       
   317 // CreateButtonSetNumberEntryNotEmpty
       
   318 // ---------------------------------------------------------------------------
       
   319 //
       
   320 void CPhoneDialerController::CreateButtonSetNumberEntryNotEmpty()
       
   321     {
       
   322     if( iToolbar )
       
   323         {
       
   324         if( iDtmfDialerVisible )
       
   325             {
       
   326             // Show 'Send dtmf' 
       
   327             iToolbar->SetItemDimmed( EPhoneCmdDtmfOk, EFalse, EFalse );
       
   328             }           
       
   329         else if ( iCustomizedDialer )
       
   330             {
       
   331             iCustomizedDialer->HandleNumberEntryIsEmpty( EFalse );
       
   332             }
       
   333         else
       
   334             {
       
   335             // Show 'Send' and 'Add to contacts'
       
   336             iToolbar->HideItem( EPhoneNumberAcqCmdAddToContacts, EFalse
       
   337                               , EFalse );      
       
   338             iToolbar->HideItem( EPhoneNumberAcqCmdSendCommand, EFalse
       
   339                               , EFalse );  
       
   340                     
       
   341             if ( iRestrictedDialer )
       
   342                 {
       
   343                 // Dim 'Send' 
       
   344                 iToolbar->SetItemDimmed( EPhoneNumberAcqCmdSendCommand, ETrue
       
   345                                        , EFalse );
       
   346                 // Dim 'Add to Contacts' 
       
   347                 iToolbar->SetItemDimmed( EPhoneNumberAcqCmdAddToContacts, ETrue
       
   348                                        , EFalse );
       
   349                 }  
       
   350                            
       
   351             // Hide 'Logs ' and 'Contacts' 
       
   352             iToolbar->HideItem( EPhoneDialerCmdLog, ETrue,EFalse );
       
   353             iToolbar->HideItem( EPhoneDialerCmdContacts, ETrue, EFalse ); 
       
   354             
       
   355             TPhoneCmdParamCallStateData callStateData;
       
   356             callStateData.SetCallState( EPEStateConnected );
       
   357             iBubbleWrapper.GetCallIdByState( &callStateData );
       
   358             TInt connected = callStateData.CallId();    
       
   359              
       
   360             //If there is a active emergency call, Send item must be dimmed.  
       
   361             if ( connected == KEmergencyCallId )
       
   362                 {
       
   363                 //Dim Send
       
   364                 iToolbar->SetItemDimmed( EPhoneNumberAcqCmdSendCommand, ETrue
       
   365                                         ,EFalse );                
       
   366                 }
       
   367             else
       
   368                 {
       
   369                 //UnDim
       
   370                 iToolbar->SetItemDimmed( EPhoneNumberAcqCmdSendCommand, EFalse
       
   371                                         ,EFalse );                     
       
   372                 }
       
   373             }    
       
   374         }
       
   375     }
       
   376 
       
   377 // ---------------------------------------------------------------------------
       
   378 // SetDtmfDialerVisibleL
       
   379 // ---------------------------------------------------------------------------
       
   380 //
       
   381 void CPhoneDialerController::SetDtmfDialerVisibleL( TBool aVisible )
       
   382     {
       
   383     iDtmfDialerVisible = aVisible;
       
   384     
       
   385     if( iDtmfDialerVisible )
       
   386         {
       
   387         // Load prompt resource text to DTMF dialer.
       
   388         TInt resourceId = CPhoneMainResourceResolver::Instance()->
       
   389                     ResolveResourceID( EPhoneDtmfDialerNumberEntryPromptText ); 
       
   390                     
       
   391         HBufC* loadedText = StringLoader::LoadL( resourceId
       
   392                                                , &iCoeEnv );
       
   393 
       
   394         iBubbleWrapper.SetNumberEntryPromptText( loadedText->Des() );
       
   395         
       
   396         delete loadedText;
       
   397         }
       
   398     else        
       
   399         { 
       
   400         // Clear prompt text.    
       
   401         iBubbleWrapper.SetNumberEntryPromptText( KNullDesC );  
       
   402                  
       
   403         // Hide
       
   404         iToolbar->HideItem( EPhoneCmdDtmfOk, ETrue, EFalse );  
       
   405            
       
   406         // Show       
       
   407         iToolbar->HideItem( EPhoneNumberAcqCmdSendCommand, EFalse, EFalse );
       
   408         iToolbar->HideItem( EPhoneDialerCmdLog, EFalse, EFalse );            
       
   409         iToolbar->HideItem( EPhoneNumberAcqCmdAddToContacts, EFalse, EFalse );    
       
   410         // Dimming 
       
   411         iToolbar->SetItemDimmed( EPhoneDialerCmdContacts, EFalse, EFalse );                
       
   412         }
       
   413     }
       
   414     
       
   415 // ---------------------------------------------------------------------------
       
   416 // SetRestrictedDialerL
       
   417 // ---------------------------------------------------------------------------
       
   418 //
       
   419 void CPhoneDialerController::SetRestrictedDialer( TBool aRestricted )
       
   420     {
       
   421     iRestrictedDialer = aRestricted;
       
   422     }
       
   423 // ---------------------------------------------------------------------------
       
   424 // UpdateToolbar
       
   425 // ---------------------------------------------------------------------------
       
   426 //
       
   427 void CPhoneDialerController::UpdateToolbar()
       
   428     {
       
   429     
       
   430     TPhoneCmdParamInteger numberEntryCountParam;
       
   431     iBubbleWrapper.GetNumberEntryCount( 
       
   432                             (TPhoneCommandParam*) &numberEntryCountParam );
       
   433     TInt neLength( numberEntryCountParam.Integer() );
       
   434     
       
   435     if ( neLength )
       
   436         {
       
   437         CreateButtonSetNumberEntryNotEmpty();
       
   438         iToolbar->SetItemDimmed( EPhoneDialerCmdClear, EFalse, EFalse );  
       
   439         iToolbar->DrawDeferred();     
       
   440         
       
   441         //Update also options menu via controller
       
   442         iMenuController.SetNumberEntryEmptyFlag( EFalse );        
       
   443         }
       
   444         
       
   445     else
       
   446         {
       
   447         CreateButtonSetNumberEntryEmpty();
       
   448         iToolbar->SetItemDimmed( EPhoneDialerCmdClear, ETrue, EFalse );
       
   449         iToolbar->DrawDeferred();
       
   450         
       
   451         //Update also options menu via controller
       
   452         iMenuController.SetNumberEntryEmptyFlag( ETrue );                  
       
   453         } 
       
   454 
       
   455     }   
       
   456 
       
   457 // ---------------------------------------------------------------------------
       
   458 // OfferToolbarEventL
       
   459 // ---------------------------------------------------------------------------
       
   460 //
       
   461 void CPhoneDialerController::OfferToolbarEventL( TInt aCommand )
       
   462     {
       
   463     switch ( aCommand )
       
   464         {
       
   465         case EPhoneDialerCmdClear:
       
   466             {
       
   467             // Send key event.
       
   468             TKeyEvent keyEvent;
       
   469             keyEvent.iModifiers = 0;
       
   470             keyEvent.iRepeats = 0;
       
   471             keyEvent.iCode = EKeyBackspace;
       
   472             keyEvent.iScanCode = EStdKeyBackspace;
       
   473             iCoeEnv.SimulateKeyEventL( keyEvent, EEventKey );
       
   474             }
       
   475             break;   
       
   476         default:
       
   477             {
       
   478             // Forward pressed toolbar button to the framework 
       
   479             // so that we can handle it in active state            
       
   480             static_cast<MEikCommandObserver*>( CEikonEnv::Static()->EikAppUi() )
       
   481                ->ProcessCommandL( aCommand );            
       
   482             }
       
   483             break;    
       
   484         }
       
   485     } 
       
   486    
       
   487 // ---------------------------------------------------------------------------
       
   488 // DynInitToolbarL
       
   489 // ---------------------------------------------------------------------------
       
   490 //
       
   491 void CPhoneDialerController::DynInitToolbarL( TInt aResourceId, 
       
   492                                               CAknToolbar* /*aToolbar*/ )
       
   493     { 
       
   494     if ( aResourceId == R_PHONEUI_TOOLBAR )
       
   495         {
       
   496         if ( !iDtmfDialerVisible )
       
   497             {
       
   498             UpdateToolbar();
       
   499             }
       
   500         else
       
   501             {
       
   502             // initialize toolbar for dtmf dialer
       
   503             //
       
   504             // Show
       
   505             iToolbar->HideItem( EPhoneCmdDtmfOk, EFalse, EFalse );
       
   506             iToolbar->HideItem( EPhoneDialerCmdContacts, EFalse, EFalse );     
       
   507             
       
   508             // Hide
       
   509             iToolbar->HideItem( EPhoneNumberAcqCmdSendCommand, ETrue, EFalse );
       
   510             iToolbar->HideItem( EPhoneDialerCmdLog, ETrue, EFalse );            
       
   511             iToolbar->HideItem( EPhoneNumberAcqCmdAddToContacts, ETrue
       
   512                               , EFalse );     
       
   513             
       
   514             // Dimming
       
   515             iToolbar->SetItemDimmed( EPhoneDialerCmdContacts, ETrue, EFalse ); 
       
   516             iToolbar->SetItemDimmed( EPhoneCmdDtmfOk, ETrue, EFalse );                   
       
   517             }
       
   518         }     
       
   519     }
       
   520 // ---------------------------------------------------------------------------
       
   521 // IsDTMFDialerVisible
       
   522 // ---------------------------------------------------------------------------
       
   523 //
       
   524 TBool CPhoneDialerController::IsDTMFDialerVisible() const
       
   525     {
       
   526     return iDtmfDialerVisible;
       
   527     }
       
   528 
       
   529 
       
   530 // ---------------------------------------------------------------------------
       
   531 // GetTooltipText
       
   532 //
       
   533 // Tooltip texts for toolbar buttons
       
   534 // ---------------------------------------------------------------------------
       
   535 //
       
   536 void  CPhoneDialerController::GetTooltipTextL( TInt aCommandId, HBufC*& aText ) 
       
   537     {
       
   538     TInt resourceId = 0;
       
   539     switch( aCommandId )
       
   540         {
       
   541         case EPhoneDialerCmdLog:
       
   542             resourceId = R_PHONEUI_DIALER_TOOLTIP_RECENT_CALLS;
       
   543             break;              
       
   544                   
       
   545         case EPhoneNumberAcqCmdSendCommand:
       
   546             resourceId = R_PHONEUI_DIALER_TOOLTIP_CALL;
       
   547             break;      
       
   548                           
       
   549         case EPhoneCmdDtmfOk:
       
   550             resourceId = R_PHONEUI_DIALER_TOOLTIP_SEND;
       
   551             break;   
       
   552                              
       
   553         case EPhoneDialerCmdContacts:
       
   554             resourceId = R_PHONEUI_DIALER_TOOLTIP_CONTACTS;
       
   555             break;   
       
   556                              
       
   557         case EPhoneNumberAcqCmdAddToContacts:
       
   558             resourceId = R_PHONEUI_DIALER_TOOLTIP_ADD_TO_CONTACTS;
       
   559             break;   
       
   560                              
       
   561         case EPhoneDialerCmdClear:
       
   562             resourceId = R_PHONEUI_DIALER_TOOLTIP_CLEAR;
       
   563             break;
       
   564         default:
       
   565             aText = KNullDesC().Alloc();
       
   566             break;
       
   567         }
       
   568         
       
   569     if( resourceId )
       
   570         {
       
   571         aText = StringLoader::LoadL( resourceId, &iCoeEnv );
       
   572         }
       
   573         
       
   574     }
       
   575 // ---------------------------------------------------------------------------
       
   576 // SetServiceCodeFlagL
       
   577 //
       
   578 // Change call button tooltip text between 'Send' or 'Call'
       
   579 // 
       
   580 // ---------------------------------------------------------------------------
       
   581 //
       
   582 void CPhoneDialerController::SetServiceCodeFlagL( 
       
   583     TPhoneCommandParam* aCommandParam )
       
   584     {
       
   585     
       
   586     // Check is the given parameter valid
       
   587     if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
       
   588         {   
       
   589         TInt resourceId = 0;
       
   590         TPhoneCmdParamBoolean* serviceCodeFlag = 
       
   591             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   592         // Sanity check
       
   593         if( serviceCodeFlag->Boolean() == iServiceCodeFlag )
       
   594             {
       
   595             return;
       
   596             }
       
   597         // Get the toolbar button control
       
   598         CAknButton* button = static_cast<CAknButton*>
       
   599         ( iToolbar->ControlOrNull( EPhoneNumberAcqCmdSendCommand) );
       
   600         
       
   601         CAknButtonState* state = button->State();                              
       
   602         if ( serviceCodeFlag->Boolean() )
       
   603             {
       
   604             iServiceCodeFlag = ETrue;
       
   605             resourceId = R_PHONEUI_DIALER_TOOLTIP_SEND;
       
   606             }
       
   607         else
       
   608             {
       
   609             iServiceCodeFlag = EFalse;
       
   610             resourceId = R_PHONEUI_DIALER_TOOLTIP_CALL;
       
   611             }  
       
   612                 
       
   613         if( resourceId )
       
   614             {    
       
   615             // Change text              
       
   616             HBufC* tooltipText = StringLoader::LoadL( resourceId,
       
   617                                              CCoeEnv::Static() );
       
   618             CleanupStack::PushL( tooltipText );                                         
       
   619             state->SetHelpTextL( *tooltipText );
       
   620             CleanupStack::PopAndDestroy( tooltipText );   
       
   621             }
       
   622         }
       
   623     }
       
   624 
       
   625 // ---------------------------------------------------------------------------
       
   626 // ShowToolbar
       
   627 //
       
   628 // ---------------------------------------------------------------------------
       
   629 //
       
   630 void CPhoneDialerController::ShowToolbar()
       
   631     {
       
   632     if ( iToolbar )
       
   633         {
       
   634         if ( iToolbar->IsToolbarDisabled() )
       
   635             {
       
   636             TRAP_IGNORE(iToolbar->DisableToolbarL( EFalse ));
       
   637             }
       
   638         iToolbar->HideItemsAndDrawOnlyBackground( EFalse );
       
   639         iToolbar->SetToolbarVisibility( ETrue, EFalse );
       
   640         }
       
   641     }
       
   642 
       
   643 // ---------------------------------------------------------------------------
       
   644 // HideToolbar
       
   645 //
       
   646 // ---------------------------------------------------------------------------
       
   647 //
       
   648 void CPhoneDialerController::HideToolbar()
       
   649     {
       
   650     if ( iToolbar )
       
   651         {
       
   652         if( iToolbar->IsShown() )
       
   653             {
       
   654             iToolbar->HideItemsAndDrawOnlyBackground( ETrue );
       
   655             }
       
   656         else if ( iToolbar->IsToolbarDisabled() )
       
   657             {
       
   658             TRAP_IGNORE(iToolbar->DisableToolbarL( EFalse ));
       
   659             iToolbar->HideItemsAndDrawOnlyBackground( ETrue );
       
   660             iToolbar->SetToolbarVisibility( ETrue, EFalse );
       
   661             }
       
   662         }        
       
   663     }
       
   664 
       
   665 // ---------------------------------------------------------------------------
       
   666 // ShowCustomizedDialerL
       
   667 //
       
   668 // Sets custom dialer buttons visible
       
   669 // 
       
   670 // ---------------------------------------------------------------------------
       
   671 //
       
   672 void CPhoneDialerController::ShowCustomizedDialerL( 
       
   673     MPhoneDialerController* aCustomController )
       
   674     {  
       
   675     if ( aCustomController )
       
   676         {
       
   677         // Hide all buttons except clear button 
       
   678         for ( TInt i = 0; i < KNumberOfButtons; i++ )
       
   679             {
       
   680             if ( bArray[ i ].iCommandId != EPhoneDialerCmdClear )
       
   681                 {
       
   682                 iToolbar->HideItem( bArray[ i ].iCommandId, ETrue, EFalse );
       
   683                 }
       
   684             }
       
   685  
       
   686         aCustomController->InitializeL( *iToolbar );
       
   687         iBubbleWrapper.SetNumberEntryPromptText( 
       
   688             aCustomController->NumberEntryPromptTextL() );
       
   689         aCustomController->ShowButtons( ETrue );
       
   690         }
       
   691     iCustomizedDialer = aCustomController;
       
   692     }
       
   693 
       
   694 // ---------------------------------------------------------------------------
       
   695 // HideCustomizedDialerL
       
   696 //
       
   697 // Hides custom dialer buttons 
       
   698 // 
       
   699 // ---------------------------------------------------------------------------
       
   700 //
       
   701 void CPhoneDialerController::HideCustomizedDialer()
       
   702     {  
       
   703     iCustomizedDialer->ShowButtons( EFalse );
       
   704     iBubbleWrapper.SetNumberEntryPromptText( KNullDesC );              
       
   705     iCustomizedDialer = NULL;
       
   706     }
       
   707 
       
   708 // ---------------------------------------------------------------------------
       
   709 // IsCustomizedDialerVisible
       
   710 // ---------------------------------------------------------------------------
       
   711 //
       
   712 TBool CPhoneDialerController::IsCustomizedDialerVisible() const
       
   713     {
       
   714     return ( NULL != iCustomizedDialer );
       
   715     }
       
   716 
       
   717 // ---------------------------------------------------------------------------
       
   718 // CustomizedCbaResourceId
       
   719 // ---------------------------------------------------------------------------
       
   720 //
       
   721 TInt CPhoneDialerController::CustomizedCbaResourceId() const
       
   722     {
       
   723     TInt resourceId = KErrNotFound;
       
   724     if ( iCustomizedDialer )
       
   725         {
       
   726         resourceId = iCustomizedDialer->CbaResourceId();
       
   727         }
       
   728     return resourceId;
       
   729     }
       
   730 
       
   731 // ---------------------------------------------------------------------------
       
   732 // CustomizedMenuResourceId
       
   733 // ---------------------------------------------------------------------------
       
   734 //
       
   735 TInt CPhoneDialerController::CustomizedMenuResourceId() const
       
   736     {
       
   737     TInt resourceId = KErrNotFound;
       
   738     if ( iCustomizedDialer )
       
   739         {
       
   740         resourceId = iCustomizedDialer->MenuResourceId();  
       
   741         }
       
   742     return resourceId;
       
   743     }
       
   744 
       
   745 // END