videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbrandinganimation.cpp
changeset 0 96612d01cf9f
child 6 7d91903f795f
--- /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