diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpsharing/upnpsharingalgorithm/inc/upnpcdsliteobjectarray.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnpsharing/upnpsharingalgorithm/inc/upnpcdsliteobjectarray.h Wed Nov 03 11:45:09 2010 +0200 @@ -0,0 +1,230 @@ +/* +* 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: Array to store the CUpnpCdsLiteObject objects +* +*/ + +#ifndef C_UPNP_CDS_LITE_OBJECT_ARRAY_H +#define C_UPNP_CDS_LITE_OBJECT_ARRAY_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CUpnpCdsLiteObject; +class CUpnpObject; + +/** + * Defines the CUpnpCdsLiteObjectArray class. Used to store container/item + * structure of the CDS. + * + * @lib upnpsharingalgorithm.lib + * @since S60 5.2 + */ +class CUpnpCdsLiteObjectArray : public CBase + { + + public: // Constructors and destructors + + /** + * Two-phased constructor. Leaves in case of out-of-memory. + * + * @since S60 5.2 + * @return array of cdsliteobjects + */ + IMPORT_C static CUpnpCdsLiteObjectArray* NewL(); + + /** + * Destructor. + * + * @since S60 5.2 + */ + IMPORT_C virtual ~CUpnpCdsLiteObjectArray(); + + public: // Business logic methods + + /** + * Adds one object to the array. Ownership of the object is transfered. + * Leaves with KErrArgument if the given object is not valid. + * + * @since S60 5.2 + * @param aObject, the object + */ + IMPORT_C void AppendL( CUpnpCdsLiteObject *aObject ); + + /** + * Adds one object to the array. Leaves with KErrArgument if the given + * object is not valid. + * + * @since S60 5.2 + * @param aObject, the UPnPObject object + */ + IMPORT_C void AppendL( const CUpnpObject *aObject ); + + /** + * Finds a CUpnpCdsLiteObject object from the array. Returns + * KErrNotFound if object not found. + * + * @since S60 5.2 + * @param aName, title of a container / filename + * @return index of the array where the object resides + */ + IMPORT_C TInt FindByName( TDesC8& aName ); + + /** + * Finds a CUpnpCdsLiteObject object with defined parent id + * from the array. Returns KErrNotFound if object not found. + * + * @since S60 5.2 + * @param aName, title of a container / filename + * @param aParentId, parent id of a container / filename + * @return index of the array where the object resides + */ + IMPORT_C TInt FindByNameAndParentId( const TDesC8& aName, + const TDesC8& aParentId ); + + /** + * Finds a CUpnpCdsLiteObject object that have defined media + * class and parent id. Returns KErrNotFound if object not found. + * + * @since S60 5.2 + * @param aMediaClass, class type of a container / filename + * @param aParentId, parent id of a container / filename + * @return index of the array where the object resides + */ + IMPORT_C TInt FindByMediaClassAndParentId( const TDesC8& aMediaClass, + const TDesC8& aParentId ); + + /** + * Finds a CUpnpCdsLiteObject object from the array. Returns + * KErrNotFound if object not found. + * + * @since S60 5.2 + * @param aObjectId, the object ID + * @return index of the array where the object resides + */ + IMPORT_C TInt FindByObjectId( const TDesC8& aObjectId ); + + /** + * Finds a CUpnpCdsLiteObject object index from the array using + * original item's id as a search parameter. Returns KErrNotFound + * if object not found. + * Can leave with symbian error codes. + * + * @since S60 5.2 + * @param aOriginalId, original item id + * @return index of the array where the object resides + */ + IMPORT_C TInt FindRefItemIdByOriginalIdL( + const TDesC8& aOriginalId ); + + /** + * Returns the child count of a container + * + * @since S60 5.2 + * @param aParentId, parent object id + * @return child count + */ + IMPORT_C TInt ChildCount( const TDesC8& aParentId ); + + /** + * Returns the object count of the array + * + * @since S60 5.2 + * @return item count + */ + IMPORT_C TInt Count( ); + + /** + * Returns an object from the array. Does not remove the object from + * the array. Leaves with KErrArgument if the given index is out of + * bounds. + * + * @since S60 5.2 + * @param aIndex, index of the array + * @return the object + */ + IMPORT_C CUpnpCdsLiteObject& ObjectAtL( TUint aIndex ); + + /** + * Removes an object from the array. Leaves with KErrArgument if the + * given index is out of bounds. + * + * @since S60 5.2 + * @param aIndex, index of the array + */ + IMPORT_C void RemoveObjectAtL( TUint aIndex ); + + /** + * Searches the array looking for the matching item, if one is found + * it is removed from the array. Leaves with KErrArgument if the given + * object is not valid. + * + * @since S60 5.2 + * @param aObject, the UPnPObject object + */ + IMPORT_C void RemoveL( const CUpnpObject *aObject ); + + private: // Private business logic methods + + /** + * Creates an CUpnpCdsLiteObject. Leaves with KErrArgument if the + * given object is not valid. + * + * @since S60 5.2 + * @param aObject, the UPnPObject object + * @return a new CUpnpCdsLiteObject + */ + CUpnpCdsLiteObject* CreateUpnpCdsLiteObjectL( + const CUpnpObject *aObject ); + + /** + * Resolves the filename information from the given UpnpObject. Leaves + * with KErrArgument if the given object is not valid. + * Allocates memory for the returned descriptor. Does not handle the + * freeing of the allocation. + * + * @since S60 5.2 + * @param aObject, the UPnPObject object + * @return the filename (including path) + */ + HBufC8* ResolveFileNameL( const CUpnpObject *aObject ); + + private: // Constructors + + /** + * Default c++ constructor + * + * @since S60 5.2 + */ + CUpnpCdsLiteObjectArray() {}; + + /** + * Second-phase constructor. + * + * @since S60 5.2 + */ + void ConstructL() {}; + + private: // Data members + + /** + * The array of objects. Owned. + */ + RPointerArray iArray; + + }; + +#endif /* C_UPNP_CDS_LITE_OBJECT_ARRAY_H */ +// End of File