startupservices/Startup/inc/startupanimationwrapper.h
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/startupservices/Startup/inc/startupanimationwrapper.h	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,215 @@
+/*
+* Copyright (c) 2007,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:  Declaration of CStartupAnimationWrapper class
+*
+*/
+
+
+#ifndef STARTUPANIMATIONWRAPPER_H
+#define STARTUPANIMATIONWRAPPER_H
+
+#include "sanimstartupctrl.h"
+
+class CStartupView;
+
+/**
+*  Wraps asynchronous operations of a CSAnimStartupCtrl to a call-back calls.
+*
+*  @lib None
+*  @since S60 3.2
+*/
+NONSHARABLE_CLASS( CStartupAnimationWrapper ) : public CActive
+    {
+
+public:
+
+    /**
+    * Constructs a CStartupAnimationWrapper object.
+    *
+    * @since S60 3.2
+    *
+    * @param aView Parent control for the animation control(s).
+    * @return The new object
+    */
+    static CStartupAnimationWrapper* NewL( CStartupView& aView );
+
+    /**
+    * Destructor.
+    *
+    * @since S60 3.2
+    */
+    virtual ~CStartupAnimationWrapper();
+
+    /**
+    * Create a startup animation control and load the animation.
+    *
+    * @param aRect Rectangle designated for the control.
+    * @param aContainer The compound control that is the container for the control.
+    * @param aParams Central Repository keys for finding out details of the
+    * animation.
+    * @param aPlayDefaultBeep Indicates whether the default 'beep' tone should
+    * be played during the animation, if the parameters do not specify a valid
+    * tone file.
+    * @param aSyncCommand Identifies the parameters for secondary display
+    * startup sync command (only required if secondary display is supported).
+    */
+    void PreLoad(
+        const TRect& aRect,
+        const CCoeControl& aContainer,
+        const CSAnimStartupCtrl::TAnimationParams& aParams,
+        const TBool aPlayDefaultBeep,
+        const TInt aSyncCommand );
+
+    /**
+    * Create a startup animation control (if not preloaded) and play the animation.
+    *
+    * @param aRect Rectangle designated for the control.
+    * @param aContainer The compound control that is the container for the control.
+    * @param aParams Central Repository keys for finding out details of the
+    * animation.
+    * @param aPlayDefaultBeep Indicates whether the default 'beep' tone should
+    * be played during the animation, if the parameters do not specify a valid
+    * tone file.
+    * @param aSyncCommand Identifies the parameters for secondary display
+    * startup sync command (only required if secondary display is supported).
+    * @param aCallBack Function to call when animation has finished.
+    */
+    void Play(
+        const TRect& aRect,
+        const CCoeControl& aContainer,
+        const CSAnimStartupCtrl::TAnimationParams& aParams,
+        const TBool aPlayDefaultBeep,
+        const TInt aSyncCommand,
+        const TCallBack& aCallBack );
+
+    /**
+    * Return ETrue if the animation was cancelled before it finished.
+    */
+    TBool WasCancelled() const;
+
+    /**
+    * Return ETrue if the animation has any content (image or tone).
+    * Return value is meaningful only after CStartupAnimationWrapper::Play has been called.
+    *
+    * @since S60 3.2
+    *
+    * @return ETrue if the animation has any content (image or tone).
+    */
+    TBool HasContent() const;
+
+    /**
+    * Makes this application the foreground application.
+    *
+    * @since S60 3.2
+    */
+    void BringToForeground();
+
+protected:
+
+    /**
+    * From CActive.
+    * Implements cancellation of an outstanding request.
+    *
+    * @since S60 3.2
+    */
+    virtual void DoCancel();
+
+    /**
+    * From CActive.
+    * Handles an active object's request completion event.
+    * Never leaves.
+    *
+    * @since S60 3.2
+    */
+    virtual void RunL();
+
+private:
+
+    /**
+    * First phase constructor.
+    *
+    * @since S60 3.2
+    *
+    * @param aView Parent control for the animation control(s).
+    */
+    CStartupAnimationWrapper( CStartupView& aView );
+
+    /**
+    * Second phase constructor.
+    *
+    * @since S60 3.2
+    */
+    void ConstructL();
+
+    /**
+    * Create a startup animation control and load the animation.
+    *
+    * @param aRect Rectangle designated for the control.
+    * @param aContainer The compound control that is the container for the control.
+    * @param aParams Central Repository keys for finding out details of the
+    * animation.
+    * @param aPlayDefaultBeep Indicates whether the default 'beep' tone should
+    * be played during the animation, if the parameters do not specify a valid
+    * tone file.
+    * @param aSyncCommand Identifies the parameters for secondary display
+    * startup sync command (only required if secondary display is supported).
+    */
+    void LoadL(
+        const TRect& aRect,
+        const CCoeControl& aContainer,
+        const CSAnimStartupCtrl::TAnimationParams& aParams,
+        const TBool aPlayDefaultBeep,
+        const TInt aSyncCommand );
+
+    /**
+    * Start playing an animation which has already been loaded.
+    */
+    void StartPlaying();
+
+    /**
+    * Cancel the animation if active. Remove animation control from parent
+    * control and delete it.
+    */
+    void DestroyCtrl();
+
+private: // data
+
+    /** Parent control for the animation control(s). */
+    CStartupView& iView;
+
+    /** Startup animation control. Owned. May be NULL. */
+    CSAnimStartupCtrl* iCtrl;
+
+    /** Function to call when animation has finished. Owned. Not NULL. */
+    CAsyncCallBack* iCallBackCaller;
+
+    /** Indicates whether to start playing right after loading completes. */
+    TBool iPlayImmediately;
+
+    /** Internal state of the object. */
+    enum TState
+        {
+        EIdle = 1,
+        ELoading,
+        EReady,
+        EPlaying,
+        ECancelled
+        };
+    TState iState;
+
+    /** ETrue if the animation has any content (image or tone). */
+    TBool iHasContent;
+    };
+
+#endif // STARTUPANIMATIONWRAPPER_H