diff -r 000000000000 -r c53acadfccc6 locationmanager/locationtrail/inc/locationremappingao.h --- /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 +#include +#include +#include + +#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 iObjectIds; + + /** + * Location objects which location data will remapped + * and it will committed back to Mde. + */ + RPointerArray iObjects; + + /** + * Array of Items to be remapped + */ + RArray 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_*/