--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/common/inc/glxfilterfactory.h Wed Sep 01 12:33:26 2010 +0100
@@ -0,0 +1,233 @@
+/*
+* 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 <f32file.h>
+#include <bautils.h>
+#include <glxcollectionpluginall.hrh>
+#include <glxcollectionpluginalbums.hrh>
+#include <mpxcollectionpath.h>
+#include <mpxmediageneraldefs.h>
+#include <glxfiltergeneraldefs.h>
+#include <glxfilterproperties.h>
+#include <mpxfilter.h>
+#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 ONE preview thumbnail
+ *
+ * @return a filter object with array elements set for previews
+ */
+ IMPORT_C static CMPXFilter* CreatePreviewTNFilterL();
+
+ /**
+ * 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
+ * Takes ownership of aSelectedListPath
+ * @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
+ * Takes ownership of aSelectedListPath
+ * @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
+