epoc32/include/mw/epos_cposlmcompositecriteria.h
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
--- a/epoc32/include/mw/epos_cposlmcompositecriteria.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/epos_cposlmcompositecriteria.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,196 @@
-epos_cposlmcompositecriteria.h
+/*
+* Copyright (c) 2005-2006 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:  CPosLmCompositeCriteria class
+*
+*/
+
+
+#ifndef CPOSLMCOMPOSITECRITERIA_H
+#define CPOSLMCOMPOSITECRITERIA_H
+
+#include <e32base.h>
+#include "EPos_CPosLmSearchCriteria.h"
+
+/**
+*  Class used to combine multiple search criterion.
+*
+*  For instance, to search for all restaurants in the area, this class can be
+*  used to combine a @ref CPosLmAreaCriteria and a @ref CPosLmCategoryCriteria.
+*
+*  If a @ref CPosLmNearestCriteria is used and no sort preference is specified,
+*  the result will be sorted by distance. If more than one
+*  @ref CPosLmNearestCriteria are combined using a @ref CPosLmCompositeCriteria,
+*  the sort order will be undefined unless a sort preference is specified.
+*
+*  Nested @ref CPosLmCompositeCriteria are not allowed.
+*
+*  This criterion only supports searching for landmarks, e.g. if it is passed
+*  to @p CPosLandmarkSearch::StartCategorySearchL, the function will fail with
+*  error code @p KErrNotSupported.
+*
+*  @lib eposlmsearchlib.lib
+*  @since S60 3.0
+*/
+class CPosLmCompositeCriteria : public CPosLmSearchCriteria
+    {
+    public:
+
+        /**
+        *  Specifies the type of the composite criterion.
+        *  ECompositionOR - is supported only when all the contained critarias are CPosLmTextCriteria. it is not supported for other criteria.
+        */
+        enum TCompositionType
+            {
+            ECompositionAND = 0,     /**< Search results must match all
+                                    * contained criteria. */
+            ECompositionOR = 1		/**< Search result must match one of the contained criteria
+            	
+            						* ECompositionOR - is supported only when all the contained critarias are CPosLmTextCriteria. it is not supported for other criteria*/
+            };
+
+    public:
+
+        /**
+        * Two-phased constructor.
+        *
+        * @param[in] aType The composition type to use.
+        * @returns A new instance of this class.
+        */
+        IMPORT_C static CPosLmCompositeCriteria* NewLC(
+            TCompositionType  aType
+        );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CPosLmCompositeCriteria();
+
+    public:
+
+        /**
+        * Returns the type of this composite criterion.
+        *
+        * @return The composition type. 
+        */
+        IMPORT_C TCompositionType CompositionType() const;
+
+        /**
+        * Set the type of this composite criterion.
+        *
+        * @param[in] The composition type to use. 
+        */
+        IMPORT_C void SetCompositionType( TCompositionType  aType );
+
+        /**
+        * Returns the number of criteria this object contains.
+        *
+        * @return The number of criteria this object contains.
+        */
+        IMPORT_C TUint NumOfArguments() const;
+
+        /**
+        * Returns a criterion argument contained in this object.
+        *
+        * This overload returns a const reference to the criterion argument.
+        * There is another overload which returns a non-const reference.
+        *
+        * @param aIndex The argument to read. Must be in the interval
+        *   [0, @ref NumOfArguments - 1], or this function will raise a
+        *   USER-130 panic.
+        * @return The requested argument.
+        */
+        IMPORT_C const CPosLmSearchCriteria& Argument( TUint aIndex ) const;
+
+        /**
+        * Returns a criterion argument contained in this object.
+        *
+        * This overload returns a non-const reference to the criterion
+        * argument. There is another overload which returns a const reference.
+        *
+        * @param aIndex The argument to read. Must be in the interval
+        *   [0, @ref NumOfArguments - 1], or this function will raise a
+        *   USER-130 panic.
+        * @return The requested argument.
+        */
+        IMPORT_C CPosLmSearchCriteria& Argument( TUint aIndex );
+
+        /**
+        * Adds a criterion to this composition.
+        *
+        * The composite criterion must contain at least one argument, otherwise
+        * @ref CPosLandmarkSearch::StartLandmarkSearchL will fail with error
+        * code @p KErrArgument.
+        *
+        * If this function returns without an error code, ownership of the
+        * added criterion object is transferred to the composite object.
+        *
+        * @ref CPosLmCompositeCriteria are not supported when composition type is @ref ECompositionAND.
+        * @ref Only CPosLmTextCriteria is supported in the case of @ref ECompositionOR
+        *
+        * Searching for landmark categories using @ref CPosLmCompositeCriteria 
+        * is not supported in the case of ECompositionAND.
+        *
+        * @param[in] aCriteria The criterion to add to the composition.
+        * @returns - @p KErrNone if successful
+        *          - @p KErrNotSupported 
+        *				- @p if @ref CPosLmCompositeCriteria or @ref CPosLmCatNameCriteria is specified when coposition type is ECompositionAND.
+        *			 	- @p If criteria other than CPosLmTextCriteria is specified with ECompositionOR
+        *          - @p otherwise a system wide error code.
+        */
+        IMPORT_C TInt AddArgument( CPosLmSearchCriteria* aCriteria );
+
+        /**
+        * Removes a criterion from this composition.
+        *
+        * Note: This function does not delete the criterion object. Instead,
+        * the ownership of the object is passed to the caller.
+        *
+        * @param aIndex The argument to remove. Must be in the interval
+        *   [0, @ref NumOfArguments - 1], or this function will raise a
+        *   USER-130 panic.
+        *
+        * @returns The criterion object which was removed from the composition.
+        */
+        IMPORT_C CPosLmSearchCriteria* RemoveArgument( TUint  aIndex );
+
+        /**
+        * Removes and deletes all contained criterion objects.
+        *
+        * The composite criterion must contain at least one argument, otherwise
+        * @ref CPosLandmarkSearch::StartLandmarkSearchL will fail with error
+        * code @p KErrArgument.
+        */
+        IMPORT_C void ClearArguments();
+
+    private:
+
+        CPosLmCompositeCriteria( TCompositionType aType );
+
+        void ConstructL();
+
+        // Prohibit copy constructor
+        CPosLmCompositeCriteria( const CPosLmCompositeCriteria& );
+        // Prohibit assigment operator
+        CPosLmCompositeCriteria& operator= ( const CPosLmCompositeCriteria& );
+
+    private:
+
+        TCompositionType                    iCompositionType;
+        RPointerArray<CPosLmSearchCriteria> iArguments;
+
+    };
+
+#endif      // CPOSLMCOMPOSITECRITERIA_H
+
+