upnpavcontroller/upnpxmlparser/inc/upnpobjectlite.h
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpavcontroller/upnpxmlparser/inc/upnpobjectlite.h	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,201 @@
+/*
+* Copyright (c) 2006-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:     UpnpObjectLite for fast browsing 
+*
+*/
+
+
+
+
+
+
+#ifndef C_UPNPOBJECTLITE_H_
+#define C_UPNPOBJECTLITE_H_
+
+// INCLUDES
+#include <e32base.h>
+
+/**
+ * CUpnpObjectLite for fast browsing. Contains a minimum set of properties
+ * and memory consumption is kept low
+ *
+ * @since Series 60 3.1
+ * @lib upnpxmlparser.lib
+ */
+NONSHARABLE_CLASS( CUpnpObjectLite ) : public CBase
+    {
+
+public:
+
+    /**
+     * Enumeration to determine object class
+     */
+    enum TObjectType
+        {    
+        EItem       = 0,
+        EContainer,
+        EMusicItem,
+        EImageItem,
+        EVideoItem,
+        };
+
+protected:
+
+    /**
+     * Enumeration to determine base type
+     */
+    enum TObjectTypeBase
+        {
+        EBaseUnknown        = 0x00000000,
+        EBaseItem           = 0x01000000,
+        EBaseContainer      = 0x02000000
+        };
+    
+    /**
+     * Enumeration to determine sophisticated item type
+     */
+    enum TItemTypeBase
+        {
+        EBaseMusicItem      = 0x00010000,
+        EBaseImageItem      = 0x00020000,
+        EBaseVideoItem      = 0x00040000,
+        EBasePlaylistItem   = 0x00080000,
+        
+        EMusicTrack         = 0x00000100,
+        EPhoto              = 0x00000200,
+        EMovie              = 0x00000400
+        };
+        
+    /**
+     * Enumeration to determine sophisticated container type
+     */
+    enum TContainerTypeBase
+        {
+        EStorageFolder      = 0x00010000,
+        EPlaylistContainer  = 0x00020000,
+        //EAlbum              = 0x00040000,
+        //EGenre              = 0x00080000,
+        
+        EMusicAlbum         = 0x00000100             
+        };        
+    
+public:
+
+    /**
+     * 2-phased constructor.
+     */
+    IMPORT_C static CUpnpObjectLite* NewL();
+    
+    /**
+     * Destructor.
+     */
+    IMPORT_C virtual ~CUpnpObjectLite();
+
+public:
+
+    /**
+     * Setter for object id
+     *
+     * @param aObjectId object id
+     */
+    IMPORT_C void SetObjectIdL( const TDesC8& aObjectId );
+    
+    /**
+     * Setter for object id
+     *
+     * @param aObjectId object id (ownership of aObjectId is transferred)
+     */
+    IMPORT_C void SetObjectIdL( HBufC8* aObjectId );
+    
+    /**
+     * Getter for object id
+     *
+     * @return object id
+     */
+    IMPORT_C const TDesC8& ObjectId() const;    
+
+    /**
+     * Setter for title
+     *
+     * @param aTitle title
+     */
+    IMPORT_C void SetTitleL( const TDesC& aTitle );
+    
+    /**
+     * Setter for title
+     *
+     * @param aTitle title (ownership of aTitle is transferred)
+     */
+    IMPORT_C void SetTitleL( HBufC* aTitle );
+    
+    /**
+     * Getter for title
+     *
+     * @return title
+     */
+    IMPORT_C const TDesC& Title() const;
+    
+    /**
+     * Setter for object id. Does not store objectid as a string, but as a
+     * bitfield to save memory
+     *
+     * @param aTitle title (ownership of aTitle is transferred)
+     */
+    IMPORT_C void SetObjectClass( const TDesC8& aObjectClass );
+    
+    /**
+     * Can be used to chech type of the object
+     *
+     * @return ETrue if the type (part of object class) matches
+     */
+    IMPORT_C TBool IsTypeOf( TObjectType aType ) const;
+    
+protected:
+
+    /**
+     * Constructor.
+     */
+    CUpnpObjectLite();
+
+    /**
+     * 2nd phase constructor.
+     */
+    void ConstructL();
+
+protected:
+
+    void ParseToDelimeter( TLex8& aLex, TChar aDelimeter ) const;
+    
+    void HandleRound( TInt aRound, TPtrC8 aString );
+    
+    void Round1( TPtrC8 aString );
+    
+    void Round2( TPtrC8 aString );
+    
+    void Round3( TPtrC8 aString );
+    
+    void Round4( TPtrC8 aString );
+
+protected:
+
+    HBufC8* iObjectId;
+        
+    HBufC* iTitle;
+    
+    TInt    iObjectClass;    
+        
+
+    };
+
+#endif // C_UPNPOBJECTLITE_H_