williamr@2: /* williamr@2: * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef MCLFPOSTFILTER_H williamr@2: #define MCLFPOSTFILTER_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class MCLFPostFilterExt; williamr@2: class MCLFItem; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * Post filter interface for Content Listing Framework. williamr@2: * With this interface client you can add own post filter to williamr@2: * exclude items from list model.

williamr@2: * Example: williamr@2: * @code williamr@2: * // This example filters items by drive letter: williamr@2: * // Items that are in phone memory are included to the list model. williamr@2: * // All other items will be filtered. williamr@2: * void CMyFilter::FilterItemsL( const TArray& aItemList, williamr@2: * RPointerArray& aFilteredItemList ) williamr@2: * { williamr@2: * TCharF phoneMemory( PathInfo::PhoneMemoryRootPath()[0] ); williamr@2: * TInt count( aItemList.Count() ); williamr@2: * for( TInt i = 0 ; i < count ; ++i ) williamr@2: * { williamr@2: * TPtrC ptr; williamr@2: * MCLFItem* item = aItemList[i]; williamr@2: * TInt error( item->GetField( ECLFFieldIdDrive, ptr ) ); williamr@2: * if( error == KErrNone ) williamr@2: * { williamr@2: * TCharF memory( ptr[0] ); williamr@2: * if( memory == phoneMemory ) williamr@2: * { williamr@2: * aFilteredItemList.AppendL( item ); williamr@2: * } williamr@2: * } williamr@2: * } williamr@2: * } williamr@2: * @endcode williamr@2: * @lib ContentListingFramework.lib williamr@2: * @since S60 3.1 williamr@2: */ williamr@2: class MCLFPostFilter williamr@2: { williamr@2: public: // New functions williamr@2: williamr@2: /** williamr@2: * Abstract method to filter source list. This method is called when williamr@2: * the filtering process is executed by list model refresh. williamr@2: * @since S60 3.1 williamr@2: * @param aItemList Source list, contains all items that are in williamr@2: * the list model williamr@2: * @param aFilteredItemList Filtered/destination list, contains all items williamr@2: that will be in the list model after filtering. williamr@2: */ williamr@2: virtual void FilterItemsL( const TArray& aItemList, williamr@2: RPointerArray& aFilteredItemList ) = 0; williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: virtual ~MCLFPostFilter() {} williamr@2: williamr@2: private: // Extension interface williamr@2: williamr@2: /** williamr@2: * This member is internal and not intended for use. williamr@2: */ williamr@2: virtual MCLFPostFilterExt* Extension() { return NULL; } williamr@2: williamr@2: williamr@2: }; williamr@2: williamr@2: #endif // MCLFPOSTFILTER_H williamr@2: williamr@2: // End of File