diff -r 1fc85118c3ae -r 870918037e16 landmarksui/uicontrols/src/CLmkEditorCoordinateField.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/landmarksui/uicontrols/src/CLmkEditorCoordinateField.cpp Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,245 @@ +/* +* Copyright (c) 2002 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: Methods for Landmark editor number field. +* +*/ + + + + + + + +// INCLUDE FILES +#include "CLmkEditorCoordinateField.h" +#include "MLmkEditorUiBuilder.h" +#include "LmkConsts.h" +#include "landmarks.hrh" +#include +#include +#include +#include +#include +#include + +// CONSTANTS +/// Unnamed namespace for local definitions +namespace { +const TReal KDefaultHorizontalAccuracy = 0.1; +} // namespace + +// ================= MEMBER FUNCTIONS ======================= + +// ---------------------------------------------------- +// CLmkEditorCoordinateField::CLmkEditorCoordinateField +// ---------------------------------------------------- +// +CLmkEditorCoordinateField::CLmkEditorCoordinateField + ( MLmkFieldData& aField, + MLmkEditorUiBuilder& aUiBuilder ) : + CLmkEditorFieldBase( aField, aUiBuilder ) + { + } + +// ---------------------------------------------------- +// CLmkEditorCoordinateField::ConstructL +// ---------------------------------------------------- +// +void CLmkEditorCoordinateField::ConstructL() + { + // Create and insert a line in the dialog + //using AVKON's coordinate editor + CreateAvkonCoordinateEditorL(); + iCaptionedCtrl = iUiBuilder.LineControl( ControlId() ); + iCaptionedCtrl->SetTakesEnterKey( ETrue ); + TPosition position; + iControl->Get(position); + if (iIsLatitude) + { + iCurrentValue = position.Latitude(); + } + else + { + iCurrentValue = position.Longitude(); + } + } + +// ---------------------------------------------------- +// CLmkEditorCoordinateField::NewL +// ---------------------------------------------------- +// +CLmkEditorCoordinateField* CLmkEditorCoordinateField::NewL + ( MLmkFieldData& aField, + MLmkEditorUiBuilder& aUiBuilder ) + { + CLmkEditorCoordinateField* self = + new(ELeave) CLmkEditorCoordinateField( aField, aUiBuilder ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ---------------------------------------------------- +// CLmkEditorCoordinateField::~CLmkEditorCoordinateField +// ---------------------------------------------------- +// +CLmkEditorCoordinateField::~CLmkEditorCoordinateField() + { + } + +// ---------------------------------------------------- +// CLmkEditorCoordinateField::SaveFieldL +// ---------------------------------------------------- +// +TBool CLmkEditorCoordinateField::SaveFieldL() + { + TPosition position; + iControl->Get(position); + TReal field = LandmarkItemField().DoubleData(); + TReal controlData; + if (iIsLatitude) + { + controlData = position.Latitude(); + } + else + { + controlData = position.Longitude(); + } + + if( iCurrentValue != controlData) + { + LandmarkItemField().SetTReal(controlData); + } + return ETrue; + } + +// ---------------------------------------------------- +// CLmkEditorCoordinateField::ActivateL +// ---------------------------------------------------- +// +void CLmkEditorCoordinateField::ActivateL() + { + iCaptionedCtrl->ActivateL(); + } + +// ---------------------------------------------------- +// CLmkEditorCoordinateField::UpdateL +// ---------------------------------------------------- +// +void CLmkEditorCoordinateField::UpdateL() + { + TReal fieldData = LandmarkItemField().DoubleData(); + TPosition position = ConstructPosition(fieldData); + iControl->Set(position); + iControl->DrawDeferred(); + } + +// ---------------------------------------------------- +// CLmkEditorCoordinateField::CreateAvkonCoordinateEditorL +// ---------------------------------------------------- +// +void CLmkEditorCoordinateField::CreateAvkonCoordinateEditorL() + { + //using AVKON's coordinate editor + iControl = static_cast( iUiBuilder.CreateLineL( + FieldLabel(), LandmarkItemField().UniqueFieldIdentity(), + EAknCtLocationEditor)); + ConstructEditorFromResourceL(); + + } +// ---------------------------------------------------- +// CLmkEditorCoordinateField::ConstructEditorFromResourceL +// ---------------------------------------------------- +// +void CLmkEditorCoordinateField::ConstructEditorFromResourceL() + { + + TRealX fieldData; + fieldData.SetNaN(); + TInt resId = R_LMK_LONG_EDITOR; + fieldData = LandmarkItemField().DoubleData(); + if (LandmarkItemField().FieldType() == ELatitude ) + { + resId = R_LMK_LAT_EDITOR; + iIsLatitude = ETrue; + } + TPosition position = ConstructPosition(fieldData); + TResourceReader reader; + iEnv->CreateResourceReaderLC(reader, resId); + iControl->ConstructFromResourceL(reader); + iControl->Set(position); + CleanupStack::PopAndDestroy(); // reader + } +// ---------------------------------------------------- +// CLmkEditorCoordinateField::ConstructPosition +// ---------------------------------------------------- +// +TPosition CLmkEditorCoordinateField::ConstructPosition(const TReal& aValue) + { + TRealX latData; + latData.SetNaN(); + TRealX longData; + longData.SetNaN(); + TTime time; + time.HomeTime(); + if (iIsLatitude) + { + latData = aValue; + } + else + { + longData = aValue; + } + TCoordinate coord(latData, longData); + TLocality loc(coord, KDefaultHorizontalAccuracy); + TPosition position(loc, time); + return position; + } + +// ----------------------------------------------------------------------------- +//CLmkEditorFieldBase::FieldValue() +// ----------------------------------------------------------------------------- +// +TReal CLmkEditorCoordinateField::FieldValue() const + { + TReal64 number = 0; + if (iControl) + { + TPosition pos; + iControl->Get(pos); + if (iIsLatitude) + { + number = pos.Latitude(); + } + else + { + number = pos.Longitude(); + } + } + return number; + } + +// ----------------------------------------------------------------------------- +//CLmkEditorFieldBase::ResetL() +// ----------------------------------------------------------------------------- +// +void CLmkEditorCoordinateField::ResetL() + { + TRealX latData; + latData.SetNaN(); + TPosition position = ConstructPosition(latData); + iControl->Set(position); + } +// End of File