diff -r 1fc85118c3ae -r 870918037e16 landmarksui/uicontrols/inc/CLmkCoordinateEditor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/landmarksui/uicontrols/inc/CLmkCoordinateEditor.h Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,129 @@ +/* +* 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 - Coordinate editor for editor/viewer form +* +*/ + + + + + + + + +#ifndef CLmkCoordinateEditor_h +#define CLmkCoordinateEditor_h + +// INCLUDES +#include "CLmkFloatEditor.h" + +/// FORWARD DECLARATION +class CEikMfneSymbol; +class CLmkMfneSeparator; + +// CLASS DECLARATION + +/** + * CLmkCoordinateEditor extend ClmkFloatEditor's functionality + * Implements both latitude and longitude editors. + * Underlying floating value is just a value, which user inputs. + * Its upper limit depends on editor type: latitude or longitude. + * Lower limit is always 0, because coordinate sign is represented + * by cardinal point. + * Number() always returns coordinate in degrees. Cardinal points + * are represented by number's sign. + */ +class CLmkCoordinateEditor : public CLmkFloatEditor + { + public: + enum TEditorType + { + ELatitudeEditor, + ELongitudeEditor + }; + + public: // Constructors and destructor + /** + * Constructor + * @return newly instantiated object + */ + CLmkCoordinateEditor(); + + /** + * Destructor. + */ + virtual ~CLmkCoordinateEditor(); + + /** + * By default Symbian 2nd phase constructor + */ + void ConstructL(TReal aInitialValue, + TEditorType aType); + + public: // From CLmkFloatEditor + + /** Sets value */ + void SetNumber(TReal aNumber); + + /** Gets value */ + TReal Number() const; + + protected: // From CLmkFloatEditor + + void HandleValueChanged(); + void HandleCustomFieldChanged(TInt aCustomFieldIndex); + + void HandleEnter(); + void HandleExit(); + + protected: // new functions + + // only NS or WE may be shown + enum TCardinalPoint + { + ECardinalNone, + ECardinalNorth, + ECardinalSouth, + ECardinalEast, + ECardinalWest + }; + + /** Abs(180) is allowed only for West */ + void CheckEastLongitude(); + + void SetCardinal(TCardinalPoint aUnit); + TCardinalPoint Cardinal() const; + TCardinalPoint DefaultCardinal(); + + void ConstructDegreeMarkFieldL(); + void ConstructCardinalPointFieldL(); + + void ShowDegreeAndCardinal(TBool aVisible); + + private: //data + + /// Ref: + CLmkMfneSeparator* iDegreeField; + + /// Ref: + CEikMfneSymbol* iCardinalField; + + TEditorType iEditorType; + + HBufC* iDegreeMark; + }; + +#endif // CLmkCoordinateEditor_h + +// End of File