diff -r 000000000000 -r 4e91876724a2 photosgallery/common/inc/glxfilterfactory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/common/inc/glxfilterfactory.h Thu Dec 17 08:45:44 2009 +0200 @@ -0,0 +1,225 @@ +/* +* Copyright (c) 2008-2009 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: Command object factory +* +*/ + + + + +#ifndef T_GLXFILTERFACTORY_H +#define T_GLXFILTERFACTORY_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "glxmediaid.h" +/** + * TGlxFilterFactory + * + * Factory that creates CMPXFilter objects + * + * @lib glxcommonfilters.lib + * @internal reviewed 06/06/2007 by Kimmo Hoikka + */ + +class TGlxFilterFactory + { +public: + + // The General category types + + +public: + /** + * Creates a basic filter, Used to specify Images of Video. + * + * @param TGlxMediaGeneralCategory ( EMPXImage or EMPXVideo) + * @return a filter object with array elements set specifying the filter type (Images or Video) + */ + IMPORT_C static CMPXFilter* CreateItemTypeFilterL(TGlxFilterItemType aItemType); + + /** + * Creates a URI filter, Used to specify 1 particular item (no wild cards allowed). + * + * @param const TDesC& aURI ( URI to item) + * @return a filter object with array elements set specifying URI filter type, and the + * text object set to the URI + */ + IMPORT_C static CMPXFilter* CreateURIFilterL(const TDesC& aURI); + + /** + * Creates an Alphabetic Sort filter. + * + * @return a filter object with array elements set specifying an alphabetic sort + */ + IMPORT_C static CMPXFilter* CreateAlphabeticSortFilterL(const TGlxFilterSortDirection aSortDirection = EGlxFilterSortDirectionAscending); + + /** + * Creates an Item Count Sort filter. Containers will be sorted with the greatest number + * of items first. + * + * @return a filter object with array elements set specifying an item count sort + */ + IMPORT_C static CMPXFilter* CreateItemCountSortFilterL(const TGlxFilterSortDirection aSortDirection = EGlxFilterSortDirectionDescending); + + /** + * Creates a Capture Date Sort filter. items will be sorted by capture date + * + * @return a filter object with array elements set specifying a capture date sort + */ + IMPORT_C static CMPXFilter* CreateCaptureDateSortFilterL(const TGlxFilterSortDirection aSortDirection = EGlxFilterSortDirectionAscending); + + /** + * Creates a Modified Date Sort filter. items will be sorted by modified date + * + * @return a filter object with array elements set specifying a modified date sort + */ + IMPORT_C static CMPXFilter* CreateModifiedDateFilterL(const TGlxFilterSortDirection aSortDirection = EGlxFilterSortDirectionAscending); + + /** + * Creates a System Camera Album exclusion filter. + * + * @return a filter object with array elements set specifying the Camera Album Exclusion + */ + IMPORT_C static CMPXFilter* CreateCameraAlbumExclusionFilterL(); + + /** + * Creates an min count container exclusion filter. + * + * @return a filter object with array elements set specifying exclude empty containers + */ + IMPORT_C static CMPXFilter* CreateIncludeEmptyContainersFilterL(CMPXMedia* aOriginalFilter = NULL); + + /** + * Creates a filter that excludes all containers that do not contain the specified item + * + * @return a filter object with array elements set specifying exclude empty containers + */ + IMPORT_C static CMPXFilter* CreateExcludeContainersWithoutItemFilterL(TGlxMediaId aItemId); + + /** + * Creates a filter that only contains the last captured image/video + * + * @return a filter object with array elements set specifying the only the last captured image/video to be displayed + */ + IMPORT_C static CMPXFilter* CreateLastCaptureDateFilterL(); + + /** + * Creates a filter that sets filters for the previews + * + * @return a filter object with array elements set for previews + */ + IMPORT_C static CMPXFilter* CreatePreviewFilterL(); + + + /** + * Creates a filter that sets filters for the previews for items which have containers( albums, tags ) + * + * @return a filter object with array elements set for previews + */ + IMPORT_C static CMPXFilter* CreateContainerPreviewFilterL(); + + /** + * Creates a filter that excludes anything with more than one frame + * + * @return a filter object with array elements set specifying the only the last captured image/video to be displayed + */ + IMPORT_C static CMPXFilter* CreateExcludeAnimationFilterL(const TGlxFilterSortDirection aSortDirection = EGlxFilterSortDirectionNotUsed); + + /** + * Creates a filter that only contains the thumbnails yet to be loaded + * + * @return a filter object with array elements set specifying the only the items for which thumbnail are yet to be loaded + */ + IMPORT_C static CMPXFilter* CreateThumbnailLoadabilityFilterL(TSize aSize); + + /** + * Creates a filter that most suited for the SlideShow + * + * @param aSelectedListPath - this contains the list of Id's required. If NULL it is ignored + * @param aSortDirection - Acsending or Descending + * @param aSortFilter - Alphabetic, Item Count, Capture date, Modified date, + * @param aItemTypeFilter - All, Image, Video, Video and Images, Album + * @Param aExcludeAnimation - Exlude images with FrameCount > 1, include all images + * + * @return a filter object with array elements set according to filters specified + */ + IMPORT_C static CMPXFilter* CreateSlideShowFilterL( CMPXCollectionPath* aSelectedListPath = NULL, + TGlxFilterSortDirection aSortDirection = EGlxFilterSortDirectionAscending, + TGlxFilterSortOrder aSortFilter = EGlxFilterSortOrderCaptureDate); + + /** + * Creates a filter that most suited for the SlideShow + * + * @param aOriginalFilter - Use values in this filter but overide with other parameters + * @param aSelectedListPath - this contains the list of Id's required. If NULL it is ignored + * @param aSortDirection - Acsending, Descending or use value in aOriginalFilter + * @param aItemTypeFilter - All, Image, Video, Video and Images, Album or use value in aOriginalFilter + * @Param aExcludeAnimation - Exlude images with FrameCount > 1, include all images or use value in aOriginalFilter + * + * @return a filter object with array elements set according to filters specified + */ + IMPORT_C static CMPXFilter* CreateSlideShowFilterFromExistingFilterL( CMPXFilter* aOriginalFilter, + CMPXCollectionPath* aSelectedListPath = NULL, + TBool aReverseSortDirection = EFalse); + + /** + * Creates a combined filter. items will be sorted by the filters specified + * + * @param aItemTypeFilter - Images / Video or All + * @param aSortFilter - Type of sort + * @param aSortDirection - Ascending or Descending + * @param aCameraAlbumFilter - Exclusion of Camera System Album + * @param aMinCountFilter - Min Count Fliter + * @param Min Count value + * @param aItemId, the Id of the item that containers must contain + * @param aLastCaptureDateFilter return only the last captured item + * @param aExcludeAnimation excludes images with more than 1 frame count + * @param aThumbnailLoadability return a list of items for which a thumbnail has not been generated + * @param aSize, size of thumnails for Thumbnail Loadibility filter + * @param aSelectedListPath, supplies list of requiered Ids + * @param aOriginalFilter, If supplied then aSortFilter, aSortDirection, aItemTypeFilter, and aExcludeAnimation can be inherited from this + * + * @return a filter object with array elements set as specified by the supplied filters + */ + IMPORT_C static CMPXFilter* CreateCombinedFilterL( const TGlxFilterProperties& aFilterProperties, + CMPXFilter* aOriginalFilter = NULL, + TBool aOverrideOriginal = ETrue); + + /** + * Creates a combined filter. items will be sorted by the filters specified + * + * @param aFilter - filter which may contain filter attributes + * + * @return filter properties populated from aFilter + */ + IMPORT_C static TGlxFilterProperties ExtractAttributes(CMPXFilter* aFilter); + + /** + * Creates an min count container(albums) exclusion filter. + * + * @return a filter object with array elements set specifying exclude empty containers + */ + IMPORT_C static CMPXFilter* CreateExcludeEmptyContainersFilterL(CMPXMedia* aOriginalFilter = NULL); + }; + +#endif +