diff -r 890b5dd735f8 -r f15ac8e65a02 vtuis/videotelui/src/features/dialer/cvtuidialercontainer.cpp --- a/vtuis/videotelui/src/features/dialer/cvtuidialercontainer.cpp Thu Aug 19 09:57:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,535 +0,0 @@ -/* -* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Dialer feature -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "VtUiUtility.h" -#include "VtUiLayout.h" -#include "mvtuicomponentmanager.h" -#include "cvtuidialercontainer.h" -#include "cvtuidialervideocontrol.h" -#include "tvtuiwsevent.h" -#include "tvtuistates.h" -#include "cvtuidialerskmodifier.h" -#include "cvtuifeaturemanager.h" -#include "CVtUiAppUi.h" -#include "mvtuicommandmanager.h" -#include "cvtuidtmfbuffer.h" -#include "CVtUiMainControl.h" -#include "CVtUiContextControl.h" -#include "CVtUiRemoteVideoControl.h" -#include "CVtUiEndCallButtonPane.h" -// Index of white color. -const TInt KVtUiColorWhite = 0; - -const TInt KVtUiActOrdinalPos = 2; -const TInt KVtUiDeactOrdinalPos = 4; - -// Implementation of TVtUiMiniDialerComponentState - -// --------------------------------------------------------------------------- -// TVtUiDialerComponentState::TVtUiDialerComponentState -// --------------------------------------------------------------------------- -// -TVtUiDialerComponentState::TVtUiDialerComponentState( - MVtUiComponent& aComponent ) : - TVtUiComponentState( aComponent, - TVtUiBlockListBitField( - MVtUiComponent::EComponentIdToolbar | - MVtUiComponent::EComponentIdNumberEntry ) ) - { - } - -// Implementation of CVtUiDialerContainer - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::NewL -// --------------------------------------------------------------------------- -// -CVtUiDialerContainer* CVtUiDialerContainer::NewL( - CVtUiFeatureManager& aFeatureManager ) - { - __VTPRINTENTER( "DialContainer.NewL" ) - CVtUiDialerContainer* self = - new ( ELeave ) CVtUiDialerContainer( aFeatureManager ); - CleanupStack::PushL( self ); - self->ConstructL( aFeatureManager.AppUi().BitmapManager() ); - CleanupStack::Pop(); // self - __VTPRINTEXIT( "DialContainer.NewL" ) - return self; - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::~CVtUiDialerContainer -// --------------------------------------------------------------------------- -// -CVtUiDialerContainer::~CVtUiDialerContainer() - { - __VTPRINTENTER( "DialContainer.~" ) - delete iAsyncDeactivate; - delete iVideoControl; - delete iDialer; - delete iSKModifier; - delete iInputBuffer; - delete iBgContext; - AknsUtils::DeregisterControlPosition( this ); - __VTPRINTEXIT( "DialContainer.~" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::HandleResourceChangeL -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::HandleResourceChangeL( TInt aType ) - { - __VTPRINTENTER( "DialContainer.HandleResourceChangeL" ) - switch ( aType ) - { - case KEikDynamicLayoutVariantSwitch: - case KAknsMessageSkinChange: - LayoutDialerContainer(); - break; - default: - break; - } - - CCoeControl::HandleResourceChange( aType ); - - __VTPRINTEXIT( "DialContainer.HandleResourceChangeL" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::ComponentId -// --------------------------------------------------------------------------- -// -MVtUiComponent::TComponentId CVtUiDialerContainer::ComponentId() const - { - return EComponentIdDialer; - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::ComponentAsControl -// --------------------------------------------------------------------------- -// -CCoeControl* CVtUiDialerContainer::ComponentAsControl() - { - return iVideoControl; - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::DoActivateL -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::DoActivateL() - { - __VTPRINTENTER( "DialContainer.DoActivateL" ) - iUiStates.SetIsDialerActivating( EFalse ); - LayoutDialerContainer(); - Reset(); - - // Sort control windows' ordinal pos - TInt ordinalPos = KVtUiActOrdinalPos; - CVtUiAppUi& appUi = iFeatureManager->AppUi(); - appUi.MainControl().DrawableWindow()->SetOrdinalPosition( - ordinalPos--, - appUi.MainControl().DrawableWindow()->OrdinalPriority() ); - - appUi.CurrentFixedToolbar()->DrawableWindow()->SetOrdinalPosition( - ordinalPos--, - appUi.CurrentFixedToolbar()->DrawableWindow()->OrdinalPriority() ); - - iDialer->DrawableWindow()->SetOrdinalPosition( - ordinalPos--, iDialer->DrawableWindow()->OrdinalPriority() ); - - iVideoControl->MakeVisible( ETrue ); - iDialer->MakeVisible( ETrue ); - MakeVisible( ETrue ); - // Force a resource change and draw for the dialer - HandleResourceChange( KAknsMessageSkinChange ); - DrawNow(); - User::LeaveIfError( iFeatureManager-> - CommandManager().AddCommandModifier( *iSKModifier ) ); - iInputBuffer->Activate(); - iMode = CVtUiAppUi::ERenderingModeDialer; - TVtUiWsEvent< CVtUiAppUi::TRenderingMode > renderingEvent( - EVtUiWsEventBeginRenderingMode, &iMode ); - iCoeEnv->WsSession().SendEventToWindowGroup( - Window().WindowGroupId(), renderingEvent ); - iUiStates.SetIsDialerOpen( ETrue ); - iAsyncDeactivate->Cancel(); - __VTPRINTEXIT( "DialContainer.DoActivateL" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::DoDeactivateL -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::DoDeactivateL() - { - __VTPRINTENTER( "DialContainer.DoDeactivateL" ) - iFeatureManager->CommandManager(). - RemoveCommandModifier( *iSKModifier ); - iUiStates.SetIsDialerOpen( EFalse ); - - // Sort control windows' ordinal pos - TInt ordinalPos = KVtUiDeactOrdinalPos; - CVtUiAppUi& appUi = iFeatureManager->AppUi(); - appUi.MainControl().DrawableWindow()->SetOrdinalPosition( - ordinalPos--, - appUi.MainControl().DrawableWindow()->OrdinalPriority() ); - - appUi.CurrentFixedToolbar()->DrawableWindow()->SetOrdinalPosition( - ordinalPos--, - appUi.CurrentFixedToolbar()->DrawableWindow()->OrdinalPriority() ); - - appUi.EndCallButtonPane().DrawableWindow()->SetOrdinalPosition( - ordinalPos--, - appUi.EndCallButtonPane().DrawableWindow()->OrdinalPriority() ); - - appUi.ContextControl().DrawableWindow()->SetOrdinalPosition( - ordinalPos--, - appUi.ContextControl().DrawableWindow()->OrdinalPriority() ); - - appUi.RemoteVideoControl().DrawableWindow()->SetOrdinalPosition( - ordinalPos--, - appUi.RemoteVideoControl().DrawableWindow()->OrdinalPriority() ); - - iVideoControl->MakeVisible( EFalse ); - iDialer->MakeVisible( EFalse ); - MakeVisible( EFalse ); - Reset(); - iInputBuffer->Deactivate(); - iAsyncDeactivate->CallBack(); - __VTPRINTEXIT( "DialContainer.DoDeactivateL" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::GetContents -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::GetContents( TDes& aContents ) const - { - __VTPRINTENTER( "DialContainer.GetContents" ) - iInputBuffer->GetContents( aContents ); - __VTPRINTEXIT( "DialContainer.GetContents" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::OfferKeyEventL -// --------------------------------------------------------------------------- -// -TKeyResponse CVtUiDialerContainer::OfferKeyEventL( const TKeyEvent& aEvent, - TEventCode aType ) - { - __VTPRINTENTER( "DialContainer.OfferKeyEventL" ) - TKeyResponse response( EKeyWasNotConsumed ); - TChar dtmfTone; - if ( VtUiUtility::IsDTMFEvent( aEvent, dtmfTone ) && - ( aType == EEventKey ) ) - { - response = EKeyWasConsumed; - AppendDigit( dtmfTone ); - } - __VTPRINTEXIT( "DialContainer.OfferKeyEventL" ) - return response; - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::Draw -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::Draw( const TRect& ) const - { - __VTPRINTENTER( "DialContainer.Draw" ) - CWindowGc& gc( SystemGc() ); - gc.SetBrushStyle( CWindowGc::ESolidBrush ); - gc.SetPenStyle( CGraphicsContext::ENullPen ); - gc.SetBrushColor( AKN_LAF_COLOR( KVtUiColorWhite ) ); - gc.Clear(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); - AknsDrawUtils::Background( skin, cc, this, gc, Rect() ); - __VTPRINTEXIT( "DialContainer.Draw" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::SizeChanged -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::SizeChanged() - { - __VTPRINTENTER( "DialContainer.SizeChanged" ) - TRect bgRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, bgRect ); - iBgContext->SetRect( bgRect ); - - AknsUtils::RegisterControlPosition( this ); - CCoeControl::SizeChanged(); - __VTPRINTEXIT( "DialContainer.SizeChanged" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::PositionChanged -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::PositionChanged() - { - __VTPRINTENTER( "DialContainer.PositionChanged" ) - AknsUtils::RegisterControlPosition( this ); - CCoeControl::PositionChanged(); - __VTPRINTEXIT( "DialContainer.PositionChanged" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::CountComponentControls -// --------------------------------------------------------------------------- -// -TInt CVtUiDialerContainer::CountComponentControls() const - { - return iDialer ? 1 : 0; - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::ComponentControl -// --------------------------------------------------------------------------- -// -CCoeControl* CVtUiDialerContainer::ComponentControl( TInt aIndex ) const - { - CCoeControl* result = NULL; - switch ( aIndex ) - { - case 0: - result = iDialer; - break; - default: - break; - } - return result; - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::CVtUiDialerContainer -// --------------------------------------------------------------------------- -// -CVtUiDialerContainer::CVtUiDialerContainer( - CVtUiFeatureManager& aFeatureManager ) : - iComponentState( *this ), - iFeatureManager( &aFeatureManager ), - iComponentManager( &aFeatureManager.ComponentManager() ), - iUiStates( aFeatureManager.UiStates() ) - { - __VTPRINTENTER( "DialContainer.ctor" ) - __VTPRINTEXIT( "DialContainer.ctor" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::ConstructL -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::ConstructL( CVtUiBitmapManager& aBitmapManager ) - { - __VTPRINTENTER( "DialContainer.ConstructL" ) - iBgContext = CAknsBasicBackgroundControlContext::NewL( - KAknsIIDQsnBgScreen, Rect(), ETrue ); - CreateWindowL(); - DrawableWindow()->SetPointerGrab( ETrue ); - SetExtent( TPoint(), TSize() ); - ActivateL(); - MakeVisible( EFalse ); - iInputBuffer = CVtUiDTMFBuffer::NewL( *iCoeEnv ); - iVideoControl = CVtUiDialerVideoControl::NewL( aBitmapManager ); - iDialer = CVideoDTMFDialer::NewL( *this, *iVideoControl, DialerRect() ); - - iSKModifier = CVtUiDialerSKModifier::NewL( *iFeatureManager ); - // Disable fading when using DP (eliminates nasty color error) - if ( FeatureManager::FeatureSupported( KFeatureIdDisplayPost ) ) - { - Window().SetNonFading( ETrue ); - } - iAsyncDeactivate = new ( ELeave ) CAsyncCallBack( - TCallBack( ASyncDoDeactivate, this ), CActive::EPriorityLow ); - __VTPRINTEXIT( "DialContainer.ConstructL" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::RegisterComponentL -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::RegisterComponentL() - { - __VTPRINTENTER( "DialContainer.RegisterComponentL" ) - User::LeaveIfError( iComponentManager->ChangeResourceChangeRegistration( - *this, MVtUiComponentManager::ERegister ) ); - User::LeaveIfError( - iComponentManager->ChangeComponentRegistration( - iComponentState, MVtUiComponentManager::ERegister ) ); - User::LeaveIfError( iComponentManager->ChangeKeyEventRegistration( - *this, MVtUiComponentManager::ERegister ) ); - __VTPRINTEXIT( "DialContainer.RegisterComponentL" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::UnregisterComponent -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::UnregisterComponent() - { - __VTPRINTENTER( "DialContainer.UnregisterComponent" ) - iComponentManager->ChangeComponentRegistration( - iComponentState, MVtUiComponentManager::EUnregister ); - iComponentManager->ChangeResourceChangeRegistration( - *this, MVtUiComponentManager::EUnregister ); - iComponentManager->ChangeKeyEventRegistration( - *this, MVtUiComponentManager::EUnregister ); - __VTPRINTEXIT( "DialContainer.UnregisterComponent" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::UnregisterComponent -// --------------------------------------------------------------------------- -// -MVtUiVideoWindow* CVtUiDialerContainer::ComponentAsVideoWindow() - { - __VTPRINTENTER( "DialContainer.ComponentAsVideoWindow" ) - __VTPRINTEXIT( "DialContainer.ComponentAsVideoWindow" ) - return iVideoControl; - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::LayoutDialerContainer -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::LayoutDialerContainer() - { - __VTPRINTENTER( "DialContainer.LayoutDialerContainer" ) - - TAknWindowLineLayout mainPaneLL; - - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - { - // Landscape: Option11 (thin status pane, lsc) - mainPaneLL = AknLayoutScalable_Apps::main_pane( 15 ).LayoutLine(); - } - else - { - // Portrait: main pane with status pane off, control pane on - mainPaneLL = AknLayoutScalable_Apps::main_pane( 9 ).LayoutLine(); - } - - TRect appWinRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EApplicationWindow, - appWinRect ); - - // Layout container - AknLayoutUtils::LayoutControl( this, appWinRect, mainPaneLL ); - - // Layout dialer - const TInt variety( Layout_Meta_Data::IsLandscapeOrientation() ? - 1 : 0 ); - TAknWindowLineLayout dialerLLout( - AknLayoutScalable_Apps::main_video_tele_dialer_pane( - variety ).LayoutLine() ); - AknLayoutUtils::LayoutControl( iDialer, Rect(), dialerLLout ); - - // Layout video control - AknLayoutUtils::LayoutControl( iVideoControl, iDialer->Rect(), - AknLayoutScalable_Apps::video_down_pane_cp( - variety ).LayoutLine() ); - - __VTPRINTEXIT( "DialContainer.LayoutDialerContainer" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::DialerRect -// --------------------------------------------------------------------------- -// -TRect CVtUiDialerContainer::DialerRect() const - { - __VTPRINTENTER( "DialContainer.DialerRect" ) - TRect mainPaneRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, - mainPaneRect ); - __VTPRINTEXIT( "DialContainer.DialerRect" ) - return mainPaneRect; - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::Reset -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::Reset() - { - __VTPRINTENTER( "DialContainer.Reset" ) - iInputBuffer->Reset(); - __VTPRINTEXIT( "DialContainer.Reset" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::AppendDigit -// --------------------------------------------------------------------------- -// -void CVtUiDialerContainer::AppendDigit( TChar aDigit ) - { - __VTPRINTENTER( "DialContainer.AppendDigit" ) - iInputBuffer->Append( aDigit ); - __VTPRINTEXIT( "DialContainer.AppendDigit" ) - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::MopSupplyObject -// --------------------------------------------------------------------------- -// -TTypeUid::Ptr CVtUiDialerContainer::MopSupplyObject( TTypeUid aId ) - { - __VTPRINTENTER( "CVtUiDialerContainer.MopSupplyObject" ) - // Required during rendering of the background skin in Draw() - if (aId.iUid == MAknsControlContext::ETypeId) - { - __VTPRINTEXIT( "CVtUiDialerContainer.MopSupplyObject.1" ) - return MAknsControlContext::SupplyMopObject( aId, iBgContext ); - } - __VTPRINTEXIT( "CVtUiDialerContainer.MopSupplyObject.2" ) - return CCoeControl::MopSupplyObject( aId ); - } - -// --------------------------------------------------------------------------- -// CVtUiDialerContainer::ASyncDoDeactivate -// --------------------------------------------------------------------------- -// -TInt CVtUiDialerContainer::ASyncDoDeactivate( TAny* aSelf ) - { - __VTPRINTENTER( "DialContainer.ASyncDoDeactivate" ) - CVtUiDialerContainer* self = - reinterpret_cast< CVtUiDialerContainer* >( aSelf ); - self->iMode = CVtUiAppUi::ERenderingModeDialer; - TVtUiWsEvent< CVtUiAppUi::TRenderingMode > renderingEvent( - EVtUiWsEventEndRenderingMode, &self->iMode ); - self->iCoeEnv->WsSession().SendEventToWindowGroup( - self->Window().WindowGroupId(), renderingEvent ); - __VTPRINTEXIT( "DialContainer.ASyncDoDeactivate" ) - return KErrNone; - }