epoc32/include/mw/aknquerydialog.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 /*
     2 * Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description:  Implementation of query dialogs.
    15 *
    16 */
    17 
    18 
    19 #ifndef AKNQUERYDIALOG_H
    20 #define AKNQUERYDIALOG_H
    21 
    22 //  INCLUDES
    23 #include <eikdialg.h>
    24 #include <AknForm.h>
    25 #include <eiklbx.h>
    26 #include <eiktxlbx.h>
    27 #include <eikcmobs.h>
    28 #include <aknpopuplayout.h>
    29 #include <aknintermediate.h>
    30 #include <aknQueryControl.h>
    31 #include <aknpopuplayout.h>
    32 #include <aknmultilinequerycontrol.h>
    33 #include <aknlistquerycontrol.h>
    34 #include <aknintermediate.h>
    35 #include <aknquerydata.h>
    36 #include <avkon.hrh>
    37 
    38 class CAknKeySoundSystem;
    39 class TInetAddr;
    40 class CAknQueryDialogExtension;
    41 class CAknMultilineQueryDialogExtension;
    42 
    43 /**
    44  * General query dialog
    45  *
    46  * Use for confirmation queries
    47  */
    48 class CAknQueryDialog : public CAknDialog , public MAknQueryControlObserver
    49     {
    50     friend class CAknQueryDialogExtension;
    51     public:
    52 
    53         /**
    54          * Enumeration for tones.
    55          *
    56          * The tone played before the dialog is shown. Application specific
    57          * tones may be played by casting the application defined Sound ID
    58          * (SID), to @c TTone
    59          **/
    60       enum TTone {
    61 
    62         /**
    63          * No tone is played
    64         */
    65         ENoTone = 0,
    66 
    67         /**
    68          * A confirmation tone is played.
    69         */
    70         EConfirmationTone = EAvkonSIDConfirmationTone,
    71 
    72         /**
    73          * A warning tone is played.
    74         */
    75         EWarningTone = EAvkonSIDWarningTone,
    76 
    77         /**
    78          * An error tone is played.
    79         */
    80         EErrorTone = EAvkonSIDErrorTone
    81         };
    82 
    83     public:
    84 
    85         /**
    86          * Second phase construction required to align with multiline queries API
    87          * In future might use MAknQueryData mixin in the base class, hence requiring
    88          * second phase construction.
    89          *
    90          * @return pointer to CAknQueryDialog
    91         */
    92         IMPORT_C static CAknQueryDialog* NewL(const TTone& aTone = ENoTone);
    93 
    94         /**
    95          *
    96          * @return pointer to CAknTextQueryDialog
    97         */
    98         IMPORT_C static CAknQueryDialog* NewL(TDes& aText, const TTone& aTone = ENoTone);
    99 
   100         /**
   101          *
   102          * @return pointer to CAknNumberQueryDialog
   103         */
   104         IMPORT_C static CAknQueryDialog* NewL(TInt& aNumber, const TTone& aTone = ENoTone);
   105 
   106         /**
   107          *
   108          * @return pointer to CAknTimeQueryDialog
   109         */
   110         IMPORT_C static CAknQueryDialog* NewL(TTime& aTime, const TTone& aTone = ENoTone);
   111 
   112         /**
   113          *
   114          * @return pointer to CAknDurationQueryDialog
   115         */
   116         IMPORT_C static CAknQueryDialog* NewL(TTimeIntervalSeconds& aTime, const TTone& aTone = ENoTone);
   117 
   118         /**
   119          *
   120          * @return pointer to CAknFloatQueryDialog
   121         */
   122         IMPORT_C static CAknQueryDialog* NewL(TReal& aNumber, const TTone& aTone = ENoTone);
   123 
   124         /**
   125          *
   126          * @return pointer to CAknIpQueryDialog
   127         */
   128         IMPORT_C static CAknQueryDialog* NewL(TInetAddr& aInetAddr, const TTone& aTone = ENoTone);
   129 
   130         /**
   131          * Not yet totally implemented!
   132          *
   133          * @return pointer to CAknLocationQueryDialog
   134         */
   135         IMPORT_C static CAknQueryDialog* NewL(TPosition &aValue, const TTone &aTone = ENoTone);
   136 
   137     public:
   138         IMPORT_C virtual ~CAknQueryDialog();
   139 
   140         /**
   141          * Construction
   142          *
   143          * @deprecated: will be made protected - use NewL
   144         */
   145         IMPORT_C CAknQueryDialog(const TTone& aTone);
   146 
   147     public:
   148 
   149         /**
   150          * Return pointer to query heading or NULL
   151          *
   152         */
   153         IMPORT_C virtual CAknPopupHeadingPane* QueryHeading() const;
   154 
   155         /**
   156          * Deprecated method to return pointer to query heading or NULL (use QueryHeading())
   157          *
   158          * @deprecated - will be removed (use QueryHeading() method instead)
   159         */
   160         IMPORT_C CAknPopupHeadingPane* Heading() const;
   161 
   162         /**
   163          * Set prompt text for query. This this will override text given in constructor.
   164          *
   165          * @param aPrompt  Text for prompt
   166         */
   167         IMPORT_C void SetPromptL(const TDesC& aPrompt);
   168 
   169         /**
   170          * Set visibility of the left softkey. Softkey is hidden when data in the query is not acceptable.
   171          * @param aVisible EFalse hides softkey label, ETrue shows it.
   172         */
   173         IMPORT_C void MakeLeftSoftkeyVisible(TBool aVisible);
   174 
   175         /**
   176          * Enable or disable emergency call support.  This method is only valid in
   177          * numeric queries (secret or normal).
   178          *
   179          * Default is Off for both.
   180          *
   181          * @param aOnOff    Sets emergency call support active or inactive, if feature is available in
   182          *                  current type of control
   183          */
   184         IMPORT_C void SetEmergencyCallSupport( TBool aOnOff );
   185 
   186         /**
   187          * Removes the editor indicators for this dialog.
   188          * Used to ensure this dialog does not own any editor indicators.
   189          * before opening another dialog which outlasts this one.
   190         */
   191         IMPORT_C void RemoveEditorIndicator();
   192 
   193         /**
   194          * This method can be used to set predictive text entry permitted.  The default
   195          * Query behaviour is to supress predictive entry (over-riding editor resource
   196          * flags that may indicate otherwise.
   197          *
   198          * This may be called at any time prior to activation of the query.
   199          *
   200          * @param aPermitted    ETrue - allow predictive text entry
   201          *
   202          */
   203         IMPORT_C void SetPredictiveTextInputPermitted( TBool aPermitted );
   204 
   205         /**
   206          * Runs the querydialog and returns the ID of the button used to dismiss it.
   207          * The dialog is destroyed on exit.
   208          *
   209         */
   210         IMPORT_C TInt RunLD();
   211 
   212         /**
   213          * Call PrepareLC and display dialog.
   214          *
   215          * Identical to version in CEikDialog but need to override
   216          * this because of version with prompt,
   217          * compiler will complain if this is not implemented in
   218          * derived class as well
   219          *
   220          * @param aResourceId    resource for query
   221         */
   222         IMPORT_C TInt ExecuteLD(TInt aResourceId);
   223 
   224         /**
   225          * Call PrepareLC and display dialog.
   226          *
   227          * @param aResourceId    resource for query
   228          * @param aPrompt    text for query prompt
   229         */
   230         IMPORT_C TInt ExecuteLD(TInt aResourceId, const TDesC& aPrompt);
   231 
   232     public:// from CCoeControl
   233 
   234         /**
   235          * From @c CCoeControl<p>
   236          * Handle key events. When a key event occurs,
   237          * until one of them returns EKeyWasConsumed to indicate that it processed the key event.
   238          * CONE calls this function for each control on the control stack,
   239          * @param aKeyEvent  The key event.
   240          * @param aType      The type of the event: EEventKey, EEventKeyUp or EEventKeyDown.
   241          * @return           Indicates whether or not the key event was used by this control.
   242         */
   243         IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
   244 
   245         /**
   246          * Handles pointer events
   247         */
   248         IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
   249 
   250     public:
   251 
   252         /**
   253          * Return the maximum possible length of the query text
   254          * This is (in order of precedence, and assuming they are valid
   255          * i.e. less than or equal to the length of the descriptor passed to
   256          * return the value) dependent on:<p>
   257          * 1) aApiValue<p>
   258          * 2) Resource set value held in aControl<p>
   259          * 3) The MaxLength of the descriptor
   260          * @return maximum text length
   261         */
   262         IMPORT_C static TInt MaxTextLength(const CAknQueryControl* aControl, const TDes& aDataText, TInt aApiValue) ;
   263 
   264     protected://from CEikdialog
   265 
   266         /**
   267          * From @c CEikdialog<p>
   268          * EIKON provides an implementation of this function,
   269          * which positions the dialog in the centre of the screen.
   270          * However, it can be overridden by derived classes.
   271          * @param aSize      The size for the dialog.
   272         */
   273         IMPORT_C void SetSizeAndPosition(const TSize& aSize);
   274 
   275         /**
   276          * From @c CEikdialog<p>
   277          * This function is called by the EIKON dialog framework just before the dialog is activated, but before it is sized,
   278          * and before PostLayoutDynInitL() is called.
   279         */
   280         IMPORT_C void PreLayoutDynInitL(void);
   281 
   282         /**
   283          * From @c CEikdialog<p>
   284          * This function is called by the EIKON dialog framework just before the dialog is activated,
   285          * after it has called PreLayoutDynInitL() and the dialog has been sized.
   286         */
   287         IMPORT_C void PostLayoutDynInitL();
   288 
   289         /**
   290          * From @c CEikdialog<p>
   291          * This function is called by the EIKON framework
   292          * if the user activates a button in the button panel.
   293          * It is not called if the Cancel button is activated,
   294          * unless the EEikDialogFlagNotifyEsc flag is set.
   295          * @param aButtonId  The ID of the button that was activated
   296          * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
   297         */
   298         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
   299 
   300     public://from MAknQueryControlObeserver
   301 
   302         /**
   303         * From @c MAknQueryControlObserver<p>
   304         * Gets called when editor sends size event.
   305         * @param aQueryControl  Pointer to query control which sent the event
   306         * @param aEventType     Type of the event
   307         */
   308         IMPORT_C TBool HandleQueryEditorSizeEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType);
   309 
   310         /**
   311         * From @c MAknQueryControlObserver<p>
   312         * Gets called when editor sends state event
   313         * @param aQueryControl  Pointer to query control which sent the event
   314         * @param aEventType     Type of the event
   315         * @param aStatus        Editor validation status
   316         */
   317         IMPORT_C TBool HandleQueryEditorStateEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType, TQueryValidationStatus aStatus);
   318 
   319         /**
   320         * Called by OfferkeyEventL(), gives a change to dismiss the query even with
   321         * keys different than Enter of Ok.
   322         */
   323         IMPORT_C virtual TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);
   324 
   325         /**
   326         * Called by NeedToDismissQueryL(), gives a change to either accept or reject
   327         * the query. Default implementation is to accept the query if the Left soft
   328         * key is displayed and reject it otherwise. Left softkey is only displayed if
   329         * the query has valid data into it.
   330         */
   331         IMPORT_C virtual void DismissQueryL();
   332 
   333     protected:
   334 
   335         /**
   336         * If the query text is ok (retrieved form query control) then display the
   337         * left soft key, otherwise hide it.
   338         */
   339         IMPORT_C virtual void  UpdateLeftSoftKeyL();
   340 
   341         /**
   342         * Set the prompt inside the query control. If dialog is active redo
   343         * layout and draw.
   344         */
   345         IMPORT_C virtual void DoSetPromptL();
   346 
   347         /**
   348         * Return pointer to query control or NULL
   349         *
   350         */
   351         IMPORT_C virtual CAknQueryControl* QueryControl() const;
   352 
   353     protected: //implementation, intended to be used but not overwritten
   354 
   355         /**
   356         * Plays tone
   357         */
   358         void  PlayTone();
   359 
   360         /**
   361         * Resets system's inactivity timer
   362         */
   363         void  ReportUserActivity() const ;
   364 
   365         /**
   366         * Recreates layout and redraws the dialog
   367         */
   368         void  LayoutAndDraw();
   369 
   370         /**
   371         * Returns left CBA short key press
   372         * @return Id of the left CBA
   373         */
   374         TInt  GetLeftCBAShortKeyPress();
   375 
   376         /**
   377         * Returns right CBA short key press
   378         * @return Id of the right CBA
   379         */
   380         TInt  GetRightCBAShortKeyPress();
   381 
   382         /**
   383         * Returns whether the left softkey is visible
   384         * @return ETrue is the left softkey is visible
   385         */
   386         TBool IsLeftSoftkeyVisible();
   387 
   388     protected:
   389 
   390         /**
   391          * Prompt access for derived classes
   392          */
   393         IMPORT_C TPtrC Prompt() const;
   394 
   395         /**
   396          * @return query tone
   397         */
   398         TTone& Tone() { return iTone; }
   399 
   400         /**
   401          * @return query tone
   402         */
   403         const TTone& Tone() const { return iTone; }
   404 
   405         /**
   406          * @return query flags
   407         */
   408         TBitFlags16& Flags() { return iFlags; }
   409 
   410         /**
   411          * @return query flags
   412         */
   413         const TBitFlags16& Flags() const { return iFlags; }
   414 
   415         /**
   416          * @return query sound system
   417         */
   418         CAknKeySoundSystem* SoundSystem() const { return iSoundSystem; }
   419 
   420     protected: // collected code for accessing Dialog state.
   421 
   422         /**
   423          * To be used to go through every control in the dialog, on every page,
   424          * in Dialog-internal storage order, until a control with that type is found.
   425          * If such a control is not found, a null pointer will be returned.
   426          * @param aControlType - Enum used to identify the control type on that CEikCaptionedControl Line
   427          * @param aLineIndex - Optional argument, if used contains reference to an int which holds the initial
   428          *       line to start searching on, and on finding a control of that type, is
   429          *       assigned the next position to start searching.
   430          * @param aPageIndex - Optional argument, if used contains reference to an int which holds the initial
   431          *       dialog page to start searching on, and on finding a control of that type, is
   432          *       assigned the page that the control was found on.
   433          *
   434         */
   435         CCoeControl* FindControlOnAnyPageWithControlType(TInt aControlType, TInt* aLineIndex=0, TInt* aPageIndex=0) const;
   436 
   437     protected:
   438 
   439         /**
   440          * Tone which is played when the query is executed
   441          * These will be made private, use protected methods
   442          *
   443          * @deprecated.
   444         */
   445         TTone  iTone;
   446 
   447         /** Prompt text*/
   448         TDesC *iPrompt;
   449 
   450         /** Caption Retriever*/
   451         CAknQueryDialogExtension* iExtension;
   452 
   453         /**
   454         * Flags for emergency call support
   455         * Need these at least to store the ECS state until the control exists
   456         */
   457         TBitFlags16 iFlags;
   458 
   459         /** Spare variable for further development */
   460         TInt iSpare_1;
   461 
   462         /** Sound system*/
   463         CAknKeySoundSystem* iSoundSystem;
   464 
   465     public:
   466 
   467         /**
   468          * @deprecated do not use
   469          */
   470         IMPORT_C CAknQueryDialog();
   471 
   472         /**
   473          * @deprecated do not use
   474         */
   475         IMPORT_C CAknQueryDialog(TDesC& aPrompt,const TTone& aTone = ENoTone);
   476 
   477         /**
   478          * @deprecated - use QueryHeading() method instead
   479          */
   480         IMPORT_C void SetHeaderTextL(const TDesC& aHeader);
   481 
   482         /**
   483          * @deprecated - use QueryHeading() method instead
   484          */
   485         IMPORT_C void SetHeaderImageL(CEikImage* aImage);
   486 
   487         /**
   488          * @deprecated - use RunLD or ExecuteLD instead
   489          */
   490         IMPORT_C TInt RunDlgLD(TInt aResourceId);
   491 
   492         /**
   493          * @deprecated - use other version of MaxTextLength
   494          */
   495         IMPORT_C static TInt MaxTextLength(const CAknQueryControl* aControl, const TDes* aDataText, TInt aApiValue);
   496 
   497     private:
   498         //From CAknControl
   499         IMPORT_C void* ExtensionInterface( TUid aInterface );
   500 
   501     private:
   502         IMPORT_C virtual void CEikDialog_Reserved_1();
   503         IMPORT_C virtual void CEikDialog_Reserved_2();
   504 
   505     private:
   506         IMPORT_C virtual void CAknDialog_Reserved();
   507 
   508     private:// new function
   509         IMPORT_C virtual void CAknQueryDialog_Reserved();
   510     
   511     public:        
   512         /**       
   513          * From CCoeControl.       
   514          * Gets the control's input capabilities.       
   515          *       
   516          * @return The control's input capabilities.       
   517          */          
   518         IMPORT_C TCoeInputCapabilities InputCapabilities() const;
   519         
   520         /**
   521          * Enable or disable support to change the CBA labels of the query
   522          * according to the current ECS state. It's necessary to enable this
   523          * alongside with ECS for touch and full screen queries.
   524          *  
   525          * Note that if enabling this, then it's not necessary to call  
   526          * @c SetEmergencyCallSupport( ETrue ) additionally, as when
   527          * enabling this, @c CAknQueryControl::EEmergencyCallsEnabledByAPI
   528          * will also be set. To enable the ECS via this method, it must
   529          * be called prior to @c PreLayoutDynamicInitL.
   530          * 
   531          * If this is enabled for CAknQueryDialog-derived classes, then
   532          * the @c OkToExitL implementation of those should forward the
   533          * @c EAknSoftkeyEmergencyCall events to the base class' OkToExitL
   534          * for the emergency call event to be handled. 
   535          * 
   536          * This method is only valid in numeric queries (secret or normal),
   537          * default is Off for both.
   538          *
   539          * @param  aOnOff  @c ETrue to enable the ECS CBA support,
   540          *                 @c EFalse otherwise.
   541          */
   542         IMPORT_C void SetEmergencyCallSupportForCBA( TBool aOnOff );
   543 
   544     };
   545 
   546 //-------------------------------------
   547 //class CAknTextQuerydialog
   548 //-------------------------------------
   549 
   550 //Deprecated
   551 #define CAknStaticSizeDataQuerydialog CAknTextQueryDialog
   552 
   553 /**
   554 *This class should be used when user is reguest to enter plain text, secret text, phonenumber or PIN-code
   555 */
   556 class CAknTextQueryDialog : public CAknQueryDialog
   557     {
   558 
   559     public://construction and destruction
   560 
   561         /**
   562          * Second phase construction required to align API with multiline queries
   563          * and because in future MAknQueryData will be used.
   564         */
   565         IMPORT_C static CAknTextQueryDialog* NewL(TDes& aDataText, const TTone& aTone = ENoTone);
   566 
   567     public:
   568 
   569         /**
   570          * C++ Constructor.
   571          *
   572         */
   573         IMPORT_C CAknTextQueryDialog(TDes& aDataText, const TTone& aTone = ENoTone);
   574 
   575         /**
   576          * C++ Destructor.
   577          */
   578         IMPORT_C virtual ~CAknTextQueryDialog();
   579 
   580     public://New functions
   581 
   582         /**
   583         * Set max lenght for editor. This overrides the max lenght given in resource.
   584         *
   585         * @param aLength    Max lenght.
   586         */
   587         IMPORT_C void SetMaxLength(TInt aLength);
   588 
   589         /**
   590         * Return true if the length of the text is bigger
   591         * than zero and if there
   592         * is at least a character which is not a space
   593         */
   594         IMPORT_C  virtual TBool CheckIfEntryTextOk() const;
   595 
   596         /**
   597         * Changes default input mode of a secret editor. By default input mode
   598         * in secret editor is alpha input mode (EAknEditorSecretAlphaInputMode
   599         * from uikon.hrh). By using this method the default input mode can be
   600         * changed to numeric input mode (EAknEditorNumericInputMode).
   601         *
   602         * @since 2.1
   603         * @param aInputMode Default input mode in the secret editor.
   604         *   Only EAknEditorNumericInputMode and EAknEditorSecretAlphaInputMode
   605         *   are supported.
   606         */
   607         IMPORT_C void SetDefaultInputMode(TInt aInputMode);
   608 
   609     protected://from CEikDialog
   610 
   611         /**
   612         * From @c CEikdialog<p>
   613         * This function is called by the EIKON dialog framework
   614         * just before the dialog is activated, after it has called
   615         * PreLayoutDynInitL() and the dialog has been sized.
   616         */
   617         IMPORT_C void PreLayoutDynInitL();
   618 
   619         /**
   620         * From @c CEikdialog<p>
   621         * This function is called by the EIKON framework
   622         * if the user activates a button in the button panel.
   623         * It is not called if the Cancel button is activated,
   624         * unless the EEikDialogFlagNotifyEsc flag is set.
   625         * @param aButtonId  The ID of the button that was activated
   626         * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
   627         */
   628         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
   629 
   630     public://from MAknQueryControlObserver
   631 
   632         /**
   633         * From @c MAknQueryControlObserver<p>
   634         * Gets called when editor sends size event
   635         * @param aQueryControl  Pointer to query control which sent the event
   636         * @param aEventType     Type of the event
   637         */
   638         IMPORT_C TBool HandleQueryEditorSizeEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType);
   639 
   640     public://from CCoeControl
   641 
   642         /**
   643         * Handles pointer events
   644         */
   645         IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
   646 
   647     protected:
   648 
   649         /**
   650         * Called by PreLayoutDynInit(), set the control observer, the text and
   651         * the maximum length of the text
   652         */
   653         void SetControlTextL();
   654 
   655         /**
   656          * @return data
   657         */
   658         inline TDes& Text() { return iDataText; }
   659 
   660         /**
   661          * @return data
   662         */
   663         inline const TDesC& Text() const { return iDataText; }
   664 
   665     protected:
   666 
   667         /**
   668          * Max length for text
   669          *
   670          * @deprecated
   671          * This data will become private
   672          * Use Text() and MaxTextLength() instead
   673          */
   674         TInt  iTextMaxLength;
   675 
   676         /**
   677          * Text for editor. When query is approved text from editor is stored here
   678          */
   679         TDes& iDataText;
   680 
   681         /** @deprecated - not used anymore */
   682         TBool iEditorTextOk;
   683 
   684     public:
   685 
   686         /**
   687         * deprecated do not use
   688         */
   689         IMPORT_C CAknTextQueryDialog(TDes& aDataText, TDesC& aPrompt,const TTone& aTone = ENoTone);
   690 
   691     private:
   692         /**
   693         * From CAknControl
   694         */
   695         IMPORT_C void* ExtensionInterface( TUid aInterface );
   696 
   697     private:
   698         IMPORT_C virtual void CEikDialog_Reserved_1();
   699         IMPORT_C virtual void CEikDialog_Reserved_2();
   700 
   701     private:
   702         IMPORT_C virtual void CAknDialog_Reserved();
   703 
   704     private:
   705         IMPORT_C virtual void CAknQueryDialog_Reserved();
   706 
   707     private: // Data
   708         TInt iSpare;
   709     };
   710 
   711 //---------------------------------
   712 //class CAknNumberQuerydialog
   713 //---------------------------------
   714 
   715 /**
   716 *This class should be used when user is reguest to enter number
   717 */
   718 class CAknNumberQueryDialog : public CAknQueryDialog
   719     {
   720 
   721     public:
   722 
   723         /**
   724          * Second phase construction required to align API with multiline queries
   725          * and because in future MAknQueryData will be used.
   726         */
   727         IMPORT_C static CAknNumberQueryDialog* NewL(TInt& aNumber, const TTone& aTone = ENoTone);
   728 
   729     public:
   730 
   731         /**
   732          * C++ Constructor.
   733          */
   734         IMPORT_C CAknNumberQueryDialog(TInt& aNumber, const TTone& aTone = ENoTone);
   735 
   736         /**
   737          * C++ Destructor.
   738          */
   739         IMPORT_C virtual ~CAknNumberQueryDialog();
   740 
   741     public:
   742 
   743         /**
   744         * Set maximum and minimum to editor. This override values given in resource.
   745         *
   746         * @param aMinimumValue    Minimumm number
   747         * @param aMaximumValue    Maximum number.
   748         */
   749         IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue); // only values inside the initial minimum and maximum are permitted
   750 
   751     public://from CCoeControl
   752 
   753        /**
   754         * Handles pointer events
   755         */
   756         IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
   757 
   758     protected://from CEikDialog
   759 
   760         /**
   761         * From @c CEikdialog<p>
   762         * This function is called by the EIKON dialog framework
   763         * just before the dialog is activated, after it has called
   764         * PreLayoutDynInitL() and the dialog has been sized.
   765         */
   766         IMPORT_C void PreLayoutDynInitL();
   767 
   768         /**
   769         * From @c CEikdialog<p>
   770         * This function is called by the EIKON framework
   771         * if the user activates a button in the button panel.
   772         * It is not called if the Cancel button is activated,
   773         * unless the EEikDialogFlagNotifyEsc flag is set.
   774         * @param aButtonId  The ID of the button that was activated
   775         * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
   776         */
   777         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
   778 
   779         /**
   780          * @return data
   781         */
   782         inline TInt& Number() { return iNumber; }
   783 
   784         /**
   785          * @return data
   786         */
   787         inline const TInt& Number() const { return iNumber; }
   788 
   789     private:
   790         /**
   791         * From CAknControl
   792         */
   793         IMPORT_C void* ExtensionInterface( TUid aInterface );
   794 
   795     private:
   796         IMPORT_C virtual void CEikDialog_Reserved_1();
   797         IMPORT_C virtual void CEikDialog_Reserved_2();
   798 
   799     private:
   800         IMPORT_C virtual void CAknDialog_Reserved();
   801 
   802     private:
   803         IMPORT_C virtual void CAknQueryDialog_Reserved();
   804 
   805     protected:
   806 
   807         /**
   808          * @deprecated - will become private - use Number() instead
   809          */
   810          TInt& iNumber;
   811 
   812     private: // Data
   813         TInt iSpare;
   814     };
   815 
   816 //-------------------------------------
   817 //class CAknTimeQueryDialog
   818 //-------------------------------------
   819 
   820 /**
   821 *This class should be used when user is reguest to enter time or date
   822 */
   823 class CAknTimeQueryDialog : public CAknQueryDialog
   824     {
   825 
   826     public:
   827 
   828         /**
   829          * Second phase construction required to align API with multiline queries
   830          * and because in future MAknQueryData will be used.
   831         */
   832         IMPORT_C static CAknTimeQueryDialog* NewL(TTime& aTime, const TTone& aTone = ENoTone);
   833 
   834     public:
   835 
   836         /**
   837          * C++ Constructor
   838          */
   839         IMPORT_C CAknTimeQueryDialog(TTime& aTime, const TTone& aTone = ENoTone);
   840 
   841         /**
   842          * C++ Destructor.
   843          */
   844         IMPORT_C virtual ~CAknTimeQueryDialog();
   845 
   846     public://New functions
   847 
   848         /**
   849         * Set maximum and minimum times to editor. This override values given in resource.
   850         * Only values inside the initial minimum and maximum are permitted
   851         *
   852         * @param aMinimum    Minimumm time
   853         * @param aMaximum    Maximum time.
   854         */
   855         IMPORT_C void SetMinimumAndMaximum(const TTime& aMinimum, const TTime& aMaximum);
   856 
   857     public://From CCoeControl
   858 
   859         /**
   860         * Handles pointer events
   861         */
   862         IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
   863 
   864     protected://from CEikDialog
   865 
   866         /**
   867         * From @c CEikdialog<p>
   868         * This function is called by the EIKON dialog framework
   869         * just before the dialog is activated, after it has called
   870         * PreLayoutDynInitL() and the dialog has been sized.
   871         */
   872         IMPORT_C void PreLayoutDynInitL();
   873 
   874         /**
   875         * From @c CEikdialog<p>
   876         * This function is called by the EIKON framework
   877         * if the user activates a button in the button panel.
   878         * It is not called if the Cancel button is activated,
   879         * unless the EEikDialogFlagNotifyEsc flag is set.
   880         * @param aButtonId  The ID of the button that was activated
   881         * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
   882         */
   883         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
   884 
   885         /**
   886          * @return data
   887         */
   888         inline TTime& Time() { return iTime; }
   889 
   890         /**
   891          * @return data
   892         */
   893         inline const TTime& Time() const { return iTime; }
   894 
   895     protected:
   896 
   897         /**
   898          * @deprecated - will become private - use Time() instead
   899          */
   900         TTime& iTime;
   901 
   902     public:
   903 
   904         /**
   905         * deprecated - do not use
   906         */
   907         IMPORT_C CAknTimeQueryDialog(TTime& aTime,TDesC& aPrompt,const TTone& aTone = ENoTone);
   908 
   909     private:
   910         /**
   911         * From CAknControl
   912         */
   913         IMPORT_C void* ExtensionInterface( TUid aInterface );
   914 
   915     private:
   916         IMPORT_C virtual void CEikDialog_Reserved_1();
   917         IMPORT_C virtual void CEikDialog_Reserved_2();
   918 
   919     private:
   920         IMPORT_C virtual void CAknDialog_Reserved();
   921 
   922     private:
   923         IMPORT_C virtual void CAknQueryDialog_Reserved();
   924 
   925     private: // Data
   926         TInt iSpare;
   927     };
   928 
   929 //----------------------------------
   930 //class CAknDurationQuerydialog
   931 //----------------------------------
   932 
   933 /**
   934 *This class should be used when user is reguest to enter duration
   935 */
   936 class CAknDurationQueryDialog : public CAknQueryDialog
   937     {
   938 
   939     public:
   940 
   941         /**
   942          * Second phase construction required to align API with multiline queries
   943          * and because in future MAknQueryData will be used.
   944         */
   945         IMPORT_C static CAknDurationQueryDialog* NewL(TTimeIntervalSeconds& aTime, const TTone& aTone = ENoTone);
   946 
   947     public:
   948 
   949         /**
   950          * - deprecated (use NewL instead)
   951          */
   952         IMPORT_C CAknDurationQueryDialog(TTimeIntervalSeconds& aDuration, const TTone& aTone = ENoTone);
   953 
   954         /**
   955          * C++ Destructor.
   956          */
   957         IMPORT_C virtual ~CAknDurationQueryDialog();
   958 
   959     public://new
   960 
   961         /**
   962         * Set maximum and minimum durations to editor. This override values given in resource.
   963         * Only values inside the initial minimum and maximum are permitted.
   964         *
   965         * @param aMinimumDuration   Minimumm duration
   966         * @param aMaximumDuration   Maximum duration.
   967         */
   968         IMPORT_C void SetMinimumAndMaximum(const TTimeIntervalSeconds& aMinimumDuration, const TTimeIntervalSeconds& aMaximumDuration);
   969 
   970     public: // From CCoeControl
   971 
   972         /**
   973         * Handles pointer events
   974         */
   975         IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
   976 
   977     protected://from CEikDialog
   978 
   979         /**
   980         * From @c CEikdialog<p>
   981         * This function is called by the EIKON dialog framework
   982         * just before the dialog is activated, after it has called
   983         * PreLayoutDynInitL() and the dialog has been sized.
   984         */
   985         IMPORT_C void PreLayoutDynInitL();
   986 
   987         /**
   988          * From @c CEikdialog<p>
   989          * This function is called by the EIKON framework
   990          * if the user activates a button in the button panel.
   991          * It is not called if the Cancel button is activated,
   992          * unless the EEikDialogFlagNotifyEsc flag is set.
   993          * @param aButtonId  The ID of the button that was activated
   994          * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
   995         */
   996         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
   997 
   998         /**
   999          * @return data
  1000         */
  1001         inline TTimeIntervalSeconds& Duration() { return iDuration; }
  1002 
  1003         /**
  1004          * @return data
  1005         */
  1006         inline const TTimeIntervalSeconds& Duration() const { return iDuration; }
  1007 
  1008     private:
  1009         /**
  1010         * From CAknControl
  1011         */
  1012         IMPORT_C void* ExtensionInterface( TUid aInterface );
  1013 
  1014     private:
  1015         IMPORT_C virtual void CEikDialog_Reserved_1();
  1016         IMPORT_C virtual void CEikDialog_Reserved_2();
  1017 
  1018     private:
  1019         IMPORT_C virtual void CAknDialog_Reserved();
  1020 
  1021     private:
  1022         IMPORT_C virtual void CAknQueryDialog_Reserved();
  1023 
  1024     protected:
  1025         /**
  1026          * @deprecated - will become private. Use Duration() instead.
  1027          */
  1028          TTimeIntervalSeconds& iDuration;
  1029 
  1030     private: // Data
  1031         TInt iSpare;
  1032     };
  1033 
  1034 //----------------------------------
  1035 //class CAknFloatingPointQueryDialog
  1036 //----------------------------------
  1037 
  1038 /**
  1039 *This class should be used when user is reguest to enter a flotaing point number
  1040 */
  1041 class CAknFloatingPointQueryDialog : public CAknQueryDialog
  1042     {
  1043 
  1044     public:
  1045         /**
  1046          * Second phase construction required to align API with multiline queries
  1047          * and because in future MAknQueryData will be used.
  1048         */
  1049         IMPORT_C static CAknFloatingPointQueryDialog* NewL(TReal& aNumber, const TTone& aTone = ENoTone);
  1050 
  1051     public:
  1052         /**
  1053          * deprecated (use NewL instead)
  1054          */
  1055         IMPORT_C CAknFloatingPointQueryDialog(TReal& aNumber, const TTone& aTone = ENoTone);
  1056 
  1057         /**
  1058          * C++ Destructor.
  1059          */
  1060         IMPORT_C virtual ~CAknFloatingPointQueryDialog();
  1061 
  1062     public:
  1063         /**
  1064         * Set maximum and minimum durations to editor. This override values given in resource.
  1065         * only values inside the initial minimum and maximum are permitted
  1066         *
  1067         * @param aMinimumNumber   Minimumm duration
  1068         * @param aMaximumNumber   Maximum duration.
  1069         */
  1070         IMPORT_C void SetMinimumAndMaximum(const TReal& aMinimumNumber, const TReal& aMaximumNumber);
  1071 
  1072     public://From CCoeControl
  1073 
  1074        /**
  1075         * Handles pointer events
  1076         */
  1077         IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
  1078 
  1079     protected://from CEikDialog
  1080 
  1081         /**
  1082         * From @c CEikdialog<p>
  1083         * This function is called by the EIKON dialog framework
  1084         * just before the dialog is activated, after it has called
  1085         * PreLayoutDynInitL() and the dialog has been sized.
  1086         */
  1087         IMPORT_C void PreLayoutDynInitL();
  1088 
  1089         /**
  1090          * From @c CEikdialog<p>
  1091          * This function is called by the EIKON framework
  1092          * if the user activates a button in the button panel.
  1093          * It is not called if the Cancel button is activated,
  1094          * unless the EEikDialogFlagNotifyEsc flag is set.
  1095          * @param aButtonId  The ID of the button that was activated
  1096          * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
  1097         */
  1098         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
  1099 
  1100         /**
  1101          * @return data
  1102         */
  1103         inline TReal& Number() { return iNumber; }
  1104 
  1105         /**
  1106          * @return data
  1107         */
  1108         inline const TReal& Number() const { return iNumber; }
  1109 
  1110     private:
  1111         /**
  1112         * From CAknControl
  1113         */
  1114         IMPORT_C void* ExtensionInterface( TUid aInterface );
  1115 
  1116     private:
  1117         IMPORT_C virtual void CEikDialog_Reserved_1();
  1118         IMPORT_C virtual void CEikDialog_Reserved_2();
  1119 
  1120     private:
  1121         IMPORT_C virtual void CAknDialog_Reserved();
  1122 
  1123     private:
  1124         IMPORT_C virtual void CAknQueryDialog_Reserved();
  1125 
  1126     protected:
  1127         /**
  1128          * @deprecated - will become private - use Number() instead
  1129          */
  1130         TReal& iNumber;
  1131 
  1132     private:
  1133         TInt iSpare;
  1134     };
  1135 
  1136 
  1137 //--------------------------------------
  1138 //class CAknMultilineDataQuerydialog
  1139 //--------------------------------------
  1140 
  1141 /**
  1142  * Query dialog with data input on more than one line (2 lines at the moment).
  1143  *
  1144  * Object of this class is created by using NewL method and by passing
  1145  * parameters as appropriate.
  1146  *
  1147  * Attention: When deriving from this class, you must call @c SetDataL() during
  1148  *            second phase construction.
  1149  *
  1150  * Enumeration for tones. The tone played before the dialog is shown.
  1151  * Application specific tones may be played by casting the application defined
  1152  * Sound ID @c (SID), to @c TTone.
  1153  *
  1154  * Enumeration values: <br>
  1155  * @c ENoTone No tone is played.<br>
  1156  * @c EConfirmationTone A confirmation tone is played. <br>
  1157  * @c EWarningTone A warning tone is played. <br>
  1158  * @c EErrorTone An error tone is played. <br>
  1159  */
  1160 class CAknMultiLineDataQueryDialog : public CAknQueryDialog
  1161     {
  1162     friend class CAknMultilineQueryDialogExtension;
  1163 
  1164     public:
  1165 
  1166         /**
  1167          * Creates a new instance of a multiline dialog.
  1168          *
  1169          * @param aTime1 First line parameter.
  1170          * @param aTime2 Second line parameter.
  1171          * @param aTone Reference to @c TTone enumeration. Default is @c
  1172          *        ENoTone.
  1173          * @return Pointer to a multiline dialog object.
  1174          */
  1175         IMPORT_C static CAknMultiLineDataQueryDialog* NewL(
  1176                 TTime& aTime1,
  1177                 TTime& aTime2,
  1178                 TTone aTone = ENoTone);
  1179 
  1180         /**
  1181          * Creates a new instance of a multiline dialog.
  1182          *
  1183          * @param aText1 First line parameter.
  1184          * @param aText2 Second line parameter.
  1185          * @param aTone Reference to @c TTone enumeration. Default is @c
  1186          *        ENoTone.
  1187          * @return Pointer to a multiline dialog object.
  1188          */
  1189         IMPORT_C static CAknMultiLineDataQueryDialog* NewL(
  1190                 TDes& aText1,
  1191                 TDes& aText2,
  1192                 TTone aTone = ENoTone);
  1193 
  1194         /**
  1195          * Creates a new instance of a multiline dialog.
  1196          *
  1197          * @param aText1 First line parameter.
  1198          * @param aTime2 Second line parameter.
  1199          * @param aTone Reference to @c TTone enumeration. Default is @c
  1200          *        ENoTone.
  1201          * @return Pointer to a multiline dialog object.
  1202          */
  1203         IMPORT_C static CAknMultiLineDataQueryDialog* NewL(
  1204                 TDes& aText1,
  1205                 TTime& aTime2,
  1206                 TTone aTone = ENoTone);
  1207 
  1208         /**
  1209          * Creates a new instance of a multiline dialog.
  1210          *
  1211          * @param aText1 First line parameter.
  1212          * @param aNum2 Second line parameter.
  1213          * @param aTone Reference to @c TTone enumeration. Default is @c
  1214          *        ENoTone.
  1215          * @return Pointer to a multiline dialog object.
  1216          */
  1217         IMPORT_C static CAknMultiLineDataQueryDialog* NewL(
  1218                 TDes& aText1,
  1219                 TInt& aNum2,
  1220                 TTone aTone = ENoTone);
  1221 
  1222         /**
  1223          * Creates a new instance of a multiline dialog.
  1224          *
  1225          * @param aText1 First line parameter.
  1226          * @param aDur2 Second line parameter.
  1227          * @param aTone Reference to @c TTone enumeration. Default is @c
  1228          *        ENoTone.
  1229          * @return Pointer to a multiline dialog object.
  1230          */
  1231         IMPORT_C static CAknMultiLineDataQueryDialog* NewL(
  1232                 TDes& aText1,
  1233                 TTimeIntervalSeconds& aDur2,
  1234                 TTone aTone = ENoTone);
  1235 
  1236         /**
  1237          * Creates a new instance of a multiline dialog.
  1238          *
  1239          * @param aTime1 First line parameter.
  1240          * @param aDur2 Second line parameter.
  1241          * @param aTone Reference to @c TTone enumeration. Default is @c
  1242          *        ENoTone.
  1243          * @return Pointer to a multiline dialog object.
  1244          */
  1245         IMPORT_C static CAknMultiLineDataQueryDialog* NewL(
  1246                 TTime& aTime1,
  1247                 TTimeIntervalSeconds& aDur2,
  1248                 TTone aTone = ENoTone);
  1249 
  1250         /**
  1251          * Creates a new instance of a multiline dialog.
  1252          *
  1253          * @param aNum1 First line parameter.
  1254          * @param aNum2 Second line parameter.
  1255          * @param aTone Reference to @c TTone enumeration. Default is @c
  1256          *        ENoTone.
  1257          * @return Pointer to multiline dialog object.
  1258          */
  1259         IMPORT_C static CAknMultiLineDataQueryDialog* NewL(
  1260                 TInt& aNum1,
  1261                 TInt& aNum2,
  1262                 TTone aTone = ENoTone);
  1263 
  1264          /**
  1265          * Creates a new instance of a multiline dialog.
  1266          *
  1267          * @param aPos Position parameter.
  1268          * @param aTone Reference to @c TTone enumeration. Default is @c
  1269          *        ENoTone.
  1270          * @return Pointer to multiline dialog object.
  1271          */
  1272         IMPORT_C static CAknMultiLineDataQueryDialog* NewL(TPosition &aPos, TTone aTone = ENoTone);
  1273 
  1274 
  1275         /**
  1276          * Destructor.
  1277          */
  1278         IMPORT_C virtual ~CAknMultiLineDataQueryDialog();
  1279 
  1280     protected:
  1281 
  1282         /**
  1283          * Sets the query data for the first and the second line. Must be
  1284          * called by derived classes during second phase construction (@c
  1285          * NewL() method).
  1286          */
  1287         template <class T1, class T2> void SetDataL(T1& aData1, T2& aData2)
  1288             {
  1289             /** First line data. */
  1290             iFirstData  = new (ELeave) TAknQueryData<T1>(aData1);
  1291 
  1292             /** Second line data. */
  1293             iSecondData = new (ELeave) TAknQueryData<T2>(aData2);
  1294             }
  1295 
  1296         /**
  1297          * Utility function called by @c NewL() method - should really be
  1298          * private but it is left here to show to people extending this class
  1299          * what their @c NewL() method should do.
  1300          *
  1301          * Creates new instance of the multiline dialog.
  1302          *
  1303          * @param aData1 First line parameter.
  1304          * @param aData2 Second line parameter.
  1305          * @param aTone Reference to @c TTone enum.
  1306          */
  1307 
  1308         template <class T1, class T2> static CAknMultiLineDataQueryDialog*
  1309             DoNewL(T1& aData1, T2& aData2, const TTone& aTone)
  1310             {
  1311                 CAknMultiLineDataQueryDialog* self =
  1312                             new (ELeave) CAknMultiLineDataQueryDialog(aTone);
  1313 
  1314                 CleanupStack::PushL(self);
  1315 
  1316                 self->SetDataL(aData1,aData2);
  1317 
  1318                 CleanupStack::Pop(self);
  1319                 return self;
  1320             }
  1321 
  1322     protected:
  1323 
  1324         /**
  1325          * C++ default constructor.
  1326          *
  1327          * @param aTone Reference to @c TTone enumeration.
  1328          */
  1329         IMPORT_C CAknMultiLineDataQueryDialog(const TTone& aTone);
  1330 
  1331     public:
  1332 
  1333         /**
  1334          * Sets a prompt text for the query. This will override the text given
  1335          * in the constructor.
  1336          *
  1337          * @param aFirstPrompt Text for prompt on the first query line.
  1338          * @param aSecondPrompt Text for prompt on the second query line.
  1339          */
  1340         IMPORT_C void SetPromptL(const TDesC& aFirstPrompt,
  1341                                  const TDesC& aSecondPrompt);
  1342 
  1343     public:
  1344 
  1345         /**
  1346          * Sets a max length for the first editor in a query.
  1347          *
  1348          * @param aFirstTextEditorMaxLength Max length for editor
  1349          */
  1350         IMPORT_C void SetMaxLengthOfFirstEditor(
  1351                                 TInt aFirstTextEditorMaxLength);
  1352 
  1353         /**
  1354          * Sets a max length for the second editor in a query.
  1355          *
  1356          * @param aSecondTextEditorMaxLength Max length for editor.
  1357          */
  1358         IMPORT_C void SetMaxLengthOfSecondEditor(
  1359                                 TInt aSecondTextEditorMaxLength);
  1360 
  1361     public: // From CCoeControl
  1362 
  1363         /**
  1364          * From @c CCoeControl.
  1365          *
  1366          * Handles pointer events.
  1367          *
  1368          * @param aPointerEvent The pointer event.
  1369          */
  1370         IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
  1371 
  1372     protected://from CEikDialog
  1373 
  1374         /**
  1375          * From @c CEikdialog<p>
  1376          * This function is called by the @c EIKON framework if the user
  1377          * activates a button in the button panel. It is not called if the @c
  1378          * Cancel button is activated, unless the @c EEikDialogFlagNotifyEsc
  1379          * flag is set.
  1380          *
  1381          * @param aButtonId The ID of the button that was activated.
  1382          * @return @c ETrue if the dialog should exit and @c
  1383          *         EFalse if it should not exit.
  1384          */
  1385         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
  1386 
  1387          /**
  1388          * From @c CEikdialog<p>
  1389          * This function is called by the EIKON dialog framework
  1390          * just before the dialog is activated, after it has called
  1391          * PreLayoutDynInitL() and the dialog has been sized.
  1392          * Note:<p>
  1393          * Control values that should not influence the sizing and layout are
  1394          * set using @c PostLayoutDynInitL().
  1395          */
  1396         IMPORT_C void PreLayoutDynInitL();
  1397 
  1398         /**
  1399          * From @c CCoeControl.
  1400          *
  1401          * Handles a change to the control's resources. The types of resources
  1402          * handled are those which are shared across the environment, e.g.
  1403          * colours or fonts.
  1404          *
  1405          * @since Symbian 5.1.
  1406          *
  1407          * @param aType A message UID value. The most common is @c
  1408          *        KEikMessageColorSchemeChange which controls get when the
  1409          *        colour scheme is changed. Other examples include: @c
  1410          *        KEikMessageFadeAllWindows, @c KEikMessageUnfadeWindows, @c
  1411          *        KEikMessageZoomChange, @c
  1412          *        KEikMessageVirtualCursorStateChange, @c KEikMessageCapsLock,
  1413          *        @c KEikMessagePrepareForSave.
  1414          */
  1415         IMPORT_C void HandleResourceChange(TInt aType);
  1416 
  1417     protected:
  1418 
  1419         /**
  1420         * If the query text is ok (retrieved form query controls)  the left
  1421         * soft key is displayed, otherwise it is hidden.
  1422         */
  1423         IMPORT_C void UpdateLeftSoftKeyL();
  1424 
  1425         /**
  1426         * Sets the prompt inside the query control.
  1427         */
  1428         IMPORT_C void DoSetPromptL();
  1429 
  1430     protected:
  1431 
  1432          /**
  1433           * Allows dismissing of queries. Same as base class implementation only take into
  1434           * consideration both controls
  1435          */
  1436         IMPORT_C TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);
  1437 
  1438     protected:
  1439 
  1440         /**
  1441          * Access to 1st query control
  1442          *
  1443          * @return Pointer to the control of the first line.
  1444          */
  1445         IMPORT_C CAknMultilineQueryControl* FirstControl() const;
  1446 
  1447         /**
  1448          * Access to 2nd query control
  1449          *
  1450          * @return Pointer to the control of the second line.
  1451          */
  1452         IMPORT_C CAknMultilineQueryControl* SecondControl() const;
  1453 
  1454         /**
  1455          * Gets a querycontrol.
  1456          *
  1457          * @return Pointer to the control of the first line.
  1458          */
  1459          IMPORT_C CAknQueryControl* QueryControl() const;
  1460 
  1461         /**
  1462          * Not implemented.
  1463          *
  1464          * @return NULL.
  1465          */
  1466         IMPORT_C CAknPopupHeadingPane* QueryHeading() const;
  1467 
  1468     protected:
  1469 
  1470         /**
  1471          * Data access.
  1472          *
  1473          * Derived class can use this method to get access to the query
  1474          * data. The query data is a reference stored in @c TAknQueryData, see
  1475          * @c aknquerydata.h
  1476          *
  1477          * The client ultimately owns the data this reference references and so
  1478          * it should never need to call these methods.
  1479          *
  1480          * Derived class however, might need to set or get the data and hence
  1481          * this method have been provided. The derived class is responsible
  1482          * for choosing the correct type, if not the cast will fail.
  1483          */
  1484         template<class T>
  1485             T& FirstData(const T&)
  1486             { return STATIC_CAST(TAknQueryData<T>*,iFirstData)->iData; }
  1487 
  1488         /**
  1489          * Data access.
  1490          *
  1491          * Derived class can use this method to get access to the query
  1492          * data. The query data is a reference stored in @c TAknQueryData, see
  1493          * @c aknquerydata.h
  1494          *
  1495          * The client ultimately owns the data this reference references and so
  1496          * it should never need to call these methods.
  1497          *
  1498          * Derived class however, might need to set or get the data and hence
  1499          * this method have been provided. The derived class is responsible
  1500          * for choosing the correct type, if not the cast will fail.
  1501          */
  1502         template<class T>
  1503             T& SecondData(const T&)
  1504             { return STATIC_CAST(TAknQueryData<T>*,iSecondData)->iData; }
  1505 
  1506         /**
  1507          * Data access.
  1508          *
  1509          * Derived class can use this method to get access to the query
  1510          * data. The query data is a reference stored in @c TAknQueryData, see
  1511          * @c aknquerydata.h
  1512          *
  1513          * The client ultimately owns the data this reference references and so
  1514          * it should never need to call these methods.
  1515          *
  1516          * Derived class however, might need to set or get the data and hence
  1517          * this method have been provided. The derived class is responsible
  1518          * for choosing the correct type, if not the cast will fail.
  1519          */
  1520         template<class T>
  1521             const T& FirstData(const T&) const
  1522             { return STATIC_CAST(TAknQueryData<T>*,iFirstData)->iData; }
  1523 
  1524         /**
  1525          * Data access.
  1526          *
  1527          * Derived class can use this method to get access to the query
  1528          * data. The query data is a reference stored in @c TAknQueryData, see
  1529          * @c aknquerydata.h
  1530          *
  1531          * The client ultimately owns the data this reference references and so
  1532          * it should never need to call these methods.
  1533          *
  1534          * Derived class however, might need to set or get the data and hence
  1535          * this method have been provided. The derived class is responsible
  1536          * for choosing the correct type, if not the cast will fail.
  1537          */
  1538         template<class T>
  1539             const T& SecondData(const T&) const
  1540             { return STATIC_CAST(TAknQueryData<T>*,iSecondData)->iData; }
  1541 
  1542         /**
  1543          * Prompts access for derived classes.
  1544          *
  1545          * @return Pointer to the data of the second line.
  1546          */
  1547         IMPORT_C TPtrC SecondPrompt() const;
  1548 
  1549     private:
  1550         void HandleOrientationSwitch();
  1551         TBool FirstLineEnabled() const;
  1552         TBool SecondLineEnabled() const;
  1553         TInt CurrentLine() const;
  1554 
  1555     private:
  1556         TDesC* iSecondPrompt;
  1557         MAknQueryData* iFirstData;
  1558         MAknQueryData* iSecondData;
  1559 
  1560         TInt iFirstEditorMaxLength;
  1561         TInt iSecondEditorMaxLength;
  1562 
  1563     public:
  1564 
  1565         /**
  1566          * Constructor.
  1567          *
  1568          * @param aTime First line parameter.
  1569          * @param aTime2 Second line parameter.
  1570          * @param aPrompt First prompt value. NULL in default.
  1571          * @param aPrompt2 Second prompt value. NULL in default.
  1572          * @param aTone Reference to @c TTone enum. Default is @c ENoTone.
  1573          */
  1574         IMPORT_C CAknMultiLineDataQueryDialog(
  1575                 TTime* aTime,
  1576                 TTime* aTime2,
  1577                 TDesC* aPrompt=NULL,
  1578                 TDesC* aPrompt2=NULL,
  1579                 const TTone& aTone = ENoTone);
  1580 
  1581         /**
  1582          * Constructor.
  1583          *
  1584          * @param aDataText First line parameter.
  1585          * @param aDataText2 Second line parameter.
  1586          * @param aPrompt First prompt value. NULL in default.
  1587          * @param aPrompt2 Second prompt value. NULL in default.
  1588          * @param aTone Reference to @c TTone enum. Default is @c ENoTone.
  1589          */
  1590         IMPORT_C CAknMultiLineDataQueryDialog(
  1591                 TDes* aDataText,
  1592                 TDes* aDataText2,
  1593                 TDesC* aPrompt=NULL,
  1594                 TDesC* aPrompt2=NULL,
  1595                 const TTone& aTone = ENoTone);
  1596 
  1597         /**
  1598          * Constructor.
  1599          *
  1600          * @param aDataText First line parameter.
  1601          * @param aTime Second line parameter.
  1602          * @param aPrompt First prompt value. NULL in default.
  1603          * @param aPrompt2 Second prompt value. NULL in default.
  1604          * @param aTone Reference to @c TTone enum. Default is @c ENoTone.
  1605          */
  1606         IMPORT_C CAknMultiLineDataQueryDialog(
  1607                 TDes* aDataText,
  1608                 TTime* aTime,
  1609                 TDesC* aPrompt=NULL,
  1610                 TDesC* aPrompt2=NULL,
  1611                 const TTone& aTone = ENoTone);
  1612 
  1613         /**
  1614          * Constructor.
  1615          *
  1616          * @param aDataText First line parameter.
  1617          * @param aNumber Second line parameter.
  1618          * @param aPrompt First prompt value. NULL in default.
  1619          * @param aPrompt2 Second prompt value. NULL in default.
  1620          * @param aTone Reference to @c TTone enum. Default is @c ENoTone.
  1621          */
  1622         IMPORT_C CAknMultiLineDataQueryDialog(
  1623                 TDes* aDataText,
  1624                 TInt* aNumber,
  1625                 TDesC* aPrompt=NULL,
  1626                 TDesC* aPrompt2=NULL,
  1627                 const TTone& aTone = ENoTone);
  1628 
  1629         /**
  1630          * Constructor.
  1631          *
  1632          * @param aDataText First line parameter.
  1633          * @param aDuration Second line parameter.
  1634          * @param aPrompt First prompt value. NULL in default.
  1635          * @param aPrompt2 Second prompt value. NULL in default.
  1636          * @param aTone Reference to @c TTone enum. Default is @c ENoTone.
  1637          */
  1638         IMPORT_C CAknMultiLineDataQueryDialog(
  1639                 TDes* aDataText,
  1640                 TTimeIntervalSeconds* aDuration,
  1641                 TDesC* aPrompt=NULL,
  1642                 TDesC* aPrompt2=NULL,
  1643                 const TTone& aTone = ENoTone);
  1644 
  1645         /**
  1646          * Constructor.
  1647          *
  1648          * @param aTime First line parameter.
  1649          * @param aDuration Second line parameter.
  1650          * @param aPrompt First prompt value. NULL in default.
  1651          * @param aPrompt2 Second prompt value. NULL in default.
  1652          * @param aTone Reference to @c TTone enum. Default is @c ENoTone.
  1653          */
  1654         IMPORT_C CAknMultiLineDataQueryDialog(
  1655                 TTime* aTime,
  1656                 TTimeIntervalSeconds* aDuration,
  1657                 TDesC* aPrompt=NULL,
  1658                 TDesC* aPrompt2=NULL,
  1659                 const TTone& aTone = ENoTone);
  1660 
  1661         /**
  1662          * Constructor.
  1663          *
  1664          * @param aNumber First line parameter.
  1665          * @param aNumber2 Second line parameter.
  1666          * @param aPrompt First prompt value. NULL in default.
  1667          * @param aPrompt2 Second prompt value. NULL in default.
  1668          * @param aTone Reference to @c TTone enum. Default is @c ENoTone.
  1669          */
  1670         IMPORT_C CAknMultiLineDataQueryDialog(
  1671                 TInt* aNumber,
  1672                 TInt* aNumber2,
  1673                 TDesC* aPrompt=NULL,
  1674                 TDesC* aPrompt2=NULL,
  1675                 const TTone& aTone = ENoTone);
  1676 
  1677     private:
  1678         /**
  1679         * From CAknControl
  1680         */
  1681         IMPORT_C void* ExtensionInterface( TUid aInterface );
  1682 
  1683     private:
  1684         IMPORT_C virtual void CEikDialog_Reserved_1();
  1685         IMPORT_C virtual void CEikDialog_Reserved_2();
  1686 
  1687     private:
  1688         IMPORT_C virtual void CAknDialog_Reserved();
  1689 
  1690     private:
  1691         IMPORT_C virtual void CAknQueryDialog_Reserved();
  1692 
  1693     protected:
  1694         /**
  1695          * Deprecated - use data access template methods instead
  1696          * A text of the first line.
  1697          * @deprecated Use data access template methods instead.
  1698          */
  1699         TDes16* iText;
  1700 
  1701         /**
  1702          * Deprecated do not use
  1703          * A text of the secondline.
  1704          * @deprecated Use data access template methods instead.
  1705          */
  1706         TDes16* iSecondText;
  1707     };
  1708 
  1709 //Deprecated
  1710 //This one is included here for backwards compatibility
  1711 //and will be removed as soon as apps using listquerydialog
  1712 //include it directly
  1713 #include <aknlistquerydialog.h>
  1714 
  1715 
  1716 //---------------------------------
  1717 //class CAknIpAddressQueryDialog
  1718 //---------------------------------
  1719 
  1720 /**
  1721  * This class should be used when user is reguest to enter IP address
  1722  *
  1723  * @since 2.1
  1724 */
  1725 
  1726 NONSHARABLE_CLASS(CAknIpAddressQueryDialog) : public CAknQueryDialog
  1727     {
  1728 
  1729     public:
  1730         /**
  1731          * Second phase construction
  1732          *
  1733         */
  1734         IMPORT_C static CAknIpAddressQueryDialog* NewL(TInetAddr& aInetAddr, const TTone& aTone = ENoTone);
  1735 
  1736     private:
  1737         CAknIpAddressQueryDialog(TInetAddr& aInetAddr, const TTone& aTone = ENoTone);
  1738 
  1739     public:
  1740         /**
  1741          * C++ Destructor.
  1742          */
  1743         IMPORT_C virtual ~CAknIpAddressQueryDialog();
  1744 
  1745     public:
  1746         /**
  1747         * Set maximum and minimum addresses to editor. This override values given in resource.
  1748         * only values inside the initial minimum and maximum are permitted
  1749         *
  1750         * @param aMinimumAddress   Minimumm address
  1751         * @param aMaximumAddress   Maximum address.
  1752         */
  1753         IMPORT_C void SetMinimumAndMaximum(const TInetAddr& aMinimumAddress, const TInetAddr& aMaximumAddress);
  1754 
  1755         /**
  1756         * Allows dismissing of queries.
  1757         * Clients can override this and implement something different.
  1758         *
  1759         */
  1760         IMPORT_C virtual TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);
  1761 
  1762 
  1763     protected:
  1764 
  1765         /**
  1766         * @return pointer to query control or NULL
  1767         *
  1768         */
  1769         IMPORT_C virtual CAknQueryControl* QueryControl() const;
  1770 
  1771     protected://from CEikDialog
  1772 
  1773         /**
  1774         * From CEikdialog   EIKON provides an implementation of this function,
  1775         *                   which positions the dialog in the centre of the screen.
  1776         *                   However, it can be overridden by derived classes..
  1777         * @param aSize      The size for the dialog.
  1778         */
  1779         IMPORT_C void SetSizeAndPosition(const TSize& aSize);
  1780 
  1781         /**
  1782          * From @c CEikdialog<p>
  1783          * This function is called by the EIKON dialog framework just before the dialog is activated, but before it is sized,
  1784          * and before PostLayoutDynInitL() is called.
  1785         */
  1786         IMPORT_C void PreLayoutDynInitL();
  1787 
  1788         /**
  1789          * From @c CEikdialog<p>
  1790          * This function is called by the EIKON dialog framework just before the dialog is activated,
  1791          * after it has called PreLayoutDynInitL() and the dialog has been sized.
  1792         */
  1793         IMPORT_C void PostLayoutDynInitL();
  1794 
  1795         /**
  1796         * Set the prompt inside the query control. If dialog is active redo
  1797         * layout and draw.
  1798         */
  1799         IMPORT_C virtual void DoSetPromptL();
  1800 
  1801         /**
  1802          * From @c CEikdialog<p>
  1803          * This function is called by the EIKON framework
  1804          * if the user activates a button in the button panel.
  1805          * It is not called if the Cancel button is activated,
  1806          * unless the EEikDialogFlagNotifyEsc flag is set.
  1807          * @param aButtonId  The ID of the button that was activated
  1808          * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
  1809         */
  1810         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
  1811 
  1812         /**
  1813         * If the query text is ok (retrieved form query control) then display the
  1814         * left soft key, otherwise hide it.
  1815         */
  1816          IMPORT_C void UpdateLeftSoftKeyL();
  1817 
  1818         /**
  1819          * @return data
  1820         */
  1821          inline TInetAddr& InetAddr() { return iInetAddr; }
  1822 
  1823         /**
  1824          * @return data
  1825         */
  1826          inline const TInetAddr& InetAddr() const { return iInetAddr; }
  1827 
  1828     private:
  1829         IMPORT_C virtual void CEikDialog_Reserved_1();
  1830         IMPORT_C virtual void CEikDialog_Reserved_2();
  1831 
  1832     private:
  1833         IMPORT_C virtual void CAknDialog_Reserved();
  1834 
  1835     private:
  1836         IMPORT_C virtual void CAknQueryDialog_Reserved();
  1837 
  1838     protected:
  1839         /**
  1840          * data
  1841          */
  1842          TInetAddr& iInetAddr;
  1843     };
  1844 
  1845 
  1846 //---------------------------------
  1847 //class CAknFixedPointQueryDialog
  1848 //---------------------------------
  1849 
  1850 /**
  1851  * This class should be used when user is reguest to enter IP address
  1852  *
  1853  * @since 2.1
  1854 */
  1855 
  1856 NONSHARABLE_CLASS(CAknFixedPointQueryDialog) : public CAknQueryDialog
  1857     {
  1858     public:
  1859         /**
  1860          * Second phase construction
  1861          *
  1862         */
  1863         IMPORT_C static CAknFixedPointQueryDialog* NewL(TInt& aNumber, const TTone& aTone);
  1864 
  1865     private:
  1866         CAknFixedPointQueryDialog(TInt& aNumber, const TTone& aTone = ENoTone);
  1867 
  1868     public:
  1869 
  1870         /**
  1871          * C++ Destructor.
  1872          */
  1873         IMPORT_C virtual ~CAknFixedPointQueryDialog();
  1874 
  1875     public: //new
  1876         /**
  1877         * Set maximum and minimum addresses to editor. This override values given in resource.
  1878         *
  1879         * @param aMinimumValue   Minimumm value
  1880         * @param aMaximumValue   Maximum value.
  1881         */
  1882         IMPORT_C void SetMinimumAndMaximum(TInt aMinimumValue, TInt aMaximumValue); // only values inside the initial minimum and maximum are permitted
  1883 
  1884         IMPORT_C virtual TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);
  1885 
  1886 
  1887     protected:
  1888 
  1889         /**
  1890         * Usage:
  1891         * CAknExtQueryControl* control = STATIC_CAST(CAknExtQueryControl*,QueryControl());
  1892         *
  1893         */
  1894         IMPORT_C virtual CAknQueryControl* QueryControl() const;
  1895 
  1896     protected://from CEikDialog
  1897 
  1898         /**
  1899         * From CEikdialog   EIKON provides an implementation of this function,
  1900         *                   which positions the dialog in the centre of the screen.
  1901         *                   However, it can be overridden by derived classes..
  1902         * @param aSize      The size for the dialog.
  1903         */
  1904         IMPORT_C void SetSizeAndPosition(const TSize& aSize);
  1905 
  1906         /**
  1907          * From @c CEikdialog<p>
  1908          * This function is called by the EIKON dialog framework just before the dialog is activated, but before it is sized,
  1909          * and before PostLayoutDynInitL() is called.
  1910         */
  1911         IMPORT_C void PreLayoutDynInitL();
  1912 
  1913         /**
  1914          * From @c CEikdialog<p>
  1915          * This function is called by the EIKON dialog framework just before the dialog is activated,
  1916          * after it has called PreLayoutDynInitL() and the dialog has been sized.
  1917         */
  1918         IMPORT_C void PostLayoutDynInitL();
  1919 
  1920         /**
  1921         * Set the prompt inside the query control. If dialog is active redo
  1922         * layout and draw.
  1923         */
  1924         IMPORT_C virtual void DoSetPromptL();
  1925 
  1926         /**
  1927          * From @c CEikdialog<p>
  1928          * This function is called by the EIKON framework
  1929          * if the user activates a button in the button panel.
  1930          * It is not called if the Cancel button is activated,
  1931          * unless the EEikDialogFlagNotifyEsc flag is set.
  1932          * @param aButtonId  The ID of the button that was activated
  1933          * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
  1934         */
  1935         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
  1936 
  1937         /**
  1938         * If the query text is ok (retrieved form query control) then display the
  1939         * left soft key, otherwise hide it.
  1940         */
  1941         IMPORT_C void UpdateLeftSoftKeyL();
  1942 
  1943         /**
  1944          * @return data
  1945         */
  1946         inline TInt& Number() { return iNumber; }
  1947 
  1948         /**
  1949          * @return data
  1950         */
  1951         inline const TInt& Number() const { return iNumber; }
  1952 
  1953     private:
  1954         IMPORT_C virtual void CEikDialog_Reserved_1();
  1955         IMPORT_C virtual void CEikDialog_Reserved_2();
  1956     private:
  1957         IMPORT_C virtual void CAknDialog_Reserved();
  1958     private:
  1959         IMPORT_C virtual void CAknQueryDialog_Reserved();
  1960     private:
  1961          TInt& iNumber;
  1962     };
  1963 
  1964 
  1965 //--------------------------------------
  1966 //class CAknMultilineIpQueryDialog
  1967 //--------------------------------------
  1968 
  1969 /**
  1970  * Query Dialog with data input on more than one line (2 lines at the moment)
  1971  *
  1972  * Create using NewL methods and passing parameters as appropriate.
  1973  *
  1974  * Attention: When deriving from this class, you must call SetDataL during
  1975  *            second phase construction.
  1976  *
  1977  * @since 2.1
  1978  *
  1979  */
  1980 NONSHARABLE_CLASS(CAknMultiLineIpQueryDialog) : public CAknMultiLineDataQueryDialog
  1981     {
  1982     friend class CAknMultilineQueryDialogExtension;
  1983     public:
  1984         /**
  1985          * Second phase construction
  1986          *
  1987         */
  1988         IMPORT_C static CAknMultiLineIpQueryDialog* NewL(TInetAddr&  aAddress1,  TInetAddr&  aAddress2, TTone aTone = ENoTone);
  1989 
  1990         IMPORT_C virtual ~CAknMultiLineIpQueryDialog();
  1991 
  1992     protected:
  1993         /**
  1994          * Set the query data for first and second line
  1995          * Must be called by derived classes during second phase construction
  1996          * (NewL method)
  1997          */
  1998         template <class T1, class T2> void SetDataL(T1& aData1, T2& aData2)
  1999             {
  2000             iFirstData  = new (ELeave) TAknQueryData<T1>(aData1);
  2001             iSecondData = new (ELeave) TAknQueryData<T2>(aData2);
  2002             }
  2003 
  2004         /**
  2005          * Utility function called by NewL methods - should really be private
  2006          * but it is left here to show to people extending this class what
  2007          * their NewL method should do
  2008          */
  2009         template <class T1, class T2> static CAknMultiLineIpQueryDialog*
  2010             DoNewL(T1& aData1, T2& aData2, const TTone& aTone)
  2011             {
  2012                 CAknMultiLineIpQueryDialog* self = new (ELeave) CAknMultiLineIpQueryDialog(aTone);
  2013                 CleanupStack::PushL(self);
  2014 
  2015                 self->SetDataL(aData1,aData2);
  2016 
  2017                 CleanupStack::Pop(self);
  2018                 return self;
  2019             }
  2020 
  2021     private:
  2022         CAknMultiLineIpQueryDialog(const TTone& aTone);
  2023 
  2024     public:
  2025 
  2026         /**
  2027         * Set prompt text for query. This this will override text given in constructor.
  2028         *
  2029         * @param aFirstPrompt   Text for prompt on the first query line
  2030         * @param aSecondPrompt  Text for prompt on the second query line
  2031         */
  2032         IMPORT_C void SetPromptL(const TDesC& aFirstPrompt, const TDesC& aSecondPrompt);
  2033 
  2034     public:
  2035 
  2036         /**
  2037         * Sets max length for the first editor in a query
  2038         * @param aFirstTextEditorMaxLength  Max length for editor
  2039         */
  2040         IMPORT_C void SetMaxLengthOfFirstEditor(TInt aFirstTextEditorMaxLength);
  2041 
  2042         /**
  2043         * Sets max length for the second editor in a query
  2044         * @param aSecondTextEditorMaxLength  Max length for editor
  2045         */
  2046         IMPORT_C void SetMaxLengthOfSecondEditor(TInt aSecondTextEditorMaxLength);
  2047 
  2048     protected://from CEikDialog
  2049 
  2050         /**
  2051          * From @c CEikdialog<p>
  2052          * This function is called by the EIKON framework
  2053          * if the user activates a button in the button panel.
  2054          * It is not called if the Cancel button is activated,
  2055          * unless the EEikDialogFlagNotifyEsc flag is set.
  2056          * @param aButtonId  The ID of the button that was activated
  2057          * @return           Should return ETrue if the dialog should exit, and EFalse if it should not.
  2058         */
  2059         IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
  2060 
  2061         /**
  2062          * From @c CEikdialog<p>
  2063          * This function is called by the EIKON dialog framework just before the dialog is activated, but before it is sized,
  2064          * and before PostLayoutDynInitL() is called.
  2065         */
  2066         IMPORT_C void PreLayoutDynInitL();
  2067 
  2068         IMPORT_C void HandleResourceChange(TInt aType);
  2069 
  2070     protected:
  2071         /**
  2072         * If the query text is ok (retrieved form query controls) then display the
  2073         * left soft key, otherwise hide it.
  2074         */
  2075         IMPORT_C void UpdateLeftSoftKeyL();
  2076 
  2077         /**
  2078         * Set the prompt inside the query control. If dialog is active redo
  2079         * layout and draw.
  2080         */
  2081         IMPORT_C void DoSetPromptL();
  2082 
  2083     protected:
  2084         /**
  2085          * Called by OfferkeyEventL(), gives a change to dismiss the query even with
  2086          * keys different than Enter of Ok.
  2087          *
  2088          * @param aKeyEvent  Key event which will be checked
  2089          * @return           Should the query be dismissed
  2090          */
  2091         IMPORT_C TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);
  2092 
  2093     protected:
  2094         /**
  2095          * Access to 1st query control
  2096          *
  2097          * @return Pointer to the control of the first line.
  2098          */
  2099         IMPORT_C CAknExtMultilineQueryControl* FirstControl() const;
  2100 
  2101          /**
  2102          * Access to 2nd query control
  2103          *
  2104          * @return Pointer to the control of the second line.
  2105          */
  2106         IMPORT_C CAknExtMultilineQueryControl* SecondControl() const;
  2107 
  2108          /**
  2109          * Not implemented.
  2110          *
  2111          * @return NULL.
  2112          */
  2113         IMPORT_C CAknQueryControl* QueryControl() const;
  2114 
  2115     protected:
  2116         /**
  2117          * Prompt access for derived classes
  2118          */
  2119         IMPORT_C TPtrC SecondPrompt() const;
  2120 
  2121     private:
  2122         void HandleOrientationSwitch();
  2123         TBool FirstLineEnabled() const;
  2124         TBool SecondLineEnabled() const;
  2125         TInt CurrentLine() const;
  2126 
  2127     private:
  2128         TDesC* iSecondPrompt;
  2129 
  2130         MAknQueryData* iFirstData;
  2131         MAknQueryData* iSecondData;
  2132 
  2133         TInt iFirstEditorMaxLength;
  2134         TInt iSecondEditorMaxLength;
  2135 
  2136     private:
  2137         TDes16* iText;
  2138         TDes16* iSecondText;
  2139     };
  2140 
  2141 #endif // AKNQUERYDIALOG_H