diff -r 000000000000 -r 96612d01cf9f videoplayback/videoplaybackcontrols/src/mpxvideoplaybackaspectratioicon.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackaspectratioicon.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,335 @@ +/* +* 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: Aspect ratio control +* +*/ + +// Version : %version: 11 % + + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include + +#ifdef RD_TACTILE_FEEDBACK +#include +#endif //RD_TACTILE_FEEDBACK + +#include "mpxcommonvideoplaybackview.hrh" +#include "mpxvideoplaybackaspectratioicon.h" +#include "mpxvideoplaybackcontrolscontroller.h" +#include "mpxvideo_debug.h" + +// ============================ MEMBER FUNCTIONS =================================================== + +CMPXVideoPlaybackAspectRatioIcon::CMPXVideoPlaybackAspectRatioIcon( + CMPXVideoPlaybackControlsController* aController ) + : iController( aController ) +{ +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackAspectRatioIcon::ConstructL() +// Symbian 2nd phase constructor can leave. +// ------------------------------------------------------------------------------------------------- +// +void CMPXVideoPlaybackAspectRatioIcon::ConstructL( TRect aRect ) +{ + MPX_DEBUG(_L("CMPXVideoPlaybackAspectRatioIcon::ConstructL()")); + + SetRect( TRect( 0, 0, aRect.Width(), aRect.Height() ) ); + + iAspectRatioRect = TRect( Rect().iTl.iX + 15, + Rect().iTl.iY + 15, + Rect().iBr.iX - 15, + Rect().iBr.iY - 15 ); + + SkinChangeL(); + +#ifdef RD_TACTILE_FEEDBACK + iFeedback = MTouchFeedback::Instance(); +#endif //RD_TACTILE_FEEDBACK +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackAspectRatioIcon::NewL() +// Two-phased constructor. +// ------------------------------------------------------------------------------------------------- +// +CMPXVideoPlaybackAspectRatioIcon* +CMPXVideoPlaybackAspectRatioIcon::NewL( CMPXVideoPlaybackControlsController* aController, + TRect aRect ) +{ + MPX_DEBUG(_L("CMPXVideoPlaybackAspectRatioIcon::NewL()")); + + CMPXVideoPlaybackAspectRatioIcon* self = + new ( ELeave ) CMPXVideoPlaybackAspectRatioIcon( aController ); + + CleanupStack::PushL( self ); + self->ConstructL( aRect ); + CleanupStack::Pop(); + return self; +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackAspectRatioIcon::~CMPXVideoPlaybackAspectRatioIcon() +// Destructor. +// ------------------------------------------------------------------------------------------------- +// +CMPXVideoPlaybackAspectRatioIcon::~CMPXVideoPlaybackAspectRatioIcon() +{ + MPX_DEBUG(_L("CMPXVideoPlaybackAspectRatioIcon::~CMPXVideoPlaybackAspectRatioIcon()")); + + if ( iNaturalIcon ) + { + delete iNaturalIcon; + iNaturalIcon = NULL; + } + + if ( iStretchIcon ) + { + delete iStretchIcon; + iStretchIcon = NULL; + } + + if ( iZoomIcon ) + { + delete iZoomIcon; + iZoomIcon = NULL; + } + +#ifdef RD_TACTILE_FEEDBACK + if (iFeedback) + { + iFeedback->RemoveFeedbackForControl(this); + } +#endif //RD_TACTILE_FEEDBACK +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackAspectRatioIcon::SkinChangeL() +// ------------------------------------------------------------------------------------------------- +// +void CMPXVideoPlaybackAspectRatioIcon::SkinChangeL() +{ + MPX_DEBUG(_L("CMPXVideoPlaybackAspectRatioIcon::SkinChangeL()")); + + // + // Create icons + // + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + TFileName iconsPath; + iController->LocateBitmapFileL( iconsPath ); + + if ( iNaturalIcon ) + { + delete iNaturalIcon; + iNaturalIcon = NULL; + } + + iNaturalIcon = AknsUtils::CreateGulIconL( + skin, + KAknsIIDQgnIndiCamsNight, + iconsPath, + EMbmMpxvideoplaybackcontrolsQgn_indi_mp_ratio_orig, + EMbmMpxvideoplaybackcontrolsQgn_indi_mp_ratio_orig_mask ); + + if ( iNaturalIcon ) + { + AknIconUtils::SetSize( iNaturalIcon->Bitmap(), + iAspectRatioRect.Size(), + EAspectRatioNotPreserved ); + } + + if ( iStretchIcon ) + { + delete iStretchIcon; + iStretchIcon = NULL; + } + + iStretchIcon = AknsUtils::CreateGulIconL( + skin, + KAknsIIDQgnIndiCamsBright, + iconsPath, + EMbmMpxvideoplaybackcontrolsQgn_indi_mp_ratio_stretch, + EMbmMpxvideoplaybackcontrolsQgn_indi_mp_ratio_stretch_mask ); + + if ( iStretchIcon ) + { + AknIconUtils::SetSize( iStretchIcon->Bitmap(), + iAspectRatioRect.Size(), + EAspectRatioNotPreserved ); + } + + if ( iZoomIcon ) + { + delete iZoomIcon; + iZoomIcon = NULL; + } + + iZoomIcon = AknsUtils::CreateGulIconL( + skin, + KAknsIIDQgnIndiCamsCloudy, + iconsPath, + EMbmMpxvideoplaybackcontrolsQgn_indi_mp_ratio_zoom, + EMbmMpxvideoplaybackcontrolsQgn_indi_mp_ratio_zoom_mask ); + + if ( iZoomIcon ) + { + AknIconUtils::SetSize( iZoomIcon->Bitmap(), + iAspectRatioRect.Size(), + EAspectRatioNotPreserved ); + } +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackAspectRatioIcon::CountComponentControls() +// ------------------------------------------------------------------------------------------------- +// +TInt CMPXVideoPlaybackAspectRatioIcon::CountComponentControls() const +{ + return 0; +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackAspectRatioIcon::Draw() +// ------------------------------------------------------------------------------------------------- +// +void CMPXVideoPlaybackAspectRatioIcon::Draw( const TRect& aRect ) const +{ + MPX_DEBUG(_L("CMPXVideoPlaybackAspectRatioIcon::Draw()")); + + CWindowGc& gc = SystemGc(); + gc.SetClippingRect( aRect ); + + if ( Window().DisplayMode() == EColor16MAP ) + { + gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); + gc.SetBrushColor( TRgb::Color16MAP( 255 ) ); + gc.Clear( aRect ); + } + else if ( Window().DisplayMode() == EColor16MA ) + { + gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); + gc.SetBrushColor( TRgb::Color16MA( 0 ) ); + gc.Clear( aRect ); + } + else + { + // draw a solid background so that the entire progress + // bar is shown not just the area representing the + // portion that has been played. + gc.SetBrushColor( KRgbBlack ); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.DrawRect( aRect ); + gc.SetBrushStyle( CGraphicsContext::ENullBrush ); + } + + switch( iAspectRatio ) + { + case EMMFStretch: + { + gc.BitBltMasked( iAspectRatioRect.iTl, + iZoomIcon->Bitmap(), + TRect( iAspectRatioRect.Size() ), + iZoomIcon->Mask(), + ETrue ); + break; + } + case EMMFZoom: + { + gc.BitBltMasked( iAspectRatioRect.iTl, + iNaturalIcon->Bitmap(), + TRect( iAspectRatioRect.Size() ), + iNaturalIcon->Mask(), + ETrue ); + break; + } + default: + { + gc.BitBltMasked( iAspectRatioRect.iTl, + iStretchIcon->Bitmap(), + TRect( iAspectRatioRect.Size() ), + iStretchIcon->Mask(), + ETrue ); + break; + } + } +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackAspectRatioIcon::HandlePointerEventL() +// ------------------------------------------------------------------------------------------------- +// +void CMPXVideoPlaybackAspectRatioIcon::HandlePointerEventL( const TPointerEvent& aPointerEvent ) +{ + MPX_DEBUG(_L("CMPXVideoPlaybackAspectRatioIcon::HandlePointerEventL()")); + + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { +#ifdef RD_TACTILE_FEEDBACK + if ( iFeedback ) + { +#ifdef SYMBIAN_BUILD_GCE + iFeedback->InstantFeedback( ETouchFeedbackBasicButton ); +#else + iFeedback->InstantFeedback( ETouchFeedbackBasic ); +#endif //SYMBIAN_BUILD_GCE + } +#endif //RD_TACTILE_FEEDBACK + } + else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + { + TMPXVideoPlaybackViewCommandIds cmd = EMPXPbvCmdNaturalAspectRatio; + + switch ( iAspectRatio ) + { + case EMMFStretch: + { + cmd = EMPXPbvCmdZoomAspectRatio; + break; + } + case EMMFNatural: + { + cmd = EMPXPbvCmdStretchAspectRatio; + break; + } + } + + iController->HandleCommandL( cmd ); + } +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackAspectRatioIcon::AspectRatioChanged() +// ------------------------------------------------------------------------------------------------- +// +void CMPXVideoPlaybackAspectRatioIcon::AspectRatioChanged( TInt aAspectRatio ) +{ + MPX_DEBUG(_L("CMPXVideoPlaybackAspectRatioIcon::AspectRatioChanged() (%d)"), aAspectRatio); + + iAspectRatio = (TMMFScalingType)aAspectRatio; + + if ( IsVisible() ) + { + DrawNow(); + } +} + +// End of File