diff -r 000000000000 -r 522cd55cc3d7 mapnavproviderrefapp/inc/mnrpengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapnavproviderrefapp/inc/mnrpengine.h Tue Feb 02 00:16:03 2010 +0200 @@ -0,0 +1,147 @@ +/* +* Copyright (c) 2006 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: CMnrpEngine class definition +* +*/ + + +#ifndef MNRP_ENGINE_H +#define MNRP_ENGINE_H + +#include +#include + +class CPosLandmark; +class TCoordinate; +class RResourceReader; + +/** Engine class used both by MnRefProvider and MnRefGeocoder + * components. Provides access to POIs database ( resource file, + * some cities ) and geocoding services. + */ +class CMnrpEngine : public CBase + { + public: + + struct TDistanceToPoi + { + TInt iPoiIndex; // index to KnownPlaces + TReal32 iDistance; // distance to Poi of iPoiIndex + }; + + public: + IMPORT_C static CMnrpEngine* NewL(); + IMPORT_C ~CMnrpEngine(); + + /** Gives access to set of POIs */ + IMPORT_C TArray KnownPlacesL(); + + /** Returns coordinate of given address: + * Find a POI, which country or city matches given address + * and returns its coordinates. + * @param aAddress landmark, containing address + * @return landmark, containg coordinates + * @leave KErrNotFound if can't find POI matching given address + */ + IMPORT_C CPosLandmark* AddressToCoordLC( const CPosLandmark& aAddress ); + + /** @overload + * @return landmark, containg coordinates, or NULL + */ + IMPORT_C CPosLandmark* AddressToCoordL( const CPosLandmark& aAddress ); + + /** @overload + * @param aAddress string containing address + * @return landmark, containg coordinates + * @leave KErrNotFound if can't find POI matching given address + */ + IMPORT_C CPosLandmark* AddressToCoordLC( const TDesC& aAddress ); + + /** @overload + * @param aAddress string containing address + * @return landmark, containg coordinates, or NULL + */ + IMPORT_C CPosLandmark* AddressToCoordL( const TDesC& aAddress ); + + /** Returns address for given coordinate: + * Find a closest POI and return its city and country and + * fill street with "%d[m,Km,tKm] from " string, like "5 km to Tampere" + * @param aLocation coordinate + * @return landmark, containg address + * @leave KErrNotFound if can't find any POI + */ + IMPORT_C CPosLandmark* CoordToAddressLC( const TCoordinate& aLocation ); + + /** Finds a resource file in the system. + * It looks on all the drives for the file and folder given as parameter + * @param[in] aFilePathAndName path and name of the file to search for. Drive + * info is ignored + * @param[out] aRscFile full name of found resource file + * @leave KErrNotFound if file is not found. + */ + IMPORT_C void FindResourceFileL( + const TDesC& aFilePathAndName, + TFileName& aRscFile ); + + /** Returns reference to open file session, given at construction */ + IMPORT_C RFs& Fs(); + + /** Calculates distance between two landmarks. + * @param aFrom Source landmark + * @param aTo Destination landmark + * @return Distance, or NaN, if distance cannot be calculated + */ + IMPORT_C TReal32 DistanceBetweenLandmarks( + const CPosLandmark& aFrom, + const CPosLandmark& aTo ); + + /** Finds POIs closest to given reference landmark. + * @param[in] aReference reference landmark + * @param[out] aNeighbourPois List of closest POIs. + * @param[in] aMaxMatches Maximum number of results needed + */ + IMPORT_C void FindClosestPoisL( + const CPosLandmark& aReference, + RArray& aNeighbourPois, + TInt aMaxMatches ); + + /** Finds POIs closest to given location. + * @param[in] aReference reference location + * @param[out] aNeighbourPois List of landmarks of closest POIs. + * @param[in] aMaxMatches Maximum number of results needed + */ + IMPORT_C void BestCoordToAddressMatchesL( + const TCoordinate& aLocation, + RPointerArray& aMatches, + TInt aMaxMatches ); + + protected: + + void ConstructL(); + CMnrpEngine(); + + /** Loads POIs from database ( resource file ) */ + void LoadKnownPlacesL(); + /** Reads array of PLACES resource structures */ + void ReadPlacesResourceL( RResourceReader& aReader ); + + CPosLandmark* CreateCloseLandmarkLC( const CPosLandmark& aReference, TReal32 aDistance ); + + private: + RPointerArray iPlaces; + RFs iFileSession; + }; + +#endif // MNRP_ENGINE_H +