locationtriggering/ltserver/ltserverlogic/inc/lbtcreatetriggeraooperation.h
changeset 0 667063e416a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationtriggering/ltserver/ltserverlogic/inc/lbtcreatetriggeraooperation.h	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2006,2007 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:  Active Object operation for serving server logic requests
+*
+*/
+
+
+
+#ifndef C_LBTCREATETRIGGERAOOPEATION_H
+#define C_LBTCREATETRIGGERAOOPEATION_H
+
+// INCLUDE FILES
+#include <e32base.h>
+#include "lbtcontainerextendedtriggerinfo.h"
+#include "lbtaooperationbase.h"
+
+
+// FORWARD DECLARATIONS
+class MLbtAOObserver;
+class RMessage2;
+
+// FORWARD DECLARATIONS
+class CLbtTriggerEntry;
+class CLbtContainer;
+class CLbtSettingsManager;
+class CLbtContainerTriggerEntry;
+class CLbtGeoCircle;
+
+/**
+ * Class declaration of active object operation
+ * to service client requests comming from
+ * server core. The IPC messages are provided to
+ * this class to service the request asynchronously
+ *
+ * @since S60 v4.0
+ */
+class CLbtCreateTriggerAOOperation : public CLbtAOOperationBase
+	{
+	public:
+	
+		/**
+	     * Instantiates a new object of 
+	     * CLbtCreateTriggerAOOperation
+	     *
+	     * @param[in] aObserver reference to the active
+	     * object observer
+	     * @param[in] aMessage the IPC request which the active 
+	     * object has to service. The active object takes responsibility
+	     * of completing this IPC request
+	     * @param aContainer reference to the container which holds
+	     * the reference to the logic processor
+	     */
+	    static CLbtCreateTriggerAOOperation* NewL( MLbtAOObserver& aObserver,
+				    							   const RMessage2& aMessage,
+				    							   CLbtContainer& aContainer,
+				    							   TInt aClientType,
+				    							   CLbtSettingsManager& aSettingsManager );
+				    
+	    /**
+	     * Destructor
+	     *
+	     */
+	    ~CLbtCreateTriggerAOOperation();
+	    
+	    /**
+		 * Cancels create trigger operation
+		 *
+		 */
+		void CancelCreateTrigger();
+	    
+	private:
+	
+		/**
+	     * 2nd phase constuctor for instantiating member variables
+	     *
+	     */
+		void ConstructL();
+		
+		/**
+	     * Default C++ Constructor
+	     *
+	     * @param[in] aObserver reference to the active object observer
+	     * @param[in] aMessage the IPC request which the active 
+	     * object has to service. The active object takes responsibility
+	     * of completing this IPC request
+	     * @param aContainer reference to the container which holds
+	     * the reference to the logic processor
+	     */
+	    CLbtCreateTriggerAOOperation( MLbtAOObserver& aObserver, 
+				    				  const RMessage2& aMessage,
+				    				  CLbtContainer& aContainer,
+				    				  TInt aClientType,
+				    				  CLbtSettingsManager& aSettingsManager );
+	
+	public: // From CLbtAOOperationBase
+	
+	    /**
+	     * Starts the AO operation of serving the request	     
+	     *
+	     */ 
+		void StartOperationL();
+		
+		/**
+		 * Returns the trigger id of the newly created trigger
+		 *
+		 * @return the trigger of the newly create trigger
+		 */ 
+		TLbtTriggerId GetTriggerId();
+	
+	private: // helper methods
+		/**
+		 * Calculates the hysteresis area 
+		 *
+		 * @param[in] the trigger for which the hysteresis
+		 * are has to be created
+		 * @return the hysteresis area
+		 */
+		TInt CalculateHysteresisAreaForTrigger(CLbtTriggerEntry& aTrigger);
+		
+		/**
+		 * Handles create trigger operation
+		 *
+		 */
+		void CreateTriggerL();
+		
+		/**
+		 * Checks if the system cap for trigger will be satisfied if one 
+		 * more trigger is created.
+		 *
+		 * @return ETrue if one more trigger can be created, EFalse otherwise
+		 */
+		TBool CheckTriggerCap();
+		
+		/**
+		 * Calculates the Rectangular approximation of a trigger
+		 * with a circular trigger area.
+		 */
+		void CalculateRectangularArea(
+                        CLbtExtendedTriggerInfo::TLbtTriggerRectArea& aArea,
+                        CLbtGeoCircle* aCircle);
+
+		    
+    protected: // From CActive
+    	void RunL();
+    	void DoCancel();
+
+	private: // Data
+
+		// Refernce to triggering settings manager
+		CLbtSettingsManager& iSettingsManager;
+		
+				
+		// Reference to container trigger entry
+		CLbtContainerTriggerEntry* iContainerTriggerEntry;
+		
+	};
+
+#endif // C_LBTCREATETRIGGERAOOPEATION_H
\ No newline at end of file