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