phoneapp/phoneuivoipextension/src/cphonetransferdialercontroller.cpp
branchRCL_3
changeset 24 41a7f70b3818
parent 3 8871b09be73b
child 25 5266b1f337bd
equal deleted inserted replaced
23:40a3f856b14d 24:41a7f70b3818
     1 /*
     1 /*
     2 * Copyright (c) 2008, 2009 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    17 
    17 
    18 
    18 
    19 // INCLUDES
    19 // INCLUDES
    20 #include <e32base.h>
    20 #include <e32base.h>
    21 
    21 
       
    22 #include <akntoolbar.h>
    22 #include <AknsItemID.h>
    23 #include <AknsItemID.h>
    23 #include <AknsUtils.h>
       
    24 #include <StringLoader.h>
    24 #include <StringLoader.h>
    25 
    25 #include "phoneresourceids.h"
    26 #include <phoneui.mbg>
       
    27 #include <phoneui.rsg>
       
    28 #include <phoneuivoip.rsg>
       
    29 #include <data_caging_path_literals.hrh> // For KDC_APP_BITMAP_DIR
       
    30 
       
    31 #include "phoneui.pan"
    26 #include "phoneui.pan"
    32 #include "phonelogger.h"
    27 #include "phonelogger.h"
       
    28 #include <data_caging_path_literals.hrh>
    33 #include "cphonetransferdialercontroller.h"
    29 #include "cphonetransferdialercontroller.h"
    34 #include "cphonemainresourceresolver.h"
    30 #include "cphonemainresourceresolver.h"
    35 #include "phonerssvoip.h"
    31 #include "phonerssvoip.h"
    36 #include "phoneappcommands.hrh"
    32 #include "phoneappcommands.hrh"
    37 #include "phoneappvoipcommands.hrh"
    33 #include "phoneappvoipcommands.hrh"
    38 
    34 
    39 
    35 
    40 // CONSTANTS
    36 // CONSTANTS
    41 _LIT ( KPhoneMifFileName, "phoneui.mif" );
    37 _LIT ( KPhoneMifFileName, "phoneui.mif" );
    42 
    38 
    43 // Number of buttons 
       
    44 const TInt KButtonCount = 2;
       
    45 
       
    46 class TPhoneDialerToolbarButton 
       
    47     {
       
    48 public:
       
    49     TInt iIconIndex;
       
    50     TInt iMaskIndex;
       
    51     TInt iCommandId;    
       
    52     };
       
    53 
       
    54 const TPhoneDialerToolbarButton bArray[KButtonCount] = 
       
    55         {  
       
    56             { EMbmPhoneuiQgn_indi_button_send_dtmf,
       
    57               EMbmPhoneuiQgn_indi_button_send_dtmf_mask,
       
    58               EPhoneCmdTransferDialerOk
       
    59             },
       
    60             { EMbmPhoneuiQgn_indi_dialer_contacts,
       
    61               EMbmPhoneuiQgn_indi_dialer_contacts_mask,
       
    62               EPhoneCmdTransferDialerSearch
       
    63             }                 
       
    64         };  
       
    65 
       
    66 // ================= MEMBER FUNCTIONS =======================
    39 // ================= MEMBER FUNCTIONS =======================
    67 
    40 
    68 // C++ default constructor can NOT contain any code, that
    41 // C++ default constructor can NOT contain any code, that
    69 // might leave.
    42 // might leave.
    70 //  
    43 //  
    71 CPhoneTransferDialerController::CPhoneTransferDialerController()
    44 CPhoneTransferDialerController::CPhoneTransferDialerController()
    72     : CPhoneDialerController( NULL, *CCoeEnv::Static() )
       
    73     {
    45     {
    74     }
    46     }
    75 
    47 
    76 // -----------------------------------------------------------
    48 // -----------------------------------------------------------
    77 // CPhoneTransferDialerController::~CPhoneTransferDialerController()
    49 // CPhoneTransferDialerController::~CPhoneTransferDialerController()
    97   
    69   
    98     return self;
    70     return self;
    99     }
    71     }
   100 
    72 
   101 // -----------------------------------------------------------
    73 // -----------------------------------------------------------
       
    74 // CPhoneTransferDialerController::Initialize
       
    75 // -----------------------------------------------------------
       
    76 //
       
    77 void CPhoneTransferDialerController::InitializeL( CAknToolbar& aToolbar )
       
    78     {  
       
    79     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
       
    80         "CPhoneTransferDialerController::InitializeL()"); 
       
    81     
       
    82     if ( !iIsInitialized )
       
    83         {    
       
    84         __PHONELOG1( 
       
    85                 EAll, 
       
    86                 PhoneUIVoIPExtension, 
       
    87                 "Toolbar control count:=%d", 
       
    88                 aToolbar.CountComponentControls());
       
    89         iToolbar = &aToolbar;
       
    90         iIsInitialized = ETrue;
       
    91         }
       
    92    
       
    93     iNumberEntryIsEmpty = ETrue;
       
    94     }
       
    95 
       
    96 // -----------------------------------------------------------
   102 // CPhoneTransferDialerController::CbaResourceId
    97 // CPhoneTransferDialerController::CbaResourceId
   103 // -----------------------------------------------------------
    98 // -----------------------------------------------------------
   104 //
    99 //
   105 TInt CPhoneTransferDialerController::CbaResourceId() const
   100 TInt CPhoneTransferDialerController::CbaResourceId() const
   106     {
   101     {
   111 // CPhoneTransferDialerController::MenuResourceId
   106 // CPhoneTransferDialerController::MenuResourceId
   112 // -----------------------------------------------------------
   107 // -----------------------------------------------------------
   113 //
   108 //
   114 TInt CPhoneTransferDialerController::MenuResourceId() const
   109 TInt CPhoneTransferDialerController::MenuResourceId() const
   115     {
   110     {
   116     if ( !iNumberAvailable )
   111     if ( iNumberEntryIsEmpty )
   117         {
   112         {
   118         return EPhoneVoIPTransferDialerNumberEntryEmptyMenubar;
   113         return EPhoneVoIPTransferDialerNumberEntryEmptyMenubar;
   119         }
   114         }
   120     else
   115     else
   121         {
   116         {
   133         "CPhoneTransferDialerController::NumberEntryPromptTextL()");
   128         "CPhoneTransferDialerController::NumberEntryPromptTextL()");
   134     if ( !iNumberEntryPromptText )
   129     if ( !iNumberEntryPromptText )
   135         {
   130         {
   136         iNumberEntryPromptText = StringLoader::LoadL( 
   131         iNumberEntryPromptText = StringLoader::LoadL( 
   137             CPhoneMainResourceResolver::Instance()->
   132             CPhoneMainResourceResolver::Instance()->
   138             ResolveResourceID( EPhoneVoIPTransferAddress ), &iCoeEnv );
   133             ResolveResourceID( EPhoneVoIPTransferAddress ) );
   139         }  
   134         }  
   140     
   135     
   141     return *iNumberEntryPromptText;
   136     return *iNumberEntryPromptText;
   142     }
   137     }
   143 
   138 
   144 // ---------------------------------------------------------------------------
   139 // -----------------------------------------------------------
   145 // GetButtonData
   140 // CPhoneTransferDialerController::HandleNumberEntryIsEmpty
   146 // ---------------------------------------------------------------------------
   141 // -----------------------------------------------------------
   147 //
   142 //
   148 TInt CPhoneTransferDialerController::GetButtonData( TButtonIndex aIndex, RPointerArray<CButtonData>& aData ) const
   143 void CPhoneTransferDialerController::HandleNumberEntryIsEmpty( TBool aIsEmpty )
   149     {
   144     {
   150     TInt err = KErrNone;
   145     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   151     
   146         "CPhoneTransferDialerController::HandleNumberEntryIsEmpty()");
   152     TInt arrayIdx = KErrNotFound;
   147     __ASSERT_DEBUG( iToolbar, Panic( EPhoneCtrlInvariant ) );
   153     if ( aIndex == ECallButton )
   148     iToolbar->SetItemDimmed( EPhoneCmdTransferDialerOk, aIsEmpty, EFalse );
   154         {
   149     iToolbar->SetItemDimmed( EPhoneCmdTransferDialerSearch, !aIsEmpty, EFalse );
   155         arrayIdx = 0;
   150     iToolbar->SetItemDimmed( EPhoneDialerCmdClear, aIsEmpty, EFalse );
   156         }
   151     iNumberEntryIsEmpty = aIsEmpty;
   157     else if ( aIndex == EPhonebookButton )
   152     }
   158         {
   153 
   159         arrayIdx = 1;
   154 // -----------------------------------------------------------
   160         }
   155 // CPhoneTransferDialerController::ShowButtons
   161     
   156 // -----------------------------------------------------------
   162     if ( arrayIdx >= 0 )
   157 //
   163         {
   158 void CPhoneTransferDialerController::ShowButtons( TBool aShow )
   164         const TPhoneDialerToolbarButton& arrItem = bArray[ arrayIdx ];
   159     {
   165         CButtonData* btn = NULL;
   160     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   166         TRAP( err, btn = CreateButtonDataL( arrItem.iCommandId, 
   161         "CPhoneTransferDialerController::ShowButtons()");
   167                                             arrItem.iIconIndex, 
   162     __ASSERT_DEBUG( iToolbar, Panic( EPhoneCtrlInvariant ) );
   168                                             arrItem.iMaskIndex ) );
   163     if ( aShow )
   169         if ( !err )
   164         {
   170             {
   165         iToolbar->SetItemDimmed( EPhoneCmdTransferDialerOk, ETrue, EFalse ); 
   171             err = aData.Append( btn );
   166         iToolbar->SetItemDimmed( EPhoneCmdTransferDialerSearch, EFalse, EFalse ); 
   172             if ( err )
   167         iToolbar->SetItemDimmed( EPhoneDialerCmdClear, ETrue, EFalse ); 
   173                 {
   168         }
   174                 delete btn;
   169     }
   175                 }
   170 
   176             }
   171 // ---------------------------------------------------------------------------
   177         }
   172 // PhoneTransferDialerController::CreateButtonLC
   178     else
   173 // ---------------------------------------------------------------------------
   179         {
   174 //
   180         // Trust base class on other buttons (i.e. the clear button)
   175 CAknButton* CPhoneTransferDialerController::CreateButtonLC( 
   181         err = CPhoneDialerController::GetButtonData( aIndex, aData );
   176     TInt aNormalIconId,
   182         }
   177     TInt aNormalMaskId,
   183     
   178     const TDesC& aTooltipText,
   184     return err;
   179     const TAknsItemID& aSkinIconId ) const
   185     }
   180     {   
   186 
   181     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   187 // ---------------------------------------------------------------------------
   182         "CPhoneTransferDialerController::CreateButtonLC()");
   188 // ButtonState
       
   189 // ---------------------------------------------------------------------------
       
   190 //
       
   191 TInt CPhoneTransferDialerController::ButtonState( TButtonIndex aIndex ) const
       
   192     {
       
   193     // Out button have only one state. Trust base class on clear button
       
   194     if ( aIndex == ECallButton || aIndex == EPhonebookButton )
       
   195         {
       
   196         return 0;
       
   197         }
       
   198     else
       
   199         {
       
   200         return CPhoneDialerController::ButtonState( aIndex );
       
   201         }
       
   202     }
       
   203 
       
   204 // ---------------------------------------------------------------------------
       
   205 // ButtonDimmed
       
   206 // ---------------------------------------------------------------------------
       
   207 //
       
   208 TBool CPhoneTransferDialerController::ButtonDimmed( TButtonIndex aIndex ) const
       
   209     {
       
   210     TBool dimmed = EFalse;
       
   211     
       
   212     // Ok is dimmed when there's no number. Search is dimmed when there is
       
   213     // a number. Trust base class on clear button.
       
   214     if ( aIndex == ECallButton )
       
   215         {
       
   216         dimmed = !iNumberAvailable;
       
   217         }
       
   218     else if ( aIndex == EPhonebookButton )
       
   219         {
       
   220         dimmed = iNumberAvailable;
       
   221         }
       
   222     else
       
   223         {
       
   224         dimmed = CPhoneDialerController::ButtonDimmed( aIndex );
       
   225         }
       
   226     return dimmed;
       
   227     }
       
   228 
       
   229 // ---------------------------------------------------------------------------
       
   230 // EasyDialingAllowed
       
   231 // ---------------------------------------------------------------------------
       
   232 //
       
   233 TBool CPhoneTransferDialerController::EasyDialingAllowed() const
       
   234     {
       
   235     return EFalse;
       
   236     }
       
   237 
       
   238 // ---------------------------------------------------------------------------
       
   239 // PhoneTransferDialerController::CreateButtonDataL
       
   240 // ---------------------------------------------------------------------------
       
   241 //
       
   242 MPhoneDialerController::CButtonData* CPhoneTransferDialerController::CreateButtonDataL(
       
   243         TInt aCommandId,
       
   244         TInt aNormalIconId,
       
   245         TInt aNormalMaskId ) const
       
   246     {
       
   247     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
       
   248             "CPhoneTransferDialerController::CreateButtonDataL()");
       
   249     
       
   250     // Load tooltip text.
       
   251     HBufC* tooltipText = GetTooltipTextL( aCommandId );
       
   252     CleanupStack::PushL( tooltipText );
       
   253     
       
   254     // Load icon
       
   255     TFileName mifPath( KDriveZ );
   183     TFileName mifPath( KDriveZ );
   256     mifPath.Append( KDC_APP_BITMAP_DIR );
   184     mifPath.Append( KDC_APP_BITMAP_DIR );
   257     mifPath.Append( KPhoneMifFileName );
   185     mifPath.Append( KPhoneMifFileName );
   258     
   186 
   259     TAknsItemID skinId = SkinId( aNormalIconId );
   187     CAknButton* button = CAknButton::NewLC( 
   260     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
   188         mifPath,
   261     CGulIcon* icon = AknsUtils::CreateGulIconL( skin, skinId, mifPath, 
   189         aNormalIconId,
   262                 aNormalIconId, aNormalMaskId );
   190         aNormalMaskId,
   263     CleanupStack::PushL( icon );
   191         -1, -1, // dimmed
   264     
   192         -1, -1, // pressed
   265     CButtonData* btnData = new (ELeave) CButtonData( aCommandId, icon, tooltipText );
   193         -1, -1, // hover
   266     CleanupStack::Pop( icon );
   194         KNullDesC,
   267     CleanupStack::Pop( tooltipText );
   195         aTooltipText, // help
   268     
   196         0, // flags
   269     return btnData;
   197         0, // state flags
       
   198         aSkinIconId );
       
   199                                                                  
       
   200     button->SetFocusing( EFalse );
       
   201     button->SetBackground( iToolbar );
       
   202 
       
   203     return button;
   270     }
   204     }
   271 
   205 
   272 // ---------------------------------------------------------------------------
   206 // ---------------------------------------------------------------------------
   273 // CPhoneTransferDialerController::GetTooltipText
   207 // CPhoneTransferDialerController::GetTooltipText
   274 //
   208 //
   288             break;    
   222             break;    
   289         case EPhoneCmdTransferDialerSearch:
   223         case EPhoneCmdTransferDialerSearch:
   290             resourceId = R_VOIP_DIALER_TOOLTIP_SEARCH;
   224             resourceId = R_VOIP_DIALER_TOOLTIP_SEARCH;
   291             break;                      
   225             break;                      
   292        default:
   226        default:
       
   227            tooltip = KNullDesC().Alloc();
   293            break;
   228            break;
   294        }
   229        }
   295            
   230            
   296     if ( resourceId )
   231     if ( resourceId )
   297         {
   232         {
   298         tooltip = StringLoader::LoadL( resourceId, &iCoeEnv );
   233         tooltip = StringLoader::LoadL( resourceId, CCoeEnv::Static() );
   299         }
       
   300     else
       
   301         {
       
   302         tooltip = KNullDesC().AllocL();
       
   303         }
   234         }
   304     return tooltip;
   235     return tooltip;
   305     }
   236     }
   306 
   237 
   307 // ---------------------------------------------------------------------------
   238 // ---------------------------------------------------------------------------
   308 // CPhoneTransferDialerController::SkinId
   239 // CPhoneTransferDialerController::SkinId
   309 // ---------------------------------------------------------------------------
   240 // ---------------------------------------------------------------------------
   310 //    
   241 //    
   311 TAknsItemID CPhoneTransferDialerController::SkinId( TInt aIconIndex ) const
   242 TAknsItemID CPhoneTransferDialerController::SkinId( TInt /*aIconIndex*/ ) const
   312     {
   243     {
   313     TAknsItemID skinId;
   244     TAknsItemID skinId;
   314     
   245     skinId = KAknsIIDNone; 
   315     switch ( aIconIndex )
       
   316         {
       
   317         case EMbmPhoneuiQgn_indi_button_send_dtmf:
       
   318             skinId = KAknsIIDQgnIndiButtonSendDtmf;
       
   319             break;
       
   320         case EMbmPhoneuiQgn_indi_dialer_contacts:
       
   321             skinId = KAknsIIDQgnIndiDialerContacts;
       
   322             break;                     
       
   323         default:
       
   324             skinId = KAknsIIDNone;        
       
   325             break;            
       
   326         }
       
   327     
       
   328     return skinId;  
   246     return skinId;  
   329     }
   247     }