diff -r 8173571d354e -r 1fc85118c3ae landmarksui/uicontrols/src/CLmkEditorNumberField.cpp --- a/landmarksui/uicontrols/src/CLmkEditorNumberField.cpp Thu Aug 19 09:48:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,417 +0,0 @@ -/* -* 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 "CLmkEditorNumberField.h" -#include "MLmkEditorUiBuilder.h" -#include "LmkConsts.h" -#include "landmarks.hrh" -#include -#include -#include -#include -#include -#include "clmkcentralrepository.h" -#include -#include -#include - -//================== CONSTANTS=============================== -const TReal KFootToMeterFraction = 0.3048; -// ================= MEMBER FUNCTIONS ======================= - -// ---------------------------------------------------- -// CLmkEditorNumberField::CLmkEditorNumberField -// ---------------------------------------------------- -// -CLmkEditorNumberField::CLmkEditorNumberField - ( MLmkFieldData& aField, - MLmkEditorUiBuilder& aUiBuilder ) : - CLmkEditorFieldBase( aField, aUiBuilder ) - { - } - -// ---------------------------------------------------- -// CLmkEditorNumberField::ConstructL -// ---------------------------------------------------- -// -void CLmkEditorNumberField::ConstructL() - { - iRepository = CLmkCentralRepository::NewL(); - CreateAvkonUnitEditorL(); - iCaptionedCtrl = iUiBuilder.LineControl( ControlId() ); - iCaptionedCtrl->SetTakesEnterKey( ETrue ); - } - -// ---------------------------------------------------- -// CLmkEditorNumberField::NewL -// ---------------------------------------------------- -// -CLmkEditorNumberField* CLmkEditorNumberField::NewL - ( MLmkFieldData& aField, - MLmkEditorUiBuilder& aUiBuilder ) - { - CLmkEditorNumberField* self = - new(ELeave) CLmkEditorNumberField( aField, aUiBuilder ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ---------------------------------------------------- -// CLmkEditorNumberField::~CLmkEditorNumberField -// ---------------------------------------------------- -// -CLmkEditorNumberField::~CLmkEditorNumberField() - { - delete iRepository; - } - -// ---------------------------------------------------- -// CLmkEditorNumberField::SaveFieldL -// ---------------------------------------------------- -// -TBool CLmkEditorNumberField::SaveFieldL() - { - TBool result = EFalse; - TReal32 oldData = LandmarkItemField().FloatData(); - TReal32 currData = iControl->Value(); - if( oldData != currData) - { - if (!IsSystemUnitMetric()) - { - if (LandmarkItemField().FieldType() == EPositionAccuracy - || LandmarkItemField().FieldType() == EAltitudeAccuracy) - { - if (currData < (KMinAccuracy / KFootToMeterFraction)) - { - currData = (KMinAccuracy / KFootToMeterFraction); - } - else if (currData > (KMaxAccuracy / KFootToMeterFraction)) - { - currData = (KMaxAccuracy / KFootToMeterFraction); - } - } - else if (LandmarkItemField().FieldType() == EAltitude) - { - if (currData < (KMinAltitude / KFootToMeterFraction)) - { - currData = (KMinAltitude / KFootToMeterFraction); - } - else if (currData > (KMaxAltitude / KFootToMeterFraction)) - { - currData = (KMaxAltitude / KFootToMeterFraction); - } - } - - ConvertFromFootToMeters(currData); - } - else - { - if (LandmarkItemField().FieldType() == EPositionAccuracy - || LandmarkItemField().FieldType() == EAltitudeAccuracy) - { - if (currData < KMinAccuracy) - { - currData = KMinAccuracy; - } - else if (currData > KMaxAccuracy) - { - currData = KMaxAccuracy; - } - } - - else if (LandmarkItemField().FieldType() == EAltitude) - { - if (currData < KMinAltitude) - { - currData = KMinAltitude; - } - else if (currData > KMaxAltitude) - { - currData = KMaxAltitude; - } - } - } - - LandmarkItemField().SetTReal(currData); - result = ETrue; - } - return result; - } - -// ---------------------------------------------------- -// CLmkEditorNumberField::ActivateL -// ---------------------------------------------------- -// -void CLmkEditorNumberField::ActivateL() - { - iCaptionedCtrl->ActivateL(); - } - -// ---------------------------------------------------- -// CLmkEditorNumberField::UpdateL -// ---------------------------------------------------- -// -void CLmkEditorNumberField::UpdateL() - { - TReal32 fieldData = LandmarkItemField().FloatData(); - TReal32 dispData = fieldData; - if( fieldData == iDbData) - { - dispData = iConvertedData; - } - else - { - if( !IsSystemUnitMetric()) - { - //Imperial - iDbData = fieldData; - ConvertFromMetersToFoot( fieldData); - iConvertedData = fieldData; - dispData = iConvertedData; - } - } - - ResolveUnitL(); - iControl->SetValue( dispData ); - } - -// ---------------------------------------------------- -// CLmkEditorNumberField::CreateAvkonUnitEditorL -// ---------------------------------------------------- -// -void CLmkEditorNumberField::CreateAvkonUnitEditorL() - { - // Create Distance editor using AVKON's unit editor - // and insert a line in the dialog - iControl = static_cast( iUiBuilder.CreateLineL( - FieldLabel(), LandmarkItemField().UniqueFieldIdentity(), - EAknCtUnitEditor ) ); - - - - // Obtain the current system of measurement - TInt sysOfMeasurement = EAknUnitEditorMeter; - if( !IsSystemUnitMetric()) - { - sysOfMeasurement = EAknUnitEditorFoot; - } - - //read control from resource file. - TResourceReader reader; - if( sysOfMeasurement == EAknUnitEditorMeter) - { - iEnv->CreateResourceReaderLC(reader, R_LMK_UNIT_EDITOR_METRIC); - } - else - { - iEnv->CreateResourceReaderLC(reader, R_LMK_UNIT_EDITOR_IMPERIAL); - } - - iControl->ConstructFromResourceL(reader); - CleanupStack::PopAndDestroy(); //reader - ResolveUnitL(); - - /* - if ( LandmarkItemField().FieldType() == EPositionAccuracy || - LandmarkItemField().FieldType() == EAltitudeAccuracy ) - { - if( EAknUnitEditorMeter == sysOfMeasurement ) - { - iControl->SetMinimumAndMaximum(KMinAccuracy, KMaxAccuracy); - } - else - { - iControl->SetMinimumAndMaximum( KMinAccuracy / KFootToMeterFraction, - KMaxAccuracy / KFootToMeterFraction ); - } - - } - else if ( LandmarkItemField().FieldType() == EAltitude ) - { - if( EAknUnitEditorMeter == sysOfMeasurement ) - { - iControl->SetMinimumAndMaximum( KMinAltitude, KMaxAltitude ); - } - else - { - iControl->SetMinimumAndMaximum( KMinAltitude / KFootToMeterFraction, - KMaxAltitude / KFootToMeterFraction ); - } - } - */ - - TReal32 fieldData = LandmarkItemField().FloatData(); - iDbData = fieldData; - iConvertedData = fieldData; - - if( EAknUnitEditorFoot == sysOfMeasurement ) - { - //Imperial - ConvertFromMetersToFoot( fieldData); - iConvertedData = fieldData; - } - iControl->SetValue(iConvertedData); - } - -// ----------------------------------------------------------------------------- -//CLmkEditorNumberField::FieldValue() -// ----------------------------------------------------------------------------- -// -TReal CLmkEditorNumberField::FieldValue() const - { - return iControl->Value(); - } - -// ----------------------------------------------------------------------------- -//CLmkEditorNumberField::ResolveUnitL() -// ----------------------------------------------------------------------------- -// -void CLmkEditorNumberField::ResolveUnitL() - { - TReal fieldData = LandmarkItemField().FloatData(); - - if( IsSystemUnitMetric()) - { - TInt fieldUnit = EAknUnitEditorMeter; - iControl->SetUnitL( fieldUnit ); - } - else - { - TInt fieldUnit = EAknUnitEditorFoot; - iControl->SetUnitL( fieldUnit ); - } - } - -// ----------------------------------------------------------------------------- -//CLmkEditorNumberField::ConvertFromFootToMeters() -// ----------------------------------------------------------------------------- -// -void CLmkEditorNumberField::ConvertFromFootToMeters(TReal32& aValue) - { - - aValue *= KFootToMeterFraction; - - } - -// ----------------------------------------------------------------------------- -//CLmkEditorNumberField::ConvertFromMetersToFoot() -// ----------------------------------------------------------------------------- -// -void CLmkEditorNumberField::ConvertFromMetersToFoot(TReal32& aValue) - { - - aValue /= KFootToMeterFraction; - - } - -// ----------------------------------------------------------------------------- -//CLmkEditorNumberField::IsSystemUnitMetric() -// ----------------------------------------------------------------------------- -// -TBool CLmkEditorNumberField::IsSystemUnitMetric() - { - TBool result = EFalse; - TInt keyValue; - TInt err = iRepository->GetKeyValue( KLocSystemofMeasurements, keyValue ); - if( keyValue == EUnitsMetric ) - { - result = ETrue; - } - return result; - } - - -// ----------------------------------------------------------------------------- -//CLmkEditorNumberField::HandleUnitChangeL() -// ----------------------------------------------------------------------------- -// -void CLmkEditorNumberField::HandleUnitChangeL() - { - // Obtain the current system of measurement - TInt sysOfMeasurement = EAknUnitEditorMeter; - if( !IsSystemUnitMetric()) - { - sysOfMeasurement = EAknUnitEditorFoot; - } - - TReal32 controlData = iControl->Value(); - if( controlData != iConvertedData) - { - iConvertedData = controlData; - } - - if( EAknUnitEditorMeter == sysOfMeasurement ) - { - - //Imperial to metric - ConvertFromFootToMeters( iConvertedData ); - } - else - { - //metric to imperial - ConvertFromMetersToFoot( iConvertedData ); - } - - if ( LandmarkItemField().FieldType() == EPositionAccuracy || - LandmarkItemField().FieldType() == EAltitudeAccuracy ) - { - if( EAknUnitEditorMeter == sysOfMeasurement ) - { - iControl->SetMinimumAndMaximum(KMinAccuracy, KMaxAccuracy); - } - else - { - iControl->SetMinimumAndMaximum( KMinAccuracy / KFootToMeterFraction, - KMaxAccuracy / KFootToMeterFraction ); - } - } - else if ( LandmarkItemField().FieldType() == EAltitude ) - { - if( EAknUnitEditorMeter == sysOfMeasurement ) - { - iControl->SetMinimumAndMaximum( KMinAltitude, KMaxAltitude ); - } - else - { - iControl->SetMinimumAndMaximum( KMinAltitude / KFootToMeterFraction, - KMaxAltitude / KFootToMeterFraction ); - } - } - ResolveUnitL(); - iControl->SetValue( iConvertedData ); - } - -// ----------------------------------------------------------------------------- -//CLmkEditorFieldBase::ResetL() -// ----------------------------------------------------------------------------- -// -void CLmkEditorNumberField::ResetL() - { - TRealX temp; - temp.SetNaN(); - iControl->SetValue(temp); - } -// End of File