locsrv_pub/location_triggering_api/inc/lbttriggerconditionarea.h
changeset 0 667063e416a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locsrv_pub/location_triggering_api/inc/lbttriggerconditionarea.h	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,232 @@
+/*
+* Copyright (c) 2006 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:  Data class for the area trigger condition.
+*
+*/
+
+
+
+
+#ifndef LBTTRIGGERCONDITIONAREA_H
+#define LBTTRIGGERCONDITIONAREA_H
+
+#include <e32base.h>
+#include <lbttriggerconditionbase.h>
+
+class CLbtGeoAreaBase;
+
+/**
+ *  Data class for the trigger condition based on the geographical area and movement
+ *  of the terminal.
+ *
+ *  The trigger condition specifies where and when a location trigger shall be 
+ *  fired.
+ *
+ *  Trigger area defines where the trigger shall be fired. It is a 
+ *  geographical area. Currently, only geographical circular area
+ *  is supported by the system. 
+ *
+ *  Direction of movement defines when the trigger shall be fired. It specifies
+ *  if the trigger shall be fired wether the terminal enters or exits the trigger area.
+ * 
+ *  When a trigger has been fired, it will not be ready to be fired again until 
+ *  the terminal has moved a certain distance ( "hysteresis distance" ) outside 
+ *  of the trigger area. 
+ *
+ *  Hysteresis distance is defined by system and can't be accessed
+ *  by client applications.
+ *
+ *  @lib lbt.lib
+ *  @since S60 5.1
+ */
+class CLbtTriggerConditionArea : public CLbtTriggerConditionBase
+    {
+public:  // Data types
+    /**
+     *  Specifies in which direction the location trigger is fired.
+     */
+    enum TDirection
+        {
+        /** The trigger is fired when the terminal is entering the 
+         * trigger area. 
+         */
+        EFireOnEnter = 1,
+        /** The trigger is fired when the terminal is exiting the 
+         * trigger area.
+         */
+        EFireOnExit  = 2 
+        };
+
+public:  
+    /**
+     * Constructs a new instance of trigger condition class based
+     * on the geographical area and movement of the terminal.
+     *
+     * @panic ELbtErrArgument If the input trigger area is a 
+     * class of CLbtGeoRect.
+     *
+     * @param[in] aArea The trigger area. Only pointer to 
+     * CLbtGeoCircle object is supported. Ownership is transferred
+     * to the returned CLbtTriggerConditionArea object.
+     * @param[in] aDirection The direction( enter/exit ) of when a 
+     * trigger shall be fired. 
+     * @return A new instance of trigger condition class.
+     */
+    IMPORT_C static CLbtTriggerConditionArea* NewL( 
+        CLbtGeoAreaBase* aArea,
+        TDirection aDirection );
+
+    /**
+     * Constructs a new instance of trigger condition class.
+     *
+     * If construction is successful, it returns s a pointer to the 
+     * trigger condition object. The returned object has no 
+     * trigger area set, and the direction is @p EFireOnEnter.
+     *
+     * @return A new instance of this class.
+     */
+    IMPORT_C static CLbtTriggerConditionArea* NewL();
+
+    /**
+     * Constructs a new instance of trigger condition class
+     * and pushes it onto cleanup stack.
+     *
+     * If construction is successful, it returns s a pointer to the 
+     * trigger condition object. The returned object has no 
+     * trigger area set, and the direction is @p EFireOnEnter.
+     *
+     * @return A new instance of this class.
+     */
+    IMPORT_C static CLbtTriggerConditionArea* NewLC();
+
+    /**
+     * Returns CLbtTriggerConditionBase::ETriggerConditionArea.
+     *
+     * @return CLbtTriggerConditionBase::ETriggerConditionArea
+     */
+    virtual TType Type() const;
+
+    /**
+     * Destructor.
+     */
+    IMPORT_C virtual ~CLbtTriggerConditionArea();
+
+public: // Member functions
+
+    /**
+     * Gets the direction that defines when a trigger shall be fired.
+     *
+     * If no direction has been set for the trigger, it will return
+     * @p EFireOnEnter.
+     *
+     * @return The direction that specified when a trigger shall be fired.
+     */
+    IMPORT_C TDirection Direction() const;
+
+    /**
+     * Sets the direction that defines when a trigger shall be fired.
+     *
+     * @param[in] aDirection The trigger direction. It defines when a trigger
+     * shall be fired.
+     */
+    IMPORT_C void SetDirection( 
+        TDirection aDirection );
+
+    /**
+     * Gets trigger area. 
+     *
+     * If the trigger area is not set before, NULL is returned.
+     * Ownership of the returned trigger area is not transferred
+     * to the client.
+     *
+     * @return Pointer to the trigger area. Ownership of returned
+     * object is not transfered to the client.
+     */
+    IMPORT_C CLbtGeoAreaBase* TriggerArea() const;
+
+    /**
+     * Sets trigger area. 
+     *
+     * @panic ELbtErrArgument If the input trigger area is a 
+     * class of CLbtGeoRect.
+     * @param[in] aArea The trigger area. Only pointer to 
+     * CLbtGeoCircle class is supported by current system. 
+     * Ownership is transferred to this object.
+     */
+    IMPORT_C void SetTriggerArea( 
+        CLbtGeoAreaBase* aArea );
+        
+    
+protected:
+    /**
+     * Externalize method that subclass must implement.
+     * @param[in] aStream Stream to which the object should be externalized.
+     */
+	virtual void DoExternalizeL(RWriteStream& aStream)const;
+	
+	/**
+     * Internalize method that subclass must implement.
+     * @param[in] aStream Stream from which the object should be internalized.
+     */
+	virtual void DoInternalizeL(RReadStream& aStream);
+	
+	
+private:
+    /**
+     * Default constructor.
+     *
+     * Trigger area is set as NULL and default direction 
+     * is @p EFireOnEnter.
+     */
+    CLbtTriggerConditionArea();
+
+    /**
+     *  Symbian 2nd phase constructor.
+     */
+    void ConstructL();
+    
+    /**
+     *  Symbian 2nd phase constructor.
+     */
+    void ConstructL(CLbtGeoAreaBase* aArea,
+        TDirection aDirection);  
+    
+    /**
+     * By default, prohibit copy constructor
+     */
+    CLbtTriggerConditionArea( const CLbtTriggerConditionArea& );
+    
+    /**
+     * Prohibit assigment operator
+     */
+    CLbtTriggerConditionArea& operator= ( const CLbtTriggerConditionArea& );
+
+
+private:// Data
+    /**
+     * Area
+     */
+    CLbtGeoAreaBase* iArea;
+    
+    /**
+     * Direction
+     */
+    TDirection iDirection;
+    
+    /**
+     * Reserved pointer for future extension
+     */
+    TAny* iReserved;
+    };
+#endif // LBTTRIGGERCONDITIONAREA_H