diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/mclfcustomgrouper.h --- a/epoc32/include/mw/mclfcustomgrouper.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/mclfcustomgrouper.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,108 @@ -mclfcustomgrouper.h +/* +* Copyright (c) 2002-2009 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 "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#ifndef MCLFCUSTOMGROUPER_H +#define MCLFCUSTOMGROUPER_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class MCLFCustomGrouperExt; +class MCLFItem; + +// CLASS DECLARATION + +/** +* Custom grouper interface of Content Listing Framework. +* With this interface, client can add own custom grouper +* to its List Model. Custom grouper is used for grouping list model items. +* For example, List Model of music files can be grouped by genre or artist +* name by using this interface. +* Use ContentListingFactory to create items for new groups (MCLFModifiableItem). +*

+* Example: +* @code +* // This grouper will overwrite the source list and add three items to model. +* void CMyGrouper::GroupItemsL( const TArray& aSourceList, +* RPointerArray& aGroupedList ) +* { +* _LIT( KTest, "test" ); +* MCLFModifiableItem* item = ContentListingFactory::NewModifiableItemLC(); +* item->AddFieldL( ECLFFieldIdName, KTest ); +* aGroupedList.AppendL( item ); +* CleanupStack::Pop(); // item +* +* _LIT( KTest1, "test1" ); +* item = ContentListingFactory::NewModifiableItemLC(); +* item->AddFieldL( ECLFFieldIdName, KTest1 ); +* aGroupedList.AppendL( item ); +* CleanupStack::Pop(); // item +* +* _LIT( KTest2, "test2" ); +* item = ContentListingFactory::NewModifiableItemLC(); +* item->AddFieldL( ECLFFieldIdName, KTest2 ); +* aGroupedList.AppendL( item ); +* CleanupStack::Pop(); // item +* } +* @endcode +* +* Custom grouper is activated and removed by calling method +* MCLFItemListModel::SetCustomGrouper +* +* @lib ContentListingFramework.lib +* @since S60 3.1 +*/ +class MCLFCustomGrouper + { + public: // New functions + + /** + * Abstract method for grouping Content Listing Framework items of + * list models. This method is called when the grouping process is + * executed by refreshing the model. + * @since S60 3.1 + * @param aSourceList Source list. Contains all items that are in + * the list model when the grouping process starts. + * @param aGroupedList Grouped/destination list. While grouping, each + * group should be added to this list. The list model will + * contain only these items when the grouping process is + * finished. + */ + virtual void GroupItemsL( const TArray& aSourceList, + RPointerArray& aGroupedList ) = 0; + + protected: + + /** + * Destructor. + */ + virtual ~MCLFCustomGrouper() {} + + private: // Extension interface + + /** + * This member is internal and not intended for use. + */ + virtual MCLFCustomGrouperExt* Extension() { return NULL; } + + }; + +#endif // MCLFCUSTOMGROUPER_H + +// End of File