phoneapp/phoneuiview/src/cphonedialercontroller.cpp
branchRCL_3
changeset 25 91c2fb4b78df
parent 17 38529f706030
child 31 ba54057fe027
equal deleted inserted replaced
19:544e34b3255a 25:91c2fb4b78df
    24 #include <StringLoader.h>
    24 #include <StringLoader.h>
    25 #include <AknsUtils.h>
    25 #include <AknsUtils.h>
    26 #include <phoneui.rsg>
    26 #include <phoneui.rsg>
    27 #include <phoneui.mbg>
    27 #include <phoneui.mbg>
    28 #include <pevirtualengine.h>
    28 #include <pevirtualengine.h>
       
    29 #include <featmgr.h>
    29 #include <data_caging_path_literals.hrh>
    30 #include <data_caging_path_literals.hrh>
    30 
    31 
    31 #include "cphonedialercontroller.h"
    32 #include "cphonedialercontroller.h"
    32 #include "cphoneeasydialingcontroller.h"
    33 #include "cphoneeasydialingcontroller.h"
    33 #include "cphonebubblewrapper.h"
    34 #include "cphonebubblewrapper.h"
    47     ECallButtonLogState,
    48     ECallButtonLogState,
    48     ECallButtonSendState
    49     ECallButtonSendState
    49     };
    50     };
    50 static const CPhoneDialerController::TLocalButtonData KCallButtonDataTable[] =
    51 static const CPhoneDialerController::TLocalButtonData KCallButtonDataTable[] =
    51     {
    52     {
    52         { EPhoneNumberAcqCmdSendCommand, 
    53         { 
    53           EAknsMinorGenericQgnIndiButtonAnswerWhite,
    54         EPhoneNumberAcqCmdSendCommand, 
    54           EMbmPhoneuiQgn_indi_button_answer_white, 
    55         EAknsMinorGenericQgnIndiButtonAnswerWhite,
    55           EMbmPhoneuiQgn_indi_button_answer_white_mask,
    56         EMbmPhoneuiQgn_indi_button_answer_white, 
    56           R_PHONEUI_DIALER_TOOLTIP_CALL
    57         EMbmPhoneuiQgn_indi_button_answer_white_mask,
       
    58         R_PHONEUI_DIALER_TOOLTIP_CALL
    57         },
    59         },
    58         { EPhoneDialerCmdLog,
    60         { 
    59           EAknsMinorGenericQgnIndiButtonLogdialerWhite,
    61         EPhoneDialerCmdLog,
    60           EMbmPhoneuiQgn_indi_button_logdialer_white,
    62         EAknsMinorGenericQgnIndiButtonLogdialerWhite,
    61           EMbmPhoneuiQgn_indi_button_logdialer_white_mask,
    63         EMbmPhoneuiQgn_indi_button_logdialer_white,
    62           R_PHONEUI_DIALER_TOOLTIP_RECENT_CALLS
    64         EMbmPhoneuiQgn_indi_button_logdialer_white_mask,
       
    65         R_PHONEUI_DIALER_TOOLTIP_RECENT_CALLS
    63         },
    66         },
    64         { EPhoneNumberAcqCmdSendCommand, 
    67         { 
    65           EAknsMinorGenericQgnIndiButtonAnswerWhite,
    68         EPhoneNumberAcqCmdSendCommand, 
    66           EMbmPhoneuiQgn_indi_button_answer_white, 
    69         EAknsMinorGenericQgnIndiButtonAnswerWhite,
    67           EMbmPhoneuiQgn_indi_button_answer_white_mask,
    70         EMbmPhoneuiQgn_indi_button_answer_white, 
    68           R_PHONEUI_DIALER_TOOLTIP_SEND
    71         EMbmPhoneuiQgn_indi_button_answer_white_mask,
       
    72         R_PHONEUI_DIALER_TOOLTIP_SEND
    69         }
    73         }
    70     };
    74     };
    71 static const TInt KCallButtonDataTableCount = 
    75 static const TInt KCallButtonDataTableCount = 
    72     sizeof( KCallButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData );
    76     sizeof( KCallButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData );
    73 
    77 
    74 
       
    75 /** States for Phonebook button */
    78 /** States for Phonebook button */
    76 enum TPhonebookButtonState
    79 enum TPhonebookButtonState
    77     {
    80     {
    78     EPhonebookButtonContactsState = 0,
    81     EPhonebookButtonContactsState = 0,
    79     EPhonebookButtonAddContactState
    82     EPhonebookButtonAddContactState,
       
    83     // Video call button send state
       
    84     EPhonebookButtonVideocallSendState,
       
    85     // Video call button call state
       
    86     EPhonebookButtonVideocallState
    80     };
    87     };
    81 static const CPhoneDialerController::TLocalButtonData KPhonebookButtonDataTable[] =
    88 static const CPhoneDialerController::TLocalButtonData KPhonebookButtonDataTable[] =
    82     {
    89     {
    83         { EPhoneDialerCmdContacts,
    90         { 
    84           EAknsMinorGenericQgnIndiDialerContacts,
    91         EPhoneDialerCmdContacts,
    85           EMbmPhoneuiQgn_indi_dialer_contacts,
    92         EAknsMinorGenericQgnIndiDialerContacts,
    86           EMbmPhoneuiQgn_indi_dialer_contacts_mask,
    93         EMbmPhoneuiQgn_indi_dialer_contacts,
    87           R_PHONEUI_DIALER_TOOLTIP_CONTACTS
    94         EMbmPhoneuiQgn_indi_dialer_contacts_mask,
       
    95         R_PHONEUI_DIALER_TOOLTIP_CONTACTS
    88         },
    96         },
    89         { EPhoneNumberAcqCmdAddToContacts,
    97         { 
    90           EAknsMinorGenericQgnIndiDialerAddContacts,      
    98         EPhoneNumberAcqCmdAddToContacts,
    91           EMbmPhoneuiQgn_indi_dialer_add_contacts,
    99         EAknsMinorGenericQgnIndiDialerAddContacts,      
    92           EMbmPhoneuiQgn_indi_dialer_add_contacts_mask,
   100         EMbmPhoneuiQgn_indi_dialer_add_contacts,
    93           R_PHONEUI_DIALER_TOOLTIP_ADD_TO_CONTACTS
   101         EMbmPhoneuiQgn_indi_dialer_add_contacts_mask,
       
   102         R_PHONEUI_DIALER_TOOLTIP_ADD_TO_CONTACTS
       
   103         },
       
   104         // Video call button 
       
   105         {
       
   106         EPhoneNumberAcqCmdVideoCall,
       
   107         EAknsMinorGenericQgnIndiDialerVideocallSend,
       
   108         EMbmPhoneuiQgn_indi_dialer_videocall_send,
       
   109         EMbmPhoneuiQgn_indi_dialer_videocall_send_mask,
       
   110         R_PHONEUI_DIALER_TOOLTIP_SEND
       
   111         },
       
   112         {
       
   113         EPhoneNumberAcqCmdVideoCall,
       
   114         EAknsMinorGenericQgnIndiDialerVideocallSend,
       
   115         EMbmPhoneuiQgn_indi_dialer_videocall_send,
       
   116         EMbmPhoneuiQgn_indi_dialer_videocall_send_mask,
       
   117         R_PHONEUI_DIALER_TOOLTIP_VIDEO_CALL
    94         }
   118         }
    95     };
   119     };
    96 static const TInt KPhonebookButtonDataTableCount = 
   120 static const TInt KPhonebookButtonDataTableCount = 
    97     sizeof( KPhonebookButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData );
   121     sizeof( KPhonebookButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData );
    98 
   122 
    99 
       
   100 /** States for Clear button */
   123 /** States for Clear button */
   101 enum TClearButtonState
   124 enum TClearButtonState
   102     {
   125     {
   103     EClearButtonClearState = 0
   126     EClearButtonClearState = 0
   104     };
   127     };
   105 static const CPhoneDialerController::TLocalButtonData KClearButtonDataTable[] =
   128 static const CPhoneDialerController::TLocalButtonData KClearButtonDataTable[] =
   106     {
   129     {
   107         { EPhoneDialerCmdClear,
   130         { 
   108           EAknsMinorGenericQgnIndiDialerClear,
   131         EPhoneDialerCmdClear,
   109           EMbmPhoneuiQgn_indi_dialer_clear,
   132         EAknsMinorGenericQgnIndiDialerClear,
   110           EMbmPhoneuiQgn_indi_dialer_clear_mask,
   133         EMbmPhoneuiQgn_indi_dialer_clear,
   111           R_PHONEUI_DIALER_TOOLTIP_CLEAR
   134         EMbmPhoneuiQgn_indi_dialer_clear_mask,
       
   135         R_PHONEUI_DIALER_TOOLTIP_CLEAR
   112         }
   136         }
   113     };
   137     };
   114 static const TInt KClearButtonDataTableCount = 
   138 static const TInt KClearButtonDataTableCount = 
   115     sizeof( KClearButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData );
   139     sizeof( KClearButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData );
   116 
   140 
   328         case EPhonebookButton:
   352         case EPhonebookButton:
   329             {
   353             {
   330             if ( !iNumberAvailable )
   354             if ( !iNumberAvailable )
   331                 {
   355                 {
   332                 state = EPhonebookButtonContactsState;
   356                 state = EPhonebookButtonContactsState;
       
   357                 }
       
   358             else if ( FeatureManager::FeatureSupported( KFeatureIdFfTdScdmaVideocallKey ) )
       
   359                 {
       
   360                 if ( iServiceCodeFlag && !EasyDialingFocused() )
       
   361                     {
       
   362                     state = EPhonebookButtonVideocallSendState;
       
   363                     }
       
   364                 else
       
   365                     {
       
   366                     state = EPhonebookButtonVideocallState;
       
   367                     }
   333                 }
   368                 }
   334             else
   369             else
   335                 {
   370                 {
   336                 state = EPhonebookButtonAddContactState;
   371                 state = EPhonebookButtonAddContactState;
   337                 }
   372                 }
   377         		}
   412         		}
   378 			}
   413 			}
   379         	break;
   414         	break;
   380             
   415             
   381         case EPhonebookButton:
   416         case EPhonebookButton:
       
   417             {
   382             dimmed = iRestrictedDialer;
   418             dimmed = iRestrictedDialer;
       
   419             // Check if video call button supported
       
   420             TBool videoCallKeySupported = FeatureManager::FeatureSupported( KFeatureIdFfTdScdmaVideocallKey );
       
   421             // Prevent video call but don't prevent opening Contacts during emergency call.
       
   422             if ( !dimmed && videoCallKeySupported && iNumberAvailable )
       
   423                 {
       
   424                 dimmed = EmergencyCallActive();
       
   425                 }
       
   426             }
   383             break;
   427             break;
   384         case EClearButton:
   428         case EClearButton:
       
   429             {
   385             dimmed = !iNumberAvailable;
   430             dimmed = !iNumberAvailable;
       
   431             }
   386             break;
   432             break;
   387         default:
   433         default:
   388             break;
   434             break;
   389         }
   435         }
   390     return dimmed;
   436     return dimmed;
   409     if ( iBubbleWrapper )
   455     if ( iBubbleWrapper )
   410         {
   456         {
   411         TPhoneCmdParamCallStateData callStateData;
   457         TPhoneCmdParamCallStateData callStateData;
   412         callStateData.SetCallState( EPEStateConnected );
   458         callStateData.SetCallState( EPEStateConnected );
   413         iBubbleWrapper->GetCallIdByState( &callStateData );
   459         iBubbleWrapper->GetCallIdByState( &callStateData );
   414         TInt connected = callStateData.CallId();    
   460         TInt connected = callStateData.CallId();
   415         ret = ( connected == KEmergencyCallId );
   461         ret = ( connected == KEmergencyCallId );
   416         }
   462         }
   417     return ret;
   463     return ret;
   418     }
   464     }
   419 
   465