--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbrandinganimation.cpp Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,317 @@
+/*
+* 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: Branding Animation control
+*
+*/
+
+// Version : %version: 7 %
+
+
+// INCLUDE FILES
+#include <eikenv.h>
+#include <gulicon.h>
+#include <AknUtils.h>
+#include <AknIconUtils.h>
+#include <AknsDrawUtils.h>
+#include <mpxvideoplaybackcontrols.mbg>
+
+#include "mpxvideoplaybackbrandinganimation.h"
+#include "mpxvideoplaybackcontrolscontroller.h"
+#include "mpxvideo_debug.h"
+
+
+const TInt KMPXRealBrandingAnimationArrayCount = 17; // Real Branding frames' count
+const TInt KMPXGenericBrandingAnimationArrayCount = 10; // Generic Branding frames' count
+const TInt KMPXBrandingAnimationFrameInterval = 100000; // Represents delay between frames
+
+// ============================ MEMBER FUNCTIONS ===================================================
+
+CMPXVideoPlaybackBrandingAnimation::CMPXVideoPlaybackBrandingAnimation(
+ CMPXVideoPlaybackControlsController* aController, TBool aRealFormat )
+ : iIconArray( KMPXRealBrandingAnimationArrayCount )
+ , iRealFormat( aRealFormat )
+ , iController( aController )
+{
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackBrandingAnimation::ConstructL( TRect aRect )
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackBrandingAnimation::ConstructL()"));
+
+ //
+ // set rect
+ //
+ SetRect( TRect( 0, 0, aRect.Width(), aRect.Height() ) );
+ iBrandingRect = aRect;
+
+ //
+ // construct branding timer
+ //
+ iBrandingTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+
+ //
+ // create branding bitmaps
+ //
+ CreateBitmapsL();
+
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::NewL()
+// Two-phased constructor.
+// -------------------------------------------------------------------------------------------------
+//
+CMPXVideoPlaybackBrandingAnimation*
+CMPXVideoPlaybackBrandingAnimation::NewL( CMPXVideoPlaybackControlsController* aController,
+ TRect aRect,
+ TBool aRealFormat )
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackBrandingAnimation::NewL()"));
+
+ CMPXVideoPlaybackBrandingAnimation* self =
+ new ( ELeave ) CMPXVideoPlaybackBrandingAnimation( aController, aRealFormat );
+
+ CleanupStack::PushL( self );
+ self->ConstructL( aRect );
+ CleanupStack::Pop();
+ return self;
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::~CMPXVideoPlaybackBrandingAnimation()
+// Destructor.
+// -------------------------------------------------------------------------------------------------
+//
+CMPXVideoPlaybackBrandingAnimation::~CMPXVideoPlaybackBrandingAnimation()
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackBrandingAnimation::~CMPXVideoPlaybackBrandingAnimation()"));
+
+ iIconArray.ResetAndDestroy();
+
+ if ( iBrandingTimer )
+ {
+ iBrandingTimer->Cancel();
+ delete iBrandingTimer;
+ iBrandingTimer = NULL;
+ }
+
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::CreateBitmapsL()
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackBrandingAnimation::CreateBitmapsL()
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackBrandingAnimation::CreateBitmapsL()"));
+
+ //
+ // Create icons
+ //
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+
+ TFileName iconsPath;
+ iController->LocateBitmapFileL( iconsPath );
+
+ TInt bitmapIndex;
+
+ if ( iRealFormat )
+ {
+ //
+ // first frame of Real Player Branding Animation
+ //
+ bitmapIndex = EMbmMpxvideoplaybackcontrolsQgn_graf_realplayer_splash_01;
+
+ //
+ // number of Real Player animation frames
+ //
+ iCount = KMPXRealBrandingAnimationArrayCount;
+ }
+ else
+ {
+ //
+ // first frame of Generic Branding Animation
+ //
+ bitmapIndex = EMbmMpxvideoplaybackcontrolsQgn_graf_ring_wait_01;
+
+ //
+ // number of Generic animation frames
+ //
+ iCount = KMPXGenericBrandingAnimationArrayCount;
+ }
+
+ for ( TInt i = 0; i < iCount * 2; i = i + 2 )
+ {
+ //
+ // Create icons
+ //
+ CGulIcon* icon = AknsUtils::CreateGulIconL( skin,
+ KAknsIIDQgnVideoPluginAnimBuffering,
+ iconsPath,
+ bitmapIndex + i ,
+ bitmapIndex + i + 1 );
+
+ if ( icon )
+ {
+ //
+ // push icon to the cleanup stack
+ //
+ CleanupStack::PushL( icon );
+
+ //
+ // Set icon size
+ //
+ AknIconUtils::SetSize( icon->Bitmap(), iBrandingRect.Size(), EAspectRatioPreserved );
+
+ //
+ // Append icon to array
+ //
+ iIconArray.AppendL( icon );
+
+ //
+ // pop icon to the cleanup stack
+ //
+ CleanupStack::Pop( icon );
+ }
+ }
+
+ //
+ // start branding timer
+ //
+ StartBrandingTimer();
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::CountComponentControls()
+// -------------------------------------------------------------------------------------------------
+//
+TInt CMPXVideoPlaybackBrandingAnimation::CountComponentControls() const
+{
+ return 0;
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::Draw()
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackBrandingAnimation::Draw( const TRect& aRect ) const
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackBrandingAnimation::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 );
+ }
+
+ //
+ // draw branding animation
+ //
+ gc.BitBltMasked( iBrandingRect.iTl,
+ iIconArray[ iCurrentIndex ]->Bitmap(),
+ TRect( iBrandingRect.Size() ),
+ iIconArray[ iCurrentIndex ]->Mask(),
+ ETrue );
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::StartBrandingTimer
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackBrandingAnimation::StartBrandingTimer()
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackBrandingAnimation::StartBrandingTimer()"));
+
+ //
+ // set branding timer
+ //
+ if ( ! iBrandingTimer->IsActive() )
+ {
+ iBrandingTimer->Start(
+ 0,
+ KMPXBrandingAnimationFrameInterval,
+ TCallBack( CMPXVideoPlaybackBrandingAnimation::BrandingTimer, this ) );
+ }
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::BrandingTimer
+// -------------------------------------------------------------------------------------------------
+//
+TInt CMPXVideoPlaybackBrandingAnimation::BrandingTimer( TAny* aPtr )
+{
+ static_cast<CMPXVideoPlaybackBrandingAnimation*>(aPtr)->HandleBrandingTimer();
+ return KErrNone;
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::HandleBrandingTimer
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackBrandingAnimation::HandleBrandingTimer()
+{
+ //
+ // keep track of the current animation frame
+ //
+ iCurrentIndex = (++iCurrentIndex) % iCount;
+
+ //
+ // draw the current animation frame
+ //
+ if ( IsVisible() )
+ {
+ DrawNow();
+ }
+}
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackBrandingAnimation::CancelBrandingTimer
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXVideoPlaybackBrandingAnimation::CancelBrandingTimer()
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackBrandingAnimation::CancelBrandingTimer()"));
+
+ if ( iBrandingTimer->IsActive() )
+ {
+ iBrandingTimer->Cancel();
+ }
+}
+
+// End of File