--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_plat/queries_api/inc/AknQueryControl.h Wed Aug 18 10:02:14 2010 +0300
@@ -0,0 +1,1067 @@
+/*
+* Copyright (c) 2002-2008 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: Implementation of Query control and List query control.
+*
+*/
+
+
+#ifndef AKNQUERYCONTROL_H
+#define AKNQUERYCONTROL_H
+
+// INCLUDES
+#include <AknControl.h>
+#include <gulbordr.h>
+
+#include <eikedwin.h>
+#include <eikseced.h>
+#include <eikmfne.h>
+#include <Aknnumseced.h>
+#include <AknNumEdwin.h>
+#include <eikfpne.h>
+
+#include <eikimage.h>
+#include <eikedwob.h>
+
+#include <AknUtils.h>
+#include <AknPanic.h>
+
+#include <aknipfed.h>
+#include <lbsposition.h>
+
+// FORWARD DECLARATIONS
+class CAknQueryControl;
+class TAknQueryEcsObserver;
+class CAknEcsDetector;
+class CAknBitmapAnimation;
+class CAknTextControl;
+class CAknQueryEditIndicator;
+class MLAFIndex;
+class MAknEditingStateIndicator;
+class TInetAddr;
+class CAknQueryExtension;
+class TAknWindowLineLayout;
+class CAknButton;
+class CAknQueryControlExtension;
+class CAknLocationEditor;
+/**
+* MAknQueryControlObserver
+* Callback class for CAknQueryDialog
+*/
+class MAknQueryControlObserver
+ {
+public:
+ /**
+ * Enumeration for query control events
+ */
+ enum TQueryControlEvent
+ {
+ EQueryControltSizeChanging,
+ EQueryControlEditorStateChanging,
+ EEmergencyCallAttempted
+ };
+
+ /**
+ * Enumeration for editor validation status
+ */
+ enum TQueryValidationStatus
+ {
+ EEditorValueValid = KErrNone,
+ EEditorValueTooSmall,
+ EEditorValueTooLarge,
+ EEditorValueNotParsed,
+ EEditorEmpty
+ };
+
+public:
+ /**
+ * Gets called when editor sends size event
+ */
+ virtual TBool HandleQueryEditorSizeEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType)=0;
+ /**
+ * Gets called when editor sends state event
+ */
+ virtual TBool HandleQueryEditorStateEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType, TQueryValidationStatus aStatus)=0;
+ };
+
+/**
+ * The control for a query dialog.
+ *
+ * Manage layout of elements in a query dialog:- the text, the image
+ * and the editors.
+ *
+ * @see CAknQueryDialog, CAknText
+ */
+class CAknQueryControl : public CAknControl , public MEikEdwinObserver , public MEikEdwinSizeObserver , public MCoeControlObserver
+ {
+public:
+
+ DECLARE_TYPE_ID(0x10283143)
+
+ public:
+ /**
+ * Enumeration for indexing into control flags, which
+ * determine the control behaviour relative to a number
+ * of things, e.g. emergency control handling, displaying of
+ * edit indicator, enabling of predictive text, etc
+ */
+ enum TQueryControlFlagBitIndices
+ {
+ /** Query supports emergency calls.
+ */
+ EEmergencyCallsEnabledByAPI,
+ /** Query doesn't support emergency calls.
+ */
+ EEmergencyCallsDisabledByAPI,
+ /** Predictive text input is allowed in the query.
+ */
+ EPredictiveTextEntryPermitted,
+ /** Editor indicators are not shown in the query.
+ */
+ EEditorIndicatorOff,
+ /** Additional support to ECS for CBA label change.
+ * Must be enabled for touch full screen query for the
+ * ECS to function properly.
+ */
+ EEmergencyCallsCBASupport
+ };
+
+ /**
+ * Layout for queries can be done
+ * using the following methods. Each
+ * method is specified in a LAF section
+ */
+ enum TLayoutMethod
+ {
+ EConfQueryLayoutM, ///LAYOUT according to LAF specs for conf queries
+ EDataQueryLayoutM, ///LAYOUT according to LAF specs for data queries
+ ECodeQueryLayoutM, ///LAYOUT accoridng to LAF specs for code queries
+ ETimeQueryLayoutM, ///LAYOUT according to LAF specs for time queries
+ EDateQueryLayoutM, ///LAYOUT according to LAF specs for date queries
+ ECombinedCodeDataQueryLayoutM ///LAYOUT according to LAF specs for combined code and data queries
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * C++ Constructor.
+ */
+ IMPORT_C CAknQueryControl();
+
+ /**
+ * C++ Destructor.
+ */
+ IMPORT_C virtual ~CAknQueryControl();
+
+ /**
+ * Second phase constructor: loads contents of array from resources.
+ *
+ * @param aRea resource reader pointed to a
+ * query resource.
+ */
+ IMPORT_C void ConstructFromResourceL(TResourceReader& aRes);
+
+ public: // New functions
+
+ /**
+ * Set observer for query control.
+ *
+ * @param aQueryControlObserver Pointer to oberver class
+ */
+ IMPORT_C void SetQueryControlObserver(MAknQueryControlObserver* aQueryControlObserver);
+
+ /**
+ * Read prompt text from resource and call SetPrompt if there was text for prompt.
+ *
+ * @param aRes resource reader pointed to a query resource
+ */
+ IMPORT_C virtual void ReadPromptL(TResourceReader& aRes);
+
+ /**
+ * Set prompt text for query. This call WrapToStringL.
+ *
+ * @param aDesC Text for prompt
+ */
+ IMPORT_C virtual void SetPromptL(const TDesC& aDesC);
+
+ /**
+ * Get text from text, secret text, numeric secret text snd phonenumber editor.
+ *
+ * @param aDes Address of variable where text returned.
+ */
+ IMPORT_C void GetText(TDes& aDes) const;
+
+ /**
+ * Get time from date or time editors
+ *
+ * @return Returns data from editor.
+ */
+ IMPORT_C TTime GetTime() const;
+
+ /**
+ * Get number from number editor.
+ *
+ * @return Returns number from editor
+ */
+ IMPORT_C TInt GetNumber() const;
+
+ /**
+ * Get number from floating point editor.
+ *
+ * @return Returns number from editor
+ */
+ IMPORT_C TReal GetFloatingPointNumberL() const;
+
+ /**
+ * Get duration from duration editor
+ *
+ * @return Return duration from editor.
+ */
+ IMPORT_C TTimeIntervalSeconds GetDuration() const;
+
+
+ /**
+ * Get location from location editor
+ *
+ * Modifies aLocation in such way that either
+ * longitude or latitude will change.
+ */
+ IMPORT_C void GetLocation(TPosition &aLocation) const;
+
+ /**
+ * Set text to text and phonenumber editor.
+ *
+ * @param aDesC Text for editor
+ */
+ IMPORT_C void SetTextL(const TDesC& aDesC);
+
+ /**
+ * Set date of time to editor
+ *
+ * @param aTime Time or date to editor.
+ */
+ IMPORT_C void SetTime(TTime& aTime);
+
+ /**
+ * Set duration to duration editor
+ *
+ * @param aDuration Duration to editor
+ */
+ IMPORT_C void SetDuration(TTimeIntervalSeconds& aDuration);
+
+ /**
+ * Set number to number editor
+ * @param aNumber Number to editor
+ *
+ */
+ IMPORT_C void SetNumberL(TInt aNumber);
+
+ /**
+ * Set number to floating point editor
+ * @param aNumber Number to editor
+ *
+ */
+ IMPORT_C void SetFloatingPointNumberL(const TReal* aNumber);
+
+ /**
+ * Set location to location editor
+ *
+ * Modifies editor in such way that it'll start
+ * showing either longitude or latitude from
+ * the given location. It depends on resource file
+ * flags of the location editor which is used.
+ *
+ * @param aLocation Location to editor
+ *
+ */
+ IMPORT_C void SetLocation(const TPosition &aLocation);
+
+ /**
+ * Set max length of text to text editor. This will override length from resource
+ * @param aLength Max length of text in editor
+ *
+ */
+ IMPORT_C void SetTextEntryLength(TInt aLength);
+
+ /**
+ * Return the max length of the text in the text editor
+ * @return max text length
+ */
+ IMPORT_C TInt GetTextEntryLength() const;
+
+ /**
+ * Set minimum and maximum time or date to editor
+ * @param aMinimum Minimum value
+ * @param aMaximum Maximum value
+ *
+ */
+ IMPORT_C void SetMinimumAndMaximum(const TTime& aMinimum, const TTime& aMaximum);
+
+ /**
+ * Set minimum and maximum duration to editor
+ * @param aMinimumDuration Minimum value
+ * @param aMaximumDuration Maximum value
+ */
+ IMPORT_C void SetMinimumAndMaximum(const TTimeIntervalSeconds& aMinimumDuration, const TTimeIntervalSeconds& aMaximumDuration);
+
+ /**
+ * Set minimum and maximum number to editor
+ * @param aMinimumValue Minimum value
+ * @param aMaximumValue Maximum value
+ */
+ IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue);
+
+
+ /**
+ * Checks if the given number in the editor is within the maximum and minimum values.
+ */
+ IMPORT_C TBool CheckNumber();
+
+ /**
+ * Set the number of lines in the editor.
+ *
+ * @param aNum Number of lines in the editor
+ */
+ IMPORT_C void SetNumberOfEditorLines(TInt aNum);
+
+ /**
+ * Set minimum and maximum number to floating point editor
+ * @param aMinimumValue Minimum value
+ * @param aMaximumValue Maximum value
+ */
+ IMPORT_C void SetMinimumAndMaximum(const TReal& aMinimumValue, const TReal& aMaximumValue);
+ /**
+ * Get text length from editor.
+ *
+ * @return Length of text from editor
+ */
+ IMPORT_C TInt GetTextLength() const;
+
+ /**
+ * Return number of editor lines
+ *
+ * @return Number lines in the editor
+ */
+
+ IMPORT_C TInt NbrOfEditorLines() const;
+
+
+ /**
+ * Return number of prompt lines
+ *
+ * @return Number of lines in the prompt
+ */
+ IMPORT_C TInt NbrOfPromptLines() const;
+
+ /**
+ * Get pointer to query controls control (editor)
+ *
+ * @param aLayout Controls layout (for one line queries use
+ * EDataLayout, ECodeLayout... and for
+ * multiline queries use
+ * EMultiDataFirstEdwin, EMultiDataSecondEdwin...)
+ * @return Pointer to control, NULL if not found
+ */
+ IMPORT_C virtual CCoeControl* ControlByLayoutOrNull(TInt aLayout);
+
+ /**
+ * Sets and overrides other image or animation
+ * Takes ownership of aImage
+ */
+ IMPORT_C void SetImageL(CEikImage* aImage);
+
+ /**
+ * Sets and overrides other image or animation
+ */
+ IMPORT_C void SetImageL(const TDesC& aImageFile,
+ TInt aBmpId, TInt aBmpMaskId);
+ /**
+ * Sets and overrides other animation
+ *
+ */
+ IMPORT_C void SetAnimationL(TInt aResource);
+
+ /**
+ * starts animation if one present
+ *
+ */
+ IMPORT_C void StartAnimationL();
+
+ /**
+ * stops animation if one present
+ *
+ * @return error code
+ */
+ IMPORT_C TInt CancelAnimation();
+
+ /**
+ * This cancels the query. Used when the query control has to get abandon the query
+ * for some reason
+ */
+ void CancelQueryL();
+
+ /**
+ * @return true if the content of the editor is valid, false otherwise
+ */
+ TBool EditorContentIsValidL() const;
+
+ /**
+ * This transfers CAknQueryControl's flags set by the dialog and then uses them.
+ * The method must be called after all the contained controls are constructed;
+ * Inside PreLayoutDynamicInitL is recommended.
+ *
+ * @param flag pattern to set and then act on.
+ */
+ void SetAndUseFlagsL( TBitFlags16 aFlags );
+
+ public: // Functions from CCoeControl
+
+ /**
+ * From CCoeControl Handle key events. When a key event occurs,
+ * CONE calls this function for each control on the control stack,
+ * until one of them returns EKeyWasConsumed to indicate that it processed the key event.
+ * @param aKeyEvent The key event.
+ * @param aType The type of the event: EEventKey, EEventKeyUp or EEventKeyDown.
+ * @return Indicates whether or not the key event was used by this control.
+ */
+ IMPORT_C TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType);
+
+ /**
+ * From CCoeControl Give the control a mimimum size.
+ *
+ * @return The minimum size required by the control.
+ */
+ IMPORT_C TSize MinimumSize();
+
+ /**
+ * From CCoeControl Added to pass-through focus-loss warnings.
+ * if not ready, this will leave.
+ * @return Indicates whether or not the key event was used by this control.
+ */
+ void PrepareForFocusLossL();
+
+ /**
+ * From CCoeControl Added to pass-through focus-loss warnings.
+ * if not ready, this will leave.
+ * @return Indicates whether or not the key event was used by this control.
+ */
+ void FocusChanged(TDrawNow aDrawNow);
+
+ /**
+ * From MEikEdwinObserver
+ *
+ * @param aEdwin Editor who sent the event
+ * @param aEventType Type of the event
+ */
+ IMPORT_C void HandleEdwinEventL(CEikEdwin* aEdwin,TEdwinEvent aEventType);
+
+ public:// Functions from MEikEdwinSizeObserver
+
+ /**
+ * From MEikEdwinObserver
+ *
+ * @param aEdwin Editor who's size has changed
+ * @param aEventType Type of the size event
+ * @param aDesirableEdwinSize Desirable size of the edwin
+ */
+ IMPORT_C TBool HandleEdwinSizeEventL(CEikEdwin* aEdwin, TEdwinSizeEvent aEventType, TSize aDesirableEdwinSize);
+
+ public:// Functions from MCoeControlObserver
+
+ /**
+ * From MCoeControlObserver
+ * @param aControl Control who caused the event
+ * @param aEventType Type of the event
+ */
+ IMPORT_C void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
+
+ public:
+ /**
+ * @return Layout indication
+ *
+ * At the moment the layout is a good indication of the query type (PIN,number,etc)
+ * The query dialog uses this information to determine query type in order to
+ * process key events in a way dependent on the query type. These key events
+ * can't be processes by the control directly because they involve actions only
+ * the dialog can perform
+ */
+ inline TInt QueryType() const { return iQueryType; }
+
+ /**
+ * Return window layout depending on Layout
+ * Window layout is done by the dialog
+ */
+ virtual void WindowLayout( TAknWindowLineLayout& aLayout ) const;
+
+ public:// Functions from CCoeControl
+ /**
+ * From CCoeControl Count number of controls contained in a compound control.
+ *
+ * @return The number of component controls contained by this control.
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl Get the components of a compound control.
+ * It returns one of the control's component controls, identified by aIndex.
+ * @param anIndex The index of the control to get.
+ * @return The component control with an index of aIndex.
+ */
+ CCoeControl* ComponentControl(TInt anIndex) const;
+
+ /**
+ * From CCoeControl.
+ * Handles pointer events
+ */
+ IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+ IMPORT_C void HandleResourceChange(TInt aType);
+
+ public:
+ /**
+ * Manage indexes into LAF tables
+ */
+ class TIndex
+ {
+ public:
+ TIndex(TInt aNumberOfPromptLines);
+
+ public:
+ TInt PromptLine() const;
+
+ public:
+ TInt DQPWindowTextsLine2(TInt aLineNum) const;
+ TInt PNWindow() const;
+ TInt PQDWindow(TInt aLineNum) const;
+ TInt PQCWindow() const;
+
+ private:
+ void SelfTest() const;
+
+ private:
+ TInt iNumberOfPromptLines;
+ };
+
+ protected:
+ /**
+ * From CCoeControl Respond to size changed. This function is called by CONE whenever SetExtentL(),
+ * SetSizeL(), SetRectL(), SetCornerAndSizeL(), or SetExtentToWholeScreenL()
+ * are called on the control.
+ */
+ void SizeChanged();
+
+ /**
+ * From CCoeControl Draw a control.
+ *
+ * @param aRect The region of the control to be redrawn.
+ */
+ void Draw(const TRect& aRect) const;
+
+ /**
+ * From MObjectProvider
+ */
+ TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+
+ /**
+ * Perform layout by calling SizeChanged
+ *
+ */
+ void Layout();
+
+ protected:
+ /**
+ * Determine the line widths for the prompt, depends on layout
+ */
+ virtual void SetLineWidthsL();
+
+ /**
+ * After having read the query type from resource. This method is
+ * called in CostructFromResourceL()
+ *
+ * @see ConstructFromResourceL()
+ */
+ virtual void ConstructQueryL(TResourceReader& aRes);
+
+ /**
+ * Layout rectangle (shift up and left by margins)
+ */
+ virtual TRect LayoutRect();
+
+ /**
+ * Return the rect that is used by the dialog for layout
+ * This can be determined using LAF values and is equal to
+ * TPoint(0,0) plus the control size plus the margins
+ */
+ TRect DialogRect() const;
+
+ /**
+ * Return the size of the dialog. This equals to the control
+ * size plus the margins.
+ */
+ TSize DialogSize() const;
+
+ /**
+ * Calculates the size of the dialog. This can be determined
+ * using LAF values and is equal to the control size plus
+ * the margins.
+ */
+ void DialogSizeChanged();
+
+ protected:
+ /**
+ * Layout the query prompt
+ */
+ virtual void LayoutPrompt(const TLayoutMethod& aLayoutM);
+
+ /**
+ * Layout the image or the animation
+ */
+ virtual void LayoutImageOrAnim(const TLayoutMethod& aLayoutM);
+
+ /**
+ * Layout the text editor
+ */
+ virtual void LayoutEditor(const TLayoutMethod& aLayoutM);
+
+ /**
+ * Layout the editor frame
+ */
+ virtual void LayoutEditorFrame(const TLayoutMethod& aLayoutM);
+
+ /**
+ * Layout the editor state indicator icons
+ */
+ virtual void LayoutEditorIndicator(const TLayoutMethod& aLayoutM);
+
+ protected:
+
+ /**
+ * Get the extension object instance, if any exists.
+ */
+ CAknQueryExtension* QueryExtension() const;
+
+ /**
+ * Draw editor frame and shadows
+ */
+ void DrawEditorFrame(CWindowGc& aGc,TRect& aRect) const;
+
+ private:
+
+ /**
+ * This transfers CAknQueryControl's flags set by the dialog
+ *
+ * @param flag pattern to set
+ *
+ */
+ void SetFlags( TBitFlags16 aFlags );
+
+ /**
+ * This acts on the Query control flags that are set from CAknQueryDialog
+ *
+ */
+ void DeployFlagsL();
+
+ /**
+ * Call CAknTextControl::ParseTextL
+ *
+ */
+ void DoSetPromptL();
+
+ static TInt StaticPictographCallBack( TAny* aPtr );
+ void PictographCallBack();
+
+ /**
+ * Checks if this query control should contain embedded virtual keypad.
+ *
+ * @return ETrue if embedded virtual keypad should be used.
+ */
+ TBool EmbeddedVirtualInput() const;
+
+ /**
+ * Returns pointer to dialog.
+ *
+ * @return Pointer to dialog if it exists.
+ */
+ CEikDialog* Dialog() const;
+
+ /**
+ * Creates increment and decrement buttons.
+ *
+ */
+ void CreateIncAndDecButtonsL();
+
+ /**
+ * Creates backspace button.
+ *
+ */
+ void CreateBackspaceButtonL();
+
+ /**
+ * Layouts the query prompt in case of Full Screen Query.
+ *
+ */
+ void LayoutEditorForFullScreen( const TLayoutMethod& /*aLayoutM*/ );
+
+ /**
+ * Layout the text editor in case of Full Screen Query.
+ *
+ */
+ void LayoutPromptForFullScreen();
+
+ /**
+ * Callback for pin code timeouts for producing a tacticons.
+ *
+ * @param aThis Pointer to this object, which is used to
+ * play tacticon.
+ */
+ static TInt PinCodeTimeoutCallback( TAny* aThis );
+
+ /**
+ * Plays a tacticon. Used by the timeout callback.
+ */
+ void PlayPinCodeTacticon();
+
+ /**
+ * Resets the timer for pincode query tacticon playback.
+ */
+ void ResetPinCodeTacticonTimer();
+
+ /**
+ * Stops/removes the timer for pincode query tacticon playback.
+ */
+ void StopPinCodeTacticonTimer();
+
+ private:
+ /**
+ * From CAknControl
+ */
+ IMPORT_C void* ExtensionInterface( TUid aInterface );
+ protected:
+ CAknLocationEditor *&LocationEd();
+ CAknLocationEditor *LocationEd() const;
+
+ public:
+ /**
+ * Return prompt needed by FEP to query dialog
+ */
+ void GetCaption( TDes& aCaption ) const;
+
+ /**
+ * Sets the ECS CBA visibility in the query.
+ *
+ * TBool aVisible @c ETrue if an ECS number is entered to the
+ * query, @c EFalse otherwise.
+ */
+ void SetEcsCbaVisibleL( TBool aVisible );
+
+ /**
+ * Attempts to make an emergency call if a valid emergency
+ * number has been entered to the query.
+ */
+ void AttemptEmergencyCallL();
+
+ protected:
+ /// Control for prompt text
+ CAknTextControl* iPrompt;
+ /// Editor indicator icons
+ CAknQueryEditIndicator* iEditIndicator;
+ /// Edwin editor
+ CEikEdwin* iEdwin;
+ /// Date editor
+ CEikDateEditor* iDateEdwin;
+ /// Time editor
+ CEikTimeEditor* iTimeEdwin;
+ /// Duration editor
+ CEikDurationEditor* iDurationEdwin;
+ /// Secret editor
+ CEikSecretEditor* iSecretEd;
+ /// Integer editor
+ CAknIntegerEdwin* iNumberEdwin;
+ /// Numeric secret editor
+ CAknNumericSecretEditor* iPinEdwin;
+ // Floating point editor
+ CEikFloatingPointEditor* iFloatingPointEditor;
+ // Image
+ CEikImage* iImage;
+ /// Control id
+ TInt iControl;
+ // Layoutrect for Mfne
+ TAknLayoutRect iLayoutMfne;
+ // Emergency call detector
+ CAknEcsDetector* iEcsDetector;
+ // Emergency call observer
+ TAknQueryEcsObserver* iEcsObserver;
+ // Flags for emergency call support and other things
+ TBitFlags16 iFlags;
+ TUint16 iSpare_1; // padding
+ // Animation
+ CAknBitmapAnimation* iAnimation;
+ // Pointer to query control observer
+ MAknQueryControlObserver* iQueryControlObserver;
+ // Query type
+ TInt iQueryType;
+ // Layout rect for editor's vertical shadow
+ TAknLayoutRect iEditorVerShadow;
+ // Layout rect for editor's horizontal shadow
+ TAknLayoutRect iEditorHorShadow;
+ // Layout rect for editor's frame
+ TAknLayoutRect iEditorFrame;
+
+ TInt iNumberOfEditorLines; ///Maximum number of lines in the editor
+
+ TBool iHasEditor; //False for confirmation queries (default),
+ //true for all other queries
+
+ CArrayFixFlat<TInt>* iLineWidths; ///Widths of prompt lines (in pixels)
+
+ CAknButton* iIncreaseValueButton; //Reserved for plus button for MFNE editors
+ CAknButton* iDecreaseValueButton; //Reserved for minus button for MFNE editors
+
+ TSize iDialogSize; // Dialog size
+ private:
+ CAknQueryControlExtension *iExtension;
+ private:
+ TInt iSpare[1];
+ };
+
+
+
+/**
+ * The extended control for a query dialog.
+ * ip and fixed point editors
+ *
+ * Manage layout of elements in a query dialog:- the text, the image
+ * and the editors.
+ *
+ * @see CAknQueryDialog, CAknText
+ * @since 2.1
+ */
+
+class CAknExtQueryControl : public CAknQueryControl
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * C++ Constructor.
+ */
+ IMPORT_C CAknExtQueryControl();
+
+ /**
+ * C++ Destructor.
+ */
+ IMPORT_C virtual ~CAknExtQueryControl();
+
+ public: //New functions
+
+ /**
+ * Get ip address from ip editor.
+ *
+ * @return Returns data from editor
+ */
+ IMPORT_C TInetAddr GetInetAddress() const;
+
+ /**
+ * Set ip address to editor
+ *
+ * @param aInetAddress to editor.
+ */
+ IMPORT_C void SetInetAddress(TInetAddr& aInetAddress);
+
+ /**
+ * Get number from fixed point editor.
+ *
+ * @return Returns number from editor
+ */
+ IMPORT_C TInt GetFixedPointNumber() const;
+
+ /**
+ * Set number to fixed point editor
+ * @param aNumber Number to editor
+ *
+ */
+ IMPORT_C void SetFixedPointNumberL(const TInt* aNumber);
+
+
+ public: // from CAknQueryControl
+
+ /**
+ * Set minimum and maximum ip address to editor
+ * @param aMinimum Minimum value
+ * @param aMaximum Maximum value
+ *
+ */
+ IMPORT_C void SetMinimumAndMaximum(const TInetAddr& aMinimumAddress, const TInetAddr& aMaximumAddress);
+
+ /**
+ * Set minimum and maximum fixed point number to editor
+ * @param aMinimumValue Minimum value
+ * @param aMaximumValue Maximum value
+ */
+ IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue);
+
+
+ /**
+ * Get pointer to query controls control (editor)
+ *
+ * @param aLayout Controls layout (for one line queries use
+ * EDataLayout, ECodeLayout... and for
+ * multiline queries use
+ * EMultiDataFirstEdwin, EMultiDataSecondEdwin...)
+ * @return Pointer to control, NULL if not found
+ */
+ IMPORT_C virtual CCoeControl* ControlByLayoutOrNull(TInt aLayout);
+
+ /**
+ * @return true if the content of the editor is valid, false otherwise
+ */
+ TBool EditorContentIsValidL() const;
+
+ /**
+ * This transfers CAknQueryControl's flags set by the dialog and then uses them.
+ * The method must be called after all the contained controls are constructed;
+ * Inside PreLayoutDynamicInitL is recommended.
+ *
+ * @param flag pattern to set and then act on.
+ */
+ void SetAndUseFlagsL( TBitFlags16 aFlags );
+
+ public: // Functions from CCoeControl
+
+ /**
+ * From CCoeControl Added to pass-through focus-loss warnings.
+ * if not ready, this will leave.
+ * @return Indicates whether or not the key event was used by this control.
+ */
+ void PrepareForFocusLossL();
+
+ /**
+ * From CCoeControl Added to pass-through focus-loss warnings.
+ * if not ready, this will leave.
+ * @return Indicates whether or not the key event was used by this control.
+ */
+ void FocusChanged(TDrawNow aDrawNow);
+
+
+ public:// Functions from MCoeControlObserver
+
+ /**
+ * From MCoeControlObserver
+ * @param aControl Control who caused the event
+ * @param aEventType Type of the event
+ */
+ IMPORT_C void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
+
+
+ public:// Functions from CCoeControl
+ /**
+ * From CCoeControl Count number of controls contained in a compound control.
+ *
+ * @return The number of component controls contained by this control.
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl Get the components of a compound control.
+ * It returns one of the control's component controls, identified by aIndex.
+ * @param anIndex The index of the control to get.
+ * @return The component control with an index of aIndex.
+ */
+ CCoeControl* ComponentControl(TInt anIndex) const;
+
+ /**
+ * From CCoeControl. Handles pointer event.
+ * @param aPointerEvent Pointer event to be handled.
+ */
+ IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+ public:
+ /**
+ * Manage indexes into LAF tables
+ */
+ class TIndex
+ {
+ public:
+ TIndex(TInt aNumberOfPromptLines);
+
+ public:
+ TInt PromptLine() const;
+
+ public:
+ TInt DQPWindowTextsLine2(TInt aLineNum) const;
+ TInt PNWindow() const;
+ TInt PQDWindow(TInt aLineNum) const;
+
+ private:
+ void SelfTest() const;
+
+ private:
+ TInt iNumberOfPromptLines;
+ };
+
+
+ protected:
+
+ /**
+ * After having read the query type from resource. This method is
+ * called in CostructFromResourceL()
+ *
+ * @see ConstructFromResourceL()
+ */
+ virtual void ConstructQueryL(TResourceReader& aRes);
+
+ protected:
+
+ /**
+ * Layout the text editor
+ */
+ virtual void LayoutEditor(const TLayoutMethod& aLayoutM);
+
+ private:
+
+ /**
+ * From CAknControl
+ */
+ IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+ private:
+
+ /**
+ * This transfers CAknQueryControl's flags set by the dialog
+ *
+ * @param flag pattern to set
+ *
+ */
+ void SetFlags( TBitFlags16 aFlags );
+
+ /**
+ * This acts on the Query control flags that are set from CAknQueryDialog
+ *
+ */
+ void DeployFlagsL();
+
+ static TInt StaticPictographCallBack( TAny* aPtr );
+ void PictographCallBack();
+
+ protected:
+ // editors
+ CAknIpFieldEditor* iIpEditor;
+ CEikFixedPointEditor* iFixedPointEditor;
+ private:
+
+ TAny* iSpare_1;
+ TAny* iSpare_2;
+ };
+
+
+#endif