Merge.
/*
* Copyright (c) 2005 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:
* CUniSmilSlide
*
*/
#ifndef __UNISMILSLIDE_H
#define __UNISMILSLIDE_H
// INCLUDES
#include <MsgMedia.hrh>
#include <unimodelconst.h>
// CONSTANTS
// MACROS
// FORWARD DECLARATIONS
class CUniObject;
// DATA TYPES
typedef CArrayPtrFlat<CUniObject> CSmilObjectArray;
// FUNCTION PROTOTYPES
// CLASS DECLARATION
// NOTE: Since slide cannot have same object type twice unique key to object within
// slide is it object type ( EImage, EText, EAudio )
// Object can also be referenced by it's position in slide ( 0,1,2 )
/**
* CUniSmilSlide - Representation of a single slide in a SMIL presentation.
*
* @lib UniDataModel.lib
* @since 3.1
*/
class CUniSmilSlide :public CBase
{
public: // Constructors and destructor
/**
* Factory method
*
* @since 3.1
* @return Pointer to instance in cleanup stack
*/
static CUniSmilSlide* NewLC( TUniLayout aLayout );
/**
* Factory method
*
* @since 3.1
* @return Pointer to instance
*/
static CUniSmilSlide* NewL( TUniLayout aLayout );
/**
* Destructor.
*
* @since 3.1
*/
~CUniSmilSlide();
public: // New functions
/*
* AddObjectL
* Add object to slide in position specified by Layout.
* NOTE: Takes ownership of the aObject.
* NOTE: Leaves with KErrArgument if object cannot be added to slide
*
* @since 3.1
* @param aObject IN object to be added
*/
void AddObjectL( CUniObject* aObject );
/*
* AddObjectL
* Add object to slide in position specified by Layout.
* NOTE: Takes ownership of the aObject.
* NOTE: Leaves with KErrArgument if object cannot be added to slide
*
* @since 3.1
* @param aObject IN object to be added
* @param aregion IN region where object is in SMIL.
*/
void AddObjectL( CUniObject* aObject, TUniRegion aRegion );
/**
* RemoveObject
* Removes object from slide
* NOTE: Object is not deleted.
*
* @since 3.1
* @param aObject IN object to be removed
*/
void RemoveObject( CUniObject* aObject );
/**
* GetObject
* Get object of given type from slide.
*
* @since 3.1
* @param aObjType IN object type
* @return Pointer to object,
* NULL, if object not found
*/
CUniObject* GetObject( TUniRegion aRegion ) const;
/**
* GetObjectByIndex
* Get object at given index from slide.
*
* @since 3.1
* @param aObjNum IN index to slides object array,
* 0 (zero) is first object.
* @return Pointer to object,
* NULL, if object not found
*/
CUniObject* GetObjectByIndex( TInt aObjNum ) const;
/**
* IsObject
* Checks if slide contains given object.
*
* @since 3.1
* @param aObject IN object to be checked
* @return ETrue slide contains the object,
* EFalse, otherwise
*/
TBool IsObject( CUniObject* aObject ) const;
/**
* IsObject
* Checks if slide has an object of given type
*
* @since 3.1
* @param aObjType IN object type
* @return ETrue slide contains the object,
* EFalse, otherwise
*/
TBool IsObject( TUniRegion aRegion ) const;
/**
* ObjectCount
* Accessor
*
* @since 3.1
* @return Number of objects in this slide
*/
TInt ObjectCount() const;
/**
* UpdateLayoutL
* Update the layout of the slide
*
* @since 3.1
* @param aNewLayout IN new layout
*/
void UpdateLayoutL( TUniLayout aNewLayout );
private:
/*
* Constructor
*
* @since 3.1
*/
CUniSmilSlide( TUniLayout aLayout );
/*
* 2nd phase constructor
*
* @since 3.1
*/
void ConstructL();
/**
* UpdateLayoutL
* Update the layout of the slide
*
* @since 3.1
*/
void UpdateLayoutL();
private:
CSmilObjectArray* iObjectArray;
TUniLayout iLayout;
};
#endif // __UNISMILSLIDE_H