videoplayback/videoplaybackcontrols/src/mpxvideoplaybackaspectratioicon.cpp
changeset 0 96612d01cf9f
child 6 7d91903f795f
--- /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 <eikenv.h>
+#include <gulicon.h>
+#include <AknUtils.h>
+#include <AknIconUtils.h>
+#include <AknsDrawUtils.h>
+#include <mpxvideoplaybackcontrols.mbg>
+
+#ifdef RD_TACTILE_FEEDBACK
+#include <touchfeedback.h>
+#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