locationmanager/server/src/clocationmanagerserver.cpp
branchRCL_3
changeset 7 3cebc1a84278
parent 6 646a02f170b9
child 8 50de4d668bb6
--- a/locationmanager/server/src/clocationmanagerserver.cpp	Fri Mar 12 15:44:28 2010 +0200
+++ b/locationmanager/server/src/clocationmanagerserver.cpp	Mon Mar 15 12:42:24 2010 +0200
@@ -100,7 +100,8 @@
                      iLocManStopDelay( 0 ),
                      iLocManStopRemapDelay( 0 ),
                      iCaptureSetting( RLocationTrail::EOff ),
-                     iRemoveLocation( EFalse )
+                     iRemoveLocation( EFalse ),
+                     iWaitForPositioningStopTimeout ( EFalse )
     {
     }
 
@@ -307,6 +308,8 @@
 void CLocationManagerServer::StartGPSPositioningL( RLocationTrail::TTrailCaptureSetting aCaptureSetting )
     {
     LOG( "CLocationManagerServer::StartGPSPositioningL" );
+    iWaitForPositioningStopTimeout = EFalse;
+    
     if ( aCaptureSetting == RLocationTrail::EOff )
     	{
     	return;
@@ -338,6 +341,7 @@
     {
     LOG( "CLocationManagerServer::StopGPSPositioningL()" );
     iCaptureSetting = RLocationTrail::EOff;
+    iWaitForPositioningStopTimeout = EFalse;
     
     RLocationTrail::TTrailState state;
     GetLocationTrailState( state );
@@ -345,7 +349,7 @@
     
     if( state != RLocationTrail::ETrailStopped && state != RLocationTrail::ETrailStopping )
         {
-        TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityHigh ) );
+        TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityUserInput ) );
         
         if ( error != KErrNone )
             {
@@ -369,8 +373,9 @@
 //
 void CLocationManagerServer::StopRecording()
 	{
-    LOG( "CLocationManagerServer::StopRecording()" );
-	iLocationRecord->Stop();
+    LOG( "CLocationManagerServer::StopRecording()" );    
+    iWaitForPositioningStopTimeout = EFalse;
+    iLocationRecord->Stop();		
 	delete iTimer;
 	iTimer = NULL;
 	}
@@ -402,6 +407,7 @@
     if ( self->iLocationRecord->RemappingNeeded() )
         {     
         self->iTimer->Start( self->iLocManStopRemapDelay * 1000000, 0, TCallBack( PositioningStopTimeout, self ) );
+        self->iWaitForPositioningStopTimeout = ETrue;
         }
     else
         {        
@@ -773,8 +779,7 @@
     if( iTargetObjectIds.Count() <= 0 )
     	{
     	TInt err = 0;
-	    const TInt count = aTargets.Count();
-	    for( TInt i = 0 ; i < count ; i++ )
+	    for( TInt i = aTargets.Count() - 1; i >=0; i-- )
 	    	{
 	    	TRAP( err, iMdeSession->CheckObjectL( obj, aTargets[i], &namespaceDef ) );
 	    	if ( err == KErrNone )
@@ -881,8 +886,7 @@
     CMdERelationDef& containsRelDef = aQuery.NamespaceDef().GetRelationDefL( 
     		Relations::KContainsLocation );
     
-    const TInt count = iTargetObjectIds.Count();
-    for( TInt i=0;i<count;i++ )
+    for( TInt i = iTargetObjectIds.Count() - 1; i >=0; i-- )
     	{
         CMdERelation* relationObject = iMdeSession->NewRelationLC( containsRelDef, iTargetObjectIds[i],
         		rightId, 0 );
@@ -891,6 +895,7 @@
         
         CleanupStack::PopAndDestroy( relationObject );
     	}
+    
     CleanupStack::PopAndDestroy( sourceLocation );
     
     for ( TInt i = iCopyReqs.Count() - 1; i >= 0; --i  )
@@ -967,9 +972,9 @@
 		    targetUris.ReserveL( uriCount );
 
 		    // deserialize URIs
-		    for( TInt i = 0; i < uriCount; i++ )
+		    for( TInt i = uriCount- 1; i >=0; i-- )
 		    	{
-		    	targetUris.Append( uriBuffer->ReceivePtr16L() );
+		    	targetUris.AppendL( uriBuffer->ReceivePtr16L() );
 		    	}
 		    
 	        LOG1("CLocationManagerSession::CopyLocationDataByUriL ID count:%d", targetUris.Count());
@@ -1271,4 +1276,17 @@
 	{
 	iTrackLog->AddGpxObserver( aObserver );
 	}
+
+void CLocationManagerServer::RemapedCompleted()
+    {
+    LOG( "CLocationManagerServer::RemapedCompleted()" );
+    StopRecording();
+    }
+
+TBool CLocationManagerServer::WaitForPositioningStopTimeout()
+    {
+    LOG( "CLocationManagerServer::WaitForPositioningStopTimeout()" );
+    return iWaitForPositioningStopTimeout;
+    }
+
 // End of file