diff -r 000000000000 -r 96612d01cf9f videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbutton.cpp --- /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 +#include +#include +#include +#include + +#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