datasourcemodules/simulationpositioningmodule/inc/EPos_CPosControllerManager.h
changeset 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datasourcemodules/simulationpositioningmodule/inc/EPos_CPosControllerManager.h	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifndef CPOSCONTROLLERMANAGER_H
+#define CPOSCONTROLLERMANAGER_H
+
+#include <e32base.h>
+#include <e32hashtab.h>
+#include <lbspositioninfo.h>
+
+class CPosControllerBase;
+class CPosSimulationPositioner;
+
+/**
+ *  Singleton class that manages positioning controllers
+ */
+NONSHARABLE_CLASS( CPosControllerManager ) : public CBase
+	{
+public:
+	/**
+	 * Returns the singleton instance. Each call to InstanceL()
+	 * should be matched witch a call to ReleaseInstance()
+	 * @return Instance of class CPosControllerManager
+	 * @leave System wide error code
+	 */
+	static CPosControllerManager* InstanceL();
+	/**
+	 * Releases the singleton instance.
+	 * @param aSimPos CPosSimulationPositioner which releases manager
+	 */
+	void ReleaseInstance(const CPosSimulationPositioner& aSimPos);
+	/**
+	 * Gets or creates new controller for given CPosSimulationPositioner
+	 * @param aSimPos CPosSimulationPositioner which requesting for controller
+	 * @return CPosControllerBase instance. Be careful the owner of this instance
+	 * is still CPosControllerManager. To prevent memory leaks you have to call 
+	 * ReleaseInstance(CPosSimulationPositioner&) function when You finish using controller.
+	 */
+	CPosControllerBase& ControllerL(const CPosSimulationPositioner& aSimPos);
+	/**
+	 * Returns iLastFix
+	 * @return iLastFix
+	 */
+	TPositionInfo& GetLastFix();
+	/**
+	 * Sets value of iLastFix
+	 * @param aPosInfo Position info which will set iLastFix
+	 */
+	void SetLastFix(TPositionInfo& aPosInfo);
+	/**
+	 * Returns iLastFixIsPartial
+	 * @return iLastFixIsPartial
+	 */
+	TBool GetLastFixIsPartial();
+	/**
+	 * Sets value of iLastFixIsPartial
+	 * @param aPartial defines value to which iLastFixIsPartial will be set
+	 */
+	void SetLastFixIsPartial(TBool aPartial);
+
+private:
+	CPosControllerManager();
+	virtual ~CPosControllerManager();
+	void ConstructL();
+	CPosControllerBase* CreateControllerL(const CPosSimulationPositioner& aSimPos);
+	TBool RepositoryTrpValueL();
+
+private:
+	/**
+	 * Amount of references to the singleton instance.
+	 * Instance will be deleted when count reaches zero.
+	 */
+	TUint iReferenceCount;
+	/**
+	 * Pointer to single controller object which will be used
+	 * by all positioners. Works only when central repository key
+	 * time relative playback is on.
+	 */
+	CPosControllerBase* iTrpController;
+	/**
+	 * Map between positioners and controllers. 
+	 * This array is used for proper creation and deletion of controllers.
+	 */
+	RPtrHashMap<CPosSimulationPositioner, CPosControllerBase> iPositionerControllerMap;
+	/**
+	 * Defines if time relative playback is on or off.
+	 */
+	TBool iTrp;
+	/**
+	 * Stores last valid fix, 
+	 */
+	TPositionInfo	iLastFix;
+	/**
+	 * Indicates if last valid fix was partial
+	 */
+	TBool			iLastFixIsPartial;
+
+	};
+
+#endif //CPOSCONTROLLERMANAGER_H