diff -r 07d1685f0cd4 -r f84a661cfc1d vtuis/videotelui/src/CVtUiEndCallButtonPane.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtuis/videotelui/src/CVtUiEndCallButtonPane.cpp Fri Mar 12 15:43:03 2010 +0200 @@ -0,0 +1,229 @@ +/* +* Copyright (c) 2009 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: The container pane of end button. +* +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "CVtUiEndCallButton.h" +#include "CVtUiEndCallButtonPane.h" +#include "videotelui.hrh" +#include "CVtUiAppUi.h" + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::CVtUiEndCallButtonPane +// ----------------------------------------------------------------------------- +// +CVtUiEndCallButtonPane::CVtUiEndCallButtonPane() + { + // No implementation required + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::NewL +// ----------------------------------------------------------------------------- +// +CVtUiEndCallButtonPane* CVtUiEndCallButtonPane::NewL( const TRect& aRect ) + { + CVtUiEndCallButtonPane* self = + new (ELeave) CVtUiEndCallButtonPane(); + CleanupStack::PushL(self); + self->ConstructL( aRect ); + CleanupStack::Pop(); // self; + return self; + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::ConstructL +// ----------------------------------------------------------------------------- +// +void CVtUiEndCallButtonPane::ConstructL( const TRect& aRect ) + { + __VTPRINTENTER( "CVtUiEndCallButtonPane.ConstructL" ) + // Create a window for this application view + CreateWindowL(); + + // Set the windows size + SetRect( aRect ); + + CreateButtonUsingResourceL(); + GetButtonLayoutData(); + + + iBgContext = CAknsBasicBackgroundControlContext::NewL( + KAknsIIDQsnBgAreaMain, Rect(), ETrue ); + + // Activate the window, which makes it ready to be drawn + ActivateL(); + __VTPRINTEXIT( "CVtUiEndCallButtonPane.ConstructL" ) + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::CVtUiEndCallButtonPane +// ----------------------------------------------------------------------------- +// +CVtUiEndCallButtonPane::~CVtUiEndCallButtonPane() + { + __VTPRINTENTER( "CVtUiEndCallButtonPane.~" ) + if ( iEndButton ) + { + delete iEndButton; + } + + if ( iBgContext ) + { + delete iBgContext; + } + __VTPRINTEXIT( "CVtUiEndCallButtonPane.~" ) + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::CountComponentControls +// ----------------------------------------------------------------------------- +// +TInt CVtUiEndCallButtonPane::CountComponentControls() const + { + return iEndButton ? 1 : 0; + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::ComponentControl +// ----------------------------------------------------------------------------- +// +CCoeControl* CVtUiEndCallButtonPane::ComponentControl(TInt aIndex) const + { + return iEndButton; + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::Draw +// ----------------------------------------------------------------------------- +// +void CVtUiEndCallButtonPane::Draw(const TRect& aRect) const + { + __VTPRINTENTER( "CVtUiEndCallButtonPane.Draw" ) + CWindowGc& gc = SystemGc(); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); + AknsDrawUtils::Background( skin, cc, this, gc, Rect() ); + __VTPRINTEXIT( "CVtUiEndCallButtonPane.Draw" ) + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::SizeChanged +// ----------------------------------------------------------------------------- +// +void CVtUiEndCallButtonPane::SizeChanged() + { + __VTPRINTENTER( "CVtUiEndCallButtonPane.SizeChanged" ) + if( iEndButton ) + { + GetButtonLayoutData(); + } + if( iBgContext ) + { + TRect bgRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, bgRect ); + iBgContext->SetRect( bgRect ); + } + __VTPRINTEXIT( "CVtUiEndCallButtonPane.SizeChanged" ) + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::MopSupplyObject +// ----------------------------------------------------------------------------- +// +TTypeUid::Ptr CVtUiEndCallButtonPane::MopSupplyObject(TTypeUid aId) + { + __VTPRINTENTER( "CVtUiEndCallButtonPane.MopSupplyObject" ) + // Required during rendering of the background skin in Draw() + if (aId.iUid == MAknsControlContext::ETypeId) + { + __VTPRINTEXIT( "CVtUiEndCallButtonPane.MopSupplyObject.1" ) + return MAknsControlContext::SupplyMopObject( aId, iBgContext ); + } + __VTPRINTEXIT( "CVtUiEndCallButtonPane.MopSupplyObject.2" ) + return CCoeControl::MopSupplyObject( aId ); + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::HandleControlEventL +// ----------------------------------------------------------------------------- +// +void CVtUiEndCallButtonPane::HandleControlEventL( CCoeControl* aControl, + TCoeEvent aEventType ) + { + __VTPRINTENTER( "CVtUiEndCallButtonPane.HandleControlEventL" ) + if ( aEventType != EEventStateChanged ) + { + __VTPRINTEXIT( "CVtUiEndCallButtonPane.HandleControlEventL" ) + return; + } + CVtUiAppUi* appUi = STATIC_CAST( CVtUiAppUi*, CCoeEnv::Static()->AppUi() ); + appUi->CmdSimulateKeyEvent( EStdKeyNo ); + __VTPRINTEXIT( "CVtUiEndCallButtonPane.HandleControlEventL" ) + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::CreateButtonUsingResourceL +// ----------------------------------------------------------------------------- +// +void CVtUiEndCallButtonPane::CreateButtonUsingResourceL() + { + __VTPRINTENTER( "CVtUiEndCallButtonPane.CreateButtonUsingResourceL" ) + iEndButton = CVtUiEndCallButton::NewL(); + iEndButton->ConstructFromResourceL( R_VIDEOTELUI_END_CALL_BUTTON ); + iEndButton->SetContainerWindowL( *this ); + iEndButton->SetRect( Rect() ); + iEndButton->SetObserver( this ); + iEndButton->MakeVisible( ETrue ); + iEndButton->ActivateL(); + __VTPRINTEXIT( "CVtUiEndCallButtonPane.CreateButtonUsingResourceL" ) + } + +// ----------------------------------------------------------------------------- +// CVtUiEndCallButtonPane::GetButtonLayoutData +// ----------------------------------------------------------------------------- +// +void CVtUiEndCallButtonPane::GetButtonLayoutData() + { + __VTPRINTENTER( "CVtUiEndCallButtonPane.GetButtonLayoutData" ) + AknLayoutUtils::LayoutControl( + iEndButton, + Rect(), + AknLayoutScalable_Apps::bg_button_pane_cp034( 0, 0, 0) ); + + + TAknLayoutText text; + text.LayoutText( Rect(), + AknLayoutScalable_Apps::vidtel_button_pane_t1( + 0 ).LayoutLine()); + + TAknLayoutRect icon; + icon.LayoutRect( Rect(), + AknLayoutScalable_Apps::vidtel_button_pane_g1( + 0 ).LayoutLine()); + + iEndButton->SetIconSize( icon.Rect().Size() ); + + iEndButton->SetLayout( text, icon.Rect() ); + __VTPRINTEXIT( "CVtUiEndCallButtonPane.GetButtonLayoutData" ) + }