diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/favouritesitemlist.h --- a/epoc32/include/mw/favouritesitemlist.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/favouritesitemlist.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,146 @@ -favouritesitemlist.h +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Declaration of FavouritesItemList +* +*/ + + +#ifndef FAVOURITES_ITEM_LIST_H +#define FAVOURITES_ITEM_LIST_H + +// INCLUDE FILES + +#include + +// CONSTANTS + +// FORWARD DECLARATION + +class CFavouritesItem; +class RWriteStream; +class RReadStream; + +// CLASS DECLARATION + +/** +* CFavouritesItemList is the Array of CFavouritesItem-s. +* Items are owned and deleted upon destruction. +* Note: using this array downcasted to its base can result in leaks. +* Delete method of base class is not virtual! +*/ +class CFavouritesItemList: public CArrayPtrFlat + { + public: // Constructor and destructor + + /** + * Constructor. + * @since 0.9 + */ + IMPORT_C CFavouritesItemList(); + + /** + * Destructor. Elements are destroyed. + * @since 0.9 + */ + IMPORT_C virtual ~CFavouritesItemList(); + + public: // new methods + + /** + * Remove and destroy an element. Invalid params will Panic. + * @since 0.9 + * @param aIndex Index of element to delete. + * @return void + */ + IMPORT_C void Delete( TInt aIndex ); + + /** + * Remove and destroy elements. Invalid params Panic. + * @since 0.9 + * @param aIndex Index of start element to delete. + * @param aCount Number of items to delete. + * @return void + */ + IMPORT_C void Delete( TInt aIndex, TInt aCount ); + + public: // Sorting + + /** + * Comparison function type; compare two items. Should leave in error. + * @since 0.9 + * @param aLeft item to compare to aRight. + * @param aRight Item to compare to aLeft. + * @return + * - negative value, if aLeft is less than aRight; + * - 0, if aLeft equals to aRight; + * - positive value, if aLeft is greater than aRight. + */ + typedef TInt (*ComparisonFuncL) + ( const CFavouritesItem& aLeft, const CFavouritesItem& aRight ); + + /** + * Sort the list using bubble-sort. + * @since 0.9 + * @param aCompareItemsL Function to be used two elements. + */ + IMPORT_C void SortL( ComparisonFuncL aCompareItemsL ); + + public: // Uid <--> array index conversion + + /** + * Convert Uid to index. + * @since 0.9 + * @param aUid Uid to convert. + * @return Index for this Uid, or -KErrNotFound if not found. + */ + IMPORT_C TInt UidToIndex( TInt aUid ) const; + + /** + * Convert index to Uid. + * @since 0.9 + * @param aIndex Index to convert. + * @return Uid for this index, or KFavouritesNullUid if not found. + */ + IMPORT_C TInt IndexToUid( TInt aIndex ) const; + + /** + * Get pointer to item having aUid. + * @since 0.9 + * @param aUid Uid of item to look for. + * @return Pointer to item having aUid, or NULL if there is no such + * item. Item is still owned by the list. + */ + IMPORT_C const CFavouritesItem* ItemByUid( TInt aUid ) const; + + public: // (But not exported:) Streaming + + /** + * Externalize into a stream. + * @since 0.9 + * @param aStream The stream to externalize to. + */ + void ExternalizeL( RWriteStream& aStream ) const; + + /** + * Internalize from a stream. Existing data is kept, new ones appended. + * @since 0.9 + * @param aStream The stream to externalize from. + */ + void InternalizeL( RReadStream& aStream ); + + }; + +#endif + +// End of file