phoneapp/phoneuiview/src/cphoneviewcontroller.cpp
branchRCL_3
changeset 9 8871b09be73b
parent 1 838b0a10d15b
child 14 24062c24fe38
equal deleted inserted replaced
4:c84cf270c54f 9:8871b09be73b
     1 /*
     1 /*
     2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2005 - 2010 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".
    21 
    21 
    22 #include "phoneui.pan"
    22 #include "phoneui.pan"
    23 #include "cphonetoolbarcontroller.h"
    23 #include "cphonetoolbarcontroller.h"
    24 #include "cphonebuttonscontroller.h"
    24 #include "cphonebuttonscontroller.h"
    25 #include "cphonedialercontroller.h"
    25 #include "cphonedialercontroller.h"
       
    26 #include "cphoneeasydialingcontroller.h"
       
    27 #include "cphonedtmfdialercontroller.h"
    26 #include "cphonemenucontroller.h"
    28 #include "cphonemenucontroller.h"
    27 #include "cphonenotecontroller.h"
    29 #include "cphonenotecontroller.h"
    28 #include "cphonequerycontroller.h"
    30 #include "cphonequerycontroller.h"
    29 #include "cphonekeycapturecontroller.h"
    31 #include "cphonekeycapturecontroller.h"
    30 #include "cphoneview.h"
    32 #include "cphoneview.h"
   104 #include <CPbkFieldInfo.h>
   106 #include <CPbkFieldInfo.h>
   105 #include <PbkFields.hrh>
   107 #include <PbkFields.hrh>
   106 #include <cphcntcontactid.h>
   108 #include <cphcntcontactid.h>
   107 #include <AknUtils.h>
   109 #include <AknUtils.h>
   108 #include <AknSgcc.h>
   110 #include <AknSgcc.h>
   109 #include <SettingsInternalCRKeys.h>
   111 #include <settingsinternalcrkeys.h>
   110 #include <UikonInternalPSKeys.h>
   112 #include <UikonInternalPSKeys.h>
   111 #include <startupdomainpskeys.h>
   113 #include <startupdomainpskeys.h>
   112 #include <utf.h>
   114 #include <utf.h>
   113 #include <activeidle2domainpskeys.h>
   115 #include <activeidle2domainpskeys.h>
   114 #include <telinternalpskeys.h>
   116 #include <telinternalpskeys.h>
   126 #include <vmnumber.h>
   128 #include <vmnumber.h>
   127 #include <coreapplicationuisdomainpskeys.h>
   129 #include <coreapplicationuisdomainpskeys.h>
   128 #include <gfxtranseffect/gfxtranseffect.h>
   130 #include <gfxtranseffect/gfxtranseffect.h>
   129 #include <akntranseffect.h>
   131 #include <akntranseffect.h>
   130 
   132 
   131 #include <GSLauncher.h> // Call Settings launch.
   133 #include <gslauncher.h> // Call Settings launch.
       
   134 
       
   135 #include <dialingextensioninterface.h>
   132 
   136 
   133 // Kastor effect IDs, aknskincontent/101f84b9.sel
   137 // Kastor effect IDs, aknskincontent/101f84b9.sel
   134 const TInt KTouchDialerOpenEffect  = 1505;
   138 const TInt KTouchDialerOpenEffect  = 1505;
   135 const TInt KTouchDialerCloseEffect = 1506;
   139 const TInt KTouchDialerCloseEffect = 1506;
   136 
   140 
   207     iApplicationExit = CPhoneApplicationExit::NewL(
   211     iApplicationExit = CPhoneApplicationExit::NewL(
   208         this,
   212         this,
   209         iEikEnv.WsSession(),
   213         iEikEnv.WsSession(),
   210         iEikEnv.WsSession().FindWindowGroupIdentifier( 0, KPhoneEikonServer ) );
   214         iEikEnv.WsSession().FindWindowGroupIdentifier( 0, KPhoneEikonServer ) );
   211 
   215 
       
   216     CCoeEnv* coeEnv = CCoeEnv::Static();
       
   217     
   212     if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
   218     if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
   213         {
   219         {
   214         iButtonsController = CPhoneButtonsController::NewL( iBubbleWrapper->TouchPane() );
   220         iButtonsController = CPhoneButtonsController::NewL( iBubbleWrapper->TouchPane() );
       
   221         iToolbarController = CPhoneToolbarController::NewL( *coeEnv );
   215         }
   222         }
   216 
   223 
   217     if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) )
   224     if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) )
   218         {
   225         {
       
   226         iDialerActive = EFalse;
       
   227         // Create dialer controller
       
   228         iDialerController = CPhoneDialerController::NewL( iBubbleWrapper,
       
   229                                                           *coeEnv );
   219         // Create dialer view
   230         // Create dialer view
   220         iDialerView = CPhoneDialerView::NewL( aRect );
   231         iDialerView = CPhoneDialerView::NewL( aRect );
   221         iDialerView->DrawableWindow()->SetOrdinalPosition( -1 );
   232         iDialerView->DrawableWindow()->SetOrdinalPosition( -1 );
   222         iDialerView->MakeVisible( EFalse );
   233         iDialerView->MakeVisible( EFalse );
   223         // Create dialer
   234         // Create dialer
   224         iDialer = CDialer::NewL( *iDialerView, aRect );
   235         iDialer = CDialer::NewL( *iDialerView, aRect, iDialerController );
   225         // Set NE for bubbleWrapper
   236         // Set NE for bubbleWrapper
   226         iBubbleWrapper->SetNumberEntry( iDialer->NumberEntry() );
   237         iBubbleWrapper->SetNumberEntry( iDialer->NumberEntry() );
   227         CCoeEnv* coeEnv = static_cast<CCoeControl*>(iDialer)->ControlEnv();
   238         iBubbleWrapper->SetNumberEntryObserver( *this );
   228         iDialerController = CPhoneDialerController::NewL( *iBubbleWrapper,
   239         // Finalise dialer view
   229                                                             *coeEnv,
   240         iDialerView->SetControl( iDialer );
   230                                                             *iMenuController );
   241         iDialerView->ActivateL();
   231         
   242         
   232         iToolbarController = CPhoneToolbarController::NewL( *coeEnv  );
   243         // Create controller for Easy Dialing
   233                                                            
   244         iEasyDialingController = CPhoneEasyDialingController::NewL( *iDialer );
   234       
   245         iDialerController->SetEasyDialingController( iEasyDialingController );
   235 		iDialerView->SetControl( iDialer );
   246         
   236 		iDialerView->ActivateL();
   247         // Create controller for DTMF mode of the dialer
   237 		iDialerActive = EFalse;
   248         iDtmfDialerController = CPhoneDtmfDialerController::NewL( iBubbleWrapper, 
       
   249                                                                   *coeEnv );
   238         }
   250         }
   239 
   251 
   240     User::LeaveIfError( iKeyLock.Connect() );
   252     User::LeaveIfError( iKeyLock.Connect() );
   241 
   253 
   242     // if you are using sgc-client's session to capserver,
   254     // if you are using sgc-client's session to capserver,
   296             {
   308             {
   297             iAppui->RemoveFromStack( iDialerView );
   309             iAppui->RemoveFromStack( iDialerView );
   298             }
   310             }
   299         delete iDialerView;
   311         delete iDialerView;
   300         }
   312         }
       
   313 		
       
   314 	delete iEasyDialingController;
       
   315 	delete iDtmfDialerController;
       
   316 		
   301     delete iDialer;
   317     delete iDialer;
   302     if ( iSingleItemFetch )
   318     if ( iSingleItemFetch )
   303         {
   319         {
   304         delete iSingleItemFetch;
   320         delete iSingleItemFetch;
   305         iSingleItemFetch = NULL;
   321         iSingleItemFetch = NULL;
   540 
   556 
   541         case EPhoneViewUpdateToolbar:
   557         case EPhoneViewUpdateToolbar:
   542             {
   558             {
   543             if ( iDialer )
   559             if ( iDialer )
   544                 {
   560                 {
   545                 iDialerController->UpdateToolbar();
   561                 iDialer->UpdateToolbar();
   546                 }
   562                 }
   547             }
   563             }
   548             break;
   564             break;
   549 
   565 
   550         case EPhoneViewSetControlAndVisibility:
   566         case EPhoneViewSetControlAndVisibility:
   743         case EPhoneViewUpdateCba:
   759         case EPhoneViewUpdateCba:
   744             SetCbaL( aCommandParam );
   760             SetCbaL( aCommandParam );
   745             break;
   761             break;
   746 
   762 
   747         case EPhoneViewMenuPane:
   763         case EPhoneViewMenuPane:
   748             iMenuController->SetReplaceFlag( IsReplaceAllowed() );
   764             // First offer initialization to easydialing, and if no
   749             iMenuController->DynInitMenuPaneL( aCommandParam );
   765             // initialization done, give it to the menu controller.
       
   766             if ( !iEasyDialingController->InitializeEasyDialingMenuL( aCommandParam ) )
       
   767                 {
       
   768                 iMenuController->SetReplaceFlag( IsReplaceAllowed() );
       
   769                 iMenuController->DynInitMenuPaneL( aCommandParam );
       
   770                 }
   750             break;
   771             break;
   751 
   772 
   752         case EPhoneViewMenuBar:
   773         case EPhoneViewMenuBar:
   753             iMenuController->DynInitMenuBar( aCommandParam );
   774             iMenuController->DynInitMenuBar( aCommandParam );
   754             break;
   775             break;
   916         case EPhoneViewSetServiceCodeFlag:
   937         case EPhoneViewSetServiceCodeFlag:
   917             iMenuController->SetServiceCodeFlag( aCommandParam );
   938             iMenuController->SetServiceCodeFlag( aCommandParam );
   918 
   939 
   919             if ( iDialer )
   940             if ( iDialer )
   920                 {
   941                 {
   921                 iDialerController->SetServiceCodeFlagL( aCommandParam );
   942                 iDialerController->SetServiceCodeFlag( aCommandParam );
   922                 }
   943                 }
   923             break;
   944             break;
   924 
   945 
   925         case EPhoneViewGetTextQueryContent:
   946         case EPhoneViewGetTextQueryContent:
   926             iQueryController->GetTextQueryContentL( aCommandParam );
   947             iQueryController->GetTextQueryContentL( aCommandParam );
  1055             {
  1076             {
  1056             if ( iDialer )
  1077             if ( iDialer )
  1057                 {
  1078                 {
  1058                 TPhoneCmdParamBoolean* booleanParam =
  1079                 TPhoneCmdParamBoolean* booleanParam =
  1059                     static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
  1080                     static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
  1060                 iDialerController->SetDtmfDialerVisibleL(
  1081                 if ( booleanParam->Boolean() )
  1061                                                 booleanParam->Boolean() );
  1082                     {
       
  1083                     iDialer->SetControllerL( iDtmfDialerController );
       
  1084                     }
       
  1085                 else
       
  1086                     {
       
  1087                     iDialer->SetControllerL( iDialerController );
       
  1088                     }
  1062                  }
  1089                  }
  1063             break;
  1090             break;
  1064             }
  1091             }
  1065 
  1092 
  1066         case EPhoneViewSetRetrictedDialer:
  1093         case EPhoneViewSetRestrictedDialer:
  1067             {
  1094             {
  1068             if ( iDialer )
  1095             if ( iDialer )
  1069                 {
  1096                 {
  1070                 TPhoneCmdParamBoolean* booleanParam =
  1097                 TPhoneCmdParamBoolean* booleanParam =
  1071                     static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
  1098                     static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
  1104             }
  1131             }
  1105             break;
  1132             break;
  1106 
  1133 
  1107         case EPhoneViewShowCustomizedDialer:
  1134         case EPhoneViewShowCustomizedDialer:
  1108             {
  1135             {
  1109             TPhoneCmdParamCustomDialer* customDialerParam =
  1136             if ( iDialer )
  1110                 static_cast<TPhoneCmdParamCustomDialer*>( aCommandParam );
  1137                 {
  1111             iDialerController->ShowCustomizedDialerL(
  1138                 TPhoneCmdParamCustomDialer* customDialerParam =
  1112                                       customDialerParam->DialerController() );
  1139                     static_cast<TPhoneCmdParamCustomDialer*>( aCommandParam );
       
  1140                 iDialer->SetControllerL( customDialerParam->DialerController() );
       
  1141                 }
  1113             }
  1142             }
  1114             break;
  1143             break;
  1115         case EPhoneViewGetNumberFromEntry:
  1144         case EPhoneViewGetNumberFromEntry:
  1116             {
  1145             {
  1117             iBubbleWrapper->GetNumberEntryContent( aCommandParam );
  1146             iBubbleWrapper->GetNumberEntryContent( aCommandParam );
  1146             TPhoneCmdParamBoolean*  booleanParam =
  1175             TPhoneCmdParamBoolean*  booleanParam =
  1147                 static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
  1176                 static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
  1148             iToolbarController->DimToolbar( booleanParam->Boolean());
  1177             iToolbarController->DimToolbar( booleanParam->Boolean());
  1149             break;
  1178             break;
  1150             }
  1179             }
       
  1180             
       
  1181         case EPhoneViewSetInvalidCsPhoneNumberFlag:
       
  1182             iMenuController->SetInvalidCsPhoneNumberFlag( aCommandParam );
       
  1183             break;
       
  1184                 
       
  1185         case EPhoneViewGetInvalidCsPhoneNumberFlag:
       
  1186             iMenuController->GetInvalidCsPhoneNumberFlag( aCommandParam );
       
  1187             break;
       
  1188 
       
  1189         case EPhoneViewGetEasyDialingMenuId:
       
  1190         case EPhoneViewGetEasyDialingCbaId:
       
  1191                 {
       
  1192                 iEasyDialingController->ExecuteCommandL( aCmdId, aCommandParam );
       
  1193                 }
       
  1194             break;
  1151 
  1195 
  1152         default:
  1196         default:
  1153             __PHONELOG( EBasic, EPhonePhoneapp,
  1197             __PHONELOG( EBasic, EPhonePhoneapp,
  1154              "CPhoneViewController::ExecuteCommandL -> UnKnownMessage !!! " );
  1198              "CPhoneViewController::ExecuteCommandL -> UnKnownMessage !!! " );
  1155             break;
  1199             break;
  1370                 {
  1414                 {
  1371                 TPhoneTransEffectType type =
  1415                 TPhoneTransEffectType type =
  1372                     static_cast<TPhoneCmdParamTransEffect*>( aCommandParam )->Type();
  1416                     static_cast<TPhoneCmdParamTransEffect*>( aCommandParam )->Type();
  1373                 TBool isForeground = iAppui->IsForeground();
  1417                 TBool isForeground = iAppui->IsForeground();
  1374 
  1418 
  1375                 if ( isForeground && // newer run effect if not at front
  1419                 // Check whether the idle is on foreground
       
  1420                 TBool idleInFore = ForegroundApplicationWindowGroupId() ==  IdleWindowGroupId() ?
       
  1421                         ETrue : EFalse;
       
  1422                 
       
  1423                 if ( isForeground && // Newer run effect if not at front
  1376                      ( ( type == EPhoneTransEffectDialerCreate && !iDialerActive ) ||
  1424                      ( ( type == EPhoneTransEffectDialerCreate && !iDialerActive ) ||
  1377                        ( type == EPhoneTransEffectDialerOpen && !iDialerActive &&
  1425                        ( type == EPhoneTransEffectDialerOpen && !iDialerActive &&
  1378                          iBubbleWrapper->IsNumberEntryUsed() ) ||
  1426                          iBubbleWrapper->IsNumberEntryUsed() ) ||
  1379                        ( type == EPhoneTransEffectDialerClose && iDialerActive ) ) )
  1427                        ( type == EPhoneTransEffectDialerClose && iDialerActive ) ) )
  1380                     {
  1428                     {
  1381                     HandleTransitionEffect( type );
  1429                     HandleTransitionEffect( type );
  1382                     }
  1430                     }
       
  1431                 // In case transition is from idle to dialer show transition effects as well.
       
  1432                 else if ( idleInFore && !iDialerActive &&
       
  1433                           type == EPhoneTransEffectDialerCreate )
       
  1434                     {
       
  1435                     HandleTransitionEffect( type );
       
  1436                     }
  1383                 }
  1437                 }
  1384             break;
  1438             break;
  1385             }
  1439             }
  1386 
  1440 
  1387         case EPhoneViewEndTransEffect:
  1441         case EPhoneViewEndTransEffect:
  1406             }
  1460             }
  1407             break;
  1461             break;
  1408 
  1462 
  1409         case EPhoneViewSetNumberEntryObserver:
  1463         case EPhoneViewSetNumberEntryObserver:
  1410             {
  1464             {
  1411             NumberEntryChangedHandler()->SetNumberEntryChangedCallBack(
  1465             iBubbleWrapper->SetNumberEntryChangedCallBack( aCommandParam );
  1412                                                 aCommandParam );
       
  1413             break;
  1466             break;
  1414             }
  1467             }
  1415         case EPhoneViewGetSingleItemFetchType:
  1468         case EPhoneViewGetSingleItemFetchType:
  1416             static_cast<TPhoneCmdParamInteger*>( aCommandParam )->SetInteger( SingleItemFetchType() );
  1469             static_cast<TPhoneCmdParamInteger*>( aCommandParam )->SetInteger( SingleItemFetchType() );
  1417             break;
  1470             break;
  1445                 }
  1498                 }
  1446             }
  1499             }
  1447             break;
  1500             break;
  1448 			
  1501 			
  1449         case EPhoneViewEnableToolbarButton:
  1502         case EPhoneViewEnableToolbarButton:
       
  1503             {
  1450             TPhoneCmdParamInteger*  integerParam =
  1504             TPhoneCmdParamInteger*  integerParam =
  1451                 static_cast<TPhoneCmdParamInteger*>( aCommandParam );
  1505                 static_cast<TPhoneCmdParamInteger*>( aCommandParam );
  1452             iToolbarController->SetToolbarButtonDimmed( integerParam->Integer(), EFalse );
  1506             iToolbarController->SetToolbarButtonDimmed( integerParam->Integer(), EFalse );
       
  1507             }
  1453             break;
  1508             break;
  1454 
  1509 
  1455         default:
  1510         default:
  1456             __PHONELOG( EBasic, EPhonePhoneapp, "CPhoneViewController::ExecuteCommand -> UnHandledMessage !!! " );
  1511             __PHONELOG( EBasic, EPhonePhoneapp, "CPhoneViewController::ExecuteCommand -> UnHandledMessage !!! " );
  1457             break;
  1512             break;
  1491                 EPhoneViewResponseSuccess :
  1546                 EPhoneViewResponseSuccess :
  1492                 EPhoneViewResponseFailed;
  1547                 EPhoneViewResponseFailed;
  1493                 }
  1548                 }
  1494              break;
  1549              break;
  1495 
  1550 
  1496         case EPhoneViewIsNumberEntryNumericMode:
  1551          case EPhoneViewGetEasyDialingInFocusStatus:
       
  1552          case EEasyDialingVoiceCall:
       
  1553          case EEasyDialingVideoCall:
       
  1554          case EEasyDialingSendMessage:
       
  1555          case EEasyDialingOpenContact:
       
  1556          case EEasyDialingCallHandlingActivated:
       
  1557          case EEasyDialingEnterKeyAction:
       
  1558          case EEasyDialingOn:
       
  1559          case EEasyDialingOff:
       
  1560              if ( iDialer )
       
  1561                  {
       
  1562                  viewResponse = iEasyDialingController->HandleCommandL( aCmdId );
       
  1563                  }
       
  1564              else
       
  1565                  {
       
  1566                  viewResponse = EPhoneViewResponseFailed;
       
  1567                  }
       
  1568              break;
       
  1569 
       
  1570          case EPhoneViewIsNumberEntryNumericMode:
  1497             viewResponse = iBubbleWrapper->IsNENumericMode() ?
  1571             viewResponse = iBubbleWrapper->IsNENumericMode() ?
  1498                 EPhoneViewResponseSuccess :
  1572                 EPhoneViewResponseSuccess :
  1499                 EPhoneViewResponseFailed;
  1573                 EPhoneViewResponseFailed;
  1500             break;
  1574             break;
  1501 
  1575 
  1577             }
  1651             }
  1578             
  1652             
  1579         case EPhoneViewIsDTMFEditorVisible:
  1653         case EPhoneViewIsDTMFEditorVisible:
  1580             if ( iDialer )
  1654             if ( iDialer )
  1581                 {
  1655                 {
  1582                 viewResponse = iDialerController->IsDTMFDialerVisible() ?
  1656                 viewResponse = ( IsDtmfDialerActive() ?
  1583                     EPhoneViewResponseSuccess :
  1657                     EPhoneViewResponseSuccess :
  1584                     EPhoneViewResponseFailed;
  1658                     EPhoneViewResponseFailed );
  1585                 }
  1659                 }
  1586             else // non-touch.
  1660             else // non-touch.
  1587                 {
  1661                 {
  1588                 viewResponse = iQueryController->IsDTMFQueryVisible() ?
  1662                 viewResponse = iQueryController->IsDTMFQueryVisible() ?
  1589                     EPhoneViewResponseSuccess :
  1663                     EPhoneViewResponseSuccess :
  1629                 if ( iBlockingDialogIsDisplayed )
  1703                 if ( iBlockingDialogIsDisplayed )
  1630                     {
  1704                     {
  1631                     RemovePhoneDialogsL();
  1705                     RemovePhoneDialogsL();
  1632                     }
  1706                     }
  1633                 // Remove DTMF dialer when exist
  1707                 // Remove DTMF dialer when exist
  1634                 if ( iDialerController->IsDTMFDialerVisible() )
  1708                 if ( IsDtmfDialerActive() )
  1635                     {
  1709                     {
  1636                     static_cast<MEikCommandObserver*>( CEikonEnv::Static()->EikAppUi() )
  1710                     static_cast<MEikCommandObserver*>( CEikonEnv::Static()->EikAppUi() )
  1637                     ->ProcessCommandL( EPhoneDtmfDialerExit );
  1711                     ->ProcessCommandL( EPhoneDtmfDialerExit );
  1638                     }
  1712                     }
  1639                 else if ( iCustomization && 
  1713                 else if ( iCustomization && 
  1640                           iDialerController->IsCustomizedDialerVisible() )
  1714                           IsCustomDialerActive() )
  1641                     {
  1715                     {
  1642                     iCustomization->HandleCommandL( 
  1716                     iCustomization->HandleCommandL( 
  1643                        *this, EPhoneViewOpenCallHandling, NULL );
  1717                        *this, EPhoneViewOpenCallHandling, NULL );
  1644                     }
  1718                     }
  1645                 else
  1719                 else
  1681             break;
  1755             break;
  1682 // Dialer specific commands end.
  1756 // Dialer specific commands end.
  1683 
  1757 
  1684         case EPhoneIsCustomizedDialerVisible:
  1758         case EPhoneIsCustomizedDialerVisible:
  1685             {
  1759             {
  1686             viewResponse = iDialerController->IsCustomizedDialerVisible() ?
  1760             viewResponse = IsCustomDialerActive() ?
  1687                 EPhoneViewResponseSuccess :
  1761                 EPhoneViewResponseSuccess :
  1688                 EPhoneViewResponseFailed;
  1762                 EPhoneViewResponseFailed;
  1689             }
  1763             }
  1690             break;
  1764             break;
  1691 
  1765 
  1692         case EPhoneViewHideCustomizedDialer:
  1766         case EPhoneViewHideCustomizedDialer:
  1693             {
  1767             {
  1694             iDialerController->HideCustomizedDialer();
  1768             if ( iDialer )
  1695             viewResponse = EPhoneViewResponseSuccess;
  1769                 {
       
  1770                 iDialer->SetControllerL( iDialerController );
       
  1771                 viewResponse = EPhoneViewResponseSuccess;
       
  1772                 }
  1696             }
  1773             }
  1697             break;
  1774             break;
  1698         case EPhoneViewShowToolbar:
  1775         case EPhoneViewShowToolbar:
  1699             {
  1776             {
  1700             iToolbarController->ShowToolbar();
  1777             iToolbarController->ShowToolbar();
  1839                 }
  1916                 }
  1840             break;
  1917             break;
  1841 
  1918 
  1842         case EPhoneViewGetCustomizedDialerMenuResourceId:
  1919         case EPhoneViewGetCustomizedDialerMenuResourceId:
  1843             {
  1920             {
  1844             TInt resId = iDialerController->CustomizedMenuResourceId();
  1921             TInt resId = iDialer->Controller()->MenuResourceId(); // easydialing change
  1845             static_cast<TPhoneCmdParamInteger*>( aCommandParam )->SetInteger( resId );
  1922             static_cast<TPhoneCmdParamInteger*>( aCommandParam )->SetInteger( resId );
  1846             viewResponse = EPhoneViewResponseSuccess;
  1923             viewResponse = EPhoneViewResponseSuccess;
  1847             }
  1924             }
  1848             break;
  1925             break;
  1849         case EPhoneViewGetCustomizedDialerCbaResourceId:
  1926         case EPhoneViewGetCustomizedDialerCbaResourceId:
  1850             {
  1927             {
  1851             TInt resId = iDialerController->CustomizedCbaResourceId();
  1928             TInt resId = iDialer->Controller()->CbaResourceId(); // easydialing change
  1852             static_cast<TPhoneCmdParamInteger*>( aCommandParam )->SetInteger( resId );
  1929             static_cast<TPhoneCmdParamInteger*>( aCommandParam )->SetInteger( resId );
  1853             viewResponse = EPhoneViewResponseSuccess;
  1930             viewResponse = EPhoneViewResponseSuccess;
  1854             }
  1931             }
  1855             break;
  1932             break;
  1856 
  1933             
  1857         default:
  1934         default:
  1858             if ( iCustomization )
  1935             if ( iCustomization )
  1859                 {
  1936                 {
  1860                 // Let customization handle view command
  1937                 // Let customization handle view command
  1861                 if ( iCustomization->HandleCommandL(
  1938                 if ( iCustomization->HandleCommandL(
  2027     {
  2104     {
  2028     __PHONELOG( EBasic, EPhoneUIView,
  2105     __PHONELOG( EBasic, EPhoneUIView,
  2029                         "CPhoneViewController::HandleResourceChangeL()" )
  2106                         "CPhoneViewController::HandleResourceChangeL()" )
  2030     // Notify the bubble that there has been a resource change
  2107     // Notify the bubble that there has been a resource change
  2031     iBubbleWrapper->Control()->HandleResourceChange( aType );
  2108     iBubbleWrapper->Control()->HandleResourceChange( aType );
  2032 
  2109     
  2033     // Notify dialer and switch statuspane layout.
  2110     // Notify dialer and switch statuspane layout.
  2034     if ( iDialer )
  2111     if ( iDialer )
  2035         {
  2112         {
  2036         if ( aType == KEikDynamicLayoutVariantSwitch )
  2113         if ( aType == KEikDynamicLayoutVariantSwitch )
  2037             {
  2114             {
  2038             SwitchLayoutToFlatStatusPaneL( iDialerActive );
  2115             SwitchLayoutToFlatStatusPaneL( iDialerActive );
  2039             
       
  2040             if ( !iDialerActive && Layout_Meta_Data::IsLandscapeOrientation() )
       
  2041                 {        
       
  2042                 iDialerController->HideToolbar(); 
       
  2043                 }
       
  2044             }
  2116             }
  2045         static_cast<CCoeControl*>(iDialer)->HandleResourceChange( aType );
  2117         static_cast<CCoeControl*>(iDialer)->HandleResourceChange( aType );
  2046         }
  2118         }
  2047     }
  2119     }
  2048 
  2120 
  2062 EXPORT_C void CPhoneViewController::HandleLayoutChange( TRect aRect )
  2134 EXPORT_C void CPhoneViewController::HandleLayoutChange( TRect aRect )
  2063     {
  2135     {
  2064     __PHONELOG( EBasic, EPhoneUIView,"CPhoneViewController::HandleLayoutChange()" )
  2136     __PHONELOG( EBasic, EPhoneUIView,"CPhoneViewController::HandleLayoutChange()" )
  2065     iPhoneView->SetRect( aRect );
  2137     iPhoneView->SetRect( aRect );
  2066     if ( iDialerView )
  2138     if ( iDialerView )
  2067 	    {
  2139         {
  2068 		iDialerView->SetRect( aRect );
  2140         iDialerView->SetRect( aRect );
  2069 		iStatusPane->UpdateTitlePane();
  2141         iStatusPane->UpdateTitlePane();
  2070 	    }
  2142         }
  2071     }
  2143     }
  2072 
  2144 
  2073 // ---------------------------------------------------------------------------
  2145 // ---------------------------------------------------------------------------
  2074 // CPhoneViewController::StatusPaneDisplayed
  2146 // CPhoneViewController::StatusPaneDisplayed
  2075 // ---------------------------------------------------------------------------
  2147 // ---------------------------------------------------------------------------
  2107     {
  2179     {
  2108     iBlockingDialogIsDisplayed = aBlockingDialog;
  2180     iBlockingDialogIsDisplayed = aBlockingDialog;
  2109     __PHONELOG1( EBasic, EPhoneUIView,
  2181     __PHONELOG1( EBasic, EPhoneUIView,
  2110         "CPhoneViewController::SetBlockingDialogIsDisplayed(%d)",
  2182         "CPhoneViewController::SetBlockingDialogIsDisplayed(%d)",
  2111         iBlockingDialogIsDisplayed );
  2183         iBlockingDialogIsDisplayed );
       
  2184     }
       
  2185 
       
  2186 // ---------------------------------------------------------------------------
       
  2187 // CPhoneViewController::NumberEntryStateChanged
       
  2188 // ---------------------------------------------------------------------------
       
  2189 //
       
  2190 void CPhoneViewController::NumberEntryStateChanged( TBool aEntryHasText )
       
  2191     {
       
  2192     iBubbleWrapper->HandleNumberEntryChanged();
       
  2193     iMenuController->SetNumberEntryEmptyFlag( !aEntryHasText );
       
  2194     ExecuteCommandL( EPhoneViewUpdateToolbar );
  2112     }
  2195     }
  2113 
  2196 
  2114 // ---------------------------------------------------------------------------
  2197 // ---------------------------------------------------------------------------
  2115 // CPhoneViewController::GetBlockingDialogIsDisplayed
  2198 // CPhoneViewController::GetBlockingDialogIsDisplayed
  2116 // ---------------------------------------------------------------------------
  2199 // ---------------------------------------------------------------------------
  2594         static_cast<TPhoneCmdParamInteger*>( aCommandParam );
  2677         static_cast<TPhoneCmdParamInteger*>( aCommandParam );
  2595 
  2678 
  2596     TInt resourceId = cbaResource->Integer();
  2679     TInt resourceId = cbaResource->Integer();
  2597 
  2680 
  2598     iCba->SetCommandSetL( resourceId );
  2681     iCba->SetCommandSetL( resourceId );
       
  2682     
  2599     iCba->DrawDeferred();
  2683     iCba->DrawDeferred();
       
  2684     
  2600     }
  2685     }
  2601 
  2686 
  2602 // ---------------------------------------------------------------------------
  2687 // ---------------------------------------------------------------------------
  2603 // CPhoneViewController::SetEikonNotifiersDisabled
  2688 // CPhoneViewController::SetEikonNotifiersDisabled
  2604 // ---------------------------------------------------------------------------
  2689 // ---------------------------------------------------------------------------
  3732 
  3817 
  3733     if ( !iDialerActive )
  3818     if ( !iDialerActive )
  3734         {
  3819         {
  3735         iDialerActive = ETrue;
  3820         iDialerActive = ETrue;
  3736 
  3821 
       
  3822         // Hide in-call view toolbar
       
  3823         iToolbarController->HideToolbar();
       
  3824 
       
  3825         // Ensure that toolbar and menu commands are up-to-date 
       
  3826         TBuf<1> temp; // we are only interested if the text is empty or not
       
  3827         iDialer->GetTextFromNumberEntry( temp );
       
  3828         NumberEntryStateChanged( temp.Length() > 0 );
       
  3829         
  3737         // Make dialer view top most
  3830         // Make dialer view top most
  3738         iDialerView->DrawableWindow()->SetOrdinalPosition(
  3831         iDialerView->DrawableWindow()->SetOrdinalPosition(
  3739             iPhoneView->DrawableWindow()->OrdinalPosition() );
  3832             iPhoneView->DrawableWindow()->OrdinalPosition() );
  3740         iDialerView->MakeVisible( ETrue );
       
  3741         iDialerView->DrawNow();
       
  3742 
  3833 
  3743         SwitchLayoutToFlatStatusPaneL( ETrue );
  3834         SwitchLayoutToFlatStatusPaneL( ETrue );
  3744 
  3835 
  3745         iPhoneView->DrawableWindow()->SetOrdinalPosition( -1 );
  3836         iPhoneView->DrawableWindow()->SetOrdinalPosition( -1 );
  3746         iPhoneView->MakeVisible( EFalse );
  3837         iPhoneView->MakeVisible( EFalse );
  3747 
  3838 
  3748         iToolbarController->HideToolbar();
       
  3749         iDialerController->ShowToolbar();
       
  3750 
       
  3751         // Update control stack
  3839         // Update control stack
  3752         iAppui->AddToStackL( iDialerView );
  3840         iAppui->AddToStackL( iDialerView );
  3753 		iAppui->RemoveFromStack( iPhoneView );
  3841         iAppui->RemoveFromStack( iPhoneView );
  3754 		}
  3842 
       
  3843         // Don't make dialer view visible before status pane is updated.
       
  3844         // This prevents unnecessary resizings.
       
  3845         iDialerView->MakeVisible( ETrue );
       
  3846         iDialerView->DrawDeferred();
       
  3847         }
  3755     }
  3848     }
  3756 
  3849 
  3757 // ---------------------------------------------------------------------------
  3850 // ---------------------------------------------------------------------------
  3758 // CPhoneViewController::SetControltoCallHandlingL
  3851 // CPhoneViewController::SetControltoCallHandlingL
  3759 // ---------------------------------------------------------------------------
  3852 // ---------------------------------------------------------------------------
  3761 void CPhoneViewController::SetControltoCallHandlingL()
  3854 void CPhoneViewController::SetControltoCallHandlingL()
  3762     {
  3855     {
  3763     __PHONELOG1( EBasic, EPhoneUIView,
  3856     __PHONELOG1( EBasic, EPhoneUIView,
  3764         "CPhoneViewController::SetControltoCallHandlingL iDialerActive (%d)", iDialerActive );
  3857         "CPhoneViewController::SetControltoCallHandlingL iDialerActive (%d)", iDialerActive );
  3765 
  3858 
       
  3859     // If securitymode or emergency call not show toolbar
       
  3860     if ( !iPhoneView->IsSecurityMode() && 
       
  3861      !iIncallIndicator->IsEmergencyCall() )
       
  3862      {
       
  3863          iToolbarController->ShowToolbar();
       
  3864      }
  3766     if ( iDialerActive )
  3865     if ( iDialerActive )
  3767         {
  3866         {
  3768         iDialerActive = EFalse;
  3867         iDialerActive = EFalse;
  3769 
  3868         // Hide dialer view. Do this before resizing status pane to prevent unnecessary
       
  3869         // resizing of dialer components. Hiding dialer view already before showing
       
  3870         // phone view might cause screen flickering but tests have proven it doesn't happen.
       
  3871         iDialerView->MakeVisible( EFalse );
       
  3872         
  3770         SwitchLayoutToFlatStatusPaneL( EFalse );
  3873         SwitchLayoutToFlatStatusPaneL( EFalse );
  3771 
  3874 
  3772 		// Make call handling view top most
  3875         // Make call handling view top most
  3773 		iPhoneView->DrawableWindow()->SetOrdinalPosition(
  3876         iPhoneView->DrawableWindow()->SetOrdinalPosition(
  3774             iDialerView->DrawableWindow()->OrdinalPosition() );
  3877             iDialerView->DrawableWindow()->OrdinalPosition() );
  3775         iPhoneView->MakeVisible( ETrue );
  3878         iPhoneView->MakeVisible( ETrue );
  3776         iPhoneView->DrawNow();
  3879         iPhoneView->DrawNow();
  3777 
  3880 
  3778 		iDialerView->DrawableWindow()->SetOrdinalPosition( -1 );
  3881         iDialerView->DrawableWindow()->SetOrdinalPosition( -1 );
  3779         iDialerView->MakeVisible( EFalse );
       
  3780 
       
  3781         iDialerController->HideToolbar();
       
  3782 
  3882 
  3783         // Update control stack
  3883         // Update control stack
  3784 		iAppui->AddToStackL( iPhoneView );
  3884         iAppui->AddToStackL( iPhoneView );
  3785 		iAppui->RemoveFromStack( iDialerView );
  3885         iAppui->RemoveFromStack( iDialerView );
  3786 		}
  3886         
  3787     
  3887         iEasyDialingController->HandleCommandL( EEasyDialingCallHandlingActivated );
  3788     // If securitymode or emergency call not show toolbar
  3888         }
  3789 	if ( !iPhoneView->IsSecurityMode() && 
       
  3790 	     !iIncallIndicator->IsEmergencyCall() )
       
  3791 		{
       
  3792     	iToolbarController->ShowToolbar();
       
  3793 		}
       
  3794     }
  3889     }
  3795 
  3890 
  3796 // ---------------------------------------------------------------------------
  3891 // ---------------------------------------------------------------------------
  3797 // CPhoneViewController::SetDialerControlAndVisibilityL
  3892 // CPhoneViewController::SetDialerControlAndVisibilityL
  3798 // ---------------------------------------------------------------------------
  3893 // ---------------------------------------------------------------------------
  3895         booleanParam->SetBoolean( EFalse );
  3990         booleanParam->SetBoolean( EFalse );
  3896         }
  3991         }
  3897     }
  3992     }
  3898 
  3993 
  3899 // ---------------------------------------------------------------------------
  3994 // ---------------------------------------------------------------------------
  3900 // CPhoneViewController::NumberEntryChangedHandler
  3995 // CPhoneViewController::IsDtmfDialerActive
  3901 // ---------------------------------------------------------------------------
  3996 // ---------------------------------------------------------------------------
  3902 //
  3997 //
  3903 MPhoneNumberEntryChangedHandler* CPhoneViewController::NumberEntryChangedHandler() const
  3998 TBool CPhoneViewController::IsDtmfDialerActive() const
  3904     {
  3999     {
  3905     if( iDialerController )
  4000     TBool ret = 
  3906         return iDialerController;
  4001             ( iDialer && iDtmfDialerController && 
  3907     else
  4002               iDialer->Controller() == iDtmfDialerController );
  3908         return iBubbleWrapper;
  4003     return ret;
  3909 
  4004     }
       
  4005 
       
  4006 // ---------------------------------------------------------------------------
       
  4007 // CPhoneViewController::IsCustomDialerActive
       
  4008 // ---------------------------------------------------------------------------
       
  4009 //
       
  4010 TBool CPhoneViewController::IsCustomDialerActive() const
       
  4011     {
       
  4012     TBool ret = EFalse;
       
  4013     if ( iDialer )
       
  4014         {
       
  4015         MPhoneDialerController* curController = iDialer->Controller();
       
  4016         ret = ( curController && 
       
  4017                 curController != iDialerController && 
       
  4018                 curController != iDtmfDialerController );
       
  4019         }
       
  4020     return ret;
  3910     }
  4021     }
  3911 
  4022 
  3912 // End of File
  4023 // End of File