phoneapp/phoneuivoipextension/src/cphonetransferdialercontroller.cpp
branchRCL_3
changeset 62 5266b1f337bd
parent 61 41a7f70b3818
equal deleted inserted replaced
61:41a7f70b3818 62:5266b1f337bd
     1 /*
     1 /*
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2008, 2009 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>
       
    23 #include <AknsItemID.h>
    22 #include <AknsItemID.h>
       
    23 #include <AknsUtils.h>
    24 #include <StringLoader.h>
    24 #include <StringLoader.h>
    25 #include "phoneresourceids.h"
    25 
       
    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 
    26 #include "phoneui.pan"
    31 #include "phoneui.pan"
    27 #include "phonelogger.h"
    32 #include "phonelogger.h"
    28 #include <data_caging_path_literals.hrh>
       
    29 #include "cphonetransferdialercontroller.h"
    33 #include "cphonetransferdialercontroller.h"
    30 #include "cphonemainresourceresolver.h"
    34 #include "cphonemainresourceresolver.h"
    31 #include "phonerssvoip.h"
    35 #include "phonerssvoip.h"
    32 #include "phoneappcommands.hrh"
    36 #include "phoneappcommands.hrh"
    33 #include "phoneappvoipcommands.hrh"
    37 #include "phoneappvoipcommands.hrh"
    34 
    38 
    35 
    39 
    36 // CONSTANTS
    40 // CONSTANTS
    37 _LIT ( KPhoneMifFileName, "phoneui.mif" );
    41 _LIT ( KPhoneMifFileName, "phoneui.mif" );
    38 
    42 
       
    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 
    39 // ================= MEMBER FUNCTIONS =======================
    66 // ================= MEMBER FUNCTIONS =======================
    40 
    67 
    41 // C++ default constructor can NOT contain any code, that
    68 // C++ default constructor can NOT contain any code, that
    42 // might leave.
    69 // might leave.
    43 //  
    70 //  
    44 CPhoneTransferDialerController::CPhoneTransferDialerController()
    71 CPhoneTransferDialerController::CPhoneTransferDialerController()
       
    72     : CPhoneDialerController( NULL, *CCoeEnv::Static() )
    45     {
    73     {
    46     }
    74     }
    47 
    75 
    48 // -----------------------------------------------------------
    76 // -----------------------------------------------------------
    49 // CPhoneTransferDialerController::~CPhoneTransferDialerController()
    77 // CPhoneTransferDialerController::~CPhoneTransferDialerController()
    69   
    97   
    70     return self;
    98     return self;
    71     }
    99     }
    72 
   100 
    73 // -----------------------------------------------------------
   101 // -----------------------------------------------------------
    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 // -----------------------------------------------------------
       
    97 // CPhoneTransferDialerController::CbaResourceId
   102 // CPhoneTransferDialerController::CbaResourceId
    98 // -----------------------------------------------------------
   103 // -----------------------------------------------------------
    99 //
   104 //
   100 TInt CPhoneTransferDialerController::CbaResourceId() const
   105 TInt CPhoneTransferDialerController::CbaResourceId() const
   101     {
   106     {
   106 // CPhoneTransferDialerController::MenuResourceId
   111 // CPhoneTransferDialerController::MenuResourceId
   107 // -----------------------------------------------------------
   112 // -----------------------------------------------------------
   108 //
   113 //
   109 TInt CPhoneTransferDialerController::MenuResourceId() const
   114 TInt CPhoneTransferDialerController::MenuResourceId() const
   110     {
   115     {
   111     if ( iNumberEntryIsEmpty )
   116     if ( !iNumberAvailable )
   112         {
   117         {
   113         return EPhoneVoIPTransferDialerNumberEntryEmptyMenubar;
   118         return EPhoneVoIPTransferDialerNumberEntryEmptyMenubar;
   114         }
   119         }
   115     else
   120     else
   116         {
   121         {
   128         "CPhoneTransferDialerController::NumberEntryPromptTextL()");
   133         "CPhoneTransferDialerController::NumberEntryPromptTextL()");
   129     if ( !iNumberEntryPromptText )
   134     if ( !iNumberEntryPromptText )
   130         {
   135         {
   131         iNumberEntryPromptText = StringLoader::LoadL( 
   136         iNumberEntryPromptText = StringLoader::LoadL( 
   132             CPhoneMainResourceResolver::Instance()->
   137             CPhoneMainResourceResolver::Instance()->
   133             ResolveResourceID( EPhoneVoIPTransferAddress ) );
   138             ResolveResourceID( EPhoneVoIPTransferAddress ), &iCoeEnv );
   134         }  
   139         }  
   135     
   140     
   136     return *iNumberEntryPromptText;
   141     return *iNumberEntryPromptText;
   137     }
   142     }
   138 
   143 
   139 // -----------------------------------------------------------
   144 // ---------------------------------------------------------------------------
   140 // CPhoneTransferDialerController::HandleNumberEntryIsEmpty
   145 // GetButtonData
   141 // -----------------------------------------------------------
   146 // ---------------------------------------------------------------------------
   142 //
   147 //
   143 void CPhoneTransferDialerController::HandleNumberEntryIsEmpty( TBool aIsEmpty )
   148 TInt CPhoneTransferDialerController::GetButtonData( TButtonIndex aIndex, RPointerArray<CButtonData>& aData ) const
       
   149     {
       
   150     TInt err = KErrNone;
       
   151     
       
   152     TInt arrayIdx = KErrNotFound;
       
   153     if ( aIndex == ECallButton )
       
   154         {
       
   155         arrayIdx = 0;
       
   156         }
       
   157     else if ( aIndex == EPhonebookButton )
       
   158         {
       
   159         arrayIdx = 1;
       
   160         }
       
   161     
       
   162     if ( arrayIdx >= 0 )
       
   163         {
       
   164         const TPhoneDialerToolbarButton& arrItem = bArray[ arrayIdx ];
       
   165         CButtonData* btn = NULL;
       
   166         TRAP( err, btn = CreateButtonDataL( arrItem.iCommandId, 
       
   167                                             arrItem.iIconIndex, 
       
   168                                             arrItem.iMaskIndex ) );
       
   169         if ( !err )
       
   170             {
       
   171             err = aData.Append( btn );
       
   172             if ( err )
       
   173                 {
       
   174                 delete btn;
       
   175                 }
       
   176             }
       
   177         }
       
   178     else
       
   179         {
       
   180         // Trust base class on other buttons (i.e. the clear button)
       
   181         err = CPhoneDialerController::GetButtonData( aIndex, aData );
       
   182         }
       
   183     
       
   184     return err;
       
   185     }
       
   186 
       
   187 // ---------------------------------------------------------------------------
       
   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
   144     {
   246     {
   145     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   247     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
   146         "CPhoneTransferDialerController::HandleNumberEntryIsEmpty()");
   248             "CPhoneTransferDialerController::CreateButtonDataL()");
   147     __ASSERT_DEBUG( iToolbar, Panic( EPhoneCtrlInvariant ) );
   249     
   148     iToolbar->SetItemDimmed( EPhoneCmdTransferDialerOk, aIsEmpty, EFalse );
   250     // Load tooltip text.
   149     iToolbar->SetItemDimmed( EPhoneCmdTransferDialerSearch, !aIsEmpty, EFalse );
   251     HBufC* tooltipText = GetTooltipTextL( aCommandId );
   150     iToolbar->SetItemDimmed( EPhoneDialerCmdClear, aIsEmpty, EFalse );
   252     CleanupStack::PushL( tooltipText );
   151     iNumberEntryIsEmpty = aIsEmpty;
   253     
   152     }
   254     // Load icon
   153 
       
   154 // -----------------------------------------------------------
       
   155 // CPhoneTransferDialerController::ShowButtons
       
   156 // -----------------------------------------------------------
       
   157 //
       
   158 void CPhoneTransferDialerController::ShowButtons( TBool aShow )
       
   159     {
       
   160     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
       
   161         "CPhoneTransferDialerController::ShowButtons()");
       
   162     __ASSERT_DEBUG( iToolbar, Panic( EPhoneCtrlInvariant ) );
       
   163     if ( aShow )
       
   164         {
       
   165         iToolbar->SetItemDimmed( EPhoneCmdTransferDialerOk, ETrue, EFalse ); 
       
   166         iToolbar->SetItemDimmed( EPhoneCmdTransferDialerSearch, EFalse, EFalse ); 
       
   167         iToolbar->SetItemDimmed( EPhoneDialerCmdClear, ETrue, EFalse ); 
       
   168         }
       
   169     }
       
   170 
       
   171 // ---------------------------------------------------------------------------
       
   172 // PhoneTransferDialerController::CreateButtonLC
       
   173 // ---------------------------------------------------------------------------
       
   174 //
       
   175 CAknButton* CPhoneTransferDialerController::CreateButtonLC( 
       
   176     TInt aNormalIconId,
       
   177     TInt aNormalMaskId,
       
   178     const TDesC& aTooltipText,
       
   179     const TAknsItemID& aSkinIconId ) const
       
   180     {   
       
   181     __LOGMETHODSTARTEND( PhoneUIVoIPExtension, 
       
   182         "CPhoneTransferDialerController::CreateButtonLC()");
       
   183     TFileName mifPath( KDriveZ );
   255     TFileName mifPath( KDriveZ );
   184     mifPath.Append( KDC_APP_BITMAP_DIR );
   256     mifPath.Append( KDC_APP_BITMAP_DIR );
   185     mifPath.Append( KPhoneMifFileName );
   257     mifPath.Append( KPhoneMifFileName );
   186 
   258     
   187     CAknButton* button = CAknButton::NewLC( 
   259     TAknsItemID skinId = SkinId( aNormalIconId );
   188         mifPath,
   260     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
   189         aNormalIconId,
   261     CGulIcon* icon = AknsUtils::CreateGulIconL( skin, skinId, mifPath, 
   190         aNormalMaskId,
   262                 aNormalIconId, aNormalMaskId );
   191         -1, -1, // dimmed
   263     CleanupStack::PushL( icon );
   192         -1, -1, // pressed
   264     
   193         -1, -1, // hover
   265     CButtonData* btnData = new (ELeave) CButtonData( aCommandId, icon, tooltipText );
   194         KNullDesC,
   266     CleanupStack::Pop( icon );
   195         aTooltipText, // help
   267     CleanupStack::Pop( tooltipText );
   196         0, // flags
   268     
   197         0, // state flags
   269     return btnData;
   198         aSkinIconId );
       
   199                                                                  
       
   200     button->SetFocusing( EFalse );
       
   201     button->SetBackground( iToolbar );
       
   202 
       
   203     return button;
       
   204     }
   270     }
   205 
   271 
   206 // ---------------------------------------------------------------------------
   272 // ---------------------------------------------------------------------------
   207 // CPhoneTransferDialerController::GetTooltipText
   273 // CPhoneTransferDialerController::GetTooltipText
   208 //
   274 //
   222             break;    
   288             break;    
   223         case EPhoneCmdTransferDialerSearch:
   289         case EPhoneCmdTransferDialerSearch:
   224             resourceId = R_VOIP_DIALER_TOOLTIP_SEARCH;
   290             resourceId = R_VOIP_DIALER_TOOLTIP_SEARCH;
   225             break;                      
   291             break;                      
   226        default:
   292        default:
   227            tooltip = KNullDesC().Alloc();
       
   228            break;
   293            break;
   229        }
   294        }
   230            
   295            
   231     if ( resourceId )
   296     if ( resourceId )
   232         {
   297         {
   233         tooltip = StringLoader::LoadL( resourceId, CCoeEnv::Static() );
   298         tooltip = StringLoader::LoadL( resourceId, &iCoeEnv );
       
   299         }
       
   300     else
       
   301         {
       
   302         tooltip = KNullDesC().AllocL();
   234         }
   303         }
   235     return tooltip;
   304     return tooltip;
   236     }
   305     }
   237 
   306 
   238 // ---------------------------------------------------------------------------
   307 // ---------------------------------------------------------------------------
   239 // CPhoneTransferDialerController::SkinId
   308 // CPhoneTransferDialerController::SkinId
   240 // ---------------------------------------------------------------------------
   309 // ---------------------------------------------------------------------------
   241 //    
   310 //    
   242 TAknsItemID CPhoneTransferDialerController::SkinId( TInt /*aIconIndex*/ ) const
   311 TAknsItemID CPhoneTransferDialerController::SkinId( TInt aIconIndex ) const
   243     {
   312     {
   244     TAknsItemID skinId;
   313     TAknsItemID skinId;
   245     skinId = KAknsIIDNone; 
   314     
       
   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     
   246     return skinId;  
   328     return skinId;  
   247     }
   329     }