videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbutton.cpp
changeset 0 96612d01cf9f
child 6 7d91903f795f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbutton.cpp	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,306 @@
+/*
+* Copyright (c) 2008 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: Button control
+*
+*/
+
+// Version : %version: 8 %
+
+
+
+// INCLUDE FILES
+#include <eikenv.h>
+#include <gulicon.h>
+#include <AknUtils.h>
+#include <AknIconUtils.h>
+#include <AknsDrawUtils.h>
+
+#include "mpxvideoplaybackbutton.h"
+
+// ============================ MEMBER FUNCTIONS ===================================================
+
+CMPXVideoPlaybackButton::CMPXVideoPlaybackButton()
+{
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackButton::ConstructL( TRect aRect, const TDesC &aIconPath )
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::ConstructL()"));
+
+    iIConPath = aIconPath.AllocL();
+
+    SetRect( aRect );
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::NewL()
+// Two-phased constructor.
+// -------------------------------------------------------------------------------------------------
+//
+CMPXVideoPlaybackButton* CMPXVideoPlaybackButton::NewL( TRect aRect, const TDesC &aIconPath)
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::NewL()"));
+
+    CMPXVideoPlaybackButton* self = new ( ELeave ) CMPXVideoPlaybackButton();
+
+    CleanupStack::PushL( self );
+    self->ConstructL( aRect, aIconPath );
+    CleanupStack::Pop();
+    return self;
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::~CMPXVideoPlaybackButton()
+// Destructor.
+// -------------------------------------------------------------------------------------------------
+//
+CMPXVideoPlaybackButton::~CMPXVideoPlaybackButton()
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::~CMPXVideoPlaybackButton()"));
+
+    if ( iIConPath )
+    {
+        delete iIConPath;
+        iIConPath = NULL;
+    }
+
+    if ( iDefaultButton )
+    {
+        delete iDefaultButton;
+        iDefaultButton = NULL;
+    }
+
+    if ( iDimmedButton )
+    {
+        delete iDimmedButton;
+        iDimmedButton = NULL;
+    }
+
+    if ( iPressedButton )
+    {
+        delete iPressedButton;
+        iPressedButton = NULL;
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::CreateDefaultButtonL()
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackButton::CreateDefaultButtonL( const TAknsItemID &aID,
+                                                    const TInt aFileIndex,
+                                                    const TInt aFileMaskIndex )
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::CreateDefaultButtonL()"));
+
+    if ( iDefaultButton )
+    {
+        delete iDefaultButton;
+        iDefaultButton = NULL;
+    }
+
+    iDefaultButton = CreateButtonL( aID, aFileIndex, aFileMaskIndex );
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::CreateButtonL()
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackButton::CreateDimmedButtonL( const TAknsItemID &aID,
+                                                   const TInt aFileIndex,
+                                                   const TInt aFileMaskIndex )
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::CreateDimmedButtonL()"));
+
+    if ( iDimmedButton )
+    {
+        delete iDimmedButton;
+        iDimmedButton = NULL;
+    }
+
+    iDimmedButton = CreateButtonL( aID, aFileIndex, aFileMaskIndex );
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::CreatePressedButtonL()
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackButton::CreatePressedButtonL( const TAknsItemID &aID,
+                                                    const TInt aFileIndex,
+                                                    const TInt aFileMaskIndex )
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::CreatePressedButtonL()"));
+
+    if ( iPressedButton )
+    {
+        delete iPressedButton;
+        iPressedButton = NULL;
+    }
+
+    iPressedButton = CreateButtonL( aID, aFileIndex, aFileMaskIndex );
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::CreateButtonL()
+// -------------------------------------------------------------------------------------------------
+//
+CGulIcon* CMPXVideoPlaybackButton::CreateButtonL( const TAknsItemID &aID,
+                                                  const TInt aFileIndex,
+                                                  const TInt aFileMaskIndex )
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::CreateButtonL()"));
+
+    CGulIcon* icon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
+                                                aID,
+                                                iIConPath->Des(),
+                                                aFileIndex,
+                                                aFileMaskIndex );
+
+    if ( icon )
+    {
+        AknIconUtils::SetSize( icon->Bitmap(),
+                               Rect().Size(),
+                               EAspectRatioNotPreserved );
+    }
+
+    return icon;
+}
+
+// -------------------------------------------------------------------------------------------------
+//   CMPXVideoPlaybackButton::Draw()
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackButton::Draw( const TRect& aRect ) const
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::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( iState )
+    {
+        case EMPXButtonNormal:
+        {
+            gc.BitBltMasked( Rect().iTl,
+                             iDefaultButton->Bitmap(),
+                             TRect( Rect().Size() ),
+                             iDefaultButton->Mask(),
+                             ETrue );
+            break;
+        }
+        case EMPXButtonDimmed:
+        {
+            gc.BitBltMasked( Rect().iTl,
+                             iDimmedButton->Bitmap(),
+                             TRect( Rect().Size() ),
+                             iDimmedButton->Mask(),
+                             ETrue );
+            break;
+        }
+        case EMPXButtonPressed:
+        {
+            gc.BitBltMasked( Rect().iTl,
+                             iPressedButton->Bitmap(),
+                             TRect( Rect().Size() ),
+                             iPressedButton->Mask(),
+                             ETrue );
+            break;
+        }
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::CountComponentControls()
+// -------------------------------------------------------------------------------------------------
+//
+TInt CMPXVideoPlaybackButton::CountComponentControls() const
+{
+    return 0;
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::SetDimmed
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackButton::SetDimmed( TBool aDimmed )
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::SetDimmed() (%d)"), aDimmed);
+
+    if ( aDimmed && iDimmedButton )
+    {
+        iState = EMPXButtonDimmed;
+    }
+    else if ( iState == EMPXButtonDimmed )
+    {
+        iState = EMPXButtonNormal;
+    }
+
+    if ( IsVisible() )
+    {
+        DrawNow();
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackButton::SetPressed
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackButton::SetPressed( TBool aPressed )
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackButton::SetPressed() (%d)"), aPressed);
+
+    if ( aPressed && iPressedButton )
+    {
+        iState = EMPXButtonPressed;
+    }
+    else if ( iState == EMPXButtonPressed )
+    {
+        iState = EMPXButtonNormal;
+    }
+
+    if ( IsVisible() )
+    {
+        DrawDeferred();
+    }
+}
+
+//  End of File