--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/locationtrail/inc/locationremappingao.h Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,247 @@
+/*
+* Copyright (c) 2006-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: Remap location data to location objects*
+*/
+
+
+#ifndef LOCATIONREMAPPINGAO_H_
+#define LOCATIONREMAPPINGAO_H_
+
+#include <e32base.h>
+#include <etel3rdparty.h>
+#include <LbsPosition.h>
+#include <centralrepository.h>
+
+#include "locationdatatype.h"
+#include "mdesession.h"
+#include "rlocationtrail.h"
+#include "locationmanagerdebug.h"
+#include "locationtraildefs.h"
+
+
+class TRemapItem
+ {
+public:
+ TRemapItem();
+public:
+ TItemId iObjectId;
+ TItemId iLocationId;
+ TItemId iRelationId;
+ TTime iTime;
+ };
+
+/**
+ * Class is handling remapping operations
+ */
+class CLocationRemappingAO : public CActive
+{
+
+public:
+
+ /**
+ * Remapping Active object states
+ */
+ enum TMappingState
+ {
+ EIdle = 0,
+ //EGatherObjects,
+ ERemapObjects,
+ ECommitObjects
+ };
+
+ /**
+ * Creates and constructs a new instance of CCameraTrailMonitorAO.
+ *
+ * @return A pointer to the new instance of CCameraTrailMonitorAO
+ */
+ static CLocationRemappingAO* NewL();
+
+ /**
+ * Destructor
+ */
+ virtual ~CLocationRemappingAO();
+
+ /**
+ * Stops remapping
+ *
+ * @return ETrue if success, EFalse if not
+ */
+ void StopRemapping();
+
+ void Append( TRemapItem aItem );
+
+ void ResetQueue();
+
+ TBool ItemsInQueue();
+
+ /**
+ * Check items in remapping queue
+ *
+ * @return ETrue if new location object must be created for remapping
+ */
+ TBool CheckQueue();
+
+ /**
+ * Remap location objects between time limits.
+ */
+ void StartRemappingObjects( const TLocationData& aLocationData );
+
+ /**
+ * Inherited from CActive. This method will be called on file server notifying.
+ */
+ void RunL();
+
+ /**
+ * Initialise parameters
+ *
+ * @param aMdEClient, Instance of CMdESession
+ */
+ void InitialiseL(CMdESession* aMdEClient);
+
+ /**
+ * Inherited from CActive. Handles a leave occurring in the request completion event handler RunL().
+ *
+ * @param aError An error code.
+ * @return An error code.
+ */
+ TInt RunError( TInt aError );
+
+ /**
+ * Inherited from CActive.
+ */
+ void DoCancel();
+
+ /**
+ * Update relations to new location object
+ *
+ * @param aLocationId, locationId for relations
+ */
+ void UpdateRelationsL( TItemId aLocationId );
+private:
+
+ /**
+ * C++ constructor - not exported;
+ * implicitly called from NewL()
+ */
+ CLocationRemappingAO();
+
+ /**
+ * 2nd phase construction, called by NewL()
+ */
+ void ConstructL();
+
+ /**
+ * Set AO next state
+ */
+ void NextState(TMappingState aState);
+
+
+ /**
+ * Remap objects data
+ */
+ void RemapObjectsL();
+
+ /**
+ * Commit remapped objects to database
+ */
+ void CommitObjectsL();
+
+ /**
+ * Read time limit value from Central Repository
+ */
+ void ReadTimeFromCenRepL();
+
+private:
+
+ /**
+ * Active object state
+ */
+ TMappingState iState;
+
+ /**
+ * Is there come a new remapping request when
+ * AO have been executing earlier request.
+ */
+ TBool iContinue;
+
+ /**
+ * Is start time earlier stamped.
+ */
+ TBool iTimed;
+
+ /**
+ * Is location data requested from Location Mananger
+ */
+ TBool iRequested;
+
+ /**
+ * Instance of MdeClient
+ */
+ CMdESession* iMdEClient;
+
+ /**
+ * Database definitions.
+ */
+ CMdENamespaceDef* iNamespaceDef;
+ CMdEObjectDef* iObjImageDef;
+ CMdEObjectDef* iObjVideoDef;
+ CMdEPropertyDef* iPropDateDef;
+ CMdEPropertyDef* iPropModifiedDef;
+ CMdEObjectDef* iObjLocationDef;
+ CMdEPropertyDef* iPropLatDef;
+ CMdEPropertyDef* iPropLongDef;
+ CMdEPropertyDef* iPropAltDef;
+ CMdERelationDef* iContainsLocationRelDef;
+
+ /**
+ * Object id's which location data will be remapped.
+ */
+ RArray<TItemId> iObjectIds;
+
+ /**
+ * Location objects which location data will remapped
+ * and it will committed back to Mde.
+ */
+ RPointerArray<CMdEObject> iObjects;
+
+ /**
+ * Array of Items to be remapped
+ */
+ RArray<TRemapItem> iRemapItems;
+
+ /**
+ * When location trail have started.
+ * Time is compared to time when GPS fix is received.
+ */
+ TTime iStartTime;
+
+ /**
+ * When GPS fix is received.
+ */
+ TTime iEndTime;
+
+ /**
+ * Time limit for object data mapping (Default is 10min -> 600s)
+ */
+ TTimeIntervalSeconds iTimeLimit;
+
+ /**
+ * Location data
+ */
+ TLocationData iLocationData;
+
+};
+
+
+#endif /*LOCATIONREMAPPINGAO_H_*/