--- a/landmarksui/uicontrols/src/CLmkFloatEditor.cpp Thu Aug 19 09:48:36 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,332 +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: LandmarksUi Content File -
-*
-*/
-
-
-
-
-
-
-
-
-// INCLUDE FILES
-#include <LmkUi.rsg>
-#include <e32math.h>
-#include <eikmfne.h>
-#include <AknUtils.h>
-#include <AknEditStateIndicator.h>
-#include <eikenv.h>
-#include <stringloader.h>
-
-#include "landmarks.hrh"
-#include "LmkConsts.h"
-
-#include "CLmkMfneFloat.h"
-#include "CLmkFloatEditor.h"
-
-// CONSTANTS
-/// Unnamed namespace for local definitions
-namespace {
-
-#if defined(_DEBUG)
-void Panic(TInt aReason)
- {
- _LIT(KPanicCategory, "CLmkFloatEditor");
- User::Panic(KPanicCategory, aReason);
- }
-#endif
-
-} // namespace
-
-// ============================ MEMBER FUNCTIONS ==============================
-
-// ----------------------------------------------------------------------------
-// CLmkFloatEditor::CLmkFloatEditor
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ----------------------------------------------------------------------------
-//
-CLmkFloatEditor::CLmkFloatEditor()
- {
- iIsMirroredLayout = AknLayoutUtils::LayoutMirrored();
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::BaseConstructL
-// ----------------------------------------------------
-//
- void CLmkFloatEditor::BaseConstructL(TInt aMaxNumFields)
- {
- __ASSERT_DEBUG(aMaxNumFields > 0, Panic(KErrArgument));
- CreateFieldArrayL(aMaxNumFields);
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::ConstructValueFieldL
-// ----------------------------------------------------
-//
- void CLmkFloatEditor::ConstructValueFieldL(
- TInt aMaxNumSignificantDigits,
- TInt aMaxDecimals)
- {
- __ASSERT_DEBUG(iValueField == NULL, Panic(KErrGeneral));
-
- iValueField =
- CLmkMfneFloat::NewL(
- aMaxNumSignificantDigits,
- aMaxDecimals);
-
- AddField(iValueField);
- }
-
-// ----------------------------------------------------------------------------
-// CLmkFloatEditor::~CLmkFloatEditor
-// ----------------------------------------------------------------------------
-//
-CLmkFloatEditor::~CLmkFloatEditor()
- {
- }
-
-// ----------------------------------------------------
-// CLmkDistanceEditor::SetNumberL
-// ----------------------------------------------------
-//
-void CLmkFloatEditor::SetNumber(TReal aNumber)
- {
- __ASSERT_DEBUG(iValueField, Panic(KErrGeneral));
- iValueField->SetValue(aNumber);
- HandleValueChanged();
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::Number
-// ----------------------------------------------------
-//
-TReal CLmkFloatEditor::Number() const
- {
- __ASSERT_DEBUG(iValueField, Panic(KErrGeneral));
- return iValueField->Value();
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::IsModified
-// ----------------------------------------------------
-//
-TBool CLmkFloatEditor::IsModified()
- {
- return iIsModified;
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::IsNan
-// ----------------------------------------------------
-//
-TBool CLmkFloatEditor::IsNan()
- {
- __ASSERT_DEBUG(iValueField, Panic(KErrGeneral));
- return Math::IsNaN(iValueField->Value());
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::SetLimits
-// ----------------------------------------------------
-//
-TBool CLmkFloatEditor::SetLimits(TReal aMinimumValue, TReal aMaximumValue)
- {
- __ASSERT_DEBUG(iValueField, Panic(KErrGeneral));
- if (iValueField->SetLimits(aMinimumValue, aMaximumValue))
- {
- HandleValueChanged();
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::GetLimits
-// ----------------------------------------------------
-//
-void CLmkFloatEditor::GetLimits(TReal& aMinimum, TReal& aMaximum)
- {
- __ASSERT_DEBUG(iValueField, Panic(KErrGeneral));
- iValueField->GetLimits(aMinimum, aMaximum);
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::HandleValueChanged
-// ----------------------------------------------------
-//
-void CLmkFloatEditor::HandleValueChanged()
- {
- if (IsNan())
- {
- // switch to iValueField,
- // otherwise it won't be possible to enter value anymore
- if (Field(CurrentField()) != iValueField)
- {
- HighlightField(FindValueField());
- }
- }
- DrawDeferred();
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::HandleCustomFieldChanged
-// ----------------------------------------------------
-//
-void CLmkFloatEditor::HandleCustomFieldChanged(TInt /*aCustomFieldIndex*/)
- {
- DrawDeferred();
- }
-
-void CLmkFloatEditor::HandleEnter()
- {
- DrawDeferred();
- }
-
-void CLmkFloatEditor::HandleExit()
- {
- DrawDeferred();
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::FindValueField
-// ----------------------------------------------------
-//
-TInt CLmkFloatEditor::FindValueField()
- {
- for (TInt i = 0; i < NumFields(); i++)
- {
- if (Field(i) == iValueField)
- {
- return i;
- }
- }
- return KErrNotFound;
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::HighlightField
-// ----------------------------------------------------
-//
-void CLmkFloatEditor::HighlightField(TInt aFieldPosition)
- {
- if (CurrentField() != aFieldPosition)
- {
- TBool dataAltered = EFalse;
- TBool error = EFalse;
- const CFont& font=*Font();
-
- CEikMfne::HandleInteraction(
- ETrue,
- aFieldPosition,
- Field(CurrentField())->MaximumWidthInPixels(font, EFalse),
- Field(CurrentField())->HighlightType(),
- dataAltered,
- error);
- }
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::FocusChanged
-// ----------------------------------------------------
-//
-void CLmkFloatEditor::FocusChanged(TDrawNow aDrawNow)
- {
- if (!IsReadyToDraw())
- {
- // this is workaround for MFNE's bug.
- // otherwise it will panic hiding cursor
- return;
- }
-
- if (IsFocused())
- {
- HandleEnter();
-
- // need to inform CLmkMfneFloat that it is highlighted
- // because CEikMfne does not do it
- if (iValueField &&
- iValueField == Field(CurrentField()))
- {
- iValueField->HandleHighlight();
- }
- }
- else
- {
- HandleExit();
- }
-
- CEikMfne::FocusChanged(aDrawNow);
- }
-
-// ----------------------------------------------------
-// CLmkFloatEditor::OfferKeyEventL
-// ----------------------------------------------------
-//
-TKeyResponse CLmkFloatEditor::OfferKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aType)
- {
-
- // disallow switch to other fields if value is nan,
- // because it's hard to inform CLmkMfneFloat
- // that focus has changed to it from other field.
- // If it is not done, then CEikMfne will panic when
- // hiding cursor
- if (IsNan() &&
- (aKeyEvent.iCode == EKeyLeftArrow ||
- aKeyEvent.iCode == EKeyRightArrow))
- {
- return EKeyWasConsumed;
- }
-
- TInt oldField = CurrentField();
- TKeyResponse response = CEikMfne::OfferKeyEventL(aKeyEvent, aType);
-
- if (response == EKeyWasConsumed)
- {
- // update focus state in CLmkMfneFloat
- if (oldField != CurrentField() &&
- Field(CurrentField()) == iValueField)
- {
- iValueField->HandleHighlight();
- }
-
- // inform about changes
- if (aKeyEvent.iCode != EKeyLeftArrow &&
- aKeyEvent.iCode != EKeyRightArrow)
- {
- iIsModified = ETrue;
- if (Field(oldField) == iValueField)
- {
- HandleValueChanged();
- }
- else
- {
- HandleCustomFieldChanged(oldField);
- }
- }
- }
-
- DrawNow();
- return response;
- }
-
-// End of File