startupservices/startupanimation/sanimengine/inc/sanimpluginctrl.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:24:25 +0300
branchRCL_3
changeset 19 924385140d98
parent 0 2e3d3ce01487
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2007 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 CSAnimPluginCtrl class
*
*/


#ifndef SANIMPLUGINCTRL_H
#define SANIMPLUGINCTRL_H

#include <e32base.h>

class CSAnimPlugin;

/**
*  Active object in control of one CSAnimPlugin object.
*
*  @lib None
*  @since S60 3.2
*/
NONSHARABLE_CLASS( CSAnimPluginCtrl ) : public CActive
    {

public:

    /**
    * Constructs a CSAnimPluginCtrl object.
    *
    * @since S60 3.2
    *
    * @param aFileName Name of the file to load with the plug-in.
    * @param aIfUid Identifies the interface the plug-in must implement.
    * @param Construction parameters for ECom.
    * @return The new object
    */
    static CSAnimPluginCtrl* NewL(
        const TDesC& aFileName,
        const TUint32 aIfUid,
        TAny* aConstructionParameters );

    /**
    * Destructor.
    *
    * @since S60 3.2
    */
    virtual ~CSAnimPluginCtrl();

    /**
    * Load the file with the plug-in.
    *
    * @since S60 3.2
    *
    * @param aFs Fileserver reference.
    * @param aCallBack Identifies a call-back function to call when loading is
    * complete.
    */
    void Load( RFs& aFs, const TCallBack& aCallBack );

    /**
    * Start the plug-in.
    *
    * @since S60 3.2
    *
    * @param aCallBack Identifies a call-back function to call when the plug-in
    * has finished.
    */
    void Start( const TCallBack& aCallBack );

    /**
    * Return a success code of the last activity (Load/Start).
    *
    * @since S60 3.2
    *
    * @return KErrNone or one of the Symbian error codes.
    */
    TInt SuccessCode() const;

    /**
    * Get a reference to the plug-in object.
    *
    * @since S60 3.2
    *
    * @return A reference to the plug-in object.
    */
    CSAnimPlugin& Plugin();

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
    */
    CSAnimPluginCtrl();

    /**
    * Second phase constructor.
    *
    * @since S60 3.2
    *
    * @param aFileName Name of the file to load with the plug-in.
    * @param aIfUid Identifies the interface the plug-in must implement.
    * @param Construction parameters for ECom.
    */
    void ConstructL(
        const TDesC& aFileName,
        const TUint32 aIfUid,
        TAny* aConstructionParameters );

    /**
    * Extract the extension part from the file name, and return it.
    *
    * @since S60 3.2
    *
    * @param aFileName File name.
    * @param aExtension On return, will contain the extension part of the file
    * name.
    */
    void GetExtension( const TDesC& aFileName, TDes& aExtension );

    /**
    * Find a plug-in which supports the given file extension and load it.
    *
    * @since S60 3.2
    *
    * @param aExtension The file extension which the plug-in must support.
    * @param aIfUid Identifies the interface the plug-in must implement.
    * @param Construction parameters for ECom.
    */
    void FindPluginByExtensionL(
        const TDesC& aExtension,
        const TUint32 aIfUid,
        TAny* aConstructionParameters );

private:

    /** Copy constructor. */
    CSAnimPluginCtrl( const CSAnimPluginCtrl& );
    /** Assignment operator. */
    CSAnimPluginCtrl& operator=( const CSAnimPluginCtrl& );

private: // data

    /** Identifies the file to load with the plug-in. Owned. May not be NULL. */
    HBufC* iFileName;

    /** The plug-in object to control. Owned. May not be NULL. */
    CSAnimPlugin* iPlugin;

    /** Plug-in identifier in ECom. */
    TUid iDtorIDKey;

    /** Call-back function to call when action completes. */
    TCallBack iCallBack;

    /** Identifies the success/failure of the last activity. */
    TInt iSuccessCode;

    /** Updated to ETrue after Load has successfully completed. */
    TBool iReadyToStart;

    };

#endif // SANIMPLUGINCTRL_H