basiclocationinfodisplay/blid/engine/src/CBlidRouter.cpp
branchRCL_3
changeset 17 1fc85118c3ae
parent 16 8173571d354e
child 18 870918037e16
--- a/basiclocationinfodisplay/blid/engine/src/CBlidRouter.cpp	Thu Aug 19 09:48:36 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,418 +0,0 @@
-/*
-* Copyright (c) 2005 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: Implementation of CBlidRouter class which provides access to blid router. Blid route can be modified and read using this class
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <f32file.h> // RFs
-#include <e32math.h>
-#include <sysutil.h>
-#include <driveinfo.h>
-
-#include "CBlidRouter.h"
-#include "TNamedCoordinate.h"
-#include "blidengconsts.h"
-
-// CONSTANTS
-const TInt KBlidInvalidWaypointIndex( -1 );
-
-//Forward declaration. Function for sorted ordering of waypoints
-TInt WaypointOrdering(const TNamedCoordinate& aCoordinate1, const TNamedCoordinate& aCoordinate2);
-
-_LIT(KPanicText, "CBlidRouter");
-enum TPanicCode
-    {
-    EBlidReadOutOfRange = 1
-    };
-
-// ============================ MEMBER FUNCTIONS ==============================
-// ----------------------------------------------------------------------------
-// CBlidRouter::CBlidRouter
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ----------------------------------------------------------------------------
-//
-CBlidRouter::CBlidRouter()
-    {
-    iWaypointIndex = -1;    
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::ConstructL
-// Symbian 2nd phase constructor can leave.
-// ----------------------------------------------------------------------------
-//
-void CBlidRouter::ConstructL()
-    {
-    iLandmark = NULL;
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::NewL
-// Two-phased constructor.
-// ----------------------------------------------------------------------------
-//
-CBlidRouter* CBlidRouter::NewL()
-    {
-    CBlidRouter* self = new( ELeave ) CBlidRouter;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::~CBlidRouter
-// ----------------------------------------------------------------------------
-//
-CBlidRouter::~CBlidRouter()
-    {
-    iRoute.ResetAndDestroy();
-    iRoute.Close();
-    if( iLandmark )
-	    {
-	    delete iLandmark;
-	    }
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::At
-// ----------------------------------------------------------------------------
-//
-TNamedCoordinate& CBlidRouter::At( TInt aIndex )
-	{
-    __ASSERT_ALWAYS(aIndex >= 0 && aIndex < iRoute.Count(),
-        			User::Panic(KPanicText,EBlidReadOutOfRange));
-    return *iRoute[aIndex];
-	}
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::AppendL
-// ----------------------------------------------------------------------------
-//
-TInt CBlidRouter::AppendL( TNamedCoordinate* aCoordinate, TBool aCheckForMemory )
-	{
-	RFs fs;
-    User::LeaveIfError(fs.Connect()); 
-    CleanupClosePushL( fs ); 
-    
-    if(aCheckForMemory)
-    	{
-    	if ( SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeof(aCoordinate), DriveInfo::EDefaultPhoneMemory ) )
-		    {
-		    CleanupStack::PopAndDestroy(); // fs
-		    return KErrDiskFull;        
-			}
-    	}    
-	CleanupStack::PopAndDestroy(); // fs
-	TInt retVal;
-	TLinearOrder<TNamedCoordinate> order(WaypointOrdering);    		
-    retVal = iRoute.InsertInOrder(aCoordinate, order);    
-    return retVal;
-	}
-
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::RemoveL
-// ----------------------------------------------------------------------------
-//
-TInt CBlidRouter::RemoveL( TInt aIndex )
-	{
-    __ASSERT_ALWAYS(aIndex >= 0 && aIndex < iRoute.Count(),
-            User::Panic(KPanicText,EBlidReadOutOfRange));
-    RFs fs;
-    User::LeaveIfError(fs.Connect()); 
-    CleanupClosePushL( fs ); 
-
-    if ( SysUtil::DiskSpaceBelowCriticalLevelL( &fs, 0, DriveInfo::EDefaultPhoneMemory ) )
-        {
-        CleanupStack::PopAndDestroy(); // fs
-        return KErrDiskFull;        
-		}
-	CleanupStack::PopAndDestroy(); // fs
-    TNamedCoordinate* plot = iRoute[aIndex];
-    iRoute.Remove( aIndex );
-    delete plot;
-    return KErrNone;
-	}
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::ResetAndDestroy
-// ----------------------------------------------------------------------------
-//
-void CBlidRouter::ResetAndDestroy()
-    {
-    iRoute.ResetAndDestroy();
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::Count
-// ----------------------------------------------------------------------------
-//
-TInt CBlidRouter::Count()
-	{
-    return iRoute.Count();
-	}
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::Waypoint()
-// Waypoint getter
-// ----------------------------------------------------------------------------
-//
-TNamedCoordinate* CBlidRouter::Waypoint()
-    {
-    if(!iIsWaypoint || iWaypointIndex == KBlidInvalidWaypointIndex)
-	    {
-	    return NULL;
-	    }
-	else if( iWaypointIndex == KManualWaypointIndex )
-	    {
-	    return &iManualWaypoint;
-	    }
-    else
-	    {
-	    return &iWaypoint;	
-	    }
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::IndexOfWaypoint
-// ----------------------------------------------------------------------------
-//
-TInt CBlidRouter::IndexOfWaypoint() const
-    {
-    return iWaypointIndex;
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::SetWaypoint( const TInt aIndex )
-// Waypoint setter
-// ----------------------------------------------------------------------------
-//
-void CBlidRouter::SetWaypoint( const TInt aIndex )
-    {
-    iWaypoint = At( aIndex );  
-    iWaypointIndex = aIndex;
-    iIsWaypoint = ETrue;
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::RemoveWaypoint()
-// ----------------------------------------------------------------------------
-//
-void CBlidRouter::RemoveWaypoint()
-    {
-    iWaypointIndex = -1;
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::ClearSetPoints()
-// ----------------------------------------------------------------------------
-//
-void CBlidRouter::ClearSetPoints()
-	{
-	RemoveWaypoint();
-	if(iLandmark)
-		{
-		delete iLandmark;
-		iLandmark = NULL;			
-		}
-	}
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::ExternalizeL
-// ----------------------------------------------------------------------------
-//
-void CBlidRouter::ExternalizeL( RWriteStream& aStream ) 
-    {
-    TDesC *name;
-    TInt count( Count() );
-    aStream.WriteInt32L( count );
-    for (TInt i = 0; i < count; i++ )
-        {
-        name = At( i ).Name();
-        if ( name )
-            {
-            CleanupStack::PushL( name );
-            aStream.WriteInt32L( name->Length() );
-            aStream.WriteL( *name );
-            CleanupStack::PopAndDestroy(); //name
-            name = NULL;
-            
-            if (  !Math::IsNaN(At( i ).Latitude()) )
-                {
-                aStream.WriteReal64L( At( i ).Latitude() );
-                }
-            else 
-                {
-                aStream.WriteReal64L( 0 );
-                }
-
-            if (  !Math::IsNaN(At( i ).Longitude()) )
-                {
-                aStream.WriteReal64L( At( i ).Longitude() );
-                }
-            else 
-                {
-                aStream.WriteReal64L( 0 );
-                }
-
-            if (  !Math::IsNaN(At( i ).Altitude()) )
-                {
-                aStream.WriteReal32L( At( i ).Altitude() );
-                }
-            else 
-                {
-                aStream.WriteReal32L( 0 );
-                }
-			if (  !Math::IsNaN(At( i ).Accuracy()) )
-                {
-                aStream.WriteReal32L( At( i ).Accuracy() );
-                }
-            else 
-                {
-                aStream.WriteReal32L( 0 );
-                }
-            }
-        }   
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::InternalizeV1L
-// ----------------------------------------------------------------------------
-//
-void CBlidRouter::InternalizeV1L( RReadStream& aStream )
-    {
-    TInt i;
-    TInt count( aStream.ReadInt32L() );    
-    TInt length(0);
-    TBuf<KBlidWaypointNameMaxLen> name;
-    for ( i = 0; i < count; i++ )
-        {
-        length = aStream.ReadInt32L();
-        aStream.ReadL( name, length );
-        TReal64 latitude = aStream.ReadReal64L();
-        TReal64 longitude = aStream.ReadReal64L();
-        TReal32 altitude = aStream.ReadReal32L();
-        TReal32 accuracy = aStream.ReadReal32L();
-        TNamedCoordinate* plot = new(ELeave)TNamedCoordinate(
-                            latitude, 
-                            longitude,
-                            altitude,
-                            name,accuracy);
-        CleanupStack::PushL( plot );
-        //iRouter takes ownership of plot
-        User::LeaveIfError( AppendL( plot, EFalse ) );
-        CleanupStack::Pop(); //plot
-        name.Zero();
-        }
-    }
-	
-// ----------------------------------------------------------------------------
-// CBlidRouter::Landmark
-// ----------------------------------------------------------------------------
-//	
-CPosLandmark* CBlidRouter::Landmark() const
-	{
-	if( iLandmark && !iIsWaypoint  )
-		{
-		return iLandmark;	
-		}		
-	else
-		{
-		return NULL;	
-		}	
-	}
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::SetLandmark
-// ----------------------------------------------------------------------------
-//    
-void CBlidRouter::SetLandmark(CPosLandmark* aLandmark) 
-	{
-	if( iLandmark )
-		{
-		delete iLandmark;	
-		}
-	
-	iLandmark = aLandmark;
-	iIsWaypoint = EFalse;
-	}
-	
-// ----------------------------------------------------------------------------
-// CBlidRouter::IsWaypointSet
-// ----------------------------------------------------------------------------
-//
-TBool CBlidRouter::IsWaypointSet()
-	{
-	return iIsWaypoint;
-	}
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::IsAnyPointSet
-// ----------------------------------------------------------------------------
-//
-TBool CBlidRouter::IsAnyPointSet()
-	{
-	if( iLandmark || (iWaypointIndex != -1) )
-		{
-		return ETrue;	
-		}
-	else
-		{
-		return EFalse;	
-		}	
-	}
-// ----------------------------------------------------------------------------
-// CBlidRouter::SetManualWaypoint
-// ----------------------------------------------------------------------------
-//
-void CBlidRouter::SetManualWaypoint(TReal latitude, TReal longitude, TDesC& aName)
-    {
-    iWaypointIndex = KManualWaypointIndex;
-    iIsWaypoint = ETrue;
-    iManualWaypoint.SetCoordinate(latitude, longitude);
-    iManualWaypoint.SetName(aName);
-    }
-
-// ----------------------------------------------------------------------------
-// CBlidRouter::FindWaypointIndex
-// ----------------------------------------------------------------------------
-//
-TInt CBlidRouter::FindWaypointIndex( TNamedCoordinate* aCoordinate )
-    {
-    TLinearOrder<TNamedCoordinate> order(WaypointOrdering); 
-    iRoute.Sort( order );
-    TInt lReturn = iRoute.Find( aCoordinate );
-    return lReturn;
-    }
-// ----------------------------------------------------------------------------
-// WaypointOrdering() : Function used for ordering of waypoints
-// ----------------------------------------------------------------------------
-//
-TInt WaypointOrdering(const TNamedCoordinate& aCoordinate1, const TNamedCoordinate& aCoordinate2)
-    {
-    HBufC* name1 = aCoordinate1.Name();
-    HBufC* name2 = aCoordinate2.Name();
-    TInt retVal = name1->Compare(name2->Des());
-    delete name1;
-    delete name2;
-    return retVal;
-    }
-//  End of File
-
-