2 * Copyright (c) 1997-1999 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
19 #if !defined(__EIKMFNE_H__)
22 #if !defined(__EIKBCTRL_H__)
26 #if !defined(__COEDEF_H__)
30 #if !defined(__COEINPUT_H__)
34 // For MEikCalendarObserver
35 #if !defined(__EIKCAL_H__)
39 #if !defined(__EIKDEF_H__)
43 #if !defined(__BABITFLAGS_H__)
44 #include <babitflags.h>
47 // For MAknMfneCommandObserver
48 #if !defined(__AKNMFNECOMMANDOBSERVER)
49 #include <aknmfnecommandobserver.h>
50 #endif //!defined(__AKNMFNECOMMANDOBSERVER)
53 // Forward Declarations
59 // Skin-related API forward declarations
60 class MAknsControlContext;
62 // Extension object within CEikMfne
63 class CEikMfneExtension;
67 * Abstract base class for fields within a multi-field numeric editor.
69 class CEikMfneField : public CBase
73 * The type of highlight.
79 /** The cursor is visible in the field so that highlighting is not used. */
84 * Protected default constructor.
86 * Sets the minimum width of the field to zero pixels.
88 IMPORT_C CEikMfneField();
90 void Draw(CWindowGc& aGc, const CFont& aFont, const TPoint& aTopLeft) const;
91 TInt WidthInPixels(const CFont& aFont) const;
92 TInt DistanceFromStartOfFieldToEndOfTextInPixels(const CFont& aFont) const;
95 * An implementation of this pure virtual function should
96 * get the field's maximum width in pixels.
98 * @param aFont The font.
99 * @param aShrinkToMinimumSize ETrue to shrink the width to the minimum required.
100 * @return The field's maximum width in pixels.
102 virtual TInt MaximumWidthInPixels(const CFont& aFont, TBool aShrinkToMinimumSize)=0;
105 * An implementation of this pure virtual function should
106 * return the field's input capabilities.
108 * @return The field's input capabilities.
110 virtual TCoeInputCapabilities InputCapabilities() const=0;
113 * Derived classes' implementation of function should
114 * return whether the field is editable.
116 * This implementation returns EFalse.
120 IMPORT_C virtual TBool IsEditable() const;
123 * Derived classes' implementation of function should
124 * return whether the field is valid
126 * This implementation returns ETrue.
130 IMPORT_C virtual TBool IsValid() const;
133 * An implementation of this function should get the
134 * field's highlight type.
136 * May only be called if IsEditable() returns ETrue.
138 * This implementation panics in debug builds and returns
139 * a dummy value in release builds.
141 * @return EInverseVideo.
143 IMPORT_C virtual THighlightType HighlightType() const;
146 * An implementation of this function should handle a key event.
148 * May only be called if IsEditable() returns ETrue.
149 * This implementation panics in debug builds and is
150 * empty in release builds.
152 * @param aFont The control's font.
153 * @param aKeyEvent The key event passed on from the multi-field numeric editor.
154 * @param aInterpretLeftAndRightAsEarEvents Not used.
155 * @param aDataAltered On return, indicates whether or not the field
156 * contents changed. If EFalse, left and right arrow
157 * key presses indicate a movement to the preceding of
158 * following field, if ETrue they are ignored.
159 * @param aHighlightIncrement On return: -1 indicates the previous field is
160 * highlighted,0 indicates the highlight is
161 * unchanged and 1 indicates the following field
164 IMPORT_C virtual void HandleKey(const CFont& aFont, const TKeyEvent& aKeyEvent, TBool aInterpretLeftAndRightAsEarEvents, TBool& aDataAltered, TInt& aHighlightIncrement);
167 * An implementation of this function should
168 * handle de-highlighting the field.
170 * May only be called if IsEditable() returns ETrue.
172 * This implementation panics in debug builds and is empty
175 * @param aFont The control's font.
176 * @param aEikonEnv The control's environment.
177 * @param aDataAltered On return, set to ETrue if the function caused
178 * the field's contents to change, otherwise unchanged.
179 * @param aError On return, changed to ETrue if an error occurred e.g.
180 * the user entered an invalid value, otherwise unchanged.
182 IMPORT_C virtual void HandleDeHighlight(const CFont& aFont, CEikonEnv& aEikonEnv, TBool& aDataAltered, TBool& aError);
184 const TDesC& FieldText() const;
187 * Handles a left or right arrow key press.
189 * @param aKey Left or right arrow key: either EKeyLeftArrow or EKeyRightArrow.
190 * @param aDataAltered On return, ETrue if data is altered as a result of this function.
191 * @param aHighlightIncrement On return, the direction to move the cursor:
192 * either -1 if aKey is a left arrow key, or 1 if aKey is a right arrow key.
193 * @panic 3 In debug builds, if aKey is neither a left nor a right arrow key.
195 IMPORT_C void HandleLeftOrRightArrow(TChar aKey, TBool& aDataAltered, TInt& aHighlightIncrement);
197 TInt AdditionalWidthForHighlights(const CFont& aFont) const;
199 virtual const TDesC& Text() const=0;
202 * The field's minimum width in pixels.
204 TInt iMinimumWidthInPixels;
210 * A separator field for a multi-field numeric editor.
212 * For instance, the character that separates time or date components.
214 NONSHARABLE_CLASS(CEikMfneSeparator) : public CEikMfneField
217 CEikMfneSeparator(HBufC* aText);
222 * Deletes the separator text that is owned by the object.
224 IMPORT_C virtual ~CEikMfneSeparator();
227 * Allocates and constructs a CEikMfneSeparator from resource.
229 * Uses an MFNE_SEPARATOR resource.
231 * @param aResourceReader The resource reader to use.
232 * @return A newly constructed separator field.
234 IMPORT_C static CEikMfneSeparator* NewL(TResourceReader& aResourceReader);
237 * Allocates and constructs a separator.
239 * @param aText The separator's text. Ownership of aText is transferred.
240 * @return A newly constructed separator.
242 IMPORT_C static CEikMfneSeparator* NewL(HBufC* aText); // ownership of aText is transferred when everything that can leave has successfully been done
245 * Sets the separator's text.
247 * This function transfers ownership of the text and can only be called if the field's text was previously NULL.
249 * @param aText The separator's text.
250 * @panic 4 If the separator's text was not previously Null.
252 IMPORT_C void SetText(HBufC* aText); // allows later transfer of ownership of text - can only be called if aText was previously NULL
254 private: // framework
255 virtual TInt MaximumWidthInPixels(const CFont& aFont, TBool aShrinkToMinimumSize);
256 virtual TCoeInputCapabilities InputCapabilities() const;
257 virtual const TDesC& Text() const;
265 * A number field within a multi-field numeric editor.
267 NONSHARABLE_CLASS(CEikMfneNumber) : public CEikMfneField
271 * Flags for the number field.
273 * EFillWithLeadingZeros, EPreserveOldWidthBeforeEditing and ERepresentsYear can only be set if EPublicallySettableFlags is set.
277 /** Prepends the number field's value with leading zeros up to the maximum allowable width of the field. */
278 EFillWithLeadingZeros =0x1,
279 /** The field's minimum width in pixels is set to the current text's width in pixels. */
280 EPreserveOldWidthBeforeEditing =0x2,
281 /** The number is a year. */
282 ERepresentsYear =0x4,
283 /** Used internally to make sure only the previous three values are set. */
284 EPublicallySettableFlags =EFillWithLeadingZeros|EPreserveOldWidthBeforeEditing|ERepresentsYear
289 EIsBeingEditedWithCursor =0x8,
290 EIsUninitialised =0x10,
291 EFillWithTrailingZeros =0x20
294 CEikMfneNumber(TInt aMinimumValue, TInt aMaximumValue, TUint32 aFlags);
300 * Deletes the number field's text.
302 IMPORT_C virtual ~CEikMfneNumber();
305 * Allocates and constructs a CEikMfneNumber from resource.
307 * Obtains flags and the minimum and maximum values from an MFNE_NUMBER resource. Then calls the overloaded NewL() function.
309 * @param aFont The font to use.
310 * @param aResourceReader The resource reader to use.
311 * @return A newly constructed number field.
313 IMPORT_C static CEikMfneNumber* NewL(const CFont& aFont, TResourceReader& aResourceReader);
316 * Allocates and constructs a CEikMfneNumber with the specified parameters.
318 * @param aFont The font to use.
319 * @param aMinimumValue The minimum value.
320 * @param aMaximumValue The maximum value.
321 * @param aInitialValue The initial value. This must be greater than the minimum value and less than the maximum value.
322 * @param aFlags The number field's flags. See the Anonymous enum.
323 * @return A newly constructed number field.
324 * @panic 8 If the initial value is not greater than or equal to the minimum value and less than or equal to the maximum value.
326 IMPORT_C static CEikMfneNumber* NewL(const CFont& aFont, TInt aMinimumValue, TInt aMaximumValue, TInt aInitialValue, TUint32 aFlags);
329 * Sets the minimum and maximum allowable values.
331 * @param aMinimumValue The minimum value. Must be less than or equal to the maximum value.
332 * @param aMaximumValue The maximum value.
333 * @param aFont The font in use.
334 * @panic 9 If the minimum value is greater than the maximum value or if the minimum/maximum text length is greater than the maximum number of digits.
336 IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue, const CFont& aFont); // only values inside the initial minimum and maximum are permitted
339 * Gets the minimum and maximum allowable values.
341 * @param aMinimumValue On return, the minimum allowable value.
342 * @param aMaximumValue On return, the maximum allowable value.
344 IMPORT_C void GetMinimumAndMaximum(TInt& aMinimumValue, TInt& aMaximumValue) const;
347 * Sets the field's current value.
348 * @param aValue The field's current value. This must be between the minimum value and the maximum value.
349 * @param aFont The font.
350 * @panic 11 In debug builds only, if the value is less than the minimum value or greater than the maximum value.
352 IMPORT_C void SetValue(TInt aValue, const CFont& aFont);
355 * Gets the number field's value. Note that this function will leave
356 * if the value is not valid, i.e. the number of digits is zero
357 * or the value is outside of the minimum and maximum range.
359 * @return The field's value.
361 IMPORT_C TInt Value() const;
364 * Returns ETrue if the field contains more than zero
367 * @return ETrue if the field contains more than zero digits.
369 IMPORT_C virtual TBool IsValid() const;
372 * Sets the uninitialized status of the field.
374 * @param aUninitialised If ETrue, sets the field as uninitialized,
375 * i.e. it doesn't display anything.
377 IMPORT_C void SetUninitialised(TBool aUninitialised);
380 * Gets the uninitialized status of the field.
382 * @return ETrue, if the field is set as uninitialized.
384 IMPORT_C TBool IsUninitialised() const;
388 * Sets the digit display type.
391 * @param aDigitType The digit display type to bet set for this number field
392 * @param aFont The font of the MFNE that owns this field, usually retrieved with CEikMfne::Font()
394 IMPORT_C void SetDigitType(TDigitType aDigitType, const CFont& aFont);
397 * Gets the digit display type.
400 * @return The digit display type of this number field
402 IMPORT_C TDigitType DigitType() const;
405 * Derive and set digit display type from locale information.
408 * @param aFont The font of the MFNE that owns this field, usually retrieved with CEikMfne::Font()
410 IMPORT_C void RefreshDigitType(const CFont& aFont);
412 void SetTrailingZeros();
415 TBool IsTextNull() const;
416 private: // framework
417 virtual TInt MaximumWidthInPixels(const CFont& aFont, TBool aShrinkToMinimumSize);
418 virtual TCoeInputCapabilities InputCapabilities() const;
419 virtual TBool IsEditable() const;
420 virtual THighlightType HighlightType() const;
421 virtual void HandleKey(const CFont& aFont, const TKeyEvent& aKeyEvent, TBool aInterpretLeftAndRightAsEarEvents, TBool& aDataAltered, TInt& aHighlightIncrement);
422 virtual void HandleDeHighlight(const CFont& aFont, CEikonEnv& aEikonEnv, TBool& aDataAltered, TBool& aError);
423 virtual const TDesC& Text() const;
425 TInt MaximumNumberOfDigits() const;
426 TInt NumberOfDigits() const;
427 void SetTextToValue(TInt aValue, const CFont& aFont);
428 TInt ValueFromText() const;
429 TBool ConvertsIntoValidValue(TInt& aValue) const;
431 private: // International digit support
432 TChar NormalizeDigit(TChar aChar);
433 TText ZeroCharacter() const;
434 TText NegativeCharacter() const;
442 TChar iNudgeCharMinus;
443 TChar iNudgeCharPlus;
444 TInt iMaxDigitsMinimumValue;
445 TInt iMaxDigitsMaximumValue;
446 TDigitType iDigitType;
452 * A symbol field for a multi-field numeric editor.
454 * For instance, the AM / PM text in a time editor. In this case, the field contains 2 symbolic items one each for the AM and PM text strings.
456 NONSHARABLE_CLASS(CEikMfneSymbol) : public CEikMfneField
460 * An item within a symbol field in an MFNE.
462 NONSHARABLE_CLASS(CItem) : public CBase
465 CItem(TInt aId, TChar aKeyToMatch, HBufC* aText);
470 * Deletes the item's text.
472 IMPORT_C virtual ~CItem();
475 * Allocates and constructs a symbolic item from resource.
477 * Uses a MFNE_SYMBOLIC_ITEM resource.
478 * @param aResourceReader The resource reader to use.
479 * @return A newly constructed symbolic item.
481 IMPORT_C static CItem* NewL(TResourceReader& aResourceReader);
484 * Allocates and constructs a symbolic item.
486 * @param aId The ID of the symbolic item that uniquely identifies the item in the field.
487 * @param aKeyToMatch The key that represents the item. This is for character matching, not for display.
488 * @param aText The text to be drawn. Ownership of aText is transferred when everything that can leave has successfully completed.
489 * @return A newly constructed symbolic item.
491 IMPORT_C static CItem* NewL(TInt aId, TChar aKeyToMatch, HBufC* aText); // ownership of aText is transferred when everything that can leave has successfully been done
494 * Sets the symbolic item's text.
496 * The item takes ownership of aText.
498 * @param aText The symbolic item's text.
499 * @panic 19 In debug builds if the symbolic item's text was not
502 IMPORT_C void SetText(HBufC* aText); // allows later transfer of ownership of text - can only be called if aText was previously NULL
504 friend class CEikMfneSymbol;
511 CEikMfneSymbol(TInt aNumSymbolicItems);
516 * Deletes the array of symbolic items owned by the object.
518 IMPORT_C virtual ~CEikMfneSymbol();
521 * Allocates and constructs a CEikMfneSymbol from resource.
523 * Uses a MFNE_SYMBOL resource. The first item is set as current.
525 * @param aResourceReader The resource reader to use.
526 * @return A newly constructed symbol.
527 * @panic 15 If there is not more than one symbol.
529 IMPORT_C static CEikMfneSymbol* NewL(TResourceReader& aResourceReader);
532 * Allocates and constructs a CEikMfneSymbol.
534 * The first item is set as current.
536 * @param aNumSymbolicItems The number of symbolic items. Must be
537 * greater than one. All items are set to NULL.
538 * @return A newly constructed symbol.
539 * @panic 15 If there is not more than one symbol.
541 IMPORT_C static CEikMfneSymbol* NewL(TInt aNumSymbolicItems);
544 * Adds the specified symbolic item at the first available position in
547 * This should be called by the container only if construction was not
548 * made from resource.
550 * @param aSymbolicItem The symbol to add. Ownership of aSymbolicItem
551 * is transferred to this.
552 * @param aMakeCurrent ETrue to make the added symbol current.
553 * @panic 16 In debug build if the symbolic item array has not yet been
555 * @panic 17 If the array is full.
557 IMPORT_C void AddSymbolicItem(CItem* aSymbolicItem, TBool aMakeCurrent); // to be called by container only if not constructed from resource - ownership of aSymbolicItem is transferred to "this"
560 * Sets the current item to the one specified.
563 * @param aId The id of the new current item.
564 * @panic 18 If the specified item does not exist.
566 IMPORT_C void SetCurrentSymbolicItemToId(TInt aId);
569 * Gets the current symbol's ID.
571 * @return The current symbol's ID.
573 IMPORT_C TInt IdOfCurrentSymbolicItem() const;
576 * Sets the uninitialized status of the field.
578 * @param aUninitialised If ETrue, sets the field as uninitialized,
579 * i.e. doesn't display anything.
581 IMPORT_C void SetUninitialised(TBool aUninitialised);
584 * Gets the uninitialized status of the field.
586 * @return ETrue, if the field is set as uninitialized.
588 IMPORT_C TBool IsUninitialised() const;
590 private: // framework
591 virtual TInt MaximumWidthInPixels(const CFont& aFont, TBool aShrinkToMinimumSize);
592 virtual TCoeInputCapabilities InputCapabilities() const;
593 virtual TBool IsEditable() const;
594 virtual THighlightType HighlightType() const;
595 virtual void HandleKey(const CFont& aFont, const TKeyEvent& aKeyEvent, TBool aInterpretLeftAndRightAsEarEvents, TBool& aDataAltered, TInt& aHighlightIncrement);
596 virtual void HandleDeHighlight(const CFont& aFont, CEikonEnv& aEikonEnv, TBool& aDataAltered, TBool& aError);
597 virtual const TDesC& Text() const;
599 TInt CurrentSymbolicItem() const;
600 void SetCurrentSymbolicItem(TInt aCurrentSymbolicItem);
602 TInt iNumSymbolicItems;
603 TInt iCurrentSymbolicItem;
604 CItem** iSymbolicItems;
610 * Multi-field numeric editor abstract base class.
612 * This is a set of fields, where a field can be a number, a symbol or
613 * a separator. Field classes are derived from CEikMfneField.
615 * Concrete multi-field numeric editors are derived from this class and
616 * should provide the following:
618 * * A virtual destructor if the class introduces new data members which
619 * are allocated on the heap.
621 * * A ConstructL() function; this is used to initialise a multi-field
624 * * A ConstructFromResourceL() function; this is used to initialise a
625 * multi-field numeric editor from a resource.
627 * * A data member to store the editor's value.
629 * * Functions to set and get the editor's value.
631 * * Functions to set the minimum and maximum allowable values.
633 class CEikMfne : public CEikBorderedControl, public MAknMfneCommandObserver
636 // miscellaneous functions
638 * Default constructor.
645 * This function is virtual which ensures that if delete is explicitly
646 * called on a CEikMfne pointer which points to a derived class
647 * instance, the derived class destructor is called.
649 IMPORT_C virtual ~CEikMfne();
652 * Allocates a field array containing aNumFields elements.
654 * This should be called by the container only if a derived control is
655 * not constructed from a resource.
657 * @param aNumFields The number of fields.
658 * @panic 20 In debug builds, if there is already a field in the editor.
660 IMPORT_C void CreateFieldArrayL(TInt aNumFields); // to be called by container only if not constructed from resource
665 * The field is added as the first empty element in the field array or,
666 * if there is no current field, aField becomes the current field.
668 * This should be called by the container only if a derived control is
669 * not constructed from a resource.
671 * Ownership of aField is transferred to this multi-field numeric
674 * @param aField A field.
675 * @panic 22 If the field array has not been allocated.
677 IMPORT_C void AddField(CEikMfneField* aField); // to be called by container only if not constructed from resource - ownership of aField is transferred to "this"
680 * Deletes the editor's field and the field array.
682 * After a call to this, CreateFieldArrayL() can be called again.
684 IMPORT_C void ResetFieldArray(); // after this CreateFieldArrayL() can be called again
687 * Gets the control's border margins.
689 * @return The control's margins.
691 IMPORT_C TMargins BorderMargins() const;
694 * Draws immediately, and then leaves with an info message containing a
695 * formatted time/date string.
697 * The time/date is passed to the function, as is the resource which
698 * contains the format string which defines how it is to be formatted.
700 * @param aResourceId The resource containing the time/date format. See
702 * @param aTimeDate The object containing the time/date to be displayed.
704 IMPORT_C void DrawNowAndLeaveWithTimeDateFormatInfoMsgL(TInt aResourceId, const TTime& aTimeDate) const;
707 * Gets the CEikMfneField at the specified index.
709 * @param aField The field index.
710 * @return The requested field, or NULL if the index is less than zero
711 * or greater than the number of fields.
713 IMPORT_C CEikMfneField* Field(TInt aField) const;
716 // some utility functions which other classes may find useful
719 * A utility function which reads seconds, minutes and hours from a
720 * resource and returns the corresponding TTime value.
722 * @param aResourceReader A resource reader.
723 * @return The time value read from the resource.
725 IMPORT_C static TTime ReadTime(TResourceReader& aResourceReader);
728 * A utility function which reads days, months and years from a resource
729 * and returns the corresponding TTime value.
731 * @param aResourceReader A resource reader.
732 * @return The date value read from the resource. The hours, minutes,
733 * seconds values are set to zero.
735 IMPORT_C static TTime ReadDate(TResourceReader& aResourceReader);
738 * A utility function which reads seconds, minutes, hours, days, months
739 * and years from a resource and returns the corresponding TTime value.
741 * @param aResourceReader A resource reader.
742 * @return The time/date value read from the resource.
744 IMPORT_C static TTime ReadTimeAndDate(TResourceReader& aResourceReader);
747 * Reads a duration value from a resource.
749 * @param aResourceReader A resource reader.
750 * @return The duration, in seconds.
752 IMPORT_C static TTimeIntervalSeconds ReadDuration(TResourceReader& aResourceReader);
755 * Reads a time offset from a resource.
757 * This is identical to ReadDuration(), except that negative offsets
760 * @param aResourceReader A resource reader.
761 * @return The duration, in seconds.
763 IMPORT_C static TTimeIntervalSeconds ReadTimeOffset(TResourceReader& aResourceReader);
766 * Converts a time duration to seconds.
768 * @param aTime The date and time to be converted.
769 * @return The time duration in seconds.
771 IMPORT_C static TTimeIntervalSeconds Convert(const TTime& aTime);
774 * Converts a time duration in seconds to hours, minutes and seconds.
776 * @param aTimeIntervalSeconds The number of seconds to be converted.
777 * @return The date/time duration.
779 IMPORT_C static TTime Convert(const TTimeIntervalSeconds& aTimeIntervalSeconds);
782 * Gets the index into the field array of the current field.
784 * @return The current field's index.
786 inline TInt CurrentField() const;
789 * Gets the number of fields.
791 * @return The number of fields in the editor.
793 inline TInt NumFields() const;
795 public: // AVKON addition
797 * Settable features for MFNE. See SetFeature().
803 /** Tries to prevent MFNE drawing outside its rect,
804 event if it smaller than MinimumSize().
805 0 (or EFalse) parameter disables this, non-zero
806 (or ETrue) enables the feature. */
809 /** Disables VKB. Non-zero (or ETrue) parameter disables VKB,
810 0 (or EFalse) enables VKB. When disabled,
811 editor doesn't request PenInputServer to start VKB */
814 /** Support finger input. Paramter is TFingerSupportParams.*/
817 ELaunchPenInputAutomatic,
821 /** Parameter for finger support feature:
822 * 0 means disable the suppor;
823 * 1 means enable the support;
824 * 2 means enable the support with highlight of whole text.
826 enum TFingerSupportParams
828 EDisaleFingerSupport,
830 EnableWithAllHighlight
834 * Sets the alignment of the editor. The editor alignments, defined in
835 * avkon.hrh, are EAknEditorAlignNone, EAknEditorAlignCenter,
836 * EAknEditorAlignLeft, EAknEditorAlignRight or EAknEditorAlignBidi.
838 * @param aAlignment The editor's alignment
840 IMPORT_C void SetMfneAlignment(TInt aAlignment);
843 * Sets whether the editor consumes up and down key events. If this is
844 * set to EFalse, the editor returns EKeyWasNotConsumed upon receiving
845 * EKeyDownArrow or EKeyUpArrow key event and doesn't send the key event to
848 * @param aConsume If EFalse, OfferKeyEventL() returns
849 * EKeyWasNotConsumed when up and down key events are received.
851 IMPORT_C void SetUpAndDownKeysConsumed(TBool aConsume);
854 * Used for suppressing all editor's background drawing. This is
855 * intended for internal use.
857 * Note that when this is set, the background is not drawn with skin
858 * nor cleared, so the background MUST be drawn by the parent control
859 * every time the editor changes.
861 * @param aSuppress If ETrue, suppress background drawing
863 IMPORT_C void SetSuppressBackgroundDrawing( TBool aSuppress );
866 * Used for setting various flag-like features to the editor.
868 * @param aFeatureId The feature id, see TFeatureId
869 * @param aFeatureParam The feature parameter. This is usually
870 * enabled or disabled. For more info, see
871 * the feature documentation in TFeatureId.
872 * @return KErrNone if the feature modification succeeded
875 IMPORT_C TInt SetFeature( TInt aFeatureId, TInt aFeatureParam );
878 * Used to getting feature statuses.
880 * @param aFeatureId The feature id, see TFeatureId
881 * @param aFeatureParam On return, the parameter for the feature
882 * (usually non-zero for an enabled feature
883 * and zero for disabled)
884 * @return KErrNone if the feature is supported and fetching its value
888 IMPORT_C TInt GetFeature( TInt aFeatureId, TInt& aFeatureParam ) const;
891 * Used for checking if the editor supports a feature.
892 * For features, see TFeatureId.
895 * @return ETrue if the feature is supported
898 IMPORT_C TBool SupportsFeature( TInt aFeatureId ) const;
900 // Highlights a field
901 void HighlightField( TInt aFieldPosition );
904 * Gets a pointer to the CFont object that is used to draw the fields in
907 * @return A pointer to the CFont object used to draw the fields in
910 IMPORT_C const CFont* Font() const;
913 * Sets the font that is used to draw the fields in this editor.
915 * @param aFont A pointer to a CFont object that is used to draw the
916 * fields in this editor.
918 IMPORT_C void SetFont(const CFont* aFont);
921 * Sets within in the editor an externally owned Skins background control context.
922 * This background control context will then be used by the editor to draw background.
924 * If this API is not called, then the editor IS skin enabled, (that is CEikMfnes are skin
925 * enabled by default) but it will try to find a control context with which to perform background
926 * drawing from the Control Environment, via the Object Provider.
928 * Setting this control context to NULL will have the effect of turning off background
931 * @param aBackgroundControlContext Control context to store. Not owned. Can be NULL
933 IMPORT_C void SetSkinBackgroundControlContextL( MAknsControlContext* aControlContext );
937 * From MAknMfneCommandObserver. Allows owning controls to give commands to
938 * MFNE editors. This is interface was added to enable modifying the current field
939 * value with touch buttons.
941 * @param aCommand Command ID defined in MAknMfneCommandObserver::TMfneCommand
943 IMPORT_C void HandleMfneCommandL(TInt aCommand);
946 * Sets the MFNE to use the CCoeControl::OverrideColorL() defined
947 * color in drawing. If this is set, no skinning will be used
950 * @param aUseOverrideColors ETrue to make the MFNE use overridden colors.
953 IMPORT_C void SetUseOverrideColors( TBool aUseOverrideColors );
956 public: // from CCoeControl
958 * Handles key events.
960 * Overrides CCoeControl::OfferKeyEventL(). The key event is passed
961 * onto the current field to handle.
963 * @param aKeyEvent The key event.
964 * @param aType The type of key event.
965 * @return Indicates whether or not the key event was used by this
968 IMPORT_C virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
971 * Prepares for focus loss.
973 * Overrides CCoeControl::PrepareForFocusLossL().
975 * This function should be called when an attempt is made to remove
976 * focus from a multi-field numeric editor. It redraws the control, removing
977 * highlighting from the current field.
979 * It may be overridden in derived classes to test the validity of
980 * information entered into the editor. Derived class versions should include
981 * a base function call.
983 IMPORT_C virtual void PrepareForFocusLossL();
986 * Gets the minimum size of the control.
988 * Overrides CCoeControl::MinimumSize().
990 * @return The minimum control size.
992 IMPORT_C virtual TSize MinimumSize();
995 * Gets the list of logical colours used to draw the control.
997 * The colours are appended to aColorUseList.
999 * Overrides CCoeControl::GetColorUseListL().
1001 * @param aColorUseList On return, the colour list.
1003 IMPORT_C virtual void GetColorUseListL(CArrayFix<TCoeColorUse>& aColorUseList) const; // not available before Release 005u
1006 * Handles a change to the control's resources.
1008 * The types of resources handled are those which are shared across the
1009 * environment, e.g. colours or fonts.
1011 * Overrides CCoeControl::HandleResourceChange().
1013 * @param aType A message UID value.
1015 IMPORT_C virtual void HandleResourceChange(TInt aType); // not available before Release 005u
1018 * Gets the total of the input capabilities of all the editor's fields.
1020 * Overrides CCoeControl::InputCapabilities().
1022 * If this function is overrided in a subclass, the subclass should
1023 * obtain this class' InputCapabilities' object provider through
1024 * TCoeInputCapabilities::ObjectProvider() and set that as a part of
1025 * the subclass' InputCapabilities object provider chain to ensure
1026 * maximum functionality.
1028 * @return The control's input capabilities.
1030 IMPORT_C virtual TCoeInputCapabilities InputCapabilities() const;
1033 * From @c CCoeControl.
1035 * Handles pointer events.
1037 * @param aPointerEvent The pointer event.
1039 IMPORT_C virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent);
1042 * Retrieves an object of the same type as that encapsulated in aId.
1044 * Overrides CCoeControl::MopSupplyObject().
1046 * @param aId An encapsulated object type ID.
1047 * @return Encapsulates the pointer to the object provided. Note that
1048 * the encapsulated pointer may be NULL.
1050 IMPORT_C virtual TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
1054 * Sets the colors for text and background as skin IDs. Please note that
1055 * bgcolor overrides skinned draw if set
1058 * @param aAknSkinIDForTextColor ID for text color.
1059 * @param aAknSkinIDForBgColor ID for background color.
1061 IMPORT_C void SetSkinTextColorL(TInt aAknSkinIDForTextColor, TInt aAknSkinIDForBgColor=KErrNotFound);
1066 * Redraws the current field, so removing or displaying the cursor.
1068 * If the editor has lost focus, the current field is reset to the
1069 * first editable field.
1071 * @param aDrawNow Whether to draw the control immediately.
1073 IMPORT_C virtual void FocusChanged(TDrawNow aDrawNow);
1076 * Writes the internal state of the control and its components to
1079 * This function is empty in release builds.
1081 IMPORT_C void WriteInternalStateL(RWriteStream& aWriteStream) const;
1083 // miscellaneous functions
1086 * Handles the redrawing associated with a change to the current field.
1088 * Called by OfferKeyEventL(), HandlePointerEventL() and
1089 * PrepareForFocusLossL().
1091 * @param aHandleDeHighlight ETrue if the current field has changed so
1092 * requires de-highlighting.
1093 * @param aNewCurrentField The index of the field to which the user has
1095 * @param aOldWidthInPixelsOfOldCurrentField The width in pixels of the
1096 * previous current field.
1097 * @param aOldHighlightTypeOfOldCurrentField The highlight type of the
1098 * previously current field.
1099 * @param aDataAltered ETrue if the data has been changed.
1100 * @param aError On return, ETrue if successful, EFalse if not
1103 IMPORT_C void HandleInteraction(TBool aHandleDeHighlight, TInt aNewCurrentField, TInt aOldWidthInPixelsOfOldCurrentField,
1104 CEikMfneField::THighlightType aOldHighlightTypeOfOldCurrentField, TBool& aDataAltered, TBool& aError);
1107 * Empty virtual function.
1109 * Called by HandleInteraction() when switching from the current field.
1110 * Can be implemented by derived classes to maintain consistency between
1111 * fields, e.g. in a range editor.
1113 * @param aField The current field.
1114 * @param aDrawAllFields On return, whether all fields have changed and
1115 * need to be redrawn.
1117 IMPORT_C virtual void FieldIsAboutToBeDeHighlighted(CEikMfneField* aField, TBool& aDrawAllFields); // first occurrence of this virtual function - does nothing by default
1120 * Gets the size of the multi-field numeric editor.
1122 * The width is the sum of the maximum widths of every field.
1124 * @return The size of the multi-field numeric editor.
1126 IMPORT_C TSize MfneSize() const;
1129 * Gets the size of the multi-field numeric editor.
1131 * The width is the sum of the maximum widths of every field.
1133 * @param aShrinkToMinimumSize ETrue to shrink the width to the minimum
1134 * required for each field.
1135 * @return The size of the multi-field numeric editor.
1137 IMPORT_C TSize MfneSize(TBool aShrinkToMinimumSize);
1139 IMPORT_C virtual void SizeChanged();
1142 static void InvalidFieldAlert();
1143 static void LeaveWithAlert(TInt aResourceId);
1144 void GetCursorInfo( TPoint& aPos, TInt& aHeight, TInt& aWidth, TInt& aAscent );
1145 void ReportUpdate();
1146 IMPORT_C virtual void MakeVisible(TBool aVisible);
1147 void SetCurrentField( TInt aCurrentField );
1148 void SetValidateCallBack( TCallBack aCallBack );
1149 void ReportStateChangeEventL();
1150 void SetFirstEditableField();
1154 IMPORT_C virtual void Draw(const TRect& aRect) const;
1156 // new virtual functions
1157 IMPORT_C virtual void CreatePopoutIfRequiredL();
1158 // miscellaneous functions
1161 * Draws the specified fields within the MFNE.
1162 * All fields between and including the @c aFirstField and @c aLastField
1165 * @param aGc The graphics context to draw to.
1166 * @param aFirstField First field to be drawn.
1167 * @param aLastField Last field to be drawn.
1168 * @param aSkipBackgroundDrawer @c ETrue to skip the background drawing
1169 * with a background drawer if it's used
1172 void DrawRange( CWindowGc& aGc,
1175 TBool aSkipBackgroundDrawer = EFalse ) const;
1177 CWindowGc& PreparedGc() const;
1178 void SetGcToNormalVideo(CWindowGc& aGc) const;
1179 void SetGcToInverseVideo(CWindowGc& aGc) const;
1180 void SetGcToDimmedVideo(CWindowGc& aGc) const;
1183 IMPORT_C void Reserved_2();
1184 IMPORT_C virtual void CEikMfne_Reserved();
1186 void LaunchPenInputL();
1192 IMPORT_C void* ExtensionInterface( TUid aInterface );
1195 enum {ENullIndex=KMaxTInt};
1198 * Access to state of whether up/down keys are eaten and used to increment/decrement. If
1199 * these keys are not consumed, then the events are passed on.
1201 * @return EFalse iff Up and Down keys are not consumed (and acted upon)
1203 TBool ConsumesUpAndDownKeys() const;
1206 * This state of enabling means that skinning will actually be drawn
1207 * It is a combination of
1208 * - application is skin enabled
1209 * - current skin has a background or frame bitmap
1210 * It is set during construction and does not change its value after except if the Skin is
1211 * changed, whereupon the control context is re-accessed and checked for bitmaps present
1213 * @return EFalse iff background skin will not be drawn.
1215 TBool SkinningBackground() const;
1218 * Checks if app is skin enabled and that the current control context has bitmap.
1219 * If so, then state is set true.
1220 * This should be called at constuction and when HandleResourceChange is called
1223 void EvaluateSkinningBackground();
1226 * Access to Skins background control context that is potentially being used by the Editor.
1228 * This API will first check to see if an control context has been set by API, and if so,
1229 * return that. If the background control context has been set to NULL by API, then it will
1230 * return NULL. If the background control context has never been set by API, then this returns
1231 * the control context (if one exists) that the object obtains from Object Provider.
1233 * @return Pointer to control context potentially in use, or NULL.
1235 MAknsControlContext* SkinBackgroundControlContext() const;
1238 * Check for the existence of the extension and create if required.
1240 void CreateExtensionIfRequiredL();
1245 CEikMfneField** iFields;
1246 CEikMfneExtension* iExtension;
1252 inline TInt CEikMfne::CurrentField() const
1254 return(iCurrentField);
1257 inline TInt CEikMfne::NumFields() const
1267 * This control supports editing a single integer value. If a number is
1268 * entered which is not within the range specified by the maximum and
1269 * minimum control values it is automatically reset to the nearest
1272 * The editor has an associated resource struct NUMBER_EDITOR and
1273 * control factory identifier EEikCtNumberEditor.
1275 class CEikNumberEditor : public CEikMfne
1278 // miscellaneous functions
1283 * This function should be used as the first stage in two stage
1284 * construction, followed by a call to either ConstructFromResourceL() to
1285 * initialise the editor's field values from a resource file, or ConstructL()
1286 * if no resource file is used.
1288 IMPORT_C CEikNumberEditor();
1291 * Second-phase constructor.
1293 * Completes the construction of an integer editor. It should be called
1294 * by container only if the editor is not constructed from a resource.
1296 * Sets the minimum and maximum values that can be entered into the
1297 * editor, and the initial value.
1299 * @param aMinimumValue The minimum allowable value.
1300 * @param aMaximumValue The maximum allowable value.
1301 * @param aInitialValue The initial value.
1303 IMPORT_C void ConstructL(TInt aMinimumValue, TInt aMaximumValue, TInt aInitialValue); // to be called by container only if not constructed from resource
1306 * Sets the minimum and maximum editor values.
1308 * Only values inside the initial minimum and maximum are permitted.
1310 * If the editor's value is outside the new bounds when the function is
1311 * called, it is reset to the nearest allowable value.
1313 * @param aMinimumValue The minimum allowable value.
1314 * @param aMaximumValue The maximum allowable value.
1315 * @panic 9 If the minimum is greater than the maximum allowable value.
1317 IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue); // only values inside the initial minimum and maximum are permitted
1320 * Gets the integer editor's minimum and maximum values.
1322 * @param aMinimumValue On return, contains the integer editor's
1323 * minimum allowable value.
1324 * @param aMaximumValue On return, contains the integer editor's
1325 * maximum allowable value.
1327 IMPORT_C void GetMinimumAndMaximum(TInt& aMinimumValue, TInt& aMaximumValue) const;
1330 * Sets the integer editor's value.
1332 * The control is not redrawn.
1334 * @param aNumber The editor's new value.
1335 * @panic 11 In debug builds, if aNumber is outside the valid range.
1337 IMPORT_C void SetNumber(TInt aNumber);
1340 * Gets the integer editor's value.
1342 * @return The integer editor's value.
1343 * @panic 12 In debug builds, if the editor has no content.
1345 IMPORT_C TInt Number() const; // can only be called if PrepareForFocusLossL() succeeded
1350 * Second-phase construction from a resource file.
1352 * The function reads the maximum and minimum editor values from a
1353 * NUMBER_EDITOR resource, and sets the initial number to be the same as the
1356 * @param aResourceReader A resource file reader.
1358 IMPORT_C virtual void ConstructFromResourceL(TResourceReader& aResourceReader);
1363 * From @c CCoeControl.
1365 * Handles pointer events.
1367 * @param aPointerEvent The pointer event.
1369 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
1371 IMPORT_C virtual void CEikMfne_Reserved();
1373 void RefreshFromLocale();
1378 IMPORT_C void* ExtensionInterface( TUid aInterface );
1380 // none of these pointers owns anything
1381 CEikMfneNumber* iNumber;
1388 * Range struct for CEikRangeEditor.
1406 * Numeric range editor.
1408 * This editor supports editing an integer range. It has two fields;
1409 * the first represents the lower value and the second the upper value. The
1410 * second value must be greater than, or equal to, the first.
1412 * Minimum and maximum values for the editor are specified during
1413 * construction. If a number is entered which is not within the editor's
1414 * minimum and maximum values, it is automatically reset to the nearest
1417 * The editor has an associated resource struct RANGE_EDITOR and
1418 * control factory identifier EEikCtRangeEditor.
1420 class CEikRangeEditor : public CEikMfne
1423 // miscellaneous functions
1426 * Default constructor.
1428 * This function should be used as the first stage in two stage
1429 * construction, followed by a call to either ConstructFromResourceL() to
1430 * initialise the editor's field values from a resource file, or ConstructL()
1431 * if no resource file is used.
1433 IMPORT_C CEikRangeEditor();
1435 // ConstructL to be called by container only if not constructed from resource, also ownership of aSeparatorText is transferred when everything that can leave has successfully been done
1437 * Second phase constructor.
1439 * This function completes construction of a range editor. It sets the
1440 * minimum and maximum values, initial range and separator text. It
1441 * should be called by the container only if the control is not constructed
1442 * from a resource file.
1444 * @param aMinimumValue The minimum value for the range editor.
1445 * @param aMaximumValue The maximum value for the range editor.
1446 * @param aInitialRange Struct containing upper and lower range limits.
1447 * Must be within the minimum and maximum values.
1448 * @param aSeparatorText The text to be used to separate the numeric
1450 * @panic 8 If the initial lower or upper limit is outside the minimum
1451 * or maximum bounds.
1453 IMPORT_C void ConstructL(TInt aMinimumValue, TInt aMaximumValue, const SEikRange& aInitialRange, HBufC* aSeparatorText);
1456 * Sets the range editor's minimum and maximum values.
1458 * Any values are permitted. If the range values are outside the new
1459 * minimum / maximum they are changed to be within the new minimum /
1462 * @param aMinimumValue The minimum value for the range editor.
1463 * @param aMaximumValue The maximum value for the range editor.
1465 IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue); // only values inside the initial minimum and maximum are permitted
1468 * Gets the range editor's minimum and maximum values.
1470 * @param aMinimumValue On return, the minimum value for the range
1472 * @param aMaximumValue On return, the maximum value for the range
1475 IMPORT_C void GetMinimumAndMaximum(TInt& aMinimumValue, TInt& aMaximumValue) const;
1478 * Sets the range editor's current values.
1480 * @param aRange Struct containing new range values.
1482 IMPORT_C void SetRange(const SEikRange& aRange);
1485 * Gets the range editor's current values.
1487 * Can only be called if CEikMfne::PrepareForFocusLossL() succeeded
1489 * @return Struct containing current range values.
1491 IMPORT_C SEikRange Range() const; // can only be called if PrepareForFocusLossL() succeeded
1496 * Second phase constructor from resource.
1498 * This function completes construction of a newly-allocated range
1499 * editor. It sets the minimum and maximum values, initial range and
1500 * separator text as specified by the resource.
1502 * @param aResourceReader A resource reader.
1504 IMPORT_C virtual void ConstructFromResourceL(TResourceReader& aResourceReader);
1509 * From @c CCoeControl.
1511 * Handles pointer events.
1513 * @param aPointerEvent The pointer event.
1515 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
1517 virtual void FieldIsAboutToBeDeHighlighted(CEikMfneField* aField, TBool& aDrawAllFields);
1518 IMPORT_C virtual void CEikMfne_Reserved();
1519 void RefreshFromLocale();
1524 IMPORT_C void* ExtensionInterface( TUid aInterface );
1526 // none of these pointers owns anything
1527 CEikMfneNumber* iLowerLimit;
1528 CEikMfneNumber* iUpperLimit;
1536 * Specifies an abstract interface for time and date editors where the
1537 * time and date are set and retrieved using the TTime class.
1539 class CEikTTimeEditor : public CEikMfne
1543 * An implementation (of this pure virtual function) should set the
1544 * range of allowable time values.
1546 * This defines the maximum and minimum values that may be entered by
1549 * @param aMinimumTime The minimum allowable value.
1550 * @param aMaximumTime The maximum allowable value.
1552 virtual void SetMinimumAndMaximum(const TTime& aMinimumTime, const TTime& aMaximumTime)=0;
1555 * An implementation (of this pure virtual function) should get the
1556 * range of allowable time values.
1558 * @param aMinimumTime The minimum allowable value.
1559 * @param aMaximum The maximum allowable value.
1561 virtual void GetMinimumAndMaximum(TTime& aMinimumTime, TTime& aMaximum) const=0;
1564 * An implementation (of this pure virtual function) should set the time
1567 * @param aTime The time.
1569 virtual void SetTTime(const TTime& aTime)=0;
1572 * An implementation (of this pure virtual function) should get the time
1575 * Can only be called if CEikMfne::PrepareForFocusLossL() succeeded.
1579 virtual TTime GetTTime() const=0; // can only be called if PrepareForFocusLossL() succeeded
1585 * This control allows a time value to be displayed and edited. By
1586 * default the editor has hours, minutes and seconds fields, although the
1587 * seconds and hours fields may be omitted. 12 and 24-hour format are
1588 * supported. When 12-hour format is used, am or pm text will be included as
1589 * another field, either before or after the time. Locale information is
1590 * used to determine the time separator characters. Locale information is
1591 * set and retrieved using class TLocale.
1593 * The upper and lower field bounds are set depending on the format,
1594 * and times outside these bounds are invalid.
1596 * The editor has an associated resource struct TIME_EDITOR and control
1597 * factory identifier EEikCtTimeEditor.
1599 class CEikTimeEditor : public CEikTTimeEditor
1602 // miscellaneous functions
1604 * Default constructor.
1606 * This function should be used as the first stage in two stage
1607 * construction, followed by a call to either: ConstructFromResourceL() to
1608 * initialise the editor's field values from a resource file, or ConstructL()
1609 * if no resource file is used.
1611 IMPORT_C CEikTimeEditor();
1616 * This frees the resources owned by the time editor, prior to its
1619 IMPORT_C virtual ~CEikTimeEditor();
1622 * Second phase construction.
1624 * This function completes the construction of a newly-allocated time
1625 * editor, by setting its minimum, maximum and initial values, and the
1626 * AM/PM text settings - the AM/PM settings and time separator characters
1627 * specified in class TLocale are honoured. It should be called by the
1628 * container only if the control is not constructed from a resource file.
1630 * If the initial time is outside the bounds specified, it is reset to
1631 * the nearest available setting.
1633 * The aFlags parameter is used to determine whether the seconds or
1634 * hours fields are required. The minutes field is always present. It may
1635 * also be used to specify whether or not to force 24 hour time format,
1636 * overriding the locale's setting.
1638 * A panic will occur if the minimum time is later than the maximum
1641 * @param aMinimumTime The minimum allowable time.
1642 * @param aMaximumTime The maximum allowable time.
1643 * @param aInitialTime The initial time.
1644 * @param aFlags Determines which fields are required and whether or
1645 * not to force 24 hour formatting. See eikon.hrh EEiktime etc.
1647 IMPORT_C void ConstructL(const TTime& aMinimumTime, const TTime& aMaximumTime, const TTime& aInitialTime, TUint32 aFlags); // to be called by container only if not constructed from resource
1650 * Sets the time editor's value.
1652 * @param aTime The new value to which to set the editor's fields.
1654 IMPORT_C void SetTime(const TTime& aTime);
1657 * Gets the time editor's value.
1659 * @return The editor's value. (Date values are all zero.)
1661 IMPORT_C TTime Time() const;
1664 * Sets the uninitialized status of the editor.
1666 * @param aUninitialised If ETrue, sets the editor as uninitialized,
1667 * i.e. it doesn't display anything.
1669 IMPORT_C void SetUninitialised(TBool aUninitialised);
1672 * Gets the uninitialized status of the editor.
1674 * @return ETrue, if the editor is set as uninitialized.
1676 IMPORT_C TBool IsUninitialised() const;
1677 // from CEikTTimeEditor
1680 * Sets the range of allowable time values.
1682 * These define the maximum and minimum values that may be entered by
1685 * If the existing time value is outside the bounds set by this
1686 * function, it is reset to the nearest boundary value.
1688 * @param aMinimumTime The minimum allowable value.
1689 * @param aMaximumTime The maximum allowable value.
1690 * @panic 38 If the minimum value exceeds the maximum.
1692 IMPORT_C virtual void SetMinimumAndMaximum(const TTime& aMinimumTime, const TTime& aMaximumTime); // only values inside the initial minimum and maximum are permitted
1695 * Gets the range of allowable values that may be entered by the user.
1697 * @param aMinimumTime On return, contains the time editor's minimum
1699 * @param aMaximumTime On return, contains the time editor's maximum
1702 IMPORT_C virtual void GetMinimumAndMaximum(TTime& aMinimumTime, TTime& aMaximumTime) const;
1707 * Second phase construction from a resource.
1709 * This function completes the construction of a newly-allocated time
1710 * editor from a TIME_EDITOR resource. The minimum and maximum times, and
1711 * the flags settings are read from the resource, and ConstructL() is
1712 * called with these settings. The initial time is set to the maximum time
1713 * value. Honours the locale's AM/PM text setting and time separators.
1715 * @param aResourceReader A resource file reader.
1718 IMPORT_C virtual void ConstructFromResourceL(TResourceReader& aResourceReader);
1721 * Prepares the editor for focus loss.
1723 * This function should be called to validate the editor's contents
1724 * when an attempt is made to remove focus from the control. If the control
1725 * value is not within the bounds specified by the minimum and maximum
1726 * time values, it is reset to the nearest allowable value, the function
1727 * will leave and will display an appropriate message.
1729 IMPORT_C virtual void PrepareForFocusLossL();
1732 * From @c CCoeControl.
1734 * Handles pointer events.
1736 * @param aPointerEvent The pointer event.
1738 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
1740 // from CEikTTimeEditor
1741 virtual void SetTTime(const TTime& aTime);
1742 virtual TTime GetTTime() const; // can only be called if PrepareForFocusLossL() succeeded
1744 // miscellaneous functions
1745 void DoSetMinimumAndMaximum(const TTime& aMinimumTime, const TTime& aMaximumTime);
1746 IMPORT_C virtual void CEikMfne_Reserved();
1751 IMPORT_C void* ExtensionInterface( TUid aInterface );
1753 CTimeEditor* iTimeEditor;
1762 // note: TDateTime uses zero based day numbers, so -1 on the day field
1763 #define KAknMinimumDate (TTime(TDateTime(0001, EJanuary, 1-1, 0, 0, 0, 0)))
1764 #define KAknMaximumDate (TTime(TDateTime(9999, EDecember, 31-1, 23, 59, 59, 999999)))
1769 * A date editor has five fields: day, month and year, and two separator
1770 * characters. The order of the fields varies depending on the locale's
1771 * date format setting. Locale information, which is set and retrieved using
1772 * class @c TLocale, is used to determine field order and the characters used
1773 * to separate the date components. The upper and lower field bounds are set,
1774 * and dates outside these bounds are invalid.
1776 * The editor can be configured to launch a pop-out calendar dialog,
1777 * @c CEikCalendar. This may be used to directly set the day, month and year
1780 * The editor has an associated resource struct @c DATE_EDITOR and control
1781 * factory identifier @c EEikCtDateEditor.
1784 class CEikDateEditor : public CEikTTimeEditor, private MEikCalendarObserver
1789 // miscellaneous functions
1791 * C++ default constructor.
1793 IMPORT_C CEikDateEditor();
1798 IMPORT_C virtual ~CEikDateEditor();
1800 // to be called by container only if not constructed from resource
1802 * Handles 2nd phase construction.
1804 * This function completes the construction of a newly-allocated date
1805 * editor. This function should be used instead of
1806 * @c ConstructFromResourceL() when not initialising from a resource file.
1807 * The editor's minimum, maximum and initial date values are set and the
1808 * date format and date separator characters specified in class @c TLocale
1811 * @param aMinimumDate The minimum allowable date.
1812 * @param aMaximumDate The maximum allowable date.
1813 * @param aInitialDate The initial value.
1814 * @param aWithoutPopoutCalendar If @c ETrue the editor will not have a
1815 * pop-out calendar dialog / icon. If @c EFalse the editor will have
1816 * a pop-out calendar dialog / icon.
1818 IMPORT_C void ConstructL(const TTime& aMinimumDate,
1819 const TTime& aMaximumDate,
1820 const TTime& aInitialDate,
1821 TBool aWithoutPopoutCalendar);
1824 * Sets the date editor's value.
1826 * @param aDate The editor's value. Time components are ignored.
1828 IMPORT_C void SetDate(const TTime& aDate);
1831 * Gets the date editor's value.
1833 * @return The editor's date value.
1835 IMPORT_C TTime Date() const;
1838 * Sets date editor to initialised or uninitialised.
1840 * @param aUninitialised If @c ETrue then the date editor is set
1841 * to be uninitialised.
1843 IMPORT_C void SetUninitialised(TBool aUninitialised);
1846 * Tests whether the editor is uninitialised.
1848 * @return @c ETrue if uninitialised.
1850 IMPORT_C TBool IsUninitialised() const;
1852 // from CEikTTimeEditor
1853 // only values inside the initial minimum and maximum are permitted
1855 * From @c CEikTTimeEditor.
1857 * Sets the minimum and maximum allowable dates.
1859 * If the current date is outside the new bounds it is changed to be within
1862 * @param aMinimumDate The minimum allowable value.
1863 * @param aMaximumDate The maximum allowable value.
1865 IMPORT_C virtual void SetMinimumAndMaximum(const TTime& aMinimumDate,
1866 const TTime& aMaximumDate);
1869 * From @c CEikTTimeEditor.
1871 * Gets the date editor's minimum and maximum values.
1873 * @param aMinimumDate On return, the minimum allowable value.
1874 * @param aMaximumDate On return, the maximum allowable value.
1876 IMPORT_C virtual void GetMinimumAndMaximum(TTime& aMinimumDate,
1877 TTime& aMaximumDate) const;
1881 * From @c CCoeControl.
1883 * Handles key events.
1885 * @param aKeyEvent The key event.
1886 * @param aType The type of key event.
1887 * @return @c EKeyConsumed if the key has beend handled.
1889 IMPORT_C virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,
1893 * From @c CCoeControl.
1895 * Second-phase construction from a resource file.
1897 * The function reads the maximum and minimum date values and whether
1898 * or not the editor should support a pop-out calendar and/or date icon
1899 * from a @c DATE_EDITOR resource. It sets the initial date to be the same
1900 * as the maximum date and honours the locale's date format and separators.
1902 * @param aResourceReader A resource file reader.
1904 IMPORT_C virtual void ConstructFromResourceL(TResourceReader&
1908 * From @c CCoeControl.
1910 * Editor validation.
1912 * This function should be called before an attempt is made to remove focus
1913 * from a date editor. If the control value is not within the bounds
1914 * specified by the minimum and maximum date values, it is reset to the
1915 * nearest allowable value, the function then leaves.
1917 IMPORT_C virtual void PrepareForFocusLossL();
1920 * From @c CCoeControl.
1922 * Handles pointer events.
1924 * @param aPointerEvent The pointer event.
1926 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
1931 virtual void CreatePopoutIfRequiredL();
1932 // from CEikTTimeEditor
1933 virtual void SetTTime(const TTime& aDate);
1934 virtual TTime GetTTime() const; // can only be called if PrepareForFocusLossL() succeeded
1938 // from MEikCalendarDialogObserver
1939 virtual void GetMinimumAndMaximumAndInitialDatesForCalendarL(TTime& aMinimumDate,
1940 TTime& aMaximumDate,
1941 TTime& aInitialDate) const;
1942 virtual void SetDateFromCalendarAndDrawNow(const TTime& aDate);
1943 // miscellaneous functions
1944 void DoSetMinimumAndMaximum(const TTime& aMinimumDate, const TTime& aMaximumDate);
1945 IMPORT_C virtual void CEikMfne_Reserved();
1952 IMPORT_C void* ExtensionInterface( TUid aInterface );
1956 CDateEditor* iDateEditor;
1966 * Time and date editor.
1968 * This control allows both a time and date to be displayed and edited.
1969 * It contains the following time fields: hours, minutes and seconds,
1970 * two time separator characters and am/pm text, and the following date
1971 * fields: year, month and day, with two date separator characters. The
1972 * seconds and hours fields are optional and the order of the date fields and
1973 * the separator characters are locale-dependent. The upper and lower
1974 * field bounds are set, and dates and times outside these bounds are
1977 * Date field values may be edited directly or via a pop-out calendar
1980 * The editor has an associated resource struct TIME_AND_DATE_EDITOR
1981 * and control factory identifier EEikCtTimeAndDateEditor.
1983 class CEikTimeAndDateEditor : public CEikTTimeEditor, private MEikCalendarObserver
1986 // miscellaneous functions
1989 * Default constructor.
1991 * This function should be used as the first stage in two stage
1992 * construction, followed by a call to either ConstructFromResourceL() to
1993 * initialise the editor's field values from a resource file, or ConstructL()
1994 * (if no resource file is used).
1996 IMPORT_C CEikTimeAndDateEditor();
2001 * This frees the resources owned by the time and date editor, prior to
2004 IMPORT_C virtual ~CEikTimeAndDateEditor();
2006 // ConstructL to be called by container only if not constructed from resource, also ownership of aInterveningText is transferred when everything that can leave has successfully been done
2009 * Second phase construction.
2011 * This function completes construction of a newly-allocated date and
2012 * time editor, by setting the minimum, maximum and initial date and time
2013 * values. It should be called by the container only if the control is
2014 * not constructed from a resource file.
2016 * The aFlags parameter is used to set whether the seconds or hours
2017 * fields are not required. The minutes field is always present. It may also
2018 * be used to specify whether or not to force 24 hour time format,
2019 * overriding the locale's setting, and whether the editor should have a
2020 * pop-out calendar dialog.
2022 * The locale-dependant date and time settings specified in class
2023 * TLocale are honoured.
2025 * If the initial date/time is outside the bounds specified by the
2026 * minimum and maximum, it is set to the nearest valid setting.
2028 * A panic will occur if the minimum date/time is later than the
2029 * maximum date/time.
2031 * @param aMinimumTimeAndDate The minimum date and time value.
2032 * @param aMaximumTimeAndDate The maximum date and time value.
2033 * @param aInitialTimeAndDate The initial date and time value.
2034 * @param aFlags A bitmask of flags. See eikon.hrh file, EEikTime,
2036 * @param aInterveningText Descriptor containing the text to use to
2037 * separate the time and date portions of the editor.
2039 IMPORT_C void ConstructL(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate, const TTime& aInitialTimeAndDate, TUint32 aFlags, HBufC* aInterveningText=NULL);
2042 * Sets the values of the time and date editor's fields.
2044 * @param aTimeAndDate The new value for the date and time editor's
2047 IMPORT_C void SetTimeAndDate(const TTime& aTimeAndDate);
2050 * Gets the time and date editor's value.
2052 * @return The editor's value.
2054 IMPORT_C TTime TimeAndDate() const;
2057 * Sets the uninitialized status of the editor.
2059 * @param aUninitialised If ETrue, sets the editor as uninitialized,
2060 * i.e. it doesn't display anything.
2062 IMPORT_C void SetUninitialised(TBool aUninitialised);
2065 * Gets the uninitialized status of the editor.
2067 * @return ETrue, if the editor is set as uninitialized.
2069 IMPORT_C TBool IsUninitialised() const;
2071 // from CEikTTimeEditor
2074 * Sets the range of allowable values.
2076 * These define the maximum and minimum time/date values that may be
2077 * entered by the user.
2079 * If the existing date/time value is outside the new bounds, it is
2080 * reset to the nearest allowable value.
2082 * @param aMinimumTimeAndDate The minimum allowable value.
2083 * @param aMaximumTimeAndDate The maximum allowable value.
2085 IMPORT_C virtual void SetMinimumAndMaximum(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate); // only values inside the initial minimum and maximum are permitted
2088 * Gets the range of allowable values that may be entered by the user.
2090 * @param aMinimumTimeAndDate On return, contains the time and date
2091 * editor's minimum allowable value.
2092 * @param aMaximumTimeAndDate On return, contains the time and date
2093 * editor's maximum allowable value.
2095 IMPORT_C virtual void GetMinimumAndMaximum(TTime& aMinimumTimeAndDate, TTime& aMaximumTimeAndDate) const;
2100 * Handles key events.
2102 * For example, the Tab key validates and launches a calendar popout.
2104 * Calls CEikMfne::OfferKeyEventL() if the control does not consume the
2107 * @param aKeyEvent The key event.
2108 * @param aType The type of key event.
2109 * @return Returns EKeyWasConsumed if the control consumes the key.
2111 IMPORT_C virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
2114 * Second phase construction from a resource.
2116 * This function completes the construction of a newly-allocated
2117 * date/time editor from a TIME_AND_DATE_EDITOR resource. The minimum and
2118 * maximum date/times, the date and time flag settings, and the intervening
2119 * text are read from the resource, and ConstructL() is called with these
2120 * settings. The initial date/time is set to the maximum date/time value.
2122 * @param aResourceReader A resource file reader.
2124 IMPORT_C virtual void ConstructFromResourceL(TResourceReader& aResourceReader);
2127 * Prepares the editor for focus loss.
2129 * This function should be called to validate the editor's contents
2130 * when an attempt is made to remove focus from the control. If the control
2131 * value is not within the bounds specified by the minimum and maximum
2132 * date/time values, it is reset to the nearest allowable value, the
2133 * function will leave and display an appropriate message.
2135 IMPORT_C virtual void PrepareForFocusLossL();
2138 * From @c CCoeControl.
2140 * Handles pointer events.
2142 * @param aPointerEvent The pointer event.
2144 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
2148 virtual void CreatePopoutIfRequiredL();
2149 IMPORT_C virtual void CEikMfne_Reserved();
2150 // from CEikTTimeEditor
2151 virtual void SetTTime(const TTime& aTimeAndDate);
2152 virtual TTime GetTTime() const; // can only be called if PrepareForFocusLossL() succeeded
2154 // from MEikCalendarDialogObserver
2155 virtual void GetMinimumAndMaximumAndInitialDatesForCalendarL(TTime& aMinimumDate, TTime& aMaximumDate, TTime& aInitialDate) const;
2156 virtual void SetDateFromCalendarAndDrawNow(const TTime& aDate);
2157 // miscellaneous functions
2158 void DoSetMinimumAndMaximum(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate);
2163 IMPORT_C void* ExtensionInterface( TUid aInterface );
2165 CTimeEditor* iTimeEditor;
2166 CDateEditor* iDateEditor;
2167 TTime iMinimumTimeAndDate;
2168 TTime iMaximumTimeAndDate;
2178 * The duration editor allows a time duration to be displayed and
2179 * edited. The editor has a clock icon and an edit field with separators for
2180 * hours, minutes, and seconds. These fields can all be suppressed using
2181 * the appropriate flags in the resource declaration.
2183 * Unlike the time editor control, the duration editor has no am or pm
2184 * text. This is because the duration is a length of time (from 0 to 24
2185 * hours), rather than a point in time.
2187 * The minimum and maximum values are set, and values outside these
2188 * limits are invalid.
2190 * The editor has an associated resource struct DURATION_EDITOR and
2191 * control factory identifier EEikCtDurationEditor.
2193 class CEikDurationEditor : public CEikMfne
2196 // miscellaneous functions
2199 * Default constructor.
2201 * This function should be used as the first stage in two stage
2202 * construction, followed by a call to either ConstructFromResourceL() to
2203 * initialise the editor's field values from a resource file, or ConstructL()
2204 * if no resource file is used.
2206 IMPORT_C CEikDurationEditor();
2211 * The destructor frees the resources owned by the duration editor,
2212 * prior to its destruction.
2214 IMPORT_C virtual ~CEikDurationEditor();
2217 * Second phase construction.
2219 * This function completes the construction of a newly-allocated
2220 * duration editor. This function should be used instead of
2221 * ConstructFromResourceL() when not initialising from a resource file.
2223 * The function sets the editor's minimum, maximum and initial values.
2224 * The time separator characters specified in class TLocale are honoured.
2225 * If the initial duration is less than the minimum value the minimum
2226 * value is used as the initial setting. If the initial duration is greater
2227 * than the maximum value the maximum value is used as the initial
2230 * The aFlags parameter is used to determine whether the seconds or
2231 * hours fields are not required. The minutes field is always present.
2232 * Regardless of the value specified in aFlags, 24 hour time format is set,
2233 * overriding the locale's setting.
2235 * @param aMinimumDuration The minimum interval in seconds.
2236 * @param aMaximumDuration The maximum interval in seconds.
2237 * @param aInitialDuration The initial interval in seconds.
2238 * @param aFlags Duration editor flags.
2240 IMPORT_C void ConstructL(const TTimeIntervalSeconds& aMinimumDuration, const TTimeIntervalSeconds& aMaximumDuration, const TTimeIntervalSeconds& aInitialDuration, TUint32 aFlags);
2243 * Sets the minimum and maximum duration values.
2245 * The user can only enter values between these bounds.
2247 * @param aMinimumDuration The minimum duration.
2248 * @param aMaximumDuration The maximum duration.
2249 * @panic 48 If the minimum duration exceeds the maximum.
2251 IMPORT_C void SetMinimumAndMaximum(const TTimeIntervalSeconds& aMinimumDuration, const TTimeIntervalSeconds& aMaximumDuration); // only values inside the initial minimum and maximum are permitted
2254 * Gets the duration editor's minimum and maximum values.
2256 * @param aMinimumDuration On return, the minimum value.
2257 * @param aMaximumDuration On return, the maximum value.
2259 IMPORT_C void GetMinimumAndMaximum(TTimeIntervalSeconds& aMinimumDuration, TTimeIntervalSeconds& aMaximumDuration) const;
2262 * Sets the duration editor's value.
2264 * @param aDuration The new value to convert into hours, minutes and
2265 * seconds and to which the duration editor's fields will be set.
2267 IMPORT_C void SetDuration(const TTimeIntervalSeconds& aDuration);
2270 * Gets the duration editor's value and returns it as a period of
2273 * @return The editor's value in seconds.
2275 IMPORT_C TTimeIntervalSeconds Duration() const; // can only be called if PrepareForFocusLossL() succeeded
2280 * Second-phase construction from a resource.
2282 * The function reads the maximum and minimum duration values, and the
2283 * flags settings, from a DURATION_EDITOR resource. It sets the initial
2284 * duration to be the same as the maximum value and honours the locale's
2287 * @param aResourceReader A resource file reader.
2289 IMPORT_C void ConstructFromResourceL(TResourceReader& aResourceReader);
2292 * Editor validation.
2294 * This function should be called when an attempt is made to remove
2295 * focus from a duration editor. If the editor value is not within the
2296 * bounds specified by the minimum and maximum duration values, it is reset to
2297 * the nearest allowable value - the function will leave.
2299 IMPORT_C void PrepareForFocusLossL();
2303 * From @c CCoeControl.
2305 * Handles pointer events.
2307 * @param aPointerEvent The pointer event.
2309 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
2311 // miscellaneous functions
2312 void DoSetMinimumAndMaximum(const TTimeIntervalSeconds& aMinimumDuration, const TTimeIntervalSeconds& aMaximumDuration);
2313 IMPORT_C virtual void CEikMfne_Reserved();
2318 IMPORT_C void* ExtensionInterface( TUid aInterface );
2320 CTimeEditor* iTimeEditor;
2321 TTimeIntervalSeconds iMinimumDuration;
2322 TTimeIntervalSeconds iMaximumDuration;
2327 * Time offset editor.
2329 * This control allows a signed time offset to be displayed and edited.
2330 * It has the same fields as the time editor control CEikTimeEditor,
2331 * except there is no AM or PM text because the value is a time offset,
2332 * positive or negative, from 0 to 24 hours rather than a point in time.
2334 * The editor has an associated resource struct TIME_OFFSET_EDITOR and
2335 * control factory identifier EEikCtTimeOffsetEditor.
2337 class CEikTimeOffsetEditor : public CEikMfne
2340 // miscellaneous functions
2343 * Default constructor.
2345 * This function should be used as the first stage in two stage
2346 * construction, followed by a call to either ConstructFromResourceL() to
2347 * initialise the editor's field values from a resource file, or ConstructL()
2348 * if no resource file is used.
2350 IMPORT_C CEikTimeOffsetEditor();
2353 * Destructor. This frees the resources owned by the time offset editor,
2354 * prior to its destruction.
2356 IMPORT_C virtual ~CEikTimeOffsetEditor();
2359 * Second phase constructor.
2361 * This function completes the construction of a time offset editor, by
2362 * setting its minimum, maximum and initial values. The time separator
2363 * characters specified in the system's locale are honoured. It should be
2364 * called by the container only if the control is not constructed from a
2367 * The aFlags parameter is used to determine whether the seconds or
2368 * hours fields are displayed by the editor. The minutes field is always
2369 * displayed. This function forces 24 hour time format for the time offset
2370 * editor, overriding the locale's setting.
2372 * If the initial time offset is outside the bounds specified, it is
2373 * invalid and will be reset to the upper or lower bound.
2375 * The minimum value for a time offset editor is -23:59:59, and the
2376 * maximum value is 23:59:59.
2378 * @param aMinimumTimeOffset The minimum allowable value, in seconds.
2379 * @param aMaximumTimeOffset The maximum allowable value, in seconds.
2380 * @param aInitialTimeOffset The initial value, in seconds.
2381 * @param aFlags Determines which fields are required. Specify
2382 * CTimeEditor::EWithoutSecondsField for no seconds field,
2383 * CTimeEditor::EWithoutHoursField for no hours field. 24 hour clock format is set, regardless
2384 * of the flag setting specified in this parameter.
2386 IMPORT_C void ConstructL(const TTimeIntervalSeconds& aMinimumTimeOffset, const TTimeIntervalSeconds& aMaximumTimeOffset, const TTimeIntervalSeconds& aInitialTimeOffset, TUint32 aFlags);
2389 * Sets the range of allowable offset values.
2391 * These define the maximum and minimum values that may be entered by
2394 * If the existing offset value is outside the bounds set by this
2395 * function, it is reset to the nearest boundary value.
2397 * @param aMinimumTimeOffset The minimum allowable value.
2398 * @param aMaximumTimeOffset The maximum allowable value.
2399 * @panic 49 If the minimum exceeds the maximum.
2401 IMPORT_C void SetMinimumAndMaximum(const TTimeIntervalSeconds& aMinimumTimeOffset, const TTimeIntervalSeconds& aMaximumTimeOffset); // only values inside the initial minimum and maximum are permitted
2404 * Gets the range of allowable values that may be entered by the user.
2406 * @param aMinimumTimeOffset On return, contains the time offset
2407 * editor’s minimum allowable value.
2408 * @param aMaximumTimeOffset On return, contains the time offset
2409 * editor’s maximum allowable value.
2411 IMPORT_C void GetMinimumAndMaximum(TTimeIntervalSeconds& aMinimumTimeOffset, TTimeIntervalSeconds& aMaximumTimeOffset) const;
2414 * Sets the time offset editor's value.
2416 * The sign is set according to whether the value specified is positive
2419 * @param aTimeOffset The new offset value to which to assign to the
2422 IMPORT_C void SetTimeOffset(const TTimeIntervalSeconds& aTimeOffset);
2425 * Gets the time offset editor's value converted into seconds.
2427 * @return The editor's value in seconds.
2429 IMPORT_C TTimeIntervalSeconds TimeOffset() const; // can only be called if PrepareForFocusLossL() succeeded
2434 * Second phase construction from a resource.
2436 * This function completes the construction of a time offset editor
2437 * from a TIME_OFFSET_EDITOR resource.
2439 * The minimum and maximum time offsets, and the flags settings are
2440 * read from the resource, and ConstructL() is called with these settings.
2441 * The initial time offset is set to the maximum time offset value.
2443 * @param aResourceReader A resource file reader.
2445 IMPORT_C void ConstructFromResourceL(TResourceReader& aResourceReader);
2448 * Prepares editor for focus loss.
2450 * This function should be called to validate the editor’s contents
2451 * when an attempt is made to remove focus from the control.
2453 * If the control value is not within the bounds specified by the
2454 * minimum and maximum time offset values, it is reset to the nearest
2455 * allowable value. The function then leaves.
2457 IMPORT_C void PrepareForFocusLossL();
2462 * From @c CCoeControl.
2464 * Handles pointer events.
2466 * @param aPointerEvent The pointer event.
2468 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
2471 // miscellaneous functions
2472 void DoSetMinimumAndMaximum(const TTimeIntervalSeconds& aMinimumTimeOffset, const TTimeIntervalSeconds& aMaximumTimeOffset);
2473 IMPORT_C virtual void CEikMfne_Reserved();
2478 IMPORT_C void* ExtensionInterface( TUid aInterface );
2480 CTimeEditor* iTimeEditor;
2481 TTimeIntervalSeconds iMinimumTimeOffset;
2482 TTimeIntervalSeconds iMaximumTimeOffset;
2483 // none of these pointers owns anything
2484 CEikMfneSymbol* iSign;
2490 // Longitude and Latitude editors removed 2.4.2002:
2494 EEikOrientationNorthSouth =0x1000,
2495 EEikOrientationWestEast =0x2000,
2496 EEikOrientationMask=EEikOrientationNorthSouth|EEikOrientationWestEast
2502 EEikDirectionNegative,
2503 EEikDirectionPositive,
2504 EEikDirectionMask=EEikDirectionNegative|EEikDirectionPositive
2510 EEikCompassNorth=EEikOrientationNorthSouth|EEikDirectionNegative,
2511 EEikCompassSouth=EEikOrientationNorthSouth|EEikDirectionPositive,
2512 EEikCompassEast=EEikOrientationWestEast|EEikDirectionNegative,
2513 EEikCompassWest=EEikOrientationWestEast|EEikDirectionPositive
2517 struct SEikDegreesMinutesDirection
2522 TEikCompass iDirection;
2525 #endif // __EIKMFNE_H__