upnpsharing/upnpsharingalgorithm/inc/upnpcdsliteobjectarray.h
branchIOP_Improvements
changeset 40 08b5eae9f9ff
--- /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 <e32base.h>
+
+// 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<CUpnpCdsLiteObject>   iArray;
+
+    };
+
+#endif /* C_UPNP_CDS_LITE_OBJECT_ARRAY_H */
+//  End of File