phoneapp/phoneuiview/src/cphonebuttonscontroller.cpp
changeset 0 5f000ab63145
child 14 24062c24fe38
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 touch buttons
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <eikappui.h>
       
    20 #include <eikenv.h>
       
    21 #include <pevirtualengine.h>
       
    22 #include <AknsSkinInstance.h>
       
    23 #include <AknsUtils.h>
       
    24 #include <AknsConstants.h>
       
    25 #include <data_caging_path_literals.hrh>
       
    26 #include <phoneui.mbg>
       
    27 #include "cphonebuttonscontroller.h"
       
    28 #include "phoneui.hrh"
       
    29 #include "tphonecommandparam.h"
       
    30 #include "tphonecmdparamboolean.h"
       
    31 #include "tphonecmdparaminteger.h"
       
    32 #include "tphonecmdparamcallheaderdata.h"
       
    33 #include "cphonemainresourceresolver.h"
       
    34 #include "phonerssbase.h"
       
    35 
       
    36 _LIT( KPhoneUiScalableIconFile, "Z:phoneui.mif" );
       
    37 
       
    38 // ======== MEMBER FUNCTIONS ========
       
    39 
       
    40 // ---------------------------------------------------------------------------
       
    41 // Constructor
       
    42 // ---------------------------------------------------------------------------
       
    43 //
       
    44 CPhoneButtonsController::CPhoneButtonsController(
       
    45     MBubbleTouchPaneInterface& aTouchPane ) : 
       
    46     iTouchPane( aTouchPane )
       
    47     {
       
    48     iTouchPane.SetIconProvider( this );
       
    49     }
       
    50 
       
    51 // ---------------------------------------------------------------------------
       
    52 // Second phase constructor
       
    53 // ---------------------------------------------------------------------------
       
    54 //
       
    55 void CPhoneButtonsController::ConstructL()
       
    56     {
       
    57     }
       
    58 
       
    59 // ---------------------------------------------------------------------------
       
    60 // Static constructor
       
    61 // ---------------------------------------------------------------------------
       
    62 //
       
    63 CPhoneButtonsController* CPhoneButtonsController::NewL(
       
    64     MBubbleTouchPaneInterface& aTouchPane )
       
    65     {
       
    66     CPhoneButtonsController* self = 
       
    67         new (ELeave) CPhoneButtonsController( aTouchPane );
       
    68     CleanupStack::PushL( self );
       
    69     self->ConstructL();
       
    70     CleanupStack::Pop( self );
       
    71     return self;
       
    72     }
       
    73 
       
    74 // ---------------------------------------------------------------------------
       
    75 // Destructor
       
    76 // ---------------------------------------------------------------------------
       
    77 //
       
    78 CPhoneButtonsController::~CPhoneButtonsController()
       
    79     {
       
    80     }
       
    81 
       
    82 // ---------------------------------------------------------------------------
       
    83 // SetButtonSet
       
    84 // ---------------------------------------------------------------------------
       
    85 //
       
    86 void CPhoneButtonsController::SetButtonSet(
       
    87     TPhoneCommandParam* aCommandParam )
       
    88     {
       
    89     TPhoneCmdParamInteger* cbaResource = 
       
    90         static_cast<TPhoneCmdParamInteger*>( aCommandParam );
       
    91     TInt resourceId = cbaResource->Integer();
       
    92     
       
    93     iTouchPane.SetButtonSet( resourceId );
       
    94     ReplaceAudioButton();
       
    95     SetButtonDimming();
       
    96     }
       
    97 
       
    98 
       
    99 // ---------------------------------------------------------------------------
       
   100 //  SetMuteFlag
       
   101 // ---------------------------------------------------------------------------
       
   102 //
       
   103 void CPhoneButtonsController::SetMuteFlag( 
       
   104     TPhoneCommandParam* aCommandParam )
       
   105     {
       
   106     if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
       
   107         {
       
   108         TPhoneCmdParamBoolean* booleanParam = 
       
   109             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   110             
       
   111         if ( booleanParam->Boolean() )
       
   112             {
       
   113             iFlags |= EButtonsPhoneMuted;     
       
   114             }
       
   115         else
       
   116             {
       
   117             iFlags &= ~EButtonsPhoneMuted;    
       
   118             }            
       
   119         
       
   120         if ( iFlags & EButtonsPhoneMuted )
       
   121             {
       
   122             iTouchPane.SetButtonState( EPhoneInCallCmdUnmute );    
       
   123             }
       
   124         else
       
   125             {
       
   126             iTouchPane.SetButtonState( EPhoneInCallCmdMute );        
       
   127             }            
       
   128         
       
   129         }
       
   130     }
       
   131     
       
   132 // ---------------------------------------------------------------------------
       
   133 // SetHoldFlag
       
   134 // ---------------------------------------------------------------------------
       
   135 //
       
   136 void CPhoneButtonsController::SetHoldFlag( 
       
   137     TPhoneCommandParam* aCommandParam )
       
   138     {
       
   139     if ( aCommandParam->ParamId() == 
       
   140         TPhoneCommandParam::EPhoneParamIdBoolean )
       
   141         { 
       
   142         TPhoneCmdParamBoolean* booleanParam = 
       
   143             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   144             
       
   145         if ( booleanParam->Boolean() )
       
   146             {
       
   147             iFlags |= EButtonsCallOnHold;     
       
   148             }
       
   149         else
       
   150             {
       
   151             iFlags &= ~EButtonsCallOnHold;    
       
   152             }            
       
   153         
       
   154         if ( iFlags & EButtonsCallOnHold )
       
   155             {
       
   156             iTouchPane.SetButtonState( EPhoneInCallCmdUnhold );
       
   157             }
       
   158         else
       
   159             {
       
   160             iTouchPane.SetButtonState( EPhoneInCallCmdHold );
       
   161             }            
       
   162         }
       
   163     }
       
   164 
       
   165 // ---------------------------------------------------------------------------
       
   166 // SetIhfFlag
       
   167 // ---------------------------------------------------------------------------
       
   168 //
       
   169 void CPhoneButtonsController::SetIhfFlag(
       
   170     TPhoneCommandParam* aCommandParam )
       
   171     {
       
   172     if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
       
   173         {
       
   174         TPhoneCmdParamBoolean* booleanParam = 
       
   175             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   176             
       
   177         if ( booleanParam->Boolean() )
       
   178             {
       
   179             iFlags |= EButtonsIhfActive;     
       
   180             }
       
   181         else
       
   182             {
       
   183             iFlags &= ~EButtonsIhfActive;    
       
   184             }            
       
   185          }    
       
   186     }
       
   187  
       
   188 // ---------------------------------------------------------
       
   189 // CPhoneButtonsController::SetBTAccFlag
       
   190 // ---------------------------------------------------------
       
   191 //
       
   192 void CPhoneButtonsController::SetBTAccFlag( TPhoneCommandParam* aCommandParam )
       
   193     {
       
   194     if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
       
   195         {
       
   196         TPhoneCmdParamBoolean* booleanParam = 
       
   197             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   198             
       
   199         if ( booleanParam->Boolean() )
       
   200             {
       
   201             iFlags |= EButtonsBTAcc;     
       
   202             }
       
   203         else
       
   204             {
       
   205             iFlags &= ~EButtonsBTAcc;    
       
   206             }            
       
   207         // Temporary unavailability
       
   208         if ( ( iFlags & EButtonsBTAccAvail ) && !( iFlags & EButtonsBTAcc ) )
       
   209             {
       
   210             iFlags |= EButtonsBTAccTmpUn;     
       
   211             }
       
   212         else
       
   213             {
       
   214             iFlags &= ~EButtonsBTAccTmpUn;  
       
   215             }      
       
   216          }     
       
   217     }
       
   218  
       
   219  // ---------------------------------------------------------
       
   220 // CPhoneButtonsController::SetWiredAccFlag
       
   221 // ---------------------------------------------------------
       
   222 //
       
   223 void CPhoneButtonsController::SetWiredAccFlag( TPhoneCommandParam* aCommandParam )
       
   224     {
       
   225     if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
       
   226         {
       
   227         TPhoneCmdParamBoolean* booleanParam = 
       
   228             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   229             
       
   230         if ( booleanParam->Boolean() )
       
   231             {
       
   232             iFlags |= EButtonsWiredAcc;     
       
   233             }
       
   234         else
       
   235             {
       
   236             iFlags &= ~EButtonsWiredAcc;    
       
   237             }            
       
   238         }     
       
   239     }
       
   240 
       
   241 // ---------------------------------------------------------
       
   242 // CPhoneButtonsController::SetBTAccAvailableFlag
       
   243 // ---------------------------------------------------------
       
   244 //
       
   245 void CPhoneButtonsController::SetBTAccAvailableFlag( TPhoneCommandParam* aCommandParam )
       
   246     {
       
   247     if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
       
   248         {
       
   249         TPhoneCmdParamBoolean* booleanParam = 
       
   250             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   251            
       
   252         if ( booleanParam->Boolean() )
       
   253             {
       
   254             iFlags |= EButtonsBTAccAvail;
       
   255             }
       
   256         else
       
   257             {
       
   258             iFlags &= ~EButtonsBTAccAvail;    
       
   259             }
       
   260         
       
   261         // Temporary unavailability        
       
   262         if ( ( iFlags & EButtonsBTAccAvail ) && !( iFlags & EButtonsBTAcc ) )
       
   263             {
       
   264             iFlags |= EButtonsBTAccTmpUn;     
       
   265             }
       
   266         else
       
   267             {
       
   268             iFlags &= ~EButtonsBTAccTmpUn;  
       
   269             }            
       
   270         }
       
   271     }
       
   272 // ---------------------------------------------------------------------------
       
   273 //  SetVideoCallFlag
       
   274 // ---------------------------------------------------------------------------
       
   275 //
       
   276 void CPhoneButtonsController::SetVideoCallFlag( 
       
   277     TPhoneCommandParam* aCommandParam )
       
   278     {
       
   279     if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
       
   280         {
       
   281         TPhoneCmdParamBoolean* booleanParam = 
       
   282             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   283             
       
   284         if ( booleanParam->Boolean() )
       
   285             {
       
   286             iFlags |= EButtonsVideoCallOngoing;     
       
   287             }
       
   288         else
       
   289             {
       
   290             iFlags &= ~EButtonsVideoCallOngoing;    
       
   291             }            
       
   292         
       
   293         if ( iFlags & EButtonsVideoCallOngoing )
       
   294             {
       
   295             iTouchPane.SetButtonState( EPhoneInCallCmdSwitchToVoice );
       
   296             iTouchPane.SetButtonDimmed( EPhoneInCallCmdHold, ETrue );    
       
   297             }
       
   298         else
       
   299             {
       
   300             iTouchPane.SetButtonState( EPhoneInCallCmdSwitchToVideo );
       
   301             iTouchPane.SetButtonDimmed( EPhoneInCallCmdHold, EFalse );
       
   302             }            
       
   303         }
       
   304     }
       
   305         
       
   306 
       
   307 // ---------------------------------------------------------
       
   308 // CPhoneButtonsController::SetInCallJoinEnabled
       
   309 // ---------------------------------------------------------
       
   310 //
       
   311 void CPhoneButtonsController::SetInCallJoinEnabled( TPhoneCommandParam* aCommandParam )
       
   312     {
       
   313     if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
       
   314         {
       
   315         TPhoneCmdParamBoolean* booleanParam = 
       
   316             static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
       
   317          if ( booleanParam->Boolean() )
       
   318             {
       
   319             iFlags |= EButtonsDimJoin;     
       
   320             }
       
   321         else
       
   322             {
       
   323             iFlags &= ~EButtonsDimJoin;    
       
   324             }            
       
   325         }
       
   326     SetButtonDimming();     
       
   327     }
       
   328 
       
   329 // ---------------------------------------------------------
       
   330 // SetButtonEnabled
       
   331 // ---------------------------------------------------------
       
   332 // 
       
   333 void CPhoneButtonsController::SetButtonEnabled( 
       
   334     TPhoneCommandParam* aCommandParam )
       
   335     {
       
   336     if ( aCommandParam->ParamId() == 
       
   337         TPhoneCommandParam::EPhoneParamIdInteger )
       
   338         { 
       
   339         TInt commandId =
       
   340             static_cast<TPhoneCmdParamInteger*>( aCommandParam )->Integer();
       
   341             
       
   342         switch ( commandId )
       
   343             {
       
   344             case EPhoneCallComingCmdAnswer:
       
   345                 iFlags &= ~EButtonsDimAnswer;    
       
   346                 break;
       
   347             case EPhoneInCallCmdPrivate:
       
   348                 iFlags &= ~EButtonsDimPrivate;
       
   349                 break;
       
   350             case EPhoneCallComingCmdSilent:
       
   351                 iFlags &= ~EButtonsDimSilence;
       
   352                 break;
       
   353             case EPhoneInCallCmdCreateConference:
       
   354                 iFlags &= ~EButtonsDimCreateConference;
       
   355                 break;
       
   356             default:
       
   357                 break;                
       
   358             }
       
   359 
       
   360         SetButtonDimming(); 
       
   361         }    
       
   362     }
       
   363 
       
   364 // ---------------------------------------------------------
       
   365 // SetButtonDisabled
       
   366 // ---------------------------------------------------------
       
   367 //    
       
   368 void CPhoneButtonsController::SetButtonDisabled(
       
   369     TPhoneCommandParam* aCommandParam )
       
   370     {
       
   371     if ( aCommandParam->ParamId() == 
       
   372         TPhoneCommandParam::EPhoneParamIdInteger )
       
   373         { 
       
   374         TInt commandId =
       
   375             static_cast<TPhoneCmdParamInteger*>( aCommandParam )->Integer();
       
   376             
       
   377         switch ( commandId )
       
   378             {
       
   379             case EPhoneCallComingCmdAnswer:
       
   380                 iFlags |= EButtonsDimAnswer;    
       
   381                 break;
       
   382             case EPhoneInCallCmdPrivate:
       
   383                 iFlags |= EButtonsDimPrivate;
       
   384                 break;                
       
   385             case EPhoneCallComingCmdSilent:
       
   386                 iFlags |= EButtonsDimSilence;
       
   387                 break;
       
   388            case EPhoneInCallCmdCreateConference:
       
   389                 iFlags |= EButtonsDimCreateConference;
       
   390                 break;
       
   391             default:
       
   392                 break;                
       
   393             }
       
   394 
       
   395         SetButtonDimming(); 
       
   396         }
       
   397     }
       
   398  
       
   399 // ---------------------------------------------------------------------------
       
   400 // SetToggleButtons
       
   401 // ---------------------------------------------------------------------------
       
   402 //
       
   403 void CPhoneButtonsController::SetToggleButtons()
       
   404     {
       
   405     TInt buttonCount = iTouchPane.NumberOfButtonsInPane();
       
   406     
       
   407     for ( TInt i=0; i < buttonCount ; i++ )
       
   408         {
       
   409         switch ( iTouchPane.ButtonCommandId( i ) )
       
   410             {
       
   411             case EPhoneInCallCmdMute:
       
   412                 {
       
   413                 if ( iFlags & EButtonsPhoneMuted )    
       
   414                     {
       
   415                     iTouchPane.SetButtonState( EPhoneInCallCmdUnmute );           
       
   416                     }
       
   417                 }
       
   418                 break;
       
   419                 
       
   420             case EPhoneInCallCmdUnmute:
       
   421                 {
       
   422                 if ( !( iFlags & EButtonsPhoneMuted ) )   
       
   423                     {
       
   424                     iTouchPane.SetButtonState( EPhoneInCallCmdMute );           
       
   425                     }
       
   426                 }
       
   427                 break;
       
   428                 
       
   429             case EPhoneInCallCmdHold:
       
   430                 {
       
   431                 if ( iFlags & EButtonsCallOnHold )    
       
   432                     {
       
   433                     iTouchPane.SetButtonState( EPhoneInCallCmdUnhold );           
       
   434                     }    
       
   435                 }
       
   436                 break;
       
   437                 
       
   438             case EPhoneInCallCmdUnhold:
       
   439                 {
       
   440                 if ( !( iFlags & EButtonsCallOnHold ) )
       
   441                     {
       
   442                     iTouchPane.SetButtonState( EPhoneInCallCmdHold );           
       
   443                     }    
       
   444                 }
       
   445                 break;
       
   446                 
       
   447             case EPhoneInCallCmdActivateIhf:
       
   448                 {
       
   449                 if ( iFlags & EButtonsIhfActive )
       
   450                     {
       
   451                     iTouchPane.SetButtonState( EPhoneInCallCmdDeactivateIhf );    
       
   452                     }
       
   453                 }
       
   454                 break;
       
   455                 
       
   456             case EPhoneInCallCmdDeactivateIhf:
       
   457                 {
       
   458                 if ( !( iFlags & EButtonsIhfActive ) )
       
   459                     {
       
   460                     iTouchPane.SetButtonState( EPhoneInCallCmdActivateIhf );    
       
   461                     }
       
   462                 }
       
   463                 break;
       
   464                 
       
   465             case EPhoneInCallCmdHandset:
       
   466                 {
       
   467                 if ( iFlags & EButtonsBTAccTmpUn )
       
   468                     {
       
   469                     iTouchPane.SetButtonState( EPhoneInCallCmdBtHandsfree );    
       
   470                     }
       
   471                 }
       
   472                 break;
       
   473             
       
   474             case EPhoneInCallCmdBtHandsfree:
       
   475                 {
       
   476                 if ( iFlags & EButtonsBTAcc )
       
   477                     {
       
   478                     iTouchPane.SetButtonState( EPhoneInCallCmdHandset );    
       
   479                     }
       
   480                 }
       
   481                 break;
       
   482                 
       
   483             case EPhoneInCallCmdSwitchToVideo:
       
   484                 {
       
   485                 if ( iFlags & EButtonsVideoCallOngoing )    
       
   486                     {
       
   487                     iTouchPane.SetButtonState( EPhoneInCallCmdSwitchToVoice );           
       
   488                     }
       
   489                 }
       
   490                 break;    
       
   491                             
       
   492             case EPhoneInCallCmdSwitchToVoice:
       
   493                 {
       
   494                 if ( !( iFlags & EButtonsVideoCallOngoing ) )   
       
   495                     {
       
   496                     iTouchPane.SetButtonState( EPhoneInCallCmdSwitchToVideo );           
       
   497                     }
       
   498                 }
       
   499                 break;                         
       
   500                                                             
       
   501             default:
       
   502                 break;                                                                                                
       
   503             }
       
   504         }
       
   505     }
       
   506 
       
   507 // ---------------------------------------------------------------------------
       
   508 // ReplaceAudioButton
       
   509 // ---------------------------------------------------------------------------
       
   510 //
       
   511 void CPhoneButtonsController::ReplaceAudioButton()
       
   512     {
       
   513   
       
   514     TInt buttonCount = iTouchPane.NumberOfButtonsInPane();
       
   515     
       
   516     for ( TInt i=0; i < buttonCount; i++ )    
       
   517         {
       
   518         TInt commandId = iTouchPane.ButtonCommandId( i );
       
   519         
       
   520         if( commandId == EPhoneInCallCmdHandset ||
       
   521             commandId == EPhoneInCallCmdBtHandsfree )
       
   522             {
       
   523             // wired connect
       
   524             if ( iFlags & EButtonsWiredAcc )
       
   525                 {
       
   526                 // Bt disconnect when wired
       
   527                 if ( !( iFlags & EButtonsBTAccTmpUn ) )
       
   528                     {
       
   529                     iTouchPane.ReplaceButton( i, 
       
   530                     CPhoneMainResourceResolver::Instance()->ResolveResourceID( EPhoneAudioDefButton ) );
       
   531                     commandId = iTouchPane.ButtonCommandId( i );
       
   532                     }
       
   533                 iTouchPane.SetButtonDimmed( commandId, ETrue);                    
       
   534                 }
       
   535             // BTA connect or temporarary unavailable
       
   536             else if ( iFlags & EButtonsBTAcc || iFlags & EButtonsBTAccTmpUn )
       
   537                 {
       
   538                 iTouchPane.SetButtonDimmed( commandId, EFalse );
       
   539                 }
       
   540             else  
       
   541                 {
       
   542                 iTouchPane.ReplaceButton( i, 
       
   543                     CPhoneMainResourceResolver::Instance()->ResolveResourceID( EPhoneAudioDefButton ) );
       
   544                 }
       
   545             }
       
   546          else if ( commandId == EPhoneInCallCmdActivateIhf ||
       
   547                    commandId == EPhoneInCallCmdDeactivateIhf )
       
   548             {
       
   549             // wired connect
       
   550             if ( iFlags & EButtonsWiredAcc )
       
   551                 {
       
   552                 // Bt connect when wired
       
   553                 if ( iFlags & EButtonsBTAccTmpUn )
       
   554                     {
       
   555                     iTouchPane.ReplaceButton( i, 
       
   556                     CPhoneMainResourceResolver::Instance()->ResolveResourceID( EPhoneAudioBTAButton ) );
       
   557                     commandId = iTouchPane.ButtonCommandId( i );
       
   558                     }
       
   559                 iTouchPane.SetButtonDimmed( commandId, ETrue);                    
       
   560                 }
       
   561             // BTA connect or temporarary unavailable
       
   562             else if ( iFlags & EButtonsBTAcc || iFlags & EButtonsBTAccTmpUn )
       
   563                 {
       
   564                 iTouchPane.ReplaceButton( i, 
       
   565                     CPhoneMainResourceResolver::Instance()->ResolveResourceID( EPhoneAudioBTAButton ) );
       
   566                 }
       
   567             else
       
   568                 {
       
   569                 iTouchPane.SetButtonDimmed( commandId, EFalse ); 
       
   570                 }
       
   571             
       
   572             }
       
   573         }
       
   574     SetToggleButtons();        
       
   575     }
       
   576 
       
   577 // ---------------------------------------------------------------------------
       
   578 // SetButtonDimming
       
   579 // ---------------------------------------------------------------------------
       
   580 //
       
   581 void CPhoneButtonsController::SetButtonDimming()
       
   582     {
       
   583     TInt buttonCount = iTouchPane.NumberOfButtonsInPane();
       
   584     
       
   585     for ( TInt i=0; i < buttonCount; i++ )    
       
   586         {
       
   587         TInt commandId = iTouchPane.ButtonCommandId( i );
       
   588     
       
   589         switch ( commandId )
       
   590             {
       
   591             case EPhoneCallComingCmdAnswer:
       
   592                 {
       
   593                 if ( iFlags & EButtonsDimAnswer )
       
   594                     {
       
   595                     iTouchPane.SetButtonDimmed( commandId, ETrue );
       
   596                     }
       
   597                 else
       
   598                     {
       
   599                     iTouchPane.SetButtonDimmed( commandId, EFalse ); 
       
   600                     }    
       
   601                 break;    
       
   602                 }                
       
   603             case EPhoneInCallCmdPrivate:
       
   604                 {
       
   605                 if ( iFlags & EButtonsDimPrivate )
       
   606                     {
       
   607                     iTouchPane.SetButtonDimmed( commandId, ETrue );
       
   608                     }
       
   609                 else
       
   610                     {
       
   611                     iTouchPane.SetButtonDimmed( commandId, EFalse ); 
       
   612                     }
       
   613                 break;    
       
   614                 }
       
   615             case EPhoneInCallCmdJoin:
       
   616                 {
       
   617                 if ( iFlags & EButtonsDimJoin )
       
   618                     {
       
   619                     iTouchPane.SetButtonDimmed( commandId, ETrue );
       
   620                     }
       
   621                 else
       
   622                     {
       
   623                     iTouchPane.SetButtonDimmed( commandId, EFalse ); 
       
   624                     }
       
   625                 break;    
       
   626                 }
       
   627             case EPhoneInCallCmdHold:
       
   628                 {
       
   629                 if ( iFlags & EButtonsVideoCallOngoing )
       
   630                     {
       
   631                     iTouchPane.SetButtonDimmed( commandId, ETrue );
       
   632                     }
       
   633                 else
       
   634                     {
       
   635                     iTouchPane.SetButtonDimmed( commandId, EFalse ); 
       
   636                     }
       
   637                 break;    
       
   638                 }
       
   639             case EPhoneCallComingCmdSilent:
       
   640                 {
       
   641                 if ( iFlags & EButtonsDimSilence )
       
   642                     {
       
   643                     iTouchPane.SetButtonDimmed( commandId, ETrue );
       
   644                     }
       
   645                 else
       
   646                     {
       
   647                     iTouchPane.SetButtonDimmed( commandId, EFalse ); 
       
   648                     }
       
   649                 break;    
       
   650                 }                
       
   651             case EPhoneInCallCmdCreateConference:
       
   652                 {
       
   653                 if ( iFlags & EButtonsDimCreateConference )
       
   654                     {
       
   655                     iTouchPane.SetButtonDimmed( commandId, ETrue );
       
   656                     }
       
   657                 else
       
   658                     {
       
   659                     iTouchPane.SetButtonDimmed( commandId, EFalse ); 
       
   660                     }
       
   661                 break;  
       
   662                 }
       
   663             default:
       
   664                 break;                    
       
   665             } // switch
       
   666         } // for
       
   667 
       
   668     if ( iCustomization )
       
   669         {
       
   670         // Customizes touch pane button.
       
   671         iCustomization->CustomizeTouchPaneButtons( iTouchPane );
       
   672         }
       
   673     }
       
   674 
       
   675 // -----------------------------------------------------------
       
   676 // CPhoneButtonsController::SetCustomization
       
   677 // -----------------------------------------------------------
       
   678 //
       
   679 void CPhoneButtonsController::SetCustomization(
       
   680         MPhoneButtonCustomization* aCustomization )
       
   681     {
       
   682     iCustomization = aCustomization;
       
   683     }
       
   684   
       
   685 // ---------------------------------------------------------------------------
       
   686 // GetIconForCommandL
       
   687 // ---------------------------------------------------------------------------
       
   688 //
       
   689 CGulIcon* CPhoneButtonsController::GetIconForCommandL( TInt aCommandId )
       
   690     {
       
   691     TAknsItemID skinId( KAknsIIDNone );
       
   692     TInt fileIndex( 0 );
       
   693     TInt maskIndex(0);
       
   694     switch ( aCommandId )
       
   695         {
       
   696         case EPhoneInCallCmdMute:
       
   697             {
       
   698             skinId =KAknsIIDQgnIndiButtonMuteMic; 
       
   699             fileIndex = EMbmPhoneuiQgn_indi_button_mute_mic;
       
   700             maskIndex = EMbmPhoneuiQgn_indi_button_mute_mic_mask;                     
       
   701             break;
       
   702             }
       
   703         case EPhoneInCallCmdUnmute:
       
   704             {
       
   705             skinId = KAknsIIDQgnIndiButtonUnmuteMic; 
       
   706             fileIndex = EMbmPhoneuiQgn_indi_button_unmute_mic;
       
   707             maskIndex = EMbmPhoneuiQgn_indi_button_unmute_mic_mask;     
       
   708             break;     
       
   709             }
       
   710         case EPhoneInCallCmdEndAllCalls:
       
   711             {
       
   712             skinId = KAknsIIDQgnIndiButtonEndAllCalls; 
       
   713             fileIndex = EMbmPhoneuiQgn_indi_button_end_all_calls; 
       
   714             maskIndex =  EMbmPhoneuiQgn_indi_button_end_all_calls_mask;   
       
   715             break;           
       
   716             }
       
   717         case EPhoneInCallCmdHold:
       
   718             {
       
   719             skinId = KAknsIIDQgnIndiButtonHold; 
       
   720             fileIndex = EMbmPhoneuiQgn_indi_button_hold; 
       
   721             maskIndex = EMbmPhoneuiQgn_indi_button_hold_mask;               
       
   722             break;            
       
   723             }
       
   724         case EPhoneInCallCmdUnhold:
       
   725             {
       
   726             skinId = KAknsIIDQgnIndiButtonUnhold; 
       
   727             fileIndex = EMbmPhoneuiQgn_indi_button_unhold; 
       
   728             maskIndex = EMbmPhoneuiQgn_indi_button_unhold_mask;                 
       
   729             break;          
       
   730             }
       
   731         case EPhoneInCallCmdActivateIhf:
       
   732             {
       
   733             skinId = KAknsIIDQgnIndiButtonLoudspeaker;
       
   734             fileIndex = EMbmPhoneuiQgn_indi_button_loudspeaker;
       
   735             maskIndex = EMbmPhoneuiQgn_indi_button_loudspeaker_mask;                
       
   736             break;          
       
   737             }
       
   738         case EPhoneInCallCmdDeactivateIhf:
       
   739             {
       
   740             skinId = KAknsIIDQgnIndiButtonHandset;   
       
   741             fileIndex = EMbmPhoneuiQgn_indi_button_handset;
       
   742             maskIndex = EMbmPhoneuiQgn_indi_button_handset_mask;                
       
   743             break;           
       
   744             }
       
   745         case EPhoneInCallCmdHandset:
       
   746             {
       
   747             skinId = KAknsIIDQgnIndiButtonHandset;   
       
   748             fileIndex = EMbmPhoneuiQgn_indi_button_handset;
       
   749             maskIndex = EMbmPhoneuiQgn_indi_button_handset_mask;                 
       
   750             break;
       
   751             }
       
   752         case EPhoneInCallCmdBtHandsfree:
       
   753             {
       
   754             skinId = KAknsIIDQgnIndiButtonBluetooth;    
       
   755             fileIndex = EMbmPhoneuiQgn_indi_button_bluetooth;
       
   756             maskIndex = EMbmPhoneuiQgn_indi_button_bluetooth_mask;                 
       
   757             break;         
       
   758             }
       
   759         case EPhoneInCallCmdSwap:
       
   760             {
       
   761             skinId = KAknsIIDQgnIndiButtonSwap;  
       
   762             fileIndex = EMbmPhoneuiQgn_indi_button_swap;
       
   763             maskIndex = EMbmPhoneuiQgn_indi_button_swap_mask;                
       
   764             break;
       
   765             }
       
   766         case EPhoneInCallCmdGoToIdle:
       
   767             {
       
   768             skinId = KAknsIIDQgnIndiButtonGoIdle; 
       
   769             fileIndex = EMbmPhoneuiQgn_indi_button_go_idle;
       
   770             maskIndex = EMbmPhoneuiQgn_indi_button_go_idle_mask;                
       
   771             break;           
       
   772             }
       
   773         case EPhoneInCallCmdCreateConference:
       
   774             {
       
   775             skinId = KAknsIIDQgnIndiButtonConference; 
       
   776             fileIndex = EMbmPhoneuiQgn_indi_button_conference;
       
   777             maskIndex = EMbmPhoneuiQgn_indi_button_conference_mask;                
       
   778             break;             
       
   779             }
       
   780         case EPhoneInCallCmdParticipants:
       
   781             {
       
   782             skinId = KAknsIIDQgnIndiButtonParticipants; 
       
   783             fileIndex = EMbmPhoneuiQgn_indi_button_participants; 
       
   784             maskIndex = EMbmPhoneuiQgn_indi_button_participants_mask;                
       
   785             break;
       
   786             }
       
   787         case EPhoneInCallCmdDrop:
       
   788             {
       
   789             skinId = KAknsIIDQgnIndiButtonDrop; 
       
   790             fileIndex = EMbmPhoneuiQgn_indi_button_drop;
       
   791             maskIndex = EMbmPhoneuiQgn_indi_button_drop_mask;                 
       
   792             break;
       
   793             }
       
   794         case EPhoneInCallCmdPrivate:
       
   795             {
       
   796             skinId = KAknsIIDQgnIndiButtonPrivate; 
       
   797             fileIndex = EMbmPhoneuiQgn_indi_button_private; 
       
   798             maskIndex = EMbmPhoneuiQgn_indi_button_private_mask;                 
       
   799             break;
       
   800             }
       
   801         case EPhoneInCallCmdJoin:
       
   802             {
       
   803             skinId = KAknsIIDQgnIndiButtonJoin;  
       
   804             fileIndex = EMbmPhoneuiQgn_indi_button_join;
       
   805             maskIndex = EMbmPhoneuiQgn_indi_button_join_mask;                 
       
   806             break;          
       
   807             }
       
   808         case EPhoneInCallCmdEndThisOutgoingCall: 
       
   809             {
       
   810             skinId = KAknsIIDQgnIndiButtonEndActiveCall;
       
   811             fileIndex = EMbmPhoneuiQgn_indi_button_end_active_call;
       
   812             maskIndex = EMbmPhoneuiQgn_indi_button_end_active_call_mask;
       
   813             break;
       
   814             }
       
   815         case EPhoneCmdEnd:
       
   816             {
       
   817             skinId = KAknsIIDQgnIndiButtonEndCall;
       
   818             fileIndex = EMbmPhoneuiQgn_indi_button_end_active_call;
       
   819             maskIndex = EMbmPhoneuiQgn_indi_button_end_active_call_mask;
       
   820             break;
       
   821             }
       
   822         case EPhoneCallComingCmdAnswer:
       
   823             {
       
   824             skinId = KAknsIIDQgnIndiButtonAnswer;
       
   825             fileIndex = EMbmPhoneuiQgn_indi_button_answer;
       
   826             maskIndex = EMbmPhoneuiQgn_indi_button_answer_mask;
       
   827             break;
       
   828             }
       
   829         case EPhoneCallComingCmdReject:
       
   830             {
       
   831             skinId = KAknsIIDQgnIndiButtonReject;
       
   832             fileIndex = EMbmPhoneuiQgn_indi_button_reject;
       
   833             maskIndex = EMbmPhoneuiQgn_indi_button_reject_mask;
       
   834             break;
       
   835             }
       
   836         case EPhoneInCallCmdSwitchToVideo:
       
   837             {
       
   838             skinId = KAknsIIDQgnIndiButtonVoiceToVideo;
       
   839             fileIndex = EMbmPhoneuiQgn_indi_button_voice_to_video;
       
   840             maskIndex = EMbmPhoneuiQgn_indi_button_voice_to_video_mask;
       
   841             break;
       
   842             }            
       
   843         case EPhoneInCallCmdSwitchToVoice:
       
   844             {
       
   845             skinId = KAknsIIDQgnIndiButtonVideoToVoice;
       
   846             fileIndex = EMbmPhoneuiQgn_indi_button_video_to_voice;
       
   847             maskIndex = EMbmPhoneuiQgn_indi_button_video_to_voice_mask;
       
   848             break;
       
   849             }              
       
   850         case EPhoneCallComingCmdSilent:
       
   851             {
       
   852             skinId = KAknsIIDQgnIndiButtonSilence;
       
   853             fileIndex = EMbmPhoneuiQgn_indi_button_silence;
       
   854             maskIndex = EMbmPhoneuiQgn_indi_button_silence_mask;
       
   855             break;
       
   856             }  
       
   857 
       
   858         default:
       
   859             return NULL; 
       
   860         } // switch
       
   861         
       
   862     CGulIcon* icon = NULL;
       
   863     if ( skinId != KAknsIIDNone )
       
   864         {
       
   865         TParse* fp = new( ELeave ) TParse();
       
   866         CleanupStack::PushL( fp );
       
   867         TInt err = fp->Set(KPhoneUiScalableIconFile, &KDC_APP_BITMAP_DIR, NULL); 
       
   868 
       
   869         if (err != KErrNone)
       
   870             {
       
   871             User::Leave(err);
       
   872             }
       
   873 
       
   874         TBuf<KMaxFileName> fileName = fp->FullName();
       
   875         CleanupStack::PopAndDestroy();  //fp
       
   876             
       
   877         MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   878         
       
   879         icon = AknsUtils::CreateGulIconL( skin, 
       
   880                                           skinId, 
       
   881                                           fileName, 
       
   882                                           fileIndex,
       
   883                                           maskIndex );
       
   884         }
       
   885 
       
   886     return icon;  
       
   887     }
       
   888     
       
   889 
       
   890 // ---------------------------------------------------------------------------
       
   891 // GetButtonForCommandL
       
   892 // ---------------------------------------------------------------------------
       
   893 //
       
   894 TAknsItemID CPhoneButtonsController::GetButtonForCommandL( TInt aCommandId )
       
   895     {
       
   896     TAknsItemID frameId( KAknsIIDNone );
       
   897     switch ( aCommandId )
       
   898         {
       
   899         case EPhoneInCallCmdEndAllCalls:
       
   900             {
       
   901             frameId = KAknsIIDQsnFrButtonNormalReject; 
       
   902             break;           
       
   903             }
       
   904         case EPhoneInCallCmdHold:
       
   905             {
       
   906             frameId = KAknsIIDQsnFrButtonNormalHold; 
       
   907             break;            
       
   908             }
       
   909         case EPhoneInCallCmdUnhold:
       
   910             {
       
   911             frameId = KAknsIIDQsnFrButtonNormalHold; 
       
   912             break;          
       
   913             }
       
   914         case EPhoneInCallCmdEndThisOutgoingCall: 
       
   915             {
       
   916             frameId = KAknsIIDQsnFrButtonNormalReject;
       
   917             break;
       
   918             }
       
   919         case EPhoneCmdEnd:
       
   920             {
       
   921             frameId = KAknsIIDQsnFrButtonNormalReject;
       
   922             break;
       
   923             }
       
   924         case EPhoneCallComingCmdAnswer:
       
   925             {
       
   926             frameId = KAknsIIDQsnFrButtonNormalAnswer;
       
   927             break;
       
   928             }
       
   929         case EPhoneCallComingCmdReject:
       
   930             {
       
   931             frameId = KAknsIIDQsnFrButtonNormalReject;
       
   932             break;
       
   933             }
       
   934 
       
   935         default:
       
   936             frameId= KAknsIIDQsnFrButtonNormal;
       
   937             break; 
       
   938         } // switch
       
   939         
       
   940     return frameId;  
       
   941     }
       
   942 
       
   943 
       
   944 // END