vtuis/videotelui/src/features/dialer/cvtuidialercontainer.cpp
branchRCL_3
changeset 24 f15ac8e65a02
parent 23 890b5dd735f8
child 25 779871d1e4f4
equal deleted inserted replaced
23:890b5dd735f8 24:f15ac8e65a02
     1 /*
       
     2 * Copyright (c) 2006 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:  Dialer feature
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include    <cvtlogger.h>
       
    20 #include    <cvideodtmfdialer.h>
       
    21 #include    <AknsDrawUtils.h>
       
    22 #include    <AknsUtils.h>
       
    23 #include    <aknlayoutscalable_apps.cdl.h>
       
    24 #include    <aknlayoutscalable_avkon.cdl.h>
       
    25 #include    <layoutmetadata.cdl.h>
       
    26 #include    <featmgr.h>
       
    27 #include    <AknsBasicBackgroundControlContext.h>
       
    28 #include    <akntoolbar.h>
       
    29 
       
    30 #include    "VtUiUtility.h"
       
    31 #include    "VtUiLayout.h"
       
    32 #include    "mvtuicomponentmanager.h"
       
    33 #include    "cvtuidialercontainer.h"
       
    34 #include    "cvtuidialervideocontrol.h"
       
    35 #include    "tvtuiwsevent.h"
       
    36 #include    "tvtuistates.h"
       
    37 #include    "cvtuidialerskmodifier.h"
       
    38 #include    "cvtuifeaturemanager.h"
       
    39 #include    "CVtUiAppUi.h"
       
    40 #include    "mvtuicommandmanager.h"
       
    41 #include    "cvtuidtmfbuffer.h"
       
    42 #include    "CVtUiMainControl.h"
       
    43 #include    "CVtUiContextControl.h"
       
    44 #include    "CVtUiRemoteVideoControl.h"
       
    45 #include    "CVtUiEndCallButtonPane.h"
       
    46 // Index of white color.
       
    47 const TInt KVtUiColorWhite = 0;
       
    48 
       
    49 const TInt KVtUiActOrdinalPos = 2;
       
    50 const TInt KVtUiDeactOrdinalPos = 4;
       
    51 
       
    52 // Implementation of TVtUiMiniDialerComponentState
       
    53 
       
    54 // ---------------------------------------------------------------------------
       
    55 // TVtUiDialerComponentState::TVtUiDialerComponentState
       
    56 // ---------------------------------------------------------------------------
       
    57 //
       
    58 TVtUiDialerComponentState::TVtUiDialerComponentState(
       
    59     MVtUiComponent& aComponent ) :
       
    60     TVtUiComponentState( aComponent,
       
    61         TVtUiBlockListBitField(
       
    62             MVtUiComponent::EComponentIdToolbar |
       
    63             MVtUiComponent::EComponentIdNumberEntry ) )
       
    64     {
       
    65     }
       
    66 
       
    67 // Implementation of CVtUiDialerContainer
       
    68 
       
    69 // ---------------------------------------------------------------------------
       
    70 // CVtUiDialerContainer::NewL
       
    71 // ---------------------------------------------------------------------------
       
    72 //
       
    73 CVtUiDialerContainer* CVtUiDialerContainer::NewL(
       
    74     CVtUiFeatureManager& aFeatureManager )
       
    75     {
       
    76     __VTPRINTENTER( "DialContainer.NewL" )
       
    77     CVtUiDialerContainer* self =
       
    78         new ( ELeave ) CVtUiDialerContainer( aFeatureManager );
       
    79     CleanupStack::PushL( self );
       
    80     self->ConstructL( aFeatureManager.AppUi().BitmapManager() );
       
    81     CleanupStack::Pop(); // self
       
    82     __VTPRINTEXIT( "DialContainer.NewL" )
       
    83     return self;
       
    84     }
       
    85 
       
    86 // ---------------------------------------------------------------------------
       
    87 // CVtUiDialerContainer::~CVtUiDialerContainer
       
    88 // ---------------------------------------------------------------------------
       
    89 //
       
    90 CVtUiDialerContainer::~CVtUiDialerContainer()
       
    91     {
       
    92     __VTPRINTENTER( "DialContainer.~" )
       
    93     delete iAsyncDeactivate;
       
    94     delete iVideoControl;
       
    95     delete iDialer;
       
    96     delete iSKModifier;
       
    97     delete iInputBuffer;
       
    98     delete iBgContext;
       
    99     AknsUtils::DeregisterControlPosition( this );
       
   100     __VTPRINTEXIT( "DialContainer.~" )
       
   101     }
       
   102 
       
   103 // ---------------------------------------------------------------------------
       
   104 // CVtUiDialerContainer::HandleResourceChangeL
       
   105 // ---------------------------------------------------------------------------
       
   106 //
       
   107 void CVtUiDialerContainer::HandleResourceChangeL( TInt aType )
       
   108     {
       
   109     __VTPRINTENTER( "DialContainer.HandleResourceChangeL" )
       
   110     switch ( aType )
       
   111         {
       
   112     case KEikDynamicLayoutVariantSwitch:
       
   113     case KAknsMessageSkinChange:
       
   114         LayoutDialerContainer();
       
   115         break;
       
   116     default:
       
   117         break;
       
   118         }
       
   119 
       
   120     CCoeControl::HandleResourceChange( aType );
       
   121     
       
   122     __VTPRINTEXIT( "DialContainer.HandleResourceChangeL" )
       
   123     }
       
   124 
       
   125 // ---------------------------------------------------------------------------
       
   126 // CVtUiDialerContainer::ComponentId
       
   127 // ---------------------------------------------------------------------------
       
   128 //
       
   129 MVtUiComponent::TComponentId CVtUiDialerContainer::ComponentId() const
       
   130     {
       
   131     return EComponentIdDialer;
       
   132     }
       
   133 
       
   134 // ---------------------------------------------------------------------------
       
   135 // CVtUiDialerContainer::ComponentAsControl
       
   136 // ---------------------------------------------------------------------------
       
   137 //
       
   138 CCoeControl* CVtUiDialerContainer::ComponentAsControl()
       
   139     {
       
   140     return iVideoControl;
       
   141     }
       
   142 
       
   143 // ---------------------------------------------------------------------------
       
   144 // CVtUiDialerContainer::DoActivateL
       
   145 // ---------------------------------------------------------------------------
       
   146 //
       
   147 void CVtUiDialerContainer::DoActivateL()
       
   148     {
       
   149     __VTPRINTENTER( "DialContainer.DoActivateL" )
       
   150     iUiStates.SetIsDialerActivating( EFalse );
       
   151     LayoutDialerContainer();
       
   152     Reset();
       
   153     
       
   154     // Sort control windows' ordinal pos
       
   155     TInt ordinalPos = KVtUiActOrdinalPos;
       
   156     CVtUiAppUi& appUi = iFeatureManager->AppUi();
       
   157     appUi.MainControl().DrawableWindow()->SetOrdinalPosition(
       
   158             ordinalPos--, 
       
   159             appUi.MainControl().DrawableWindow()->OrdinalPriority() );
       
   160     
       
   161     appUi.CurrentFixedToolbar()->DrawableWindow()->SetOrdinalPosition(
       
   162             ordinalPos--, 
       
   163             appUi.CurrentFixedToolbar()->DrawableWindow()->OrdinalPriority() );
       
   164     
       
   165     iDialer->DrawableWindow()->SetOrdinalPosition(
       
   166             ordinalPos--, iDialer->DrawableWindow()->OrdinalPriority() );
       
   167     
       
   168     iVideoControl->MakeVisible( ETrue );
       
   169     iDialer->MakeVisible( ETrue );
       
   170     MakeVisible( ETrue );
       
   171     // Force a resource change and draw for the dialer
       
   172     HandleResourceChange( KAknsMessageSkinChange );
       
   173     DrawNow();
       
   174     User::LeaveIfError( iFeatureManager->
       
   175         CommandManager().AddCommandModifier( *iSKModifier ) );
       
   176     iInputBuffer->Activate();
       
   177     iMode = CVtUiAppUi::ERenderingModeDialer;
       
   178     TVtUiWsEvent< CVtUiAppUi::TRenderingMode > renderingEvent(
       
   179         EVtUiWsEventBeginRenderingMode, &iMode );
       
   180     iCoeEnv->WsSession().SendEventToWindowGroup(
       
   181         Window().WindowGroupId(), renderingEvent );
       
   182     iUiStates.SetIsDialerOpen( ETrue );
       
   183     iAsyncDeactivate->Cancel();
       
   184     __VTPRINTEXIT( "DialContainer.DoActivateL" )
       
   185     }
       
   186 
       
   187 // ---------------------------------------------------------------------------
       
   188 // CVtUiDialerContainer::DoDeactivateL
       
   189 // ---------------------------------------------------------------------------
       
   190 //
       
   191 void CVtUiDialerContainer::DoDeactivateL()
       
   192     {
       
   193     __VTPRINTENTER( "DialContainer.DoDeactivateL" )
       
   194     iFeatureManager->CommandManager().
       
   195         RemoveCommandModifier( *iSKModifier );
       
   196     iUiStates.SetIsDialerOpen( EFalse );
       
   197 
       
   198     // Sort control windows' ordinal pos
       
   199     TInt ordinalPos = KVtUiDeactOrdinalPos;
       
   200     CVtUiAppUi& appUi = iFeatureManager->AppUi();
       
   201     appUi.MainControl().DrawableWindow()->SetOrdinalPosition( 
       
   202             ordinalPos--, 
       
   203             appUi.MainControl().DrawableWindow()->OrdinalPriority() );
       
   204     
       
   205     appUi.CurrentFixedToolbar()->DrawableWindow()->SetOrdinalPosition(
       
   206             ordinalPos--, 
       
   207             appUi.CurrentFixedToolbar()->DrawableWindow()->OrdinalPriority() );
       
   208       
       
   209     appUi.EndCallButtonPane().DrawableWindow()->SetOrdinalPosition( 
       
   210             ordinalPos--, 
       
   211             appUi.EndCallButtonPane().DrawableWindow()->OrdinalPriority() );
       
   212     
       
   213     appUi.ContextControl().DrawableWindow()->SetOrdinalPosition( 
       
   214             ordinalPos--, 
       
   215             appUi.ContextControl().DrawableWindow()->OrdinalPriority() );
       
   216     
       
   217     appUi.RemoteVideoControl().DrawableWindow()->SetOrdinalPosition(
       
   218             ordinalPos--, 
       
   219             appUi.RemoteVideoControl().DrawableWindow()->OrdinalPriority() );
       
   220     
       
   221     iVideoControl->MakeVisible( EFalse );
       
   222     iDialer->MakeVisible( EFalse );
       
   223     MakeVisible( EFalse );
       
   224     Reset();
       
   225     iInputBuffer->Deactivate();
       
   226     iAsyncDeactivate->CallBack();
       
   227     __VTPRINTEXIT( "DialContainer.DoDeactivateL" )
       
   228     }
       
   229 
       
   230 // ---------------------------------------------------------------------------
       
   231 // CVtUiDialerContainer::GetContents
       
   232 // ---------------------------------------------------------------------------
       
   233 //
       
   234 void CVtUiDialerContainer::GetContents( TDes& aContents ) const
       
   235     {
       
   236     __VTPRINTENTER( "DialContainer.GetContents" )
       
   237     iInputBuffer->GetContents( aContents );
       
   238     __VTPRINTEXIT( "DialContainer.GetContents" )
       
   239     }
       
   240 
       
   241 // ---------------------------------------------------------------------------
       
   242 // CVtUiDialerContainer::OfferKeyEventL
       
   243 // ---------------------------------------------------------------------------
       
   244 //
       
   245 TKeyResponse CVtUiDialerContainer::OfferKeyEventL( const TKeyEvent& aEvent,
       
   246     TEventCode aType )
       
   247     {
       
   248     __VTPRINTENTER( "DialContainer.OfferKeyEventL" )
       
   249     TKeyResponse response( EKeyWasNotConsumed );
       
   250     TChar dtmfTone;
       
   251     if ( VtUiUtility::IsDTMFEvent( aEvent, dtmfTone ) &&
       
   252          ( aType == EEventKey ) )
       
   253         {
       
   254         response = EKeyWasConsumed;
       
   255         AppendDigit( dtmfTone );
       
   256         }
       
   257     __VTPRINTEXIT( "DialContainer.OfferKeyEventL" )
       
   258     return response;
       
   259     }
       
   260 
       
   261 // ---------------------------------------------------------------------------
       
   262 // CVtUiDialerContainer::Draw
       
   263 // ---------------------------------------------------------------------------
       
   264 //
       
   265 void CVtUiDialerContainer::Draw( const TRect& ) const
       
   266     {
       
   267     __VTPRINTENTER( "DialContainer.Draw" )
       
   268     CWindowGc& gc( SystemGc() );
       
   269     gc.SetBrushStyle( CWindowGc::ESolidBrush );
       
   270     gc.SetPenStyle( CGraphicsContext::ENullPen );
       
   271     gc.SetBrushColor( AKN_LAF_COLOR( KVtUiColorWhite ) );
       
   272     gc.Clear();
       
   273     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   274     MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
       
   275     AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
       
   276     __VTPRINTEXIT( "DialContainer.Draw" )
       
   277     }
       
   278 
       
   279 // ---------------------------------------------------------------------------
       
   280 // CVtUiDialerContainer::SizeChanged
       
   281 // ---------------------------------------------------------------------------
       
   282 //
       
   283 void CVtUiDialerContainer::SizeChanged()
       
   284     {
       
   285     __VTPRINTENTER( "DialContainer.SizeChanged" )
       
   286     TRect bgRect;
       
   287     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, bgRect );
       
   288     iBgContext->SetRect( bgRect );
       
   289 
       
   290     AknsUtils::RegisterControlPosition( this );
       
   291     CCoeControl::SizeChanged();
       
   292     __VTPRINTEXIT( "DialContainer.SizeChanged" )
       
   293     }
       
   294 
       
   295 // ---------------------------------------------------------------------------
       
   296 // CVtUiDialerContainer::PositionChanged
       
   297 // ---------------------------------------------------------------------------
       
   298 //
       
   299 void CVtUiDialerContainer::PositionChanged()
       
   300     {
       
   301     __VTPRINTENTER( "DialContainer.PositionChanged" )
       
   302     AknsUtils::RegisterControlPosition( this );
       
   303     CCoeControl::PositionChanged();
       
   304     __VTPRINTEXIT( "DialContainer.PositionChanged" )
       
   305     }
       
   306 
       
   307 // ---------------------------------------------------------------------------
       
   308 // CVtUiDialerContainer::CountComponentControls
       
   309 // ---------------------------------------------------------------------------
       
   310 //
       
   311 TInt CVtUiDialerContainer::CountComponentControls() const
       
   312     {
       
   313     return iDialer ? 1 : 0;
       
   314     }
       
   315 
       
   316 // ---------------------------------------------------------------------------
       
   317 // CVtUiDialerContainer::ComponentControl
       
   318 // ---------------------------------------------------------------------------
       
   319 //
       
   320 CCoeControl* CVtUiDialerContainer::ComponentControl( TInt aIndex ) const
       
   321     {
       
   322     CCoeControl* result = NULL;
       
   323     switch ( aIndex )
       
   324         {
       
   325     case 0:
       
   326         result = iDialer;
       
   327         break;
       
   328     default:
       
   329         break;
       
   330         }
       
   331     return result;
       
   332     }
       
   333 
       
   334 // ---------------------------------------------------------------------------
       
   335 // CVtUiDialerContainer::CVtUiDialerContainer
       
   336 // ---------------------------------------------------------------------------
       
   337 //
       
   338 CVtUiDialerContainer::CVtUiDialerContainer(
       
   339     CVtUiFeatureManager& aFeatureManager ) :
       
   340     iComponentState( *this ),
       
   341     iFeatureManager( &aFeatureManager ),
       
   342     iComponentManager( &aFeatureManager.ComponentManager() ),
       
   343     iUiStates( aFeatureManager.UiStates() )
       
   344     {
       
   345     __VTPRINTENTER( "DialContainer.ctor" )
       
   346     __VTPRINTEXIT( "DialContainer.ctor" )
       
   347     }
       
   348 
       
   349 // ---------------------------------------------------------------------------
       
   350 // CVtUiDialerContainer::ConstructL
       
   351 // ---------------------------------------------------------------------------
       
   352 //
       
   353 void CVtUiDialerContainer::ConstructL( CVtUiBitmapManager& aBitmapManager )
       
   354     {
       
   355     __VTPRINTENTER( "DialContainer.ConstructL" )
       
   356     iBgContext = CAknsBasicBackgroundControlContext::NewL(
       
   357                       KAknsIIDQsnBgScreen, Rect(), ETrue );
       
   358     CreateWindowL();
       
   359     DrawableWindow()->SetPointerGrab( ETrue );
       
   360     SetExtent( TPoint(), TSize() );
       
   361     ActivateL();
       
   362     MakeVisible( EFalse );
       
   363     iInputBuffer = CVtUiDTMFBuffer::NewL( *iCoeEnv );
       
   364     iVideoControl = CVtUiDialerVideoControl::NewL( aBitmapManager );
       
   365     iDialer = CVideoDTMFDialer::NewL( *this, *iVideoControl, DialerRect() );
       
   366     
       
   367     iSKModifier = CVtUiDialerSKModifier::NewL( *iFeatureManager );
       
   368     // Disable fading when using DP (eliminates nasty color error)
       
   369     if ( FeatureManager::FeatureSupported( KFeatureIdDisplayPost ) )
       
   370         {
       
   371         Window().SetNonFading( ETrue );
       
   372         }
       
   373     iAsyncDeactivate = new ( ELeave ) CAsyncCallBack(
       
   374         TCallBack( ASyncDoDeactivate, this ), CActive::EPriorityLow );
       
   375     __VTPRINTEXIT( "DialContainer.ConstructL" )
       
   376     }
       
   377 
       
   378 // ---------------------------------------------------------------------------
       
   379 // CVtUiDialerContainer::RegisterComponentL
       
   380 // ---------------------------------------------------------------------------
       
   381 //
       
   382 void CVtUiDialerContainer::RegisterComponentL()
       
   383     {
       
   384     __VTPRINTENTER( "DialContainer.RegisterComponentL" )
       
   385     User::LeaveIfError( iComponentManager->ChangeResourceChangeRegistration(
       
   386         *this, MVtUiComponentManager::ERegister ) );
       
   387     User::LeaveIfError(
       
   388         iComponentManager->ChangeComponentRegistration(
       
   389         iComponentState, MVtUiComponentManager::ERegister ) );
       
   390     User::LeaveIfError( iComponentManager->ChangeKeyEventRegistration(
       
   391         *this, MVtUiComponentManager::ERegister ) );
       
   392     __VTPRINTEXIT( "DialContainer.RegisterComponentL" )
       
   393     }
       
   394 
       
   395 // ---------------------------------------------------------------------------
       
   396 // CVtUiDialerContainer::UnregisterComponent
       
   397 // ---------------------------------------------------------------------------
       
   398 //
       
   399 void CVtUiDialerContainer::UnregisterComponent()
       
   400     {
       
   401     __VTPRINTENTER( "DialContainer.UnregisterComponent" )
       
   402     iComponentManager->ChangeComponentRegistration(
       
   403         iComponentState, MVtUiComponentManager::EUnregister );
       
   404     iComponentManager->ChangeResourceChangeRegistration(
       
   405         *this, MVtUiComponentManager::EUnregister );
       
   406     iComponentManager->ChangeKeyEventRegistration(
       
   407         *this, MVtUiComponentManager::EUnregister );
       
   408     __VTPRINTEXIT( "DialContainer.UnregisterComponent" )
       
   409     }
       
   410 
       
   411 // ---------------------------------------------------------------------------
       
   412 // CVtUiDialerContainer::UnregisterComponent
       
   413 // ---------------------------------------------------------------------------
       
   414 //
       
   415 MVtUiVideoWindow* CVtUiDialerContainer::ComponentAsVideoWindow()
       
   416     {
       
   417     __VTPRINTENTER( "DialContainer.ComponentAsVideoWindow" )
       
   418     __VTPRINTEXIT( "DialContainer.ComponentAsVideoWindow" )
       
   419     return iVideoControl;
       
   420     }
       
   421 
       
   422 // ---------------------------------------------------------------------------
       
   423 // CVtUiDialerContainer::LayoutDialerContainer
       
   424 // ---------------------------------------------------------------------------
       
   425 //
       
   426 void CVtUiDialerContainer::LayoutDialerContainer()
       
   427     {
       
   428     __VTPRINTENTER( "DialContainer.LayoutDialerContainer" )
       
   429 
       
   430     TAknWindowLineLayout mainPaneLL;
       
   431 
       
   432     if ( Layout_Meta_Data::IsLandscapeOrientation() )
       
   433         {
       
   434         // Landscape: Option11 (thin status pane, lsc)
       
   435         mainPaneLL = AknLayoutScalable_Apps::main_pane( 15 ).LayoutLine();
       
   436         }
       
   437     else
       
   438         {
       
   439         // Portrait: main pane with status pane off, control pane on
       
   440         mainPaneLL = AknLayoutScalable_Apps::main_pane( 9 ).LayoutLine();
       
   441         }
       
   442 
       
   443     TRect appWinRect;
       
   444     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EApplicationWindow,
       
   445         appWinRect );
       
   446 
       
   447     // Layout container
       
   448     AknLayoutUtils::LayoutControl( this, appWinRect, mainPaneLL );
       
   449 
       
   450     // Layout dialer
       
   451     const TInt variety( Layout_Meta_Data::IsLandscapeOrientation() ?
       
   452         1 : 0 );
       
   453     TAknWindowLineLayout dialerLLout(
       
   454         AknLayoutScalable_Apps::main_video_tele_dialer_pane(
       
   455             variety ).LayoutLine() );
       
   456     AknLayoutUtils::LayoutControl( iDialer, Rect(), dialerLLout );
       
   457 
       
   458     // Layout video control
       
   459     AknLayoutUtils::LayoutControl( iVideoControl, iDialer->Rect(),
       
   460          AknLayoutScalable_Apps::video_down_pane_cp(
       
   461             variety ).LayoutLine() );
       
   462 
       
   463     __VTPRINTEXIT( "DialContainer.LayoutDialerContainer" )
       
   464     }
       
   465 
       
   466 // ---------------------------------------------------------------------------
       
   467 // CVtUiDialerContainer::DialerRect
       
   468 // ---------------------------------------------------------------------------
       
   469 //
       
   470 TRect CVtUiDialerContainer::DialerRect() const
       
   471     {
       
   472     __VTPRINTENTER( "DialContainer.DialerRect" )
       
   473     TRect mainPaneRect;
       
   474     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
       
   475         mainPaneRect );
       
   476     __VTPRINTEXIT( "DialContainer.DialerRect" )
       
   477     return mainPaneRect;
       
   478     }
       
   479 
       
   480 // ---------------------------------------------------------------------------
       
   481 // CVtUiDialerContainer::Reset
       
   482 // ---------------------------------------------------------------------------
       
   483 //
       
   484 void CVtUiDialerContainer::Reset()
       
   485     {
       
   486     __VTPRINTENTER( "DialContainer.Reset" )
       
   487     iInputBuffer->Reset();
       
   488     __VTPRINTEXIT( "DialContainer.Reset" )
       
   489     }
       
   490 
       
   491 // ---------------------------------------------------------------------------
       
   492 // CVtUiDialerContainer::AppendDigit
       
   493 // ---------------------------------------------------------------------------
       
   494 //
       
   495 void CVtUiDialerContainer::AppendDigit( TChar aDigit )
       
   496     {
       
   497     __VTPRINTENTER( "DialContainer.AppendDigit" )
       
   498     iInputBuffer->Append( aDigit );
       
   499     __VTPRINTEXIT( "DialContainer.AppendDigit" )
       
   500     }
       
   501 
       
   502 // ---------------------------------------------------------------------------
       
   503 // CVtUiDialerContainer::MopSupplyObject
       
   504 // ---------------------------------------------------------------------------
       
   505 //
       
   506 TTypeUid::Ptr CVtUiDialerContainer::MopSupplyObject( TTypeUid aId )
       
   507  {
       
   508      __VTPRINTENTER( "CVtUiDialerContainer.MopSupplyObject" )
       
   509  // Required during rendering of the background skin in Draw()
       
   510  if (aId.iUid == MAknsControlContext::ETypeId)
       
   511      {
       
   512       __VTPRINTEXIT( "CVtUiDialerContainer.MopSupplyObject.1" )
       
   513      return MAknsControlContext::SupplyMopObject( aId, iBgContext );
       
   514      }
       
   515     __VTPRINTEXIT( "CVtUiDialerContainer.MopSupplyObject.2" )
       
   516  return CCoeControl::MopSupplyObject( aId );
       
   517  }
       
   518 
       
   519 // ---------------------------------------------------------------------------
       
   520 // CVtUiDialerContainer::ASyncDoDeactivate
       
   521 // ---------------------------------------------------------------------------
       
   522 //
       
   523 TInt CVtUiDialerContainer::ASyncDoDeactivate( TAny* aSelf )
       
   524     {
       
   525     __VTPRINTENTER( "DialContainer.ASyncDoDeactivate" )
       
   526     CVtUiDialerContainer* self =
       
   527         reinterpret_cast< CVtUiDialerContainer* >( aSelf );
       
   528     self->iMode = CVtUiAppUi::ERenderingModeDialer;
       
   529     TVtUiWsEvent< CVtUiAppUi::TRenderingMode > renderingEvent(
       
   530         EVtUiWsEventEndRenderingMode, &self->iMode );
       
   531     self->iCoeEnv->WsSession().SendEventToWindowGroup(
       
   532         self->Window().WindowGroupId(), renderingEvent );
       
   533     __VTPRINTEXIT( "DialContainer.ASyncDoDeactivate" )
       
   534     return KErrNone;
       
   535     }