/*
* Copyright (c) 2008 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:  
*
*/



#ifndef LANDMARKS_H_
#define LANDMARKS_H_

#include "creator_model.h"
#include "creator_modulebase.h"

#include <e32base.h>
#include <EPos_Landmarks.h>

class CLandmarkParameters;
class CPosLandmarkDatabase;
class CPosLmOperation;

static const TInt KLandmarkFieldLength = 256;

class CCreatorLandmarks : public CBase, public MCreatorModuleBase
    {
public: 
    static CCreatorLandmarks* NewL(CCreatorEngine* aEngine);
    static CCreatorLandmarks* NewLC(CCreatorEngine* aEngine);
    ~CCreatorLandmarks();

private:
    CCreatorLandmarks();
    void ConstructL(CCreatorEngine* aEngine); // from MCreatorModuleBase    
    TPosLmItemId GetCategoryIdL( TPosLmGlobalCategory aGlobalCategoryID );

public:
    TBool AskDataFromUserL(TInt aCommand, TInt& aNumberOfEntries); // from MCreatorModuleBase
    TInt CreateLandmarkEntryL(CLandmarkParameters *aParameters);
    static TPosLmGlobalCategory GetCategoryIdL(const TDesC& aCategoryStr);
    void DeleteAllL();
    void DeleteAllCreatedByCreatorL();

private:
    CPosLandmarkDatabase* iLandmarkDb;    
    CLandmarkParameters* iParameters;
    CPosLmOperation* iLmOperation;
    RArray<TPosLmItemId> iEntryIds; // TPosLmItemId (==TUint32) CPosLandmark::LandmarkId()
public:
    };


class CLandmarkParameters : public CCreatorModuleBaseParameters
    {
public: 
    HBufC*              iName;
    RArray<TUint>       iCategories;
    HBufC*              iStreet;
    HBufC*              iCity;    
    HBufC*              iState;
    HBufC*              iCountry;
    HBufC*              iPostCode;    
    HBufC*              iDescription;
    HBufC*              iPhonenumber;
    HBufC*              iUrl;
    TReal64             iLatitude;
    TReal64             iLongitude;
    TReal32             iPositionAccuracy;
    TReal32             iAltitude;
    TReal32             iAltitudeAccuracy;
    
    void SetRandomNameL(CCreatorEngine& aEngine);
    void SetRandomUrlL(CCreatorEngine& aEngine);
    void AddRandomCategoryL(CCreatorEngine& aEngine);
    void SetRandomStreetL(CCreatorEngine& aEngine);
    void SetRandomCityL(CCreatorEngine& aEngine);
    void SetRandomStateL(CCreatorEngine& aEngine);
    void SetRandomCountryL(CCreatorEngine& aEngine);
    void SetRandomPostCodeL(CCreatorEngine& aEngine);
    void SetRandomLatitudeL(CCreatorEngine& aEngine);
    void SetRandomLongitudeL(CCreatorEngine& aEngine);
    void SetRandomPositionAccuracyL(CCreatorEngine& aEngine);
    void SetRandomAltitudeL(CCreatorEngine& aEngine);
    void SetRandomAltitudeAccuracyL(CCreatorEngine& aEngine);
    void SetRandomDescriptionL(CCreatorEngine& aEngine);
    void SetRandomPhoneNumberL(CCreatorEngine& aEngine);
    
private:
    
public:
    CLandmarkParameters();
    ~CLandmarkParameters();
    };
#endif /*LANDMARKS_H_*/
