williamr@2: /* williamr@2: * Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Implementation of query dialogs. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef AKNQUERYDIALOG_H williamr@2: #define AKNQUERYDIALOG_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@4: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@4: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: class CAknKeySoundSystem; williamr@2: class TInetAddr; williamr@2: class CAknQueryDialogExtension; williamr@2: class CAknMultilineQueryDialogExtension; williamr@2: williamr@2: /** williamr@2: * General query dialog williamr@2: * williamr@2: * Use for confirmation queries williamr@2: */ williamr@2: class CAknQueryDialog : public CAknDialog , public MAknQueryControlObserver williamr@2: { williamr@2: friend class CAknQueryDialogExtension; williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Enumeration for tones. williamr@2: * williamr@2: * The tone played before the dialog is shown. Application specific williamr@2: * tones may be played by casting the application defined Sound ID williamr@2: * (SID), to @c TTone williamr@2: **/ williamr@2: enum TTone { williamr@2: williamr@2: /** williamr@2: * No tone is played williamr@2: */ williamr@2: ENoTone = 0, williamr@2: williamr@2: /** williamr@2: * A confirmation tone is played. williamr@2: */ williamr@2: EConfirmationTone = EAvkonSIDConfirmationTone, williamr@2: williamr@2: /** williamr@2: * A warning tone is played. williamr@2: */ williamr@2: EWarningTone = EAvkonSIDWarningTone, williamr@2: williamr@2: /** williamr@2: * An error tone is played. williamr@2: */ williamr@2: EErrorTone = EAvkonSIDErrorTone williamr@2: }; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Second phase construction required to align with multiline queries API williamr@2: * In future might use MAknQueryData mixin in the base class, hence requiring williamr@2: * second phase construction. williamr@2: * williamr@2: * @return pointer to CAknQueryDialog williamr@2: */ williamr@2: IMPORT_C static CAknQueryDialog* NewL(const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * williamr@2: * @return pointer to CAknTextQueryDialog williamr@2: */ williamr@2: IMPORT_C static CAknQueryDialog* NewL(TDes& aText, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * williamr@2: * @return pointer to CAknNumberQueryDialog williamr@2: */ williamr@2: IMPORT_C static CAknQueryDialog* NewL(TInt& aNumber, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * williamr@2: * @return pointer to CAknTimeQueryDialog williamr@2: */ williamr@2: IMPORT_C static CAknQueryDialog* NewL(TTime& aTime, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * williamr@2: * @return pointer to CAknDurationQueryDialog williamr@2: */ williamr@2: IMPORT_C static CAknQueryDialog* NewL(TTimeIntervalSeconds& aTime, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * williamr@2: * @return pointer to CAknFloatQueryDialog williamr@2: */ williamr@2: IMPORT_C static CAknQueryDialog* NewL(TReal& aNumber, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * williamr@2: * @return pointer to CAknIpQueryDialog williamr@2: */ williamr@2: IMPORT_C static CAknQueryDialog* NewL(TInetAddr& aInetAddr, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Not yet totally implemented! williamr@2: * williamr@2: * @return pointer to CAknLocationQueryDialog williamr@2: */ williamr@2: IMPORT_C static CAknQueryDialog* NewL(TPosition &aValue, const TTone &aTone = ENoTone); williamr@2: williamr@2: public: williamr@2: IMPORT_C virtual ~CAknQueryDialog(); williamr@2: williamr@2: /** williamr@2: * Construction williamr@2: * williamr@2: * @deprecated: will be made protected - use NewL williamr@2: */ williamr@2: IMPORT_C CAknQueryDialog(const TTone& aTone); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Return pointer to query heading or NULL williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual CAknPopupHeadingPane* QueryHeading() const; williamr@2: williamr@2: /** williamr@2: * Deprecated method to return pointer to query heading or NULL (use QueryHeading()) williamr@2: * williamr@2: * @deprecated - will be removed (use QueryHeading() method instead) williamr@2: */ williamr@2: IMPORT_C CAknPopupHeadingPane* Heading() const; williamr@2: williamr@2: /** williamr@2: * Set prompt text for query. This this will override text given in constructor. williamr@2: * williamr@2: * @param aPrompt Text for prompt williamr@2: */ williamr@2: IMPORT_C void SetPromptL(const TDesC& aPrompt); williamr@2: williamr@2: /** williamr@2: * Set visibility of the left softkey. Softkey is hidden when data in the query is not acceptable. williamr@2: * @param aVisible EFalse hides softkey label, ETrue shows it. williamr@2: */ williamr@2: IMPORT_C void MakeLeftSoftkeyVisible(TBool aVisible); williamr@2: williamr@2: /** williamr@2: * Enable or disable emergency call support. This method is only valid in williamr@2: * numeric queries (secret or normal). williamr@2: * williamr@2: * Default is Off for both. williamr@2: * williamr@2: * @param aOnOff Sets emergency call support active or inactive, if feature is available in williamr@2: * current type of control williamr@2: */ williamr@2: IMPORT_C void SetEmergencyCallSupport( TBool aOnOff ); williamr@2: williamr@2: /** williamr@2: * Removes the editor indicators for this dialog. williamr@2: * Used to ensure this dialog does not own any editor indicators. williamr@2: * before opening another dialog which outlasts this one. williamr@2: */ williamr@2: IMPORT_C void RemoveEditorIndicator(); williamr@2: williamr@2: /** williamr@2: * This method can be used to set predictive text entry permitted. The default williamr@2: * Query behaviour is to supress predictive entry (over-riding editor resource williamr@2: * flags that may indicate otherwise. williamr@2: * williamr@2: * This may be called at any time prior to activation of the query. williamr@2: * williamr@2: * @param aPermitted ETrue - allow predictive text entry williamr@2: * williamr@2: */ williamr@2: IMPORT_C void SetPredictiveTextInputPermitted( TBool aPermitted ); williamr@2: williamr@2: /** williamr@2: * Runs the querydialog and returns the ID of the button used to dismiss it. williamr@2: * The dialog is destroyed on exit. williamr@2: * williamr@2: */ williamr@2: IMPORT_C TInt RunLD(); williamr@2: williamr@2: /** williamr@2: * Call PrepareLC and display dialog. williamr@2: * williamr@2: * Identical to version in CEikDialog but need to override williamr@2: * this because of version with prompt, williamr@2: * compiler will complain if this is not implemented in williamr@2: * derived class as well williamr@2: * williamr@2: * @param aResourceId resource for query williamr@2: */ williamr@2: IMPORT_C TInt ExecuteLD(TInt aResourceId); williamr@2: williamr@2: /** williamr@2: * Call PrepareLC and display dialog. williamr@2: * williamr@2: * @param aResourceId resource for query williamr@2: * @param aPrompt text for query prompt williamr@2: */ williamr@2: IMPORT_C TInt ExecuteLD(TInt aResourceId, const TDesC& aPrompt); williamr@2: williamr@2: public:// from CCoeControl williamr@2: williamr@2: /** williamr@2: * From @c CCoeControl

williamr@2: * Handle key events. When a key event occurs, williamr@2: * until one of them returns EKeyWasConsumed to indicate that it processed the key event. williamr@2: * CONE calls this function for each control on the control stack, williamr@2: * @param aKeyEvent The key event. williamr@2: * @param aType The type of the event: EEventKey, EEventKeyUp or EEventKeyDown. williamr@2: * @return Indicates whether or not the key event was used by this control. williamr@2: */ williamr@2: IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType); williamr@2: williamr@2: /** williamr@2: * Handles pointer events williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Return the maximum possible length of the query text williamr@2: * This is (in order of precedence, and assuming they are valid williamr@2: * i.e. less than or equal to the length of the descriptor passed to williamr@2: * return the value) dependent on:

williamr@2: * 1) aApiValue

williamr@2: * 2) Resource set value held in aControl

williamr@2: * 3) The MaxLength of the descriptor williamr@2: * @return maximum text length williamr@2: */ williamr@2: IMPORT_C static TInt MaxTextLength(const CAknQueryControl* aControl, const TDes& aDataText, TInt aApiValue) ; williamr@2: williamr@2: protected://from CEikdialog williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * EIKON provides an implementation of this function, williamr@2: * which positions the dialog in the centre of the screen. williamr@2: * However, it can be overridden by derived classes. williamr@2: * @param aSize The size for the dialog. williamr@2: */ williamr@2: IMPORT_C void SetSizeAndPosition(const TSize& aSize); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework just before the dialog is activated, but before it is sized, williamr@2: * and before PostLayoutDynInitL() is called. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(void); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework just before the dialog is activated, williamr@2: * after it has called PreLayoutDynInitL() and the dialog has been sized. williamr@2: */ williamr@2: IMPORT_C void PostLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: public://from MAknQueryControlObeserver williamr@2: williamr@2: /** williamr@2: * From @c MAknQueryControlObserver

williamr@2: * Gets called when editor sends size event. williamr@2: * @param aQueryControl Pointer to query control which sent the event williamr@2: * @param aEventType Type of the event williamr@2: */ williamr@2: IMPORT_C TBool HandleQueryEditorSizeEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType); williamr@2: williamr@2: /** williamr@2: * From @c MAknQueryControlObserver

williamr@2: * Gets called when editor sends state event williamr@2: * @param aQueryControl Pointer to query control which sent the event williamr@2: * @param aEventType Type of the event williamr@2: * @param aStatus Editor validation status williamr@2: */ williamr@2: IMPORT_C TBool HandleQueryEditorStateEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType, TQueryValidationStatus aStatus); williamr@2: williamr@2: /** williamr@2: * Called by OfferkeyEventL(), gives a change to dismiss the query even with williamr@2: * keys different than Enter of Ok. williamr@2: */ williamr@2: IMPORT_C virtual TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent); williamr@2: williamr@2: /** williamr@2: * Called by NeedToDismissQueryL(), gives a change to either accept or reject williamr@2: * the query. Default implementation is to accept the query if the Left soft williamr@2: * key is displayed and reject it otherwise. Left softkey is only displayed if williamr@2: * the query has valid data into it. williamr@2: */ williamr@2: IMPORT_C virtual void DismissQueryL(); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * If the query text is ok (retrieved form query control) then display the williamr@2: * left soft key, otherwise hide it. williamr@2: */ williamr@2: IMPORT_C virtual void UpdateLeftSoftKeyL(); williamr@2: williamr@2: /** williamr@2: * Set the prompt inside the query control. If dialog is active redo williamr@2: * layout and draw. williamr@2: */ williamr@2: IMPORT_C virtual void DoSetPromptL(); williamr@2: williamr@2: /** williamr@2: * Return pointer to query control or NULL williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual CAknQueryControl* QueryControl() const; williamr@2: williamr@2: protected: //implementation, intended to be used but not overwritten williamr@2: williamr@2: /** williamr@2: * Plays tone williamr@2: */ williamr@2: void PlayTone(); williamr@2: williamr@2: /** williamr@2: * Resets system's inactivity timer williamr@2: */ williamr@2: void ReportUserActivity() const ; williamr@2: williamr@2: /** williamr@2: * Recreates layout and redraws the dialog williamr@2: */ williamr@2: void LayoutAndDraw(); williamr@2: williamr@2: /** williamr@2: * Returns left CBA short key press williamr@2: * @return Id of the left CBA williamr@2: */ williamr@2: TInt GetLeftCBAShortKeyPress(); williamr@2: williamr@2: /** williamr@2: * Returns right CBA short key press williamr@2: * @return Id of the right CBA williamr@2: */ williamr@2: TInt GetRightCBAShortKeyPress(); williamr@2: williamr@2: /** williamr@2: * Returns whether the left softkey is visible williamr@2: * @return ETrue is the left softkey is visible williamr@2: */ williamr@2: TBool IsLeftSoftkeyVisible(); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Prompt access for derived classes williamr@2: */ williamr@2: IMPORT_C TPtrC Prompt() const; williamr@2: williamr@2: /** williamr@2: * @return query tone williamr@2: */ williamr@2: TTone& Tone() { return iTone; } williamr@2: williamr@2: /** williamr@2: * @return query tone williamr@2: */ williamr@2: const TTone& Tone() const { return iTone; } williamr@2: williamr@2: /** williamr@2: * @return query flags williamr@2: */ williamr@2: TBitFlags16& Flags() { return iFlags; } williamr@2: williamr@2: /** williamr@2: * @return query flags williamr@2: */ williamr@2: const TBitFlags16& Flags() const { return iFlags; } williamr@2: williamr@2: /** williamr@2: * @return query sound system williamr@2: */ williamr@2: CAknKeySoundSystem* SoundSystem() const { return iSoundSystem; } williamr@2: williamr@2: protected: // collected code for accessing Dialog state. williamr@2: williamr@2: /** williamr@2: * To be used to go through every control in the dialog, on every page, williamr@2: * in Dialog-internal storage order, until a control with that type is found. williamr@2: * If such a control is not found, a null pointer will be returned. williamr@2: * @param aControlType - Enum used to identify the control type on that CEikCaptionedControl Line williamr@2: * @param aLineIndex - Optional argument, if used contains reference to an int which holds the initial williamr@2: * line to start searching on, and on finding a control of that type, is williamr@2: * assigned the next position to start searching. williamr@2: * @param aPageIndex - Optional argument, if used contains reference to an int which holds the initial williamr@2: * dialog page to start searching on, and on finding a control of that type, is williamr@2: * assigned the page that the control was found on. williamr@2: * williamr@2: */ williamr@2: CCoeControl* FindControlOnAnyPageWithControlType(TInt aControlType, TInt* aLineIndex=0, TInt* aPageIndex=0) const; williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Tone which is played when the query is executed williamr@2: * These will be made private, use protected methods williamr@2: * williamr@2: * @deprecated. williamr@2: */ williamr@2: TTone iTone; williamr@2: williamr@2: /** Prompt text*/ williamr@2: TDesC *iPrompt; williamr@2: williamr@2: /** Caption Retriever*/ williamr@2: CAknQueryDialogExtension* iExtension; williamr@2: williamr@2: /** williamr@2: * Flags for emergency call support williamr@2: * Need these at least to store the ECS state until the control exists williamr@2: */ williamr@2: TBitFlags16 iFlags; williamr@2: williamr@2: /** Spare variable for further development */ williamr@2: TInt iSpare_1; williamr@2: williamr@2: /** Sound system*/ williamr@2: CAknKeySoundSystem* iSoundSystem; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * @deprecated do not use williamr@2: */ williamr@2: IMPORT_C CAknQueryDialog(); williamr@2: williamr@2: /** williamr@2: * @deprecated do not use williamr@2: */ williamr@2: IMPORT_C CAknQueryDialog(TDesC& aPrompt,const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * @deprecated - use QueryHeading() method instead williamr@2: */ williamr@2: IMPORT_C void SetHeaderTextL(const TDesC& aHeader); williamr@2: williamr@2: /** williamr@2: * @deprecated - use QueryHeading() method instead williamr@2: */ williamr@2: IMPORT_C void SetHeaderImageL(CEikImage* aImage); williamr@2: williamr@2: /** williamr@2: * @deprecated - use RunLD or ExecuteLD instead williamr@2: */ williamr@2: IMPORT_C TInt RunDlgLD(TInt aResourceId); williamr@2: williamr@2: /** williamr@2: * @deprecated - use other version of MaxTextLength williamr@2: */ williamr@2: IMPORT_C static TInt MaxTextLength(const CAknQueryControl* aControl, const TDes* aDataText, TInt aApiValue); williamr@2: williamr@2: private: williamr@2: //From CAknControl williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: williamr@2: private:// new function williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * From CCoeControl. williamr@2: * Gets the control's input capabilities. williamr@2: * williamr@2: * @return The control's input capabilities. williamr@2: */ williamr@2: IMPORT_C TCoeInputCapabilities InputCapabilities() const; williamr@2: williamr@2: /** williamr@2: * Enable or disable support to change the CBA labels of the query williamr@2: * according to the current ECS state. It's necessary to enable this williamr@2: * alongside with ECS for touch and full screen queries. williamr@2: * williamr@2: * Note that if enabling this, then it's not necessary to call williamr@2: * @c SetEmergencyCallSupport( ETrue ) additionally, as when williamr@2: * enabling this, @c CAknQueryControl::EEmergencyCallsEnabledByAPI williamr@2: * will also be set. To enable the ECS via this method, it must williamr@2: * be called prior to @c PreLayoutDynamicInitL. williamr@2: * williamr@2: * If this is enabled for CAknQueryDialog-derived classes, then williamr@2: * the @c OkToExitL implementation of those should forward the williamr@2: * @c EAknSoftkeyEmergencyCall events to the base class' OkToExitL williamr@2: * for the emergency call event to be handled. williamr@2: * williamr@2: * This method is only valid in numeric queries (secret or normal), williamr@2: * default is Off for both. williamr@2: * williamr@2: * @param aOnOff @c ETrue to enable the ECS CBA support, williamr@2: * @c EFalse otherwise. williamr@2: */ williamr@2: IMPORT_C void SetEmergencyCallSupportForCBA( TBool aOnOff ); williamr@2: williamr@2: }; williamr@2: williamr@2: //------------------------------------- williamr@2: //class CAknTextQuerydialog williamr@2: //------------------------------------- williamr@2: williamr@2: //Deprecated williamr@2: #define CAknStaticSizeDataQuerydialog CAknTextQueryDialog williamr@2: williamr@2: /** williamr@2: *This class should be used when user is reguest to enter plain text, secret text, phonenumber or PIN-code williamr@2: */ williamr@2: class CAknTextQueryDialog : public CAknQueryDialog williamr@2: { williamr@2: williamr@2: public://construction and destruction williamr@2: williamr@2: /** williamr@2: * Second phase construction required to align API with multiline queries williamr@2: * and because in future MAknQueryData will be used. williamr@2: */ williamr@2: IMPORT_C static CAknTextQueryDialog* NewL(TDes& aDataText, const TTone& aTone = ENoTone); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * C++ Constructor. williamr@2: * williamr@2: */ williamr@2: IMPORT_C CAknTextQueryDialog(TDes& aDataText, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * C++ Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAknTextQueryDialog(); williamr@2: williamr@2: public://New functions williamr@2: williamr@2: /** williamr@2: * Set max lenght for editor. This overrides the max lenght given in resource. williamr@2: * williamr@2: * @param aLength Max lenght. williamr@2: */ williamr@2: IMPORT_C void SetMaxLength(TInt aLength); williamr@2: williamr@2: /** williamr@2: * Return true if the length of the text is bigger williamr@2: * than zero and if there williamr@2: * is at least a character which is not a space williamr@2: */ williamr@2: IMPORT_C virtual TBool CheckIfEntryTextOk() const; williamr@2: williamr@2: /** williamr@2: * Changes default input mode of a secret editor. By default input mode williamr@2: * in secret editor is alpha input mode (EAknEditorSecretAlphaInputMode williamr@2: * from uikon.hrh). By using this method the default input mode can be williamr@2: * changed to numeric input mode (EAknEditorNumericInputMode). williamr@2: * williamr@2: * @since 2.1 williamr@2: * @param aInputMode Default input mode in the secret editor. williamr@2: * Only EAknEditorNumericInputMode and EAknEditorSecretAlphaInputMode williamr@2: * are supported. williamr@2: */ williamr@2: IMPORT_C void SetDefaultInputMode(TInt aInputMode); williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework williamr@2: * just before the dialog is activated, after it has called williamr@2: * PreLayoutDynInitL() and the dialog has been sized. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: public://from MAknQueryControlObserver williamr@2: williamr@2: /** williamr@2: * From @c MAknQueryControlObserver

williamr@2: * Gets called when editor sends size event williamr@2: * @param aQueryControl Pointer to query control which sent the event williamr@2: * @param aEventType Type of the event williamr@2: */ williamr@2: IMPORT_C TBool HandleQueryEditorSizeEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType); williamr@2: williamr@2: public://from CCoeControl williamr@2: williamr@2: /** williamr@2: * Handles pointer events williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Called by PreLayoutDynInit(), set the control observer, the text and williamr@2: * the maximum length of the text williamr@2: */ williamr@2: void SetControlTextL(); williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline TDes& Text() { return iDataText; } williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline const TDesC& Text() const { return iDataText; } williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Max length for text williamr@2: * williamr@2: * @deprecated williamr@2: * This data will become private williamr@2: * Use Text() and MaxTextLength() instead williamr@2: */ williamr@2: TInt iTextMaxLength; williamr@2: williamr@2: /** williamr@2: * Text for editor. When query is approved text from editor is stored here williamr@2: */ williamr@2: TDes& iDataText; williamr@2: williamr@2: /** @deprecated - not used anymore */ williamr@2: TBool iEditorTextOk; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * deprecated do not use williamr@2: */ williamr@2: IMPORT_C CAknTextQueryDialog(TDes& aDataText, TDesC& aPrompt,const TTone& aTone = ENoTone); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: williamr@2: private: // Data williamr@2: TInt iSpare; williamr@2: }; williamr@2: williamr@2: //--------------------------------- williamr@2: //class CAknNumberQuerydialog williamr@2: //--------------------------------- williamr@2: williamr@2: /** williamr@2: *This class should be used when user is reguest to enter number williamr@2: */ williamr@2: class CAknNumberQueryDialog : public CAknQueryDialog williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Second phase construction required to align API with multiline queries williamr@2: * and because in future MAknQueryData will be used. williamr@2: */ williamr@2: IMPORT_C static CAknNumberQueryDialog* NewL(TInt& aNumber, const TTone& aTone = ENoTone); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * C++ Constructor. williamr@2: */ williamr@2: IMPORT_C CAknNumberQueryDialog(TInt& aNumber, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * C++ Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAknNumberQueryDialog(); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Set maximum and minimum to editor. This override values given in resource. williamr@2: * williamr@2: * @param aMinimumValue Minimumm number williamr@2: * @param aMaximumValue Maximum number. williamr@2: */ williamr@2: IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue); // only values inside the initial minimum and maximum are permitted williamr@2: williamr@2: public://from CCoeControl williamr@2: williamr@2: /** williamr@2: * Handles pointer events williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework williamr@2: * just before the dialog is activated, after it has called williamr@2: * PreLayoutDynInitL() and the dialog has been sized. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline TInt& Number() { return iNumber; } williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline const TInt& Number() const { return iNumber; } williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * @deprecated - will become private - use Number() instead williamr@2: */ williamr@2: TInt& iNumber; williamr@2: williamr@2: private: // Data williamr@2: TInt iSpare; williamr@2: }; williamr@2: williamr@2: //------------------------------------- williamr@2: //class CAknTimeQueryDialog williamr@2: //------------------------------------- williamr@2: williamr@2: /** williamr@2: *This class should be used when user is reguest to enter time or date williamr@2: */ williamr@2: class CAknTimeQueryDialog : public CAknQueryDialog williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Second phase construction required to align API with multiline queries williamr@2: * and because in future MAknQueryData will be used. williamr@2: */ williamr@2: IMPORT_C static CAknTimeQueryDialog* NewL(TTime& aTime, const TTone& aTone = ENoTone); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * C++ Constructor williamr@2: */ williamr@2: IMPORT_C CAknTimeQueryDialog(TTime& aTime, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * C++ Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAknTimeQueryDialog(); williamr@2: williamr@2: public://New functions williamr@2: williamr@2: /** williamr@2: * Set maximum and minimum times to editor. This override values given in resource. williamr@2: * Only values inside the initial minimum and maximum are permitted williamr@2: * williamr@2: * @param aMinimum Minimumm time williamr@2: * @param aMaximum Maximum time. williamr@2: */ williamr@2: IMPORT_C void SetMinimumAndMaximum(const TTime& aMinimum, const TTime& aMaximum); williamr@2: williamr@2: public://From CCoeControl williamr@2: williamr@2: /** williamr@2: * Handles pointer events williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework williamr@2: * just before the dialog is activated, after it has called williamr@2: * PreLayoutDynInitL() and the dialog has been sized. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline TTime& Time() { return iTime; } williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline const TTime& Time() const { return iTime; } williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * @deprecated - will become private - use Time() instead williamr@2: */ williamr@2: TTime& iTime; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * deprecated - do not use williamr@2: */ williamr@2: IMPORT_C CAknTimeQueryDialog(TTime& aTime,TDesC& aPrompt,const TTone& aTone = ENoTone); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: williamr@2: private: // Data williamr@2: TInt iSpare; williamr@2: }; williamr@2: williamr@2: //---------------------------------- williamr@2: //class CAknDurationQuerydialog williamr@2: //---------------------------------- williamr@2: williamr@2: /** williamr@2: *This class should be used when user is reguest to enter duration williamr@2: */ williamr@2: class CAknDurationQueryDialog : public CAknQueryDialog williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Second phase construction required to align API with multiline queries williamr@2: * and because in future MAknQueryData will be used. williamr@2: */ williamr@2: IMPORT_C static CAknDurationQueryDialog* NewL(TTimeIntervalSeconds& aTime, const TTone& aTone = ENoTone); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * - deprecated (use NewL instead) williamr@2: */ williamr@2: IMPORT_C CAknDurationQueryDialog(TTimeIntervalSeconds& aDuration, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * C++ Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAknDurationQueryDialog(); williamr@2: williamr@2: public://new williamr@2: williamr@2: /** williamr@2: * Set maximum and minimum durations to editor. This override values given in resource. williamr@2: * Only values inside the initial minimum and maximum are permitted. williamr@2: * williamr@2: * @param aMinimumDuration Minimumm duration williamr@2: * @param aMaximumDuration Maximum duration. williamr@2: */ williamr@2: IMPORT_C void SetMinimumAndMaximum(const TTimeIntervalSeconds& aMinimumDuration, const TTimeIntervalSeconds& aMaximumDuration); williamr@2: williamr@2: public: // From CCoeControl williamr@2: williamr@2: /** williamr@2: * Handles pointer events williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework williamr@2: * just before the dialog is activated, after it has called williamr@2: * PreLayoutDynInitL() and the dialog has been sized. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline TTimeIntervalSeconds& Duration() { return iDuration; } williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline const TTimeIntervalSeconds& Duration() const { return iDuration; } williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * @deprecated - will become private. Use Duration() instead. williamr@2: */ williamr@2: TTimeIntervalSeconds& iDuration; williamr@2: williamr@2: private: // Data williamr@2: TInt iSpare; williamr@2: }; williamr@2: williamr@2: //---------------------------------- williamr@2: //class CAknFloatingPointQueryDialog williamr@2: //---------------------------------- williamr@2: williamr@2: /** williamr@2: *This class should be used when user is reguest to enter a flotaing point number williamr@2: */ williamr@2: class CAknFloatingPointQueryDialog : public CAknQueryDialog williamr@2: { williamr@2: williamr@2: public: williamr@2: /** williamr@2: * Second phase construction required to align API with multiline queries williamr@2: * and because in future MAknQueryData will be used. williamr@2: */ williamr@2: IMPORT_C static CAknFloatingPointQueryDialog* NewL(TReal& aNumber, const TTone& aTone = ENoTone); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * deprecated (use NewL instead) williamr@2: */ williamr@2: IMPORT_C CAknFloatingPointQueryDialog(TReal& aNumber, const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * C++ Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAknFloatingPointQueryDialog(); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * Set maximum and minimum durations to editor. This override values given in resource. williamr@2: * only values inside the initial minimum and maximum are permitted williamr@2: * williamr@2: * @param aMinimumNumber Minimumm duration williamr@2: * @param aMaximumNumber Maximum duration. williamr@2: */ williamr@2: IMPORT_C void SetMinimumAndMaximum(const TReal& aMinimumNumber, const TReal& aMaximumNumber); williamr@2: williamr@2: public://From CCoeControl williamr@2: williamr@2: /** williamr@2: * Handles pointer events williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework williamr@2: * just before the dialog is activated, after it has called williamr@2: * PreLayoutDynInitL() and the dialog has been sized. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline TReal& Number() { return iNumber; } williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline const TReal& Number() const { return iNumber; } williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * @deprecated - will become private - use Number() instead williamr@2: */ williamr@2: TReal& iNumber; williamr@2: williamr@2: private: williamr@2: TInt iSpare; williamr@2: }; williamr@2: williamr@2: williamr@2: //-------------------------------------- williamr@2: //class CAknMultilineDataQuerydialog williamr@2: //-------------------------------------- williamr@2: williamr@2: /** williamr@2: * Query dialog with data input on more than one line (2 lines at the moment). williamr@2: * williamr@2: * Object of this class is created by using NewL method and by passing williamr@2: * parameters as appropriate. williamr@2: * williamr@2: * Attention: When deriving from this class, you must call @c SetDataL() during williamr@2: * second phase construction. williamr@2: * williamr@2: * Enumeration for tones. The tone played before the dialog is shown. williamr@2: * Application specific tones may be played by casting the application defined williamr@2: * Sound ID @c (SID), to @c TTone. williamr@2: * williamr@2: * Enumeration values:
williamr@2: * @c ENoTone No tone is played.
williamr@2: * @c EConfirmationTone A confirmation tone is played.
williamr@2: * @c EWarningTone A warning tone is played.
williamr@2: * @c EErrorTone An error tone is played.
williamr@2: */ williamr@2: class CAknMultiLineDataQueryDialog : public CAknQueryDialog williamr@2: { williamr@2: friend class CAknMultilineQueryDialogExtension; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Creates a new instance of a multiline dialog. williamr@2: * williamr@2: * @param aTime1 First line parameter. williamr@2: * @param aTime2 Second line parameter. williamr@2: * @param aTone Reference to @c TTone enumeration. Default is @c williamr@2: * ENoTone. williamr@2: * @return Pointer to a multiline dialog object. williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineDataQueryDialog* NewL( williamr@2: TTime& aTime1, williamr@2: TTime& aTime2, williamr@2: TTone aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Creates a new instance of a multiline dialog. williamr@2: * williamr@2: * @param aText1 First line parameter. williamr@2: * @param aText2 Second line parameter. williamr@2: * @param aTone Reference to @c TTone enumeration. Default is @c williamr@2: * ENoTone. williamr@2: * @return Pointer to a multiline dialog object. williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineDataQueryDialog* NewL( williamr@2: TDes& aText1, williamr@2: TDes& aText2, williamr@2: TTone aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Creates a new instance of a multiline dialog. williamr@2: * williamr@2: * @param aText1 First line parameter. williamr@2: * @param aTime2 Second line parameter. williamr@2: * @param aTone Reference to @c TTone enumeration. Default is @c williamr@2: * ENoTone. williamr@2: * @return Pointer to a multiline dialog object. williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineDataQueryDialog* NewL( williamr@2: TDes& aText1, williamr@2: TTime& aTime2, williamr@2: TTone aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Creates a new instance of a multiline dialog. williamr@2: * williamr@2: * @param aText1 First line parameter. williamr@2: * @param aNum2 Second line parameter. williamr@2: * @param aTone Reference to @c TTone enumeration. Default is @c williamr@2: * ENoTone. williamr@2: * @return Pointer to a multiline dialog object. williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineDataQueryDialog* NewL( williamr@2: TDes& aText1, williamr@2: TInt& aNum2, williamr@2: TTone aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Creates a new instance of a multiline dialog. williamr@2: * williamr@2: * @param aText1 First line parameter. williamr@2: * @param aDur2 Second line parameter. williamr@2: * @param aTone Reference to @c TTone enumeration. Default is @c williamr@2: * ENoTone. williamr@2: * @return Pointer to a multiline dialog object. williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineDataQueryDialog* NewL( williamr@2: TDes& aText1, williamr@2: TTimeIntervalSeconds& aDur2, williamr@2: TTone aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Creates a new instance of a multiline dialog. williamr@2: * williamr@2: * @param aTime1 First line parameter. williamr@2: * @param aDur2 Second line parameter. williamr@2: * @param aTone Reference to @c TTone enumeration. Default is @c williamr@2: * ENoTone. williamr@2: * @return Pointer to a multiline dialog object. williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineDataQueryDialog* NewL( williamr@2: TTime& aTime1, williamr@2: TTimeIntervalSeconds& aDur2, williamr@2: TTone aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Creates a new instance of a multiline dialog. williamr@2: * williamr@2: * @param aNum1 First line parameter. williamr@2: * @param aNum2 Second line parameter. williamr@2: * @param aTone Reference to @c TTone enumeration. Default is @c williamr@2: * ENoTone. williamr@2: * @return Pointer to multiline dialog object. williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineDataQueryDialog* NewL( williamr@2: TInt& aNum1, williamr@2: TInt& aNum2, williamr@2: TTone aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Creates a new instance of a multiline dialog. williamr@2: * williamr@2: * @param aPos Position parameter. williamr@2: * @param aTone Reference to @c TTone enumeration. Default is @c williamr@2: * ENoTone. williamr@2: * @return Pointer to multiline dialog object. williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineDataQueryDialog* NewL(TPosition &aPos, TTone aTone = ENoTone); williamr@2: williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAknMultiLineDataQueryDialog(); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Sets the query data for the first and the second line. Must be williamr@2: * called by derived classes during second phase construction (@c williamr@2: * NewL() method). williamr@2: */ williamr@2: template void SetDataL(T1& aData1, T2& aData2) williamr@2: { williamr@2: /** First line data. */ williamr@2: iFirstData = new (ELeave) TAknQueryData(aData1); williamr@2: williamr@2: /** Second line data. */ williamr@2: iSecondData = new (ELeave) TAknQueryData(aData2); williamr@2: } williamr@2: williamr@2: /** williamr@2: * Utility function called by @c NewL() method - should really be williamr@2: * private but it is left here to show to people extending this class williamr@2: * what their @c NewL() method should do. williamr@2: * williamr@2: * Creates new instance of the multiline dialog. williamr@2: * williamr@2: * @param aData1 First line parameter. williamr@2: * @param aData2 Second line parameter. williamr@2: * @param aTone Reference to @c TTone enum. williamr@2: */ williamr@2: williamr@2: template static CAknMultiLineDataQueryDialog* williamr@2: DoNewL(T1& aData1, T2& aData2, const TTone& aTone) williamr@2: { williamr@2: CAknMultiLineDataQueryDialog* self = williamr@2: new (ELeave) CAknMultiLineDataQueryDialog(aTone); williamr@2: williamr@2: CleanupStack::PushL(self); williamr@2: williamr@2: self->SetDataL(aData1,aData2); williamr@2: williamr@2: CleanupStack::Pop(self); williamr@2: return self; williamr@2: } williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: * williamr@2: * @param aTone Reference to @c TTone enumeration. williamr@2: */ williamr@2: IMPORT_C CAknMultiLineDataQueryDialog(const TTone& aTone); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Sets a prompt text for the query. This will override the text given williamr@2: * in the constructor. williamr@2: * williamr@2: * @param aFirstPrompt Text for prompt on the first query line. williamr@2: * @param aSecondPrompt Text for prompt on the second query line. williamr@2: */ williamr@2: IMPORT_C void SetPromptL(const TDesC& aFirstPrompt, williamr@2: const TDesC& aSecondPrompt); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Sets a max length for the first editor in a query. williamr@2: * williamr@2: * @param aFirstTextEditorMaxLength Max length for editor williamr@2: */ williamr@2: IMPORT_C void SetMaxLengthOfFirstEditor( williamr@2: TInt aFirstTextEditorMaxLength); williamr@2: williamr@2: /** williamr@2: * Sets a max length for the second editor in a query. williamr@2: * williamr@2: * @param aSecondTextEditorMaxLength Max length for editor. williamr@2: */ williamr@2: IMPORT_C void SetMaxLengthOfSecondEditor( williamr@2: TInt aSecondTextEditorMaxLength); williamr@2: williamr@2: public: // From CCoeControl williamr@2: williamr@2: /** williamr@2: * From @c CCoeControl. williamr@2: * williamr@2: * Handles pointer events. williamr@2: * williamr@2: * @param aPointerEvent The pointer event. williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the @c EIKON framework if the user williamr@2: * activates a button in the button panel. It is not called if the @c williamr@2: * Cancel button is activated, unless the @c EEikDialogFlagNotifyEsc williamr@2: * flag is set. williamr@2: * williamr@2: * @param aButtonId The ID of the button that was activated. williamr@2: * @return @c ETrue if the dialog should exit and @c williamr@2: * EFalse if it should not exit. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework williamr@2: * just before the dialog is activated, after it has called williamr@2: * PreLayoutDynInitL() and the dialog has been sized. williamr@2: * Note:

williamr@2: * Control values that should not influence the sizing and layout are williamr@2: * set using @c PostLayoutDynInitL(). williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CCoeControl. williamr@2: * williamr@2: * Handles a change to the control's resources. The types of resources williamr@2: * handled are those which are shared across the environment, e.g. williamr@2: * colours or fonts. williamr@2: * williamr@2: * @since Symbian 5.1. williamr@2: * williamr@2: * @param aType A message UID value. The most common is @c williamr@2: * KEikMessageColorSchemeChange which controls get when the williamr@2: * colour scheme is changed. Other examples include: @c williamr@2: * KEikMessageFadeAllWindows, @c KEikMessageUnfadeWindows, @c williamr@2: * KEikMessageZoomChange, @c williamr@2: * KEikMessageVirtualCursorStateChange, @c KEikMessageCapsLock, williamr@2: * @c KEikMessagePrepareForSave. williamr@2: */ williamr@2: IMPORT_C void HandleResourceChange(TInt aType); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * If the query text is ok (retrieved form query controls) the left williamr@2: * soft key is displayed, otherwise it is hidden. williamr@2: */ williamr@2: IMPORT_C void UpdateLeftSoftKeyL(); williamr@2: williamr@2: /** williamr@2: * Sets the prompt inside the query control. williamr@2: */ williamr@2: IMPORT_C void DoSetPromptL(); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Allows dismissing of queries. Same as base class implementation only take into williamr@2: * consideration both controls williamr@2: */ williamr@2: IMPORT_C TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Access to 1st query control williamr@2: * williamr@2: * @return Pointer to the control of the first line. williamr@2: */ williamr@2: IMPORT_C CAknMultilineQueryControl* FirstControl() const; williamr@2: williamr@2: /** williamr@2: * Access to 2nd query control williamr@2: * williamr@2: * @return Pointer to the control of the second line. williamr@2: */ williamr@2: IMPORT_C CAknMultilineQueryControl* SecondControl() const; williamr@2: williamr@2: /** williamr@2: * Gets a querycontrol. williamr@2: * williamr@2: * @return Pointer to the control of the first line. williamr@2: */ williamr@2: IMPORT_C CAknQueryControl* QueryControl() const; williamr@2: williamr@2: /** williamr@2: * Not implemented. williamr@2: * williamr@2: * @return NULL. williamr@2: */ williamr@2: IMPORT_C CAknPopupHeadingPane* QueryHeading() const; williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Data access. williamr@2: * williamr@2: * Derived class can use this method to get access to the query williamr@2: * data. The query data is a reference stored in @c TAknQueryData, see williamr@2: * @c aknquerydata.h williamr@2: * williamr@2: * The client ultimately owns the data this reference references and so williamr@2: * it should never need to call these methods. williamr@2: * williamr@2: * Derived class however, might need to set or get the data and hence williamr@2: * this method have been provided. The derived class is responsible williamr@2: * for choosing the correct type, if not the cast will fail. williamr@2: */ williamr@2: template williamr@2: T& FirstData(const T&) williamr@2: { return STATIC_CAST(TAknQueryData*,iFirstData)->iData; } williamr@2: williamr@2: /** williamr@2: * Data access. williamr@2: * williamr@2: * Derived class can use this method to get access to the query williamr@2: * data. The query data is a reference stored in @c TAknQueryData, see williamr@2: * @c aknquerydata.h williamr@2: * williamr@2: * The client ultimately owns the data this reference references and so williamr@2: * it should never need to call these methods. williamr@2: * williamr@2: * Derived class however, might need to set or get the data and hence williamr@2: * this method have been provided. The derived class is responsible williamr@2: * for choosing the correct type, if not the cast will fail. williamr@2: */ williamr@2: template williamr@2: T& SecondData(const T&) williamr@2: { return STATIC_CAST(TAknQueryData*,iSecondData)->iData; } williamr@2: williamr@2: /** williamr@2: * Data access. williamr@2: * williamr@2: * Derived class can use this method to get access to the query williamr@2: * data. The query data is a reference stored in @c TAknQueryData, see williamr@2: * @c aknquerydata.h williamr@2: * williamr@2: * The client ultimately owns the data this reference references and so williamr@2: * it should never need to call these methods. williamr@2: * williamr@2: * Derived class however, might need to set or get the data and hence williamr@2: * this method have been provided. The derived class is responsible williamr@2: * for choosing the correct type, if not the cast will fail. williamr@2: */ williamr@2: template williamr@2: const T& FirstData(const T&) const williamr@2: { return STATIC_CAST(TAknQueryData*,iFirstData)->iData; } williamr@2: williamr@2: /** williamr@2: * Data access. williamr@2: * williamr@2: * Derived class can use this method to get access to the query williamr@2: * data. The query data is a reference stored in @c TAknQueryData, see williamr@2: * @c aknquerydata.h williamr@2: * williamr@2: * The client ultimately owns the data this reference references and so williamr@2: * it should never need to call these methods. williamr@2: * williamr@2: * Derived class however, might need to set or get the data and hence williamr@2: * this method have been provided. The derived class is responsible williamr@2: * for choosing the correct type, if not the cast will fail. williamr@2: */ williamr@2: template williamr@2: const T& SecondData(const T&) const williamr@2: { return STATIC_CAST(TAknQueryData*,iSecondData)->iData; } williamr@2: williamr@2: /** williamr@2: * Prompts access for derived classes. williamr@2: * williamr@2: * @return Pointer to the data of the second line. williamr@2: */ williamr@2: IMPORT_C TPtrC SecondPrompt() const; williamr@2: williamr@2: private: williamr@2: void HandleOrientationSwitch(); williamr@2: TBool FirstLineEnabled() const; williamr@2: TBool SecondLineEnabled() const; williamr@2: TInt CurrentLine() const; williamr@2: williamr@2: private: williamr@2: TDesC* iSecondPrompt; williamr@2: MAknQueryData* iFirstData; williamr@2: MAknQueryData* iSecondData; williamr@2: williamr@2: TInt iFirstEditorMaxLength; williamr@2: TInt iSecondEditorMaxLength; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * williamr@2: * @param aTime First line parameter. williamr@2: * @param aTime2 Second line parameter. williamr@2: * @param aPrompt First prompt value. NULL in default. williamr@2: * @param aPrompt2 Second prompt value. NULL in default. williamr@2: * @param aTone Reference to @c TTone enum. Default is @c ENoTone. williamr@2: */ williamr@2: IMPORT_C CAknMultiLineDataQueryDialog( williamr@2: TTime* aTime, williamr@2: TTime* aTime2, williamr@2: TDesC* aPrompt=NULL, williamr@2: TDesC* aPrompt2=NULL, williamr@2: const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * williamr@2: * @param aDataText First line parameter. williamr@2: * @param aDataText2 Second line parameter. williamr@2: * @param aPrompt First prompt value. NULL in default. williamr@2: * @param aPrompt2 Second prompt value. NULL in default. williamr@2: * @param aTone Reference to @c TTone enum. Default is @c ENoTone. williamr@2: */ williamr@2: IMPORT_C CAknMultiLineDataQueryDialog( williamr@2: TDes* aDataText, williamr@2: TDes* aDataText2, williamr@2: TDesC* aPrompt=NULL, williamr@2: TDesC* aPrompt2=NULL, williamr@2: const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * williamr@2: * @param aDataText First line parameter. williamr@2: * @param aTime Second line parameter. williamr@2: * @param aPrompt First prompt value. NULL in default. williamr@2: * @param aPrompt2 Second prompt value. NULL in default. williamr@2: * @param aTone Reference to @c TTone enum. Default is @c ENoTone. williamr@2: */ williamr@2: IMPORT_C CAknMultiLineDataQueryDialog( williamr@2: TDes* aDataText, williamr@2: TTime* aTime, williamr@2: TDesC* aPrompt=NULL, williamr@2: TDesC* aPrompt2=NULL, williamr@2: const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * williamr@2: * @param aDataText First line parameter. williamr@2: * @param aNumber Second line parameter. williamr@2: * @param aPrompt First prompt value. NULL in default. williamr@2: * @param aPrompt2 Second prompt value. NULL in default. williamr@2: * @param aTone Reference to @c TTone enum. Default is @c ENoTone. williamr@2: */ williamr@2: IMPORT_C CAknMultiLineDataQueryDialog( williamr@2: TDes* aDataText, williamr@2: TInt* aNumber, williamr@2: TDesC* aPrompt=NULL, williamr@2: TDesC* aPrompt2=NULL, williamr@2: const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * williamr@2: * @param aDataText First line parameter. williamr@2: * @param aDuration Second line parameter. williamr@2: * @param aPrompt First prompt value. NULL in default. williamr@2: * @param aPrompt2 Second prompt value. NULL in default. williamr@2: * @param aTone Reference to @c TTone enum. Default is @c ENoTone. williamr@2: */ williamr@2: IMPORT_C CAknMultiLineDataQueryDialog( williamr@2: TDes* aDataText, williamr@2: TTimeIntervalSeconds* aDuration, williamr@2: TDesC* aPrompt=NULL, williamr@2: TDesC* aPrompt2=NULL, williamr@2: const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * williamr@2: * @param aTime First line parameter. williamr@2: * @param aDuration Second line parameter. williamr@2: * @param aPrompt First prompt value. NULL in default. williamr@2: * @param aPrompt2 Second prompt value. NULL in default. williamr@2: * @param aTone Reference to @c TTone enum. Default is @c ENoTone. williamr@2: */ williamr@2: IMPORT_C CAknMultiLineDataQueryDialog( williamr@2: TTime* aTime, williamr@2: TTimeIntervalSeconds* aDuration, williamr@2: TDesC* aPrompt=NULL, williamr@2: TDesC* aPrompt2=NULL, williamr@2: const TTone& aTone = ENoTone); williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * williamr@2: * @param aNumber First line parameter. williamr@2: * @param aNumber2 Second line parameter. williamr@2: * @param aPrompt First prompt value. NULL in default. williamr@2: * @param aPrompt2 Second prompt value. NULL in default. williamr@2: * @param aTone Reference to @c TTone enum. Default is @c ENoTone. williamr@2: */ williamr@2: IMPORT_C CAknMultiLineDataQueryDialog( williamr@2: TInt* aNumber, williamr@2: TInt* aNumber2, williamr@2: TDesC* aPrompt=NULL, williamr@2: TDesC* aPrompt2=NULL, williamr@2: const TTone& aTone = ENoTone); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * Deprecated - use data access template methods instead williamr@2: * A text of the first line. williamr@2: * @deprecated Use data access template methods instead. williamr@2: */ williamr@2: TDes16* iText; williamr@2: williamr@2: /** williamr@2: * Deprecated do not use williamr@2: * A text of the secondline. williamr@2: * @deprecated Use data access template methods instead. williamr@2: */ williamr@2: TDes16* iSecondText; williamr@2: }; williamr@2: williamr@2: //Deprecated williamr@2: //This one is included here for backwards compatibility williamr@2: //and will be removed as soon as apps using listquerydialog williamr@2: //include it directly williamr@2: #include williamr@2: williamr@2: williamr@2: //--------------------------------- williamr@2: //class CAknIpAddressQueryDialog williamr@2: //--------------------------------- williamr@2: williamr@2: /** williamr@2: * This class should be used when user is reguest to enter IP address williamr@2: * williamr@2: * @since 2.1 williamr@2: */ williamr@2: williamr@2: NONSHARABLE_CLASS(CAknIpAddressQueryDialog) : public CAknQueryDialog williamr@2: { williamr@2: williamr@2: public: williamr@2: /** williamr@2: * Second phase construction williamr@2: * williamr@2: */ williamr@2: IMPORT_C static CAknIpAddressQueryDialog* NewL(TInetAddr& aInetAddr, const TTone& aTone = ENoTone); williamr@2: williamr@2: private: williamr@2: CAknIpAddressQueryDialog(TInetAddr& aInetAddr, const TTone& aTone = ENoTone); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * C++ Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAknIpAddressQueryDialog(); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * Set maximum and minimum addresses to editor. This override values given in resource. williamr@2: * only values inside the initial minimum and maximum are permitted williamr@2: * williamr@2: * @param aMinimumAddress Minimumm address williamr@2: * @param aMaximumAddress Maximum address. williamr@2: */ williamr@2: IMPORT_C void SetMinimumAndMaximum(const TInetAddr& aMinimumAddress, const TInetAddr& aMaximumAddress); williamr@2: williamr@2: /** williamr@2: * Allows dismissing of queries. williamr@2: * Clients can override this and implement something different. williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent); williamr@2: williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * @return pointer to query control or NULL williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual CAknQueryControl* QueryControl() const; williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From CEikdialog EIKON provides an implementation of this function, williamr@2: * which positions the dialog in the centre of the screen. williamr@2: * However, it can be overridden by derived classes.. williamr@2: * @param aSize The size for the dialog. williamr@2: */ williamr@2: IMPORT_C void SetSizeAndPosition(const TSize& aSize); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework just before the dialog is activated, but before it is sized, williamr@2: * and before PostLayoutDynInitL() is called. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework just before the dialog is activated, williamr@2: * after it has called PreLayoutDynInitL() and the dialog has been sized. williamr@2: */ williamr@2: IMPORT_C void PostLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * Set the prompt inside the query control. If dialog is active redo williamr@2: * layout and draw. williamr@2: */ williamr@2: IMPORT_C virtual void DoSetPromptL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: /** williamr@2: * If the query text is ok (retrieved form query control) then display the williamr@2: * left soft key, otherwise hide it. williamr@2: */ williamr@2: IMPORT_C void UpdateLeftSoftKeyL(); williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline TInetAddr& InetAddr() { return iInetAddr; } williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline const TInetAddr& InetAddr() const { return iInetAddr; } williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * data williamr@2: */ williamr@2: TInetAddr& iInetAddr; williamr@2: }; williamr@2: williamr@2: williamr@2: //--------------------------------- williamr@2: //class CAknFixedPointQueryDialog williamr@2: //--------------------------------- williamr@2: williamr@2: /** williamr@2: * This class should be used when user is reguest to enter IP address williamr@2: * williamr@2: * @since 2.1 williamr@2: */ williamr@2: williamr@2: NONSHARABLE_CLASS(CAknFixedPointQueryDialog) : public CAknQueryDialog williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Second phase construction williamr@2: * williamr@2: */ williamr@2: IMPORT_C static CAknFixedPointQueryDialog* NewL(TInt& aNumber, const TTone& aTone); williamr@2: williamr@2: private: williamr@2: CAknFixedPointQueryDialog(TInt& aNumber, const TTone& aTone = ENoTone); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * C++ Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAknFixedPointQueryDialog(); williamr@2: williamr@2: public: //new williamr@2: /** williamr@2: * Set maximum and minimum addresses to editor. This override values given in resource. williamr@2: * williamr@2: * @param aMinimumValue Minimumm value williamr@2: * @param aMaximumValue Maximum value. williamr@2: */ williamr@2: IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue); // only values inside the initial minimum and maximum are permitted williamr@2: williamr@2: IMPORT_C virtual TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent); williamr@2: williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Usage: williamr@2: * CAknExtQueryControl* control = STATIC_CAST(CAknExtQueryControl*,QueryControl()); williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual CAknQueryControl* QueryControl() const; williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From CEikdialog EIKON provides an implementation of this function, williamr@2: * which positions the dialog in the centre of the screen. williamr@2: * However, it can be overridden by derived classes.. williamr@2: * @param aSize The size for the dialog. williamr@2: */ williamr@2: IMPORT_C void SetSizeAndPosition(const TSize& aSize); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework just before the dialog is activated, but before it is sized, williamr@2: * and before PostLayoutDynInitL() is called. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework just before the dialog is activated, williamr@2: * after it has called PreLayoutDynInitL() and the dialog has been sized. williamr@2: */ williamr@2: IMPORT_C void PostLayoutDynInitL(); williamr@2: williamr@2: /** williamr@2: * Set the prompt inside the query control. If dialog is active redo williamr@2: * layout and draw. williamr@2: */ williamr@2: IMPORT_C virtual void DoSetPromptL(); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: /** williamr@2: * If the query text is ok (retrieved form query control) then display the williamr@2: * left soft key, otherwise hide it. williamr@2: */ williamr@2: IMPORT_C void UpdateLeftSoftKeyL(); williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline TInt& Number() { return iNumber; } williamr@2: williamr@2: /** williamr@2: * @return data williamr@2: */ williamr@2: inline const TInt& Number() const { return iNumber; } williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void CEikDialog_Reserved_1(); williamr@2: IMPORT_C virtual void CEikDialog_Reserved_2(); williamr@2: private: williamr@2: IMPORT_C virtual void CAknDialog_Reserved(); williamr@2: private: williamr@2: IMPORT_C virtual void CAknQueryDialog_Reserved(); williamr@2: private: williamr@2: TInt& iNumber; williamr@2: }; williamr@2: williamr@2: williamr@2: //-------------------------------------- williamr@2: //class CAknMultilineIpQueryDialog williamr@2: //-------------------------------------- williamr@2: williamr@2: /** williamr@2: * Query Dialog with data input on more than one line (2 lines at the moment) williamr@2: * williamr@2: * Create using NewL methods and passing parameters as appropriate. williamr@2: * williamr@2: * Attention: When deriving from this class, you must call SetDataL during williamr@2: * second phase construction. williamr@2: * williamr@2: * @since 2.1 williamr@2: * williamr@2: */ williamr@2: NONSHARABLE_CLASS(CAknMultiLineIpQueryDialog) : public CAknMultiLineDataQueryDialog williamr@2: { williamr@2: friend class CAknMultilineQueryDialogExtension; williamr@2: public: williamr@2: /** williamr@2: * Second phase construction williamr@2: * williamr@2: */ williamr@2: IMPORT_C static CAknMultiLineIpQueryDialog* NewL(TInetAddr& aAddress1, TInetAddr& aAddress2, TTone aTone = ENoTone); williamr@2: williamr@2: IMPORT_C virtual ~CAknMultiLineIpQueryDialog(); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * Set the query data for first and second line williamr@2: * Must be called by derived classes during second phase construction williamr@2: * (NewL method) williamr@2: */ williamr@2: template void SetDataL(T1& aData1, T2& aData2) williamr@2: { williamr@2: iFirstData = new (ELeave) TAknQueryData(aData1); williamr@2: iSecondData = new (ELeave) TAknQueryData(aData2); williamr@2: } williamr@2: williamr@2: /** williamr@2: * Utility function called by NewL methods - should really be private williamr@2: * but it is left here to show to people extending this class what williamr@2: * their NewL method should do williamr@2: */ williamr@2: template static CAknMultiLineIpQueryDialog* williamr@2: DoNewL(T1& aData1, T2& aData2, const TTone& aTone) williamr@2: { williamr@2: CAknMultiLineIpQueryDialog* self = new (ELeave) CAknMultiLineIpQueryDialog(aTone); williamr@2: CleanupStack::PushL(self); williamr@2: williamr@2: self->SetDataL(aData1,aData2); williamr@2: williamr@2: CleanupStack::Pop(self); williamr@2: return self; williamr@2: } williamr@2: williamr@2: private: williamr@2: CAknMultiLineIpQueryDialog(const TTone& aTone); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Set prompt text for query. This this will override text given in constructor. williamr@2: * williamr@2: * @param aFirstPrompt Text for prompt on the first query line williamr@2: * @param aSecondPrompt Text for prompt on the second query line williamr@2: */ williamr@2: IMPORT_C void SetPromptL(const TDesC& aFirstPrompt, const TDesC& aSecondPrompt); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Sets max length for the first editor in a query williamr@2: * @param aFirstTextEditorMaxLength Max length for editor williamr@2: */ williamr@2: IMPORT_C void SetMaxLengthOfFirstEditor(TInt aFirstTextEditorMaxLength); williamr@2: williamr@2: /** williamr@2: * Sets max length for the second editor in a query williamr@2: * @param aSecondTextEditorMaxLength Max length for editor williamr@2: */ williamr@2: IMPORT_C void SetMaxLengthOfSecondEditor(TInt aSecondTextEditorMaxLength); williamr@2: williamr@2: protected://from CEikDialog williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON framework williamr@2: * if the user activates a button in the button panel. williamr@2: * It is not called if the Cancel button is activated, williamr@2: * unless the EEikDialogFlagNotifyEsc flag is set. williamr@2: * @param aButtonId The ID of the button that was activated williamr@2: * @return Should return ETrue if the dialog should exit, and EFalse if it should not. williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TInt aButtonId); williamr@2: williamr@2: /** williamr@2: * From @c CEikdialog

williamr@2: * This function is called by the EIKON dialog framework just before the dialog is activated, but before it is sized, williamr@2: * and before PostLayoutDynInitL() is called. williamr@2: */ williamr@2: IMPORT_C void PreLayoutDynInitL(); williamr@2: williamr@2: IMPORT_C void HandleResourceChange(TInt aType); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * If the query text is ok (retrieved form query controls) then display the williamr@2: * left soft key, otherwise hide it. williamr@2: */ williamr@2: IMPORT_C void UpdateLeftSoftKeyL(); williamr@2: williamr@2: /** williamr@2: * Set the prompt inside the query control. If dialog is active redo williamr@2: * layout and draw. williamr@2: */ williamr@2: IMPORT_C void DoSetPromptL(); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * Called by OfferkeyEventL(), gives a change to dismiss the query even with williamr@2: * keys different than Enter of Ok. williamr@2: * williamr@2: * @param aKeyEvent Key event which will be checked williamr@2: * @return Should the query be dismissed williamr@2: */ williamr@2: IMPORT_C TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * Access to 1st query control williamr@2: * williamr@2: * @return Pointer to the control of the first line. williamr@2: */ williamr@2: IMPORT_C CAknExtMultilineQueryControl* FirstControl() const; williamr@2: williamr@2: /** williamr@2: * Access to 2nd query control williamr@2: * williamr@2: * @return Pointer to the control of the second line. williamr@2: */ williamr@2: IMPORT_C CAknExtMultilineQueryControl* SecondControl() const; williamr@2: williamr@2: /** williamr@2: * Not implemented. williamr@2: * williamr@2: * @return NULL. williamr@2: */ williamr@2: IMPORT_C CAknQueryControl* QueryControl() const; williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * Prompt access for derived classes williamr@2: */ williamr@2: IMPORT_C TPtrC SecondPrompt() const; williamr@2: williamr@2: private: williamr@2: void HandleOrientationSwitch(); williamr@2: TBool FirstLineEnabled() const; williamr@2: TBool SecondLineEnabled() const; williamr@2: TInt CurrentLine() const; williamr@2: williamr@2: private: williamr@2: TDesC* iSecondPrompt; williamr@2: williamr@2: MAknQueryData* iFirstData; williamr@2: MAknQueryData* iSecondData; williamr@2: williamr@2: TInt iFirstEditorMaxLength; williamr@2: TInt iSecondEditorMaxLength; williamr@2: williamr@2: private: williamr@2: TDes16* iText; williamr@2: TDes16* iSecondText; williamr@2: }; williamr@2: williamr@2: #endif // AKNQUERYDIALOG_H