idlehomescreen/inc/xndomlist.h
changeset 0 f72a12da539e
child 2 08c6ee43b396
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/inc/xndomlist.h	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,247 @@
+/*
+* Copyright (c) 2005,2006 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:  List class to hold MXnDomListItem objects.
+*
+*/
+
+
+
+#ifndef XN_DOM_LIST_H
+#define XN_DOM_LIST_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <s32strm.h>
+
+
+// FORWARD DECLARATIONS
+class MXnDomListItem;
+class CXnDomStringPool;
+
+// CLASS DECLARATION
+
+/**
+*  @ingroup group_domdocument
+*  Represents streamable list object, which holds MXnDomListItem objects.
+*
+*  @lib xndomdocument.lib
+*  @since Series 60 3.1
+*/
+class CXnDomList : public CBase
+    {
+    public:
+        enum TListType
+    		{
+    		ENodeList=0,
+    		EAttributeList,
+    		EPropertyList,
+    		EPropertyValueList
+    		};
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CXnDomList* NewL( TListType aListType, 
+                CXnDomStringPool& aStringPool,
+                TInt aGranularity=4);
+        
+        /**
+        * Two-phased stream constructor.
+        */
+        static CXnDomList* NewL( 
+            RReadStream& aStream, 
+            CXnDomStringPool& aStringPool );
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CXnDomList();
+
+    public: // Adding and removing
+    	
+    	/**
+        * Frees memory allocated for all items in a list.
+        * @since Series 60 3.1
+        */
+        IMPORT_C void Reset();
+        
+        /**
+        * List owns items.
+        * @since Series 60 3.1
+        * @param aListItem to add
+        */
+        IMPORT_C void AddItemL( MXnDomListItem* aListItem );
+
+        /**
+        * List owns items.
+        * @since Series 60 3.1
+        * @param aListItem to add
+        * @param aIndex Index in list where the item is added
+        */
+        IMPORT_C void AddItemL( MXnDomListItem* aListItem, TInt aIndex );
+        
+        /**
+        * Remove item from list.
+        * @since Series 60 3.1
+        * @param Index to aList item to remove
+        */
+        IMPORT_C void RemoveItem( TInt aIndex );
+        
+        /**
+        * Delete item from list.
+        * @since Series 60 3.1
+        * @param Index to aList item to delete
+        */
+        IMPORT_C void DeleteItem( TInt aIndex );
+        
+        /**
+        * Remove item from list.
+        * @since Series 60 3.1
+        * @param aList item to remove
+        */
+        IMPORT_C void RemoveItem( MXnDomListItem* aItem );
+        
+        /**
+        * Delete item from list.
+        * @since Series 60 3.1
+        * @param aList item to delete
+        */
+        IMPORT_C void DeleteItem( MXnDomListItem* aItem );
+   
+   public: // Accessing     
+        /**
+        * List items are accessed by index, i.e like arrays 
+        * @since Series 60 3.1
+        * @param aIndex list item index
+        * @return Pointer to a a list item
+        */
+        IMPORT_C MXnDomListItem* Item( TInt aIndex )const;
+        
+        /**
+        * Number of items in a list.
+        * @since Series 60 3.1
+        * @return Item count
+        */
+        IMPORT_C TInt Length() const;
+        
+        /**
+        * Get the first item in a list.
+        * @since Series 60 3.1
+        * @return Pointer to the first item in a list
+        */
+        IMPORT_C MXnDomListItem* First();
+        
+        /**
+        * The last item in a list
+        * @since Series 60 3.1
+        * @return Pointer to the last item in a list
+        */
+        IMPORT_C MXnDomListItem* Last();
+        
+        /**
+        * Find list item by item name. Searches list items 
+        * which have name attribute.
+        * @since Series 60 3.1
+        * @param aName UTF8 encoded item's name to be searched
+        * @return Pointer to the list item, NULL if not exist.
+        */
+        IMPORT_C MXnDomListItem* FindByName( const TDesC8& aName );
+        
+        /**
+        * Get item index
+        * @since Series 60 3.1
+        * @param aItem Item to be searched
+        * @return Item index or KErrNotFound if not found
+        */
+        IMPORT_C TInt ItemIndex( const MXnDomListItem& aItem )const;
+        
+        /**
+        * Get reference to the dom's string pool.
+        * @since Series 60 3.1
+        * @return Reference to string pool
+        */
+        IMPORT_C CXnDomStringPool& StringPool() const;
+        
+        /**
+        * Count items in a list.
+        */
+        TInt Count() const;
+  public: // Serializing      
+        
+        /**
+        * Get list's data size in bytes.
+        * @since Series 60 3.1
+        * @return Data size in bytes
+        */
+        TInt Size() const;
+    
+        /**
+        * Externalize list's data.
+        * @since Series 60 3.1
+        * @param aStream Output stream
+        */
+        void ExternalizeL( RWriteStream& aStream ) const;
+        
+        /**
+        * Internalize list's data.
+        * @since Series 60 3.1
+        * @param aStream Input stream
+        */
+        void InternalizeL( RReadStream& aStream );
+        
+   public: //Utility
+   	   		
+   		/**
+        * Get list item type.
+        * @since Series 60 3.1
+        * @return List item type
+        */
+        TListType Type() const 
+            {
+            return iListType;
+            }
+            
+        
+   private:
+
+        /**
+        * C++ default constructor.
+        */
+        CXnDomList( TListType aListType, 
+                    CXnDomStringPool& aStringPool, 
+                    TInt aGranularity=4 );
+        
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+        
+    protected:
+        //List type    	
+    	TListType                       iListType;
+        
+        //Items are stored into a segmented array
+        RPointerArray<MXnDomListItem>   iList;
+    
+    private:    // Data
+        // StringPool, not owned
+        CXnDomStringPool&   iStringPool;
+        
+        
+    };
+
+#endif      // XN_DOM_LIST_H  
+            
+// End of File