classicui_plat/dialogs_api/inc/EIKDIALG.H
changeset 45 667edd0b8678
equal deleted inserted replaced
37:89c890c70182 45:667edd0b8678
       
     1 /*
       
     2 * Copyright (c) 1997-1999 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef __EIKDIALG_H__
       
    20 #define __EIKDIALG_H__
       
    21 
       
    22 #ifndef __COECOBS_H__
       
    23 #include <coecobs.h>
       
    24 #endif
       
    25 
       
    26 #ifndef __COECCNTX_H__
       
    27 #include <coeccntx.h>
       
    28 #endif
       
    29 
       
    30 #ifndef __EIKBCTRL_H__
       
    31 #include <eikbctrl.h>
       
    32 #endif
       
    33 
       
    34 #ifndef __EIKDPOBS_H__
       
    35 #include <eikdpobs.h>
       
    36 #endif
       
    37 
       
    38 #ifndef __BADESCA_H__
       
    39 #include <badesca.h>
       
    40 #endif 
       
    41 
       
    42 #ifndef __GULFTFLG_HRH__
       
    43 #include <gulftflg.hrh>
       
    44 #endif
       
    45 
       
    46 
       
    47 
       
    48 //
       
    49 // Header files needed by deprecated interfaces.
       
    50 //
       
    51 
       
    52 #ifndef __EIKBUTB_H__
       
    53 #include <eikbutb.h>
       
    54 #endif
       
    55 
       
    56 #ifndef __EIKBTGPC_H__
       
    57 #include <eikbtgpc.h>
       
    58 #endif
       
    59 
       
    60 #include <AknPopupFader.h>
       
    61 
       
    62 // constant definitions
       
    63 const TInt KAknMediatorFacade(0x10275076);
       
    64 
       
    65 
       
    66 class CEikMover;
       
    67 class CEikCaptionedControl;
       
    68 class CEikCapCArray;
       
    69 class CEikDialogPageSelector;
       
    70 class CEikButtonGroupContainer;
       
    71 class CEikDialogButtonCommandObserver;
       
    72 class MEikCommandObserver;
       
    73 class CAknDialog;
       
    74 class CAknNoteDialog;
       
    75 
       
    76 struct SEikControlInfo;
       
    77 
       
    78 class  CEikDialogExtension ;
       
    79 // <SKIN>
       
    80 class CAknsListBoxBackgroundControlContext ;
       
    81 //
       
    82 // Forward declarations needed by deprecated interfaces.
       
    83 //
       
    84 
       
    85 class CEikLabel;
       
    86 class CGlobalText;
       
    87 class MAknDialogMediatorObserver;
       
    88 struct SEikRange;
       
    89 struct SEikDegreesMinutesDirection;
       
    90 
       
    91 
       
    92 /**
       
    93  * The @c CEikDialog class provides an instantiable base class for dialogs. 
       
    94  * Controls can be added directly to this class but it is normal to create
       
    95  * a subclass to handle the controls appearing on the dialog dynamically.
       
    96  */
       
    97 class CEikDialog : public CEikBorderedControl,
       
    98                    public MCoeControlObserver,
       
    99                    public MEikDialogPageObserver,
       
   100                    public MCoeControlContext, 
       
   101                    public MAknFadedComponent
       
   102     { 
       
   103 
       
   104 public:
       
   105 
       
   106     DECLARE_TYPE_ID(0x10282EA8)
       
   107     
       
   108 	/**
       
   109      * C++ default constructor.
       
   110      */
       
   111     IMPORT_C CEikDialog(); 
       
   112 
       
   113     /**
       
   114      * Destructor.
       
   115      */
       
   116 	IMPORT_C ~CEikDialog(); 
       
   117 
       
   118     /**
       
   119      * Loads, displays, and destroys the dialog.
       
   120      *
       
   121      * This function loads the specified dialog from a resource and displays
       
   122      * it. The method then destroys the dialog when it exits, therefore there
       
   123      * is no need for the application program to destroy the dialog.
       
   124      *
       
   125      * In the resource file, use the @c EEikBidOk dialog button ID for an 
       
   126      * OK/Done/Continue button and @c EEikBidCancel for a Cancel button.
       
   127      *
       
   128      * The function returns immediately unless @c EEikDialogFlagWait has been 
       
   129      * specified in the @c DIALOG resource. If @c EEikDialogFlagWait is 
       
   130      * specified, it returns when the dialog exits.
       
   131      * 
       
   132      * @param aResourceId The resource ID of the dialog to load.
       
   133      * @return Zero, unless it is a waiting dialog. For a waiting dialog, 
       
   134      *         the return value is the ID of the button that closed the dialog, 
       
   135      *         or zero if it was the cancel button (@c EEikBidCancel).
       
   136      */
       
   137 	IMPORT_C virtual TInt ExecuteLD(TInt aResourceId);
       
   138 	
       
   139     /**
       
   140      * Prepares the dialog, constructing it from the specified resource.
       
   141      * 
       
   142      * @param aResourceId The resource ID of the dialog.
       
   143      */
       
   144     IMPORT_C virtual void PrepareLC(TInt aResourceId);
       
   145 
       
   146     /**
       
   147      * Reads the dialog resources into the dialog, constructing it from the specified resource.
       
   148      * The function is only to help loading dialog resources and 
       
   149      * extracting dialog data, in other cases use (@c PrepareLC()).
       
   150      * Unlike PrepareLC(), it does not add the dialog to control stack.
       
   151      * @since 3.2
       
   152      * 
       
   153      * @param aResourceId The resource ID of the dialog.
       
   154      */
       
   155     IMPORT_C void ReadResourceLC(TInt aResourceId);
       
   156 
       
   157     /**
       
   158      * Runs the dialog and returns the ID of the button used to dismiss it.
       
   159      *
       
   160      * The dialog is destroyed on exit.
       
   161      *
       
   162      * This function is called by the dialog framework (@c ExecuteLD()) to 
       
   163      * perform dynamic construction (layout) and to display/destroy the 
       
   164      * dialog. Static construction of the dialog must already be complete 
       
   165      * before this function is called, e.g. using @c PrepareLC().
       
   166      *
       
   167      * The function returns immediately unless @c EEikDialogFlagWait has 
       
   168      * been specified in the @c DIALOG resource. If @c EEikDialogFlagWait is    
       
   169      * specified it returns when the dialog exits.
       
   170      *
       
   171      * @return The ID of the button used to dismiss the dialog.
       
   172      */
       
   173     IMPORT_C virtual TInt RunLD();
       
   174 
       
   175     /**
       
   176      * Sets the dialog title text from a descriptor.
       
   177      *
       
   178      * @deprecated
       
   179      * @param aText The descriptor containing the new title text.
       
   180      */
       
   181     IMPORT_C void SetTitleL(const TDesC& aText);
       
   182 	
       
   183     /**
       
   184      * Sets the dialog title text from a resource.
       
   185      *
       
   186      * @deprecated
       
   187      * @param aResourceId The ID of the resource containing the title text.
       
   188      */
       
   189     IMPORT_C void SetTitleL(TInt aResourceId);
       
   190 	
       
   191     /**
       
   192      * Sets the specified page to be dimmed or undimmed. The page is redrawn
       
   193      * immediately.
       
   194      *
       
   195      * @param aPageId The ID of the page to be dimmed.
       
   196      * @param aDimmed @c ETrue to dim the page, @c EFalse to un-dim it.
       
   197      */
       
   198     IMPORT_C void SetPageDimmedNow(TInt aPageId,TBool aDimmed);
       
   199 	
       
   200     /**
       
   201      * Sets the specified dialog line to a non-focusing state. After this
       
   202      * function is called, the line will never be given keyboard focus.
       
   203      * 
       
   204      * @param aControlId The ID of the control in the line which is to be 
       
   205      *        set as non-focusing.
       
   206      */
       
   207     IMPORT_C void SetLineNonFocusing(TInt aControlId);
       
   208 	
       
   209     /**
       
   210      * Dims and deactivates, or un-dims and re-activates, the specified line.
       
   211      *
       
   212      * @param aControlId The ID of the line to dim or un-dim.
       
   213      * @param aDimmed @c ETrue to dim the line, @c EFalse to un-dim it.
       
   214      */
       
   215     IMPORT_C void SetLineDimmedNow(TInt aControlId,TBool aDimmed);
       
   216 	
       
   217     /**
       
   218      * Makes the specified control visible or invisible. This function affects
       
   219      * the specified control, the visibility of the caption is not affected.
       
   220      *
       
   221      * @param aControlId The ID of the control to make visible or invisible.
       
   222      * @param aVisible @c ETrue to make the control visible. 
       
   223      *        @c EFalse to make the control invisible.
       
   224      */
       
   225     IMPORT_C void MakeLineVisible(TInt aControlId,TBool aVisible);
       
   226 	
       
   227     /**
       
   228      * Makes the whole specified line visible and active or invisible and 
       
   229      * inactive. This function affects both the specified control and
       
   230      * the caption.
       
   231      *
       
   232      * @param aControlId The ID of the control on the line to make visible 
       
   233      *        or invisible.
       
   234      * @param aVisible @c ETrue to make the line visible. @c EFalse to make the 
       
   235      *        line invisible.
       
   236      */
       
   237     IMPORT_C void MakeWholeLineVisible(TInt aControlId,TBool aVisible);
       
   238 	
       
   239     /**
       
   240      * Deletes the specified dialog line.
       
   241      *
       
   242      * @param aControlId The dialog line to delete.
       
   243      * @param aRedraw Whether to redraw the page. Default value is @c ETrue.
       
   244      */
       
   245     IMPORT_C void DeleteLine(TInt aControlId, TBool aRedraw=ETrue);
       
   246 	
       
   247     /**
       
   248      * Inserts a line in the dialog. The function takes as arguments the page
       
   249      * and line index at which the line is to be inserted, and the resource used
       
   250      * to construct it.
       
   251      * 
       
   252      * @param aIndex The index at which the line is to be inserted.
       
   253      * @param aResourceId The ID of the resource which defines the line.
       
   254      * @param aPageId The page on which the line is to be added.
       
   255      */
       
   256     IMPORT_C void InsertLineL(TInt aIndex,TInt aResourceId,TInt aPageId=0);
       
   257 	
       
   258     /**
       
   259      * Makes the specified panel button visible or invisible.
       
   260      *
       
   261      * @param aButtonId The ID of the panel button to make visible or invisible.
       
   262      * @param aVisible @c ETrue to make the panel visible. 
       
   263      *        @c EFalse to make it invisible.
       
   264      */
       
   265     IMPORT_C void MakePanelButtonVisible(TInt aButtonId,TBool aVisible);
       
   266 
       
   267     /**
       
   268      * Tries to change focus to the specified line. Fails if the line ID is not
       
   269      * valid. Calls @c PrepareForFocusTransitionL() before focus is given to
       
   270      * the line.
       
   271      *
       
   272      * @param aControlId The ID of the line to focus.
       
   273      */
       
   274     IMPORT_C void TryChangeFocusToL(TInt aControlId);
       
   275 	
       
   276     /**
       
   277      * Switches the latent line. The latent line is switched from
       
   278      * @c aNoLongerLatent to @c aBecomesLatent. If dialog lines are latent they
       
   279      * are not visible and are not taken into account when laying out the
       
   280      * dialog. Latent lines can then be swapped around on the dialog later.
       
   281      *
       
   282      * @param aBecomesLatent The line ID of the line to become latent.
       
   283      * @param aNoLongerLatent The line ID of the line to that is no longer 
       
   284      *        latent.
       
   285      */
       
   286     IMPORT_C void SwitchLineLatency(TInt aBecomesLatent,TInt aNoLongerLatent);
       
   287 	
       
   288     /**
       
   289      * Sets the specified page to be densely packed, or normally packed. This
       
   290      * reduces the spacing between the dialog's lines.
       
   291      *
       
   292      * @param aPageId The ID of the page to be densely packed.
       
   293      * @param aDensePacking @c ETrue for dense packing. @c EFalse for normal 
       
   294      *        packing.
       
   295      */
       
   296     IMPORT_C void SetPageDensePacking(TInt aPageId,TBool aDensePacking);
       
   297 	
       
   298     /**
       
   299      * Dynamically constructs a dialog with the specified flags and buttons 
       
   300      * and with a single activated empty page with ID 0. The dialog is therefore
       
   301      * ready to dynamically add lines to.
       
   302      *
       
   303      * @param aFlags Dialog flags.
       
   304      * @param aButtonsId Dialog buttons.
       
   305      */
       
   306     IMPORT_C void ConstructAutoDialogLC(TInt aFlags,TInt aButtonsId);
       
   307 	
       
   308     /**
       
   309      * Sets controllers return value.
       
   310      *
       
   311      * @param[in] aControlId Control identifier for wanted caption controller.
       
   312      * @param[in] aControlType Type of control.
       
   313      * @param[out] aReturnValue Controllers return value.
       
   314      * @deprecated
       
   315      */
       
   316     IMPORT_C void DeclareItemAuto(TInt aControlId,
       
   317                                   TInt aControlType,
       
   318                                   TAny* aReturnValue);
       
   319 	
       
   320     /**
       
   321      * Lays out the dialog, setting it to take its preferred size and 
       
   322      * position for the screen.
       
   323      *
       
   324      * @since 5.1 
       
   325      */
       
   326     IMPORT_C void Layout();
       
   327 	
       
   328     /**
       
   329      * Gets the preferred size of a dialog. The maximum size that the dialog
       
   330      * must fit within must be specified, e.g. the size of the physical screen.
       
   331      *
       
   332      * @param aMaxSize The maximum size of the area in which the dialog must
       
   333      *        fit.
       
   334      * @return The preferred size of the dialog.
       
   335      */
       
   336     IMPORT_C TSize PreferredSize(const TSize& aMaxSize) const;
       
   337 	
       
   338     /**
       
   339      * Creates a control line on the page ID specified active page in 
       
   340      * the dialog. 
       
   341      * The line can thereafter be accessed through the identifier @c aControlId.
       
   342      * A control of type @c aControlType is created by the control factory and
       
   343      * the return value of the line set to @c aReturnValue. If the value of 
       
   344      * @c aControlType is not known to the control factory then the construction
       
   345      * of the control must be handled by @c CreateCustomControlL().
       
   346      *
       
   347      * @param aCaption The caption to appear in the dialog line.
       
   348      * @param aControlId The ID of the active page on which the control 
       
   349      *        line is to be created.
       
   350      * @param aControlType The type of control to create.
       
   351      * @param aReturnValue Deprecated. A random pointer.
       
   352      * @return A pointer to the newly created control.
       
   353      */
       
   354     IMPORT_C CCoeControl* CreateLineByTypeL(const TDesC& aCaption,
       
   355                                             TInt aControlId,
       
   356                                             TInt aControlType,
       
   357                                             TAny* aReturnValue);
       
   358 	
       
   359     /**
       
   360      * Creates a control line on the caption specified active page 
       
   361      * in the dialog. 
       
   362      * The line can thereafter be accessed through the identifier 
       
   363      * @c aControlId.
       
   364      * A control of type @c aControlType is created by the control 
       
   365      * factory and the return value of the line set to @c aReturnValue.
       
   366      * If the value of @c aControlType is not known to the control factory
       
   367      * then the construction of the control must be handled by 
       
   368      * @c CreateCustomControlL().
       
   369      * 
       
   370      * @param aCaption The active page on which the control line is 
       
   371      *        to be created.
       
   372      * @param aPageId The ID of the active page on which the control line is
       
   373      *        to be created.
       
   374      * @param aControlId The ID of the control. After the line is created this
       
   375      *        can be used to access it.
       
   376      * @param aControlType The type of control to create.
       
   377      * @param aReturnValue Deprecated. A random pointer.
       
   378      * @return A pointer to the newly created control.
       
   379      */
       
   380     IMPORT_C CCoeControl* CreateLineByTypeL(const TDesC& aCaption,
       
   381                                             TInt aPageId,
       
   382                                             TInt aControlId,
       
   383                                             TInt aControlType,
       
   384                                             TAny* aReturnValue);
       
   385 	
       
   386     /**
       
   387      * Sets the specified control's caption text from a descriptor.
       
   388      * 
       
   389      * @param aControlId The ID of the control for which the caption 
       
   390      *        text is being set.
       
   391      * @param aText The text for the caption.
       
   392      */
       
   393     IMPORT_C void SetControlCaptionL(TInt aControlId,const TDesC& aText);
       
   394 	
       
   395     /**
       
   396      * Sets the specified control's caption text from a resource.
       
   397      *
       
   398      * @param aControlId The ID of the control for which the caption 
       
   399      *        text is being set.
       
   400      * @param aResourceId The ID of the resource containing the text for
       
   401      *        the caption.
       
   402      */
       
   403     IMPORT_C void SetControlCaptionL(TInt aControlId,TInt aResourceId);
       
   404 	
       
   405     /**
       
   406      * Gets a pointer to the specified control's caption.
       
   407      *
       
   408      * @param aControlId The ID of the control for which the label is required.
       
   409      * @return A pointer to the caption.
       
   410      */
       
   411     IMPORT_C CEikLabel* ControlCaption(TInt aControlId) const;
       
   412 
       
   413     /**
       
   414      * Returns a pointer to the specified control. 
       
   415      * 
       
   416      * Panics if the control ID is invalid. Does not imply transfer 
       
   417      * of ownership. 
       
   418      *
       
   419      * @param aControlId The ID of the control for which a pointer is required.
       
   420      * @return A pointer to the control with ID aControlId.
       
   421      */ 
       
   422     IMPORT_C CCoeControl* Control(TInt aControlId) const;
       
   423 
       
   424     /**
       
   425      * Gets a pointer to the specified control. 
       
   426      * 
       
   427      * @param aControlId The ID of the control for which a pointer is required.
       
   428      * @return A pointer to the control with ID aControlId, or 
       
   429      *         NULL if it doesn't exist.
       
   430      */
       
   431     IMPORT_C CCoeControl* ControlOrNull(TInt aControlId) const;
       
   432 	
       
   433     /**
       
   434      * Gets a reference to the dialog's command button container.
       
   435      *
       
   436      * @return The dialog's button group container.
       
   437      */
       
   438     IMPORT_C CEikButtonGroupContainer& ButtonGroupContainer() const;
       
   439 	
       
   440     /**
       
   441      * Gets a reference to the dialog title bar.
       
   442      *
       
   443      * @return A reference to the dialog title bar.
       
   444      */ 
       
   445     IMPORT_C CEikMover& Title() const;
       
   446 	
       
   447     /**
       
   448      * Gets a page id for the current page.
       
   449      * 
       
   450      * @return Page id.
       
   451      */
       
   452     IMPORT_C TInt ActivePageId() const;
       
   453     
       
   454     /**
       
   455      * Activates the first page on the dialog. At least one page must be active
       
   456      * before this method can be used.
       
   457      */
       
   458     IMPORT_C void ActivateFirstPageL() const;
       
   459 
       
   460 
       
   461 
       
   462 // To Support Edit/View state switch for forms (Sapphire DFRD)
       
   463 // This breaks Binary Compatibility
       
   464 
       
   465     /**
       
   466      * Sets the dialog to either editable or uneditable
       
   467      *
       
   468      * @param aEditable @c ETrue if dialog is editable.
       
   469      *        @c EFalse if dialog is uneditable.
       
   470      */
       
   471 	IMPORT_C void SetEditableL( TBool aEditable ) ;
       
   472 	
       
   473     /**
       
   474      * Checks if the dialog is editable.
       
   475      * 
       
   476      * @return @c ETrue if editable.
       
   477      */
       
   478     IMPORT_C TBool IsEditable() const ;
       
   479 
       
   480 
       
   481 public: // from CCoeControl
       
   482 
       
   483     /**
       
   484      * From @c CCoeControl.
       
   485      *
       
   486      * Handles a key event. Overrides @c CCoeControl::OfferKeyEventL().
       
   487      *
       
   488      * @param aKeyEvent The key event.
       
   489      * @param aType The type of key event: @c EEventKey, @c EEventKeyUp 
       
   490      *        or @c EEventKeyDown.
       
   491      * @return Indicates whether or not the key event was used by this control.
       
   492      *         @c EKeyWasConsumed if the control takes action on the key event
       
   493      *         or @c EKeyWasNotConsumed otherwise.
       
   494      */
       
   495     IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,
       
   496                                          TEventCode aType);
       
   497 	
       
   498     /**
       
   499      * From @c CCoeControl.
       
   500      *
       
   501      * Responds to a change in focus.
       
   502      *
       
   503      * This is called whenever the control gains or loses focus, as a result 
       
   504      * of a call to @c SetFocus(). A typical use of @c FocusChanged() is to 
       
   505      * change the appearance of the control, for example by drawing a focus 
       
   506      * rectangle around it.
       
   507      *
       
   508      * The default implementation is empty, and should be overridden by the 
       
   509      * @c CCoeControl-derived class.
       
   510      *
       
   511      * @param aDrawNow Contains the value that was passed to it by 
       
   512      *        @c SetFocus().
       
   513      */
       
   514     IMPORT_C void FocusChanged(TDrawNow aDrawNow);
       
   515 	
       
   516     /**
       
   517      * From @c CCoeControl.
       
   518      *
       
   519      * Gets the list of logical colours used to draw the control.
       
   520      *
       
   521      * The list includes an explanation of how each colour is used. 
       
   522      * The default implementation is empty.
       
   523      *
       
   524      * If overriding @c GetColorUseListL(), the implementation must include 
       
   525      * a base call to @c CCoeControl's @c GetColorUseListL().
       
   526      * 
       
   527      * @since ER5U
       
   528      * @param &aColorUseList The colour list.
       
   529      */
       
   530     IMPORT_C virtual void GetColorUseListL(
       
   531         CArrayFix<TCoeColorUse>& aColorUseList) const; 
       
   532         // not available before Release 005u
       
   533 	
       
   534     /**
       
   535      * From @c CCoeControl.
       
   536      *
       
   537      * Handles a change to the control's resources.
       
   538      * 
       
   539      * The types of resources handled are those which are shared across the 
       
   540      * environment, e.g. colours or fonts. For colour scheme changes, 
       
   541      * @c DrawDeferred() is called in order to redraw the control.
       
   542      * 
       
   543      * If overriding @c HandleResourceChange(), the implementation must include
       
   544      * a base call to @c CCoeControl's @c HandleResourceChange().
       
   545      * 
       
   546      * @since ER5U
       
   547      * @param aType A message UID value.
       
   548      */ 
       
   549     IMPORT_C virtual void HandleResourceChange(TInt aType);			
       
   550             // not available before Release 005u
       
   551 
       
   552     /**
       
   553      * From @c CCoeControl.
       
   554      *
       
   555      * Gets the control's input capabilities.
       
   556      * 
       
   557      * Classes that override @c CCoeControl::OfferKeyEventL() should also 
       
   558      * override this function, returning a @c TCoeInputCapabilities object 
       
   559      * whose attributes correspond to the behaviour of the @c OfferKeyEventL() 
       
   560      * function. The default implementation returns 
       
   561      * @c TCoeInputCapabilities::ENone.
       
   562      * 
       
   563      * It is not necessary to call @c InputCapabilities() on any component 
       
   564      * controls from inside a class's @c InputCapabilities() function. This 
       
   565      * is done automatically by the UI Control Framework.
       
   566      * 
       
   567      * @since ER5U
       
   568      * @return The control's input capabilities. 
       
   569      */
       
   570     IMPORT_C TCoeInputCapabilities InputCapabilities() const;
       
   571 	
       
   572     /**
       
   573      * From @c CCoeControl.
       
   574      *
       
   575      * Sets the dialog visibility
       
   576      * 
       
   577      * @param aVisible @c ETrue control is visible.
       
   578      *        @c EFalse control is invisible.
       
   579      */
       
   580     IMPORT_C void MakeVisible(TBool aVisible);
       
   581     
       
   582     /**
       
   583      * From @c CCoeControl.
       
   584      *
       
   585      * Handles pointer events.
       
   586      *
       
   587      * This function gets called whenever a pointer event occurs in the 
       
   588      * control, i.e. when the pointer is within the control's extent, 
       
   589      * or when the control has grabbed the pointer. The control should 
       
   590      * implement this function to handle pointer events.
       
   591      *
       
   592      * Note: events of type @c EButton1Down are processed before 
       
   593      * @c HandlePointerEventL() is called, in order to transfer keyboard 
       
   594      * focus to the control in which the @c EButton1Down event occurred.
       
   595      *
       
   596      * If overriding @c HandlePointerEventL(), the implementation must include
       
   597      * a base call to @c CCoeControl's @c HandlePointerEventL().
       
   598      *
       
   599      * @param aPointerEvent The pointer event.
       
   600      */
       
   601     IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
       
   602 
       
   603 protected: // from MEikDialogPageObserver
       
   604 
       
   605     /**
       
   606      * From @c MEikDialogPageObserver.
       
   607      *
       
   608      * Should be implemented to prepare for focus transition from the 
       
   609      * current line. 
       
   610      *
       
   611      * For example to validate the contents of the current control.
       
   612      */
       
   613     IMPORT_C virtual void PrepareForFocusTransitionL();
       
   614 	
       
   615     /**
       
   616      * From @c MEikDialogPageObserver.
       
   617      * 
       
   618      * Should be implemented to take any action required when the active 
       
   619      * dialog page is changed.
       
   620      *
       
   621      * Not implemented.
       
   622      * 
       
   623      * @param aPageId The ID of the page being switched to.
       
   624      */
       
   625     IMPORT_C virtual void PageChangedL(TInt aPageId);
       
   626 	
       
   627     /** 
       
   628      * From @c MEikDialogPageObserver
       
   629      * 
       
   630      * Should be implemented to take any action required when the current 
       
   631      * line is changed to @c aControlId. 
       
   632      *
       
   633      * Not implemented.
       
   634      *
       
   635      * @param aControlId The ID of the control being switched to.
       
   636      */
       
   637     IMPORT_C virtual void LineChangedL(TInt aControlId);
       
   638 
       
   639 public: // from MEikDialogPageObserver
       
   640 	
       
   641     /** 
       
   642      * From @c MEikDialogPageObserver.
       
   643      *
       
   644      * Creates a control line in the dialog.on the active page with caption
       
   645      * text @c aCaption.
       
   646      * The line can thereafter be accessed through the identifier 
       
   647      * @c aControlId.
       
   648      * A control of type @c aControlType is created by the @c Eikon 
       
   649      * control factory and the return value of the line set to @c aReturnValue.
       
   650      * If the value of @c aControlType is not known to the Eikon control 
       
   651      * factory then the construction of the control must be handled by 
       
   652      * @c CreateCustomControlL.
       
   653      * 
       
   654      * @param aControlType The type of the custom control.
       
   655      * @return Information for the custom control.
       
   656      */
       
   657     IMPORT_C virtual SEikControlInfo CreateCustomControlL(TInt aControlType);
       
   658 	
       
   659     /**
       
   660      * From @c MEikDialogPageObserver.
       
   661      * 
       
   662      * For forms only:
       
   663      * Ths should be overriden with mappings between the base control types 
       
   664      * that form knows how to layout.
       
   665      * 
       
   666      * Always returns @c MEikDialogPageObserver::EUnknownType. 
       
   667      *
       
   668      * @param aControlType Not used.
       
   669      * @return Current implementation always 
       
   670      *         returns @c MEikDialogPageObserver::EUnknownType.
       
   671      */
       
   672     IMPORT_C MEikDialogPageObserver::TFormControlTypes 
       
   673         ConvertCustomControlTypeToBaseControlType(TInt aControlType) const;
       
   674 	
       
   675     /**
       
   676      * From @c MEikDialogPageObserver. 
       
   677      * 
       
   678      * Should be implemented to get the custom auto value for the custom control
       
   679      * @c aControl of type @c aControlType with return value @c aReturnValue. 
       
   680      *
       
   681      * This method is included in the interface to support deprecated legacy
       
   682      * code only.
       
   683      *
       
   684      * Not implemented. 
       
   685      * 
       
   686      * @param aReturnValue The custom controls return value.
       
   687      * @param aControlType The type of the custom control.
       
   688      * @param aControl The control whose auto value is being retrieved.
       
   689      * @deprecated
       
   690      */
       
   691     IMPORT_C virtual void GetCustomAutoValue(TAny* aReturnValue,
       
   692                                              TInt aControlType,
       
   693                                              const CCoeControl* aControl);
       
   694 
       
   695 protected: // from MCoeControlContext
       
   696 
       
   697     /**
       
   698      * From @c MCoeControlContext.
       
   699      * 
       
   700      * Initialises graphics context settings.
       
   701      *
       
   702      * This function should be implemented by derived classes to initialise
       
   703      * the graphics context, given by @c aGc, with the required settings. 
       
   704      *
       
   705      * @param aGc The graphics context to be initialised.
       
   706      */
       
   707 	IMPORT_C void PrepareContext(CWindowGc& aGc) const;
       
   708 
       
   709 protected: //from CCoeControl
       
   710 
       
   711     /**
       
   712      * From @c CCoeControl.
       
   713      *
       
   714      * Writes the internal state to the given stream.
       
   715      * 
       
   716      * @param[out] aWriteStream Target stream.
       
   717      */ 
       
   718 	IMPORT_C void WriteInternalStateL(RWriteStream& aWriteStream) const;
       
   719 
       
   720 private: // from CCoeControl
       
   721 
       
   722 	IMPORT_C void Draw(const TRect& aRect) const;
       
   723 
       
   724 protected:
       
   725 
       
   726     /**
       
   727      * Returns the number of the control components.
       
   728      * 
       
   729      * In Avkon returns 2 as the button group container is not internal.
       
   730      *
       
   731      * @return Number of control components. 
       
   732      */
       
   733 	IMPORT_C TInt CountComponentControls() const;
       
   734 
       
   735     /**
       
   736      * Returns a pointer to the component control at the specified index 
       
   737      * in the component control list.
       
   738      *
       
   739      * Does not imply transfer of ownership.
       
   740      *
       
   741      * @param aIndex The index of the required component control.
       
   742      * @return The required component control.
       
   743      */
       
   744 	IMPORT_C CCoeControl* ComponentControl(TInt aIndex) const;
       
   745 
       
   746 protected:
       
   747 
       
   748     /**
       
   749      * Gets number of lines in the specified page. 
       
   750      * 
       
   751      * @param aPageIndex Index of the page container. 
       
   752      * @return The number of lines in the page.
       
   753      */
       
   754 	IMPORT_C TInt GetNumberOfLinesOnPage(TInt aPageIndex) const;
       
   755 
       
   756     /** 
       
   757      * Gets number of pages in the page selector.
       
   758      * 
       
   759      * @return The number of pages. 
       
   760      */ 
       
   761 	IMPORT_C TInt GetNumberOfPages() const;
       
   762 
       
   763     /**
       
   764      * Gets specified line from specified page.
       
   765      *
       
   766      * @param aLineIndex Index of the requested line. 
       
   767      * @param aPageIndex Index of the requested page. 
       
   768      * @return The wanted line.
       
   769      */ 
       
   770 	IMPORT_C CEikCaptionedControl* GetLineByLineAndPageIndex(TInt aLineIndex, 
       
   771                                                       TInt aPageIndex) const;
       
   772 
       
   773 private:
       
   774 	
       
   775     IMPORT_C void SizeChanged();
       
   776 	
       
   777     IMPORT_C TSize MinimumSize();
       
   778 	
       
   779     IMPORT_C void ConstructFromResourceL(TResourceReader& aReader);
       
   780 	
       
   781     IMPORT_C void Reserved_2();
       
   782 
       
   783 private:
       
   784 
       
   785     /**
       
   786     * From CAknControl
       
   787     */
       
   788     IMPORT_C void* ExtensionInterface( TUid aInterface );
       
   789 
       
   790 protected: // from MCoeControlObserver
       
   791 
       
   792     /**
       
   793      * From @c MCoeControlObserver. 
       
   794      *
       
   795      * Handles control events. 
       
   796      * 
       
   797      * The default implementation handles events of type @c EEventStateChanged,
       
   798      * @c EEventInteractionRefused, and @c EEventPrepareFocusTransition by 
       
   799      * calling @c HandleControlStateChangeL(), @c HandleInteractionRefused(),
       
   800      * and @c PrepareForFocusTransitionL() respectively.
       
   801      *
       
   802      * Overrides @c MCoeControlObserver::HandleControlEventL().
       
   803      * 
       
   804      * @param aControl The control reporting the event.
       
   805      * @param aEventType The event type.
       
   806      */ 
       
   807 	IMPORT_C void HandleControlEventL(CCoeControl* aControl,
       
   808                                       TCoeEvent aEventType);
       
   809 
       
   810 protected: // new functions
       
   811 
       
   812     /**
       
   813      * Tries to exit the dialog when the specified button is pressed, if this 
       
   814      * button should exit the dialog.
       
   815      *
       
   816      * See @c OkToExitL() to determine which buttons can exit the dialog.
       
   817      * 
       
   818      * This will fail if user exit is prevented by the 
       
   819      * @c EEikDialogFlagNoUserExit flag. If the @c EEikDialogFlagNotifyEsc flag
       
   820      * is not set and the dialog has been cancelled it immediately deletes 
       
   821      * itself.
       
   822      * 
       
   823      * @param aButtonId The id of the pressed button.
       
   824      */
       
   825     IMPORT_C void TryExitL(TInt aButtonId);
       
   826 	
       
   827     /**
       
   828      * Adjusts the IDs of all controls on a specified page. 
       
   829      *
       
   830      * The adjustment consists of incrementing all the control IDs by 
       
   831      * @c aControlIdDelta.
       
   832      * 
       
   833      * @param aPageId The page on which the control IDs are to be adjusted.
       
   834      * @param aControlIdDelta The amount to increment the IDs.
       
   835      */
       
   836     IMPORT_C void AdjustAllIdsOnPage(TInt aPageId,TInt aControlIdDelta);
       
   837 	
       
   838     /** 
       
   839      * Protected constructor creates a sleeping dialog from a resource. 
       
   840      *
       
   841      * A sleeping dialog is one which can be displayed at any time since 
       
   842      * its memory resources are pre-allocated.
       
   843      * 
       
   844      * @param aResourceId The resource ID of the dialog to be constructed.
       
   845      */ 
       
   846     IMPORT_C void ConstructSleepingDialogL(TInt aResourceId);
       
   847 	
       
   848     /**
       
   849      * Protected construction of a high priority sleeping dialog from 
       
   850      * a resource. 
       
   851      *
       
   852      * A sleeping dialog is one which can be displayed at any time since 
       
   853      * its memory resources are pre-allocated. 
       
   854      * 
       
   855      * @param aResourceId The resource ID of the dialog to be constructed.
       
   856      */ 
       
   857     IMPORT_C void ConstructSleepingAlertDialogL(TInt aResourceId);
       
   858 	
       
   859     /** 
       
   860      * Rouses a sleeping dialog by dynamically constructing the dialog and
       
   861      * then bringing it to the front.
       
   862      *
       
   863      * Derived dialogs should pre-allocate any memory they need for 
       
   864      * initialisation during construction via @c ConstructFromResourceL() 
       
   865      * for each individual control. Derived versions of @c PreLayoutDynInitL()
       
   866      * cannot rely on allocating any further memory.
       
   867      *
       
   868      * @return Zero.
       
   869      */ 
       
   870     IMPORT_C TInt RouseSleepingDialog();
       
   871 
       
   872     /**
       
   873      * Exits sleeping dialog without deleting it.
       
   874      */ 
       
   875     IMPORT_C void ExitSleepingDialog();
       
   876 	
       
   877     /** 
       
   878      * Gets the ID of the control in the focused line.
       
   879      * 
       
   880      * @return Current control ID.
       
   881      */ 
       
   882     IMPORT_C TInt IdOfFocusControl() const;
       
   883 	
       
   884     /**
       
   885      * Gets the line index of the specified control.
       
   886      *
       
   887      * The control must be on the active page.
       
   888      *
       
   889      * @param aControl The control for which the line index is required.
       
   890      * @return The line index, or @c KErrNotFound if the control is not on the
       
   891      *         active page.
       
   892      */ 
       
   893     IMPORT_C TInt FindLineIndex(const CCoeControl& aControl) const;
       
   894 
       
   895     /**
       
   896      * Gets a pointer to the line containing the specified control. 
       
   897      *
       
   898      * This does not imply transfer of ownership from the dialog.
       
   899      *
       
   900      * @param aControlId The ID of the control.
       
   901      * @return A pointer to the line containing the control identified by
       
   902      *         @c aControlId.
       
   903      */ 
       
   904     IMPORT_C CEikCaptionedControl* Line(TInt aControlId) const;
       
   905 
       
   906     /**
       
   907      * Gets a pointer to the current line.
       
   908      *
       
   909      * This does not imply transfer of ownership from the dialog.
       
   910      *
       
   911      * @return A pointer to the current line.
       
   912      */
       
   913     IMPORT_C CEikCaptionedControl* CurrentLine() const;
       
   914 	
       
   915     /**
       
   916      * Rotates the focus by a specified number of steps.
       
   917      *
       
   918      * Each line is a step, as are dialog tabs.
       
   919      *
       
   920      * @param aDelta The number of steps.
       
   921      * @return @c ETrue if rotation of focus is successful, 
       
   922      *         @c EFalse if there are no lines in the dialog or the rotation is
       
   923      *         otherwise unsuccessful.
       
   924      */ 
       
   925     IMPORT_C TBool RotateFocusByL(TInt aDelta);
       
   926 	
       
   927     /**
       
   928      * Gets the index of the dialog's active page.
       
   929      *
       
   930      * Pages are indexed from 0 in the order they are added.
       
   931      *
       
   932      * @return The index of the active page.
       
   933      */ 
       
   934     IMPORT_C TInt ActivePageIndex() const;
       
   935 	
       
   936     /**
       
   937      * Recalculates the minimum sizes of the lines on the active page.
       
   938      *
       
   939      * Overrides @c CCoeControl::ResetLineMinimumSizes().
       
   940      */
       
   941     IMPORT_C void ResetLineMinimumSizes();
       
   942 	
       
   943     /**
       
   944      * Swaps the dialog's button group container with a new container.
       
   945      *
       
   946      * The dialog takes ownership of the new container. A pointer to the old
       
   947      * button group container is returned and ownership of this object is 
       
   948      * transferred to the calling object.
       
   949      *
       
   950      * @param aContainer The new button group container.
       
   951      * @return A pointer to the old button group container. This is no longer
       
   952      *         owned by the dialog.
       
   953      */
       
   954     IMPORT_C CEikButtonGroupContainer* SwapButtonGroupContainer(
       
   955                                         CEikButtonGroupContainer* aContainer);
       
   956 	
       
   957     /**
       
   958      * Gets a pointer to the dialog's internal button command observer. 
       
   959      *
       
   960      * This is required when creating a new button group container for 
       
   961      * the dialog.
       
   962      * 
       
   963      * A dialog uses a proxy to observe button commands. This means dialog
       
   964      * subclasses can directly observe commands, either issued by controls 
       
   965      * added to the dialog pages, or by menus launched by the dialog.
       
   966      *
       
   967      * @since 5.1
       
   968      * @return A pointer to the dialog's internal button
       
   969      *         command observer.
       
   970      */ 
       
   971     IMPORT_C MEikCommandObserver* ButtonCommandObserver() const;
       
   972 
       
   973 protected: // new functions
       
   974 
       
   975     /**
       
   976      * Not implemented.
       
   977      *
       
   978      * @param aButtonId Not used.
       
   979      * @return Always return @c ETrue.
       
   980      */
       
   981     IMPORT_C virtual TBool OkToExitL(TInt aButtonId);
       
   982 	
       
   983     /**
       
   984      * Initializes the dialog's controls before the dialog is sized and 
       
   985      * layed out. Empty by default.
       
   986      */
       
   987     IMPORT_C virtual void PreLayoutDynInitL();
       
   988 	
       
   989     /**
       
   990      * Initializes the dialog's controls after the dialog has been sized 
       
   991      * but before it has been activated. Empty by default.
       
   992      */
       
   993     IMPORT_C virtual void PostLayoutDynInitL();
       
   994 	
       
   995     /**
       
   996      * Sets the line which initally receives focus.
       
   997      * This is the first focusable line on the first page in the
       
   998      * dialog by default. Reimplementations of this method must
       
   999      * activate a page before doing anything else.
       
  1000      */
       
  1001     IMPORT_C virtual void SetInitialCurrentLine();
       
  1002 	
       
  1003     /**
       
  1004      * Handles a state change in the control with id aControlId. 
       
  1005      * Empty by default.
       
  1006      *
       
  1007      * @param aControlId Not used.
       
  1008      */
       
  1009     IMPORT_C virtual void HandleControlStateChangeL(TInt aControlId);
       
  1010 	
       
  1011     /**
       
  1012      * Should handle an attempt by the user to activate a dimmed button with
       
  1013      * id aControlId. Prints an info message by default.
       
  1014      *
       
  1015      * Not implemented / Does nothing in Avkon.
       
  1016      *
       
  1017      * @param aControlId Not used.
       
  1018      */
       
  1019     IMPORT_C virtual void HandleInteractionRefused(TInt aControlId);
       
  1020 	
       
  1021     /**
       
  1022      * Sets the size and position of the dialog given the specified size hint.
       
  1023      *
       
  1024      * The parameter is ignored if the @c FlagFillAppClientRect is set.
       
  1025      * Otherwise it it centered and given the size that was asked for.
       
  1026      *
       
  1027      * @param aSize The new size.
       
  1028      */
       
  1029     IMPORT_C virtual void SetSizeAndPosition(const TSize& aSize);
       
  1030 	
       
  1031     /**
       
  1032      * Returns the border style for this dialog.
       
  1033      *
       
  1034      * @return Border style. Always returns @c AknBorderId::EAknBorderNotePopup.
       
  1035      */
       
  1036     IMPORT_C virtual TInt BorderStyle();
       
  1037 	
       
  1038     // Added for Avkon
       
  1039 
       
  1040     /**
       
  1041      * Routine to map the button id ( Avkon softkey command id) to 
       
  1042      * @c CEikBidCancel if it is a "cancel" type command type. 
       
  1043      *
       
  1044      * The following cases are mapped to a give an @c ExecuteLD return value 
       
  1045      * of 0:
       
  1046      *
       
  1047      *		@c EAknSoftkeyCancel:
       
  1048      *		@c EAknSoftkeyBack:
       
  1049      *		@c EAknSoftkeyNo:
       
  1050      *
       
  1051      * Other cases are left unchanged.
       
  1052      * 
       
  1053      * This operation is performed at the last minute and does not affect other
       
  1054      * processing in @c CEik/AknDialog. 
       
  1055      *
       
  1056      * It is a framework method; It can be overridded to obtain customized 
       
  1057      * behaviour.
       
  1058      *
       
  1059      * @param aButtonId input id to map. 
       
  1060      * @return 0 for re-mapped negative command ids other values 
       
  1061      *         are returned as their original command id values.
       
  1062      */
       
  1063     IMPORT_C virtual TInt MappedCommandId( TInt aButtonId );
       
  1064 	
       
  1065     /**
       
  1066      * Get form flags of the active page
       
  1067      *
       
  1068      * @return Active page's form flags 
       
  1069      */ 
       
  1070     IMPORT_C TInt FormFlagsFromActivePage();
       
  1071 
       
  1072 /* The following two methods are deprecated
       
  1073 	GetFirstLineOnFirstPageOrNull
       
  1074 	ControlsOnPage
       
  1075 
       
  1076 instead the functionality can be achieved by
       
  1077 	TInt GetNumberOfLinesOnPage(TInt aPageIndex) const;
       
  1078 	TInt GetNumberOfPages() const;
       
  1079 	CEikCaptionedControl* GetLineByLineAndPageIndex(TInt aLineIndex, 
       
  1080 	                                                TInt aPageIndex) const;
       
  1081 */
       
  1082 
       
  1083     /**
       
  1084      * Gets first line of the first page. 
       
  1085      * 
       
  1086      * @deprecated
       
  1087      * @return Pointer to the first line of the first page. If NULL there is no
       
  1088      *         such line.
       
  1089      */
       
  1090 	IMPORT_C virtual CEikCaptionedControl* GetFirstLineOnFirstPageOrNull();
       
  1091 
       
  1092     /**
       
  1093      * Gets all lines in the given page.
       
  1094      *
       
  1095      * @param aControls After execution holds all captions in the page.
       
  1096      * @param aPageId ID of the target page.
       
  1097      * @deprecated
       
  1098      */
       
  1099     IMPORT_C void ControlsOnPage(RArray<CEikCaptionedControl*>& aControls, 
       
  1100                                  TInt aPageId) const;
       
  1101 
       
  1102     
       
  1103 
       
  1104 
       
  1105 protected: // from MObjectProvider
       
  1106 
       
  1107     /**
       
  1108      * From @c MObjectProvider.
       
  1109      *
       
  1110      * Retrieves an object of the same type as that encapsulated in aId.
       
  1111      *
       
  1112      * This function is used to allow controls to ask their owners for 
       
  1113      * access to other objects that they own.
       
  1114      *
       
  1115      * Other than in the case where NULL is returned, the object returned 
       
  1116      * must be of the same object type - that is, the @c ETypeId member of 
       
  1117      * the object pointed to by the pointer returned by this function must 
       
  1118      * be equal to the iUid member of aId.
       
  1119      *
       
  1120      * @param aId An encapsulated object type ID. 
       
  1121      * @return Encapsulates the pointer to the object provided. 
       
  1122      *         Note that the encapsulated pointer may be NULL. 
       
  1123      */ 
       
  1124     IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
       
  1125 
       
  1126 private: // new functions
       
  1127 
       
  1128     IMPORT_C virtual void CEikDialog_Reserved_1();
       
  1129 	
       
  1130     IMPORT_C virtual void CEikDialog_Reserved_2();
       
  1131 
       
  1132 private: // internal functions
       
  1133 	
       
  1134     void BaseConstructL();
       
  1135 
       
  1136     void StaticConstructL(TInt aResourceId);
       
  1137 	
       
  1138     void DynamicConstructL();
       
  1139 	
       
  1140     void CreateTitleBarL();
       
  1141 	
       
  1142     void CreateButtonGroupContainerL(TInt aResourceId);
       
  1143 	
       
  1144     void CreatePageSelectorL();
       
  1145 	
       
  1146     void CreatePageSelectorL(TInt aResourceId);
       
  1147 	
       
  1148     TInt WaitAsRequired();
       
  1149 	
       
  1150     void StopWaitingAsRequired();
       
  1151 	
       
  1152     TKeyResponse TryAnimateButtonAndExitL(TInt aKeycode);
       
  1153 	
       
  1154     void GetAutoValues();
       
  1155 	
       
  1156     void CommonConstructSleepingDialogL(TInt aResourceId);
       
  1157 	
       
  1158     void SetBorderStyle();
       
  1159 	
       
  1160     void FadeBehindPopup(TBool aFade);
       
  1161 	
       
  1162     void DoFadeBehindPopup(TBool aFade);
       
  1163 
       
  1164 	void DoResourceChangeLayout();
       
  1165 	
       
  1166     /**
       
  1167      * Handles embedded softkey state change.
       
  1168      *
       
  1169      * @internal
       
  1170      * @since S60 v5.2
       
  1171      */
       
  1172     void HandleEmbeddedSofkeyStateChange();
       
  1173 
       
  1174     /**
       
  1175      * Call back method to handle @c CEikCba content changes.
       
  1176      *
       
  1177      * @internal
       
  1178      * @since S60 v5.2
       
  1179      * @param aAny pointer to @c CEikDialog instance.
       
  1180      * @return error code.
       
  1181      */         
       
  1182     static TInt HandleEmbeddedSoftkeyStateChangeCallBack( TAny* aAny );
       
  1183     
       
  1184     /**
       
  1185      * Enables/disables content observer.
       
  1186      *
       
  1187      * @internal
       
  1188      * @since S60 v5.2
       
  1189      * @param aEnabled ETrue to enable, EFalse to disable.
       
  1190      */
       
  1191     void EnableContentObserver( TBool aEnabled );
       
  1192 
       
  1193     // From MAknFadedComponent
       
  1194 	
       
  1195     IMPORT_C virtual TInt CountFadedComponents();
       
  1196 	
       
  1197     IMPORT_C virtual CCoeControl* FadedComponent(TInt aIndex);
       
  1198 
       
  1199 private:
       
  1200 
       
  1201     CEikMover* iTitleBar;
       
  1202 	
       
  1203     CEikDialogPageSelector* iPageSelector;
       
  1204 	
       
  1205     CEikButtonGroupContainer* iButtonGroupContainer;
       
  1206 	
       
  1207     CEikDialogButtonCommandObserver* iButtonCommandObserver;
       
  1208 	
       
  1209     TInt iDialogFlags;
       
  1210 	
       
  1211     TInt* iExitConfirmed;
       
  1212 
       
  1213 	TBool iIsEditable ;
       
  1214 	
       
  1215     TAknPopupFader iPopupFader;
       
  1216 	
       
  1217     CActiveSchedulerWait iWait;		// owned, safe to use as direct member data.
       
  1218 
       
  1219 public :
       
  1220 
       
  1221 	/**
       
  1222 	* Access to CEikDialog's extension object. 
       
  1223 	* 
       
  1224 	* @return Pointer to extension object. 
       
  1225     *         Constructed in @c CEikDialog::BaseContructL	
       
  1226     */
       
  1227 	IMPORT_C CEikDialogExtension* Extension() const;
       
  1228 
       
  1229 private :
       
  1230 
       
  1231     CEikDialogExtension* iExtension ; // owned
       
  1232 
       
  1233 private:
       
  1234 
       
  1235     friend class CEikDialogButtonCommandObserver;
       
  1236 	
       
  1237     friend class CEikDialogExtension;
       
  1238 	
       
  1239     friend class CAknDialog;
       
  1240     
       
  1241     friend class CAknCharMap;
       
  1242 
       
  1243     friend class CAknCharMapDialog;
       
  1244 	
       
  1245     friend class CAknNoteDialog;
       
  1246     
       
  1247     friend class CAknMediatorFacade;
       
  1248 
       
  1249 public: // added JIn to allow access to dialog flags.
       
  1250 
       
  1251     /**
       
  1252      * Gets flags of the dialog.
       
  1253      *
       
  1254      * @return Dialog flags.
       
  1255      */
       
  1256     IMPORT_C TInt DialogFlags();
       
  1257 
       
  1258 protected: 
       
  1259 
       
  1260     /** 
       
  1261      * Sets the current Dialog into the Page selector
       
  1262      */ 
       
  1263     void RegisterDialgWithPageSelector();
       
  1264 
       
  1265 //
       
  1266 // Deprecated interfaces.
       
  1267 // Defined in EIKDLGUT.CPP.
       
  1268 //
       
  1269 public: // Declare auto interfaces.
       
  1270 
       
  1271     /**
       
  1272      * @deprecated Not supported.
       
  1273      */
       
  1274     IMPORT_C void DeclareAutoTextEditorL(TInt aId,TDes* aText);
       
  1275 	
       
  1276     /**
       
  1277      * @deprecated Not supported.
       
  1278      */
       
  1279     IMPORT_C void DeclareAutoNumberEditor(TInt aId,TInt* aNumber);
       
  1280 	
       
  1281     /**
       
  1282      * @deprecated Not supported.
       
  1283      */
       
  1284     IMPORT_C void DeclareAutoRangeEditor(TInt aId,SEikRange* aRange);
       
  1285 	
       
  1286     /**
       
  1287      * @deprecated Not supported.
       
  1288      */
       
  1289     IMPORT_C void DeclareAutoTimeEditor(TInt aId,TTime* aTime);
       
  1290 	
       
  1291     /**
       
  1292      * @deprecated Not supported.
       
  1293      */
       
  1294     IMPORT_C void DeclareAutoDateEditor(TInt aId,TTime* aDate);
       
  1295 	
       
  1296     /**
       
  1297      * @deprecated Not supported.
       
  1298      */
       
  1299     IMPORT_C void DeclareAutoTimeAndDateEditor(TInt aId,TTime* aTimeAndDate);
       
  1300 	
       
  1301     /**
       
  1302      * @deprecated Not supported.
       
  1303      */
       
  1304     IMPORT_C void DeclareAutoDurationEditor(TInt aId,
       
  1305                                         TTimeIntervalSeconds* aDuration);
       
  1306 	
       
  1307     /**
       
  1308      * @deprecated Not supported.
       
  1309      */
       
  1310     IMPORT_C void DeclareAutoTimeOffsetEditor(TInt aId,
       
  1311                                         TTimeIntervalSeconds* aTimeOffset);
       
  1312 
       
  1313 //	IMPORT_C void DeclareAutoLatitudeEditor(TInt aId,
       
  1314 //                                      SEikDegreesMinutesDirection* aLatitude);
       
  1315 //	IMPORT_C void DeclareAutoLongitudeEditor(TInt aId,SEikDegreesMinutesDirection* aLongitude);
       
  1316 	
       
  1317     /**
       
  1318      * @deprecated Not supported.
       
  1319      */
       
  1320     IMPORT_C void DeclareAutoFixedPointEditor(TInt aId,TInt* aValue);
       
  1321 	
       
  1322     /**
       
  1323      * @deprecated Not supported.
       
  1324      */
       
  1325     IMPORT_C void DeclareAutoSecretEditor(TInt aId,TDes* aText);
       
  1326 
       
  1327 public: // Add auto interfaces.
       
  1328 
       
  1329     /**
       
  1330      * @deprecated Not supported.
       
  1331      */
       
  1332     IMPORT_C void AddAutoTextEditorL(const TDesC& aPrompt,TInt aId,TInt aFlags,TInt aWidthInChars,TInt aNoOfLines,TDes* aReturn);
       
  1333 
       
  1334     /**
       
  1335      * @deprecated Not supported.
       
  1336      */
       
  1337     IMPORT_C void AddAutoGlobalTextEditorL(const TDesC& aPrompt,TInt aId,TInt aFlags,TInt aWidthInChars,TInt aNoOfLines,TInt aTextLimit,CGlobalText* aReturn,TInt aFontControlFlags=EGulFontControlAll,TInt aFontNameFlags=EGulNoSymbolFonts);
       
  1338 	
       
  1339     /**
       
  1340      * @deprecated Not supported.
       
  1341      */
       
  1342     IMPORT_C void AddAutoRichTextEditorL(const TDesC& aPrompt,TInt aId,TInt aFlags,TInt aWidthInChars,TInt aNoOfLines,TInt aTextLimit,CGlobalText* aReturn,TInt aFontControlFlags=EGulFontControlAll,TInt aFontNameFlags=EGulNoSymbolFonts);
       
  1343 	
       
  1344     /**
       
  1345      * @deprecated Not supported.
       
  1346      */
       
  1347     IMPORT_C void AddAutoNumberEditorL(const TDesC& aPrompt,TInt aId,TInt aMin,TInt aMax,TInt* aReturn);
       
  1348 	
       
  1349     /**
       
  1350      * @deprecated Not supported.
       
  1351      */
       
  1352     IMPORT_C void AddAutoRangeEditorL(const TDesC& aPrompt,TInt aId,TInt aMin,TInt aMax,HBufC* aSeparatorText,SEikRange* aReturn);
       
  1353 	
       
  1354     /**
       
  1355      * @deprecated Not supported.
       
  1356      */
       
  1357     IMPORT_C void AddAutoTimeEditorL(const TDesC& aPrompt,TInt aId,const TTime& aMin,const TTime& aMax,TBool aNoSeconds,TTime* aReturn);
       
  1358 	
       
  1359     /**
       
  1360      * @deprecated Not supported.
       
  1361      */
       
  1362     IMPORT_C void AddAutoDateEditorL(const TDesC& aPrompt,TInt aId,const TTime& aMin,const TTime& aMax, TBool aNoPopout,TTime* aReturn);
       
  1363 	
       
  1364     /**
       
  1365      * @deprecated Not supported.
       
  1366      */
       
  1367     IMPORT_C void AddAutoTimeAndDateEditorL(const TDesC& aPrompt,TInt aId,const TTime& aMin,const TTime& aMax,TBool aNoSeconds,TBool aNoPopout,HBufC* aInterveningText,TTime* aReturn);
       
  1368 	
       
  1369     /**
       
  1370      * @deprecated Not supported.
       
  1371      */
       
  1372     IMPORT_C void AddAutoDurationEditorL(const TDesC& aPrompt,TInt aId,const TTimeIntervalSeconds& aMin,const TTimeIntervalSeconds& aMax,TBool aNoSeconds,TTimeIntervalSeconds* aReturn);
       
  1373 	
       
  1374     /**
       
  1375      * @deprecated Not supported.
       
  1376      */
       
  1377     IMPORT_C void AddAutoTimeOffsetEditorL(const TDesC& aPrompt,TInt aId,const TTimeIntervalSeconds& aMin,const TTimeIntervalSeconds& aMax,TBool aNoSeconds,TTimeIntervalSeconds* aReturn);
       
  1378 
       
  1379 //	IMPORT_C void AddAutoLatitudeEditorL(const TDesC& aPrompt,TInt aId,HBufC* aDegreeSign,HBufC* aMinuteSign,HBufC* aSecondSign,HBufC* aTextForNorth,TChar aKeyToMatchForNorth,HBufC* aTextForSouth,TChar aKeyToMatchForSouth,SEikDegreesMinutesDirection* aReturn,TInt aFlags=0);
       
  1380 //	IMPORT_C void AddAutoLongitudeEditorL(const TDesC& aPrompt,TInt aId,HBufC* aDegreeSign,HBufC* aMinuteSign,HBufC* aSecondSign,HBufC* aTextForEast,TChar aKeyToMatchForEast,HBufC* aTextForWest,TChar aKeyToMatchForWest,SEikDegreesMinutesDirection* aReturn,TInt aFlags=0);
       
  1381 
       
  1382     /**
       
  1383      * @deprecated Not supported.
       
  1384      */
       
  1385     IMPORT_C void AddAutoFloatEditorL(const TDesC& aPrompt,TInt aId,const TReal& aMin,const TReal& aMax,TReal* aReturn);
       
  1386 	
       
  1387     /**
       
  1388      * @deprecated Not supported.
       
  1389      */
       
  1390     IMPORT_C void AddAutoFixedPointEditorL(const TDesC& aPrompt,TInt aId,TInt aMin,TInt aMax,TInt* aRetValue,TInt aDecimalPlaces);
       
  1391 	
       
  1392     /**
       
  1393      * @deprecated Not supported.
       
  1394      */
       
  1395     IMPORT_C void AddAutoSecretEditorL(const TDesC& aPrompt,TInt aId,TDes* aReturn);
       
  1396 
       
  1397 protected: // Set state interfaces.
       
  1398 
       
  1399     /**
       
  1400      * @deprecated Not supported.
       
  1401      */
       
  1402     IMPORT_C void SetLabelL(TInt aControlId, const TDesC& aDes);
       
  1403 	
       
  1404     /**
       
  1405      * @deprecated Not supported.
       
  1406      */
       
  1407     IMPORT_C void SetLabelL(TInt aControlId, TInt aResourceId);
       
  1408 	
       
  1409     /**
       
  1410      * @deprecated Not supported.
       
  1411      */
       
  1412     IMPORT_C void SetLabelReserveLengthL(TInt aControlId, TInt aLength);
       
  1413 	
       
  1414     /**
       
  1415      * @deprecated Not supported.
       
  1416      */
       
  1417     IMPORT_C void SetEdwinTextL(TInt aControlId, const TDesC* aDes);
       
  1418 	
       
  1419     /**
       
  1420      * @deprecated Not supported.
       
  1421      */
       
  1422     IMPORT_C void SetTextEditorTextL(TInt aControlId,const CGlobalText* aGlobalText);
       
  1423 	
       
  1424     /**
       
  1425      * @deprecated Not supported.
       
  1426      */
       
  1427     IMPORT_C void ResetSecretEditor(TInt aControlId);
       
  1428 	
       
  1429     /**
       
  1430      * @deprecated Not supported.
       
  1431      */
       
  1432     IMPORT_C void SetFloatingPointEditorValueL(TInt aControlId, const TReal* aValue);
       
  1433 	
       
  1434     /**
       
  1435      * @deprecated Not supported.
       
  1436      */
       
  1437     IMPORT_C void SetFixedPointEditorValueL(TInt aControlId,TInt aValue);
       
  1438 	
       
  1439     /**
       
  1440      * @deprecated Not supported.
       
  1441      */
       
  1442     IMPORT_C void SetFixedPointEditorDecimal(TInt aControlId, TInt aDecimal);
       
  1443 	
       
  1444     /**
       
  1445      * @deprecated Not supported.
       
  1446      */
       
  1447     IMPORT_C void SetNumberEditorMinAndMax(TInt aControlId, TInt aMinimumValue, TInt aMaximumValue); // only values inside the initial min and max are permitted
       
  1448 	
       
  1449     /**
       
  1450      * @deprecated Not supported.
       
  1451      */
       
  1452     IMPORT_C void SetNumberEditorValue(TInt aControlId, TInt aNumber);
       
  1453 	
       
  1454     /**
       
  1455      * @deprecated Not supported.
       
  1456      */
       
  1457     IMPORT_C void SetFloatEditorMinAndMax(TInt aControlId,TInt aMin,TInt aMax);
       
  1458 	
       
  1459     /**
       
  1460      * @deprecated Not supported.
       
  1461      */
       
  1462     IMPORT_C void SetFloatEditorValueL(TInt aControlId,TReal aFloat);
       
  1463 	
       
  1464     /**
       
  1465      * @deprecated Not supported.
       
  1466      */
       
  1467     IMPORT_C void SetRangeEditorMinAndMax(TInt aControlId, TInt aMinimumValue, TInt aMaximumValue); // only values inside the initial min and max are permitted
       
  1468 	
       
  1469     /**
       
  1470      * @deprecated Not supported.
       
  1471      */
       
  1472     IMPORT_C void SetRangeEditorValue(TInt aControlId, const SEikRange& aRange);
       
  1473 	
       
  1474     /**
       
  1475      * @deprecated Not supported.
       
  1476      */
       
  1477     IMPORT_C void SetTTimeEditorMinAndMax(TInt aControlId, const TTime& aMinimumTime, const TTime& aMaximumTime); // only values inside the initial min and max are permitted
       
  1478 	
       
  1479     /**
       
  1480      * @deprecated Not supported.
       
  1481      */
       
  1482     IMPORT_C void SetTTimeEditorValue(TInt aControlId, const TTime& aTime);
       
  1483 	
       
  1484     /**
       
  1485      * @deprecated Not supported.
       
  1486      */
       
  1487     IMPORT_C void SetDurationEditorMinAndMax(TInt aControlId, const TTimeIntervalSeconds& aMinimumDuration, const TTimeIntervalSeconds& aMaximumDuration); // only values inside the initial min and max are permi
       
  1488 	
       
  1489     /**
       
  1490      * @deprecated Not supported.
       
  1491      */
       
  1492     IMPORT_C void SetDurationEditorValue(TInt aControlId, const TTimeIntervalSeconds& aDuration);
       
  1493 	
       
  1494     /**
       
  1495      * @deprecated Not supported.
       
  1496      */
       
  1497     IMPORT_C void SetTimeOffsetEditorMinAndMax(TInt aControlId, const TTimeIntervalSeconds& aMinimumTimeOffset, const TTimeIntervalSeconds& aMaximumTimeOffset); // only values inside the initial min and max are
       
  1498 	
       
  1499     /**
       
  1500      * @deprecated Not supported.
       
  1501      */
       
  1502     IMPORT_C void SetTimeOffsetEditorValue(TInt aControlId, const TTimeIntervalSeconds& aTimeOffset);
       
  1503 
       
  1504 //	IMPORT_C void SetLatitudeEditorValue(TInt aControlId, const SEikDegreesMinutesDirection& aLatitude);
       
  1505 //	IMPORT_C void SetLongitudeEditorValue(TInt aControlId, const SEikDegreesMinutesDirection& aLongitude);
       
  1506 
       
  1507     /**
       
  1508      * @deprecated Not supported.
       
  1509      */
       
  1510     IMPORT_C void SetListBoxCurrentItem(TInt aControlId, TInt aItem);
       
  1511 	
       
  1512     /**
       
  1513      * @deprecated Not supported.
       
  1514      */
       
  1515     IMPORT_C void SetFileNameL(TInt aControlId, const TDesC* aFileName);
       
  1516 
       
  1517 protected: // Get state interfaces.
       
  1518 
       
  1519     /**
       
  1520      * @deprecated Not supported.
       
  1521      */
       
  1522     IMPORT_C void GetLabelText(TDes& aDes,TInt aControlId) const;
       
  1523 	
       
  1524     /**
       
  1525      * @deprecated Not supported.
       
  1526      */
       
  1527     IMPORT_C void GetEdwinText(TDes& aDes,TInt aControlId) const;
       
  1528 	
       
  1529     /**
       
  1530      * @deprecated Not supported.
       
  1531      */
       
  1532     IMPORT_C void GetTextEditorText(CGlobalText*& aGlobalText,TInt aControlId);
       
  1533 	
       
  1534     /**
       
  1535      * @deprecated Not supported.
       
  1536      */
       
  1537     IMPORT_C void GetSecretEditorText(TDes& aDes,TInt aControlId) const;
       
  1538 	
       
  1539     /**
       
  1540      * @deprecated Not supported.
       
  1541      */
       
  1542     IMPORT_C TReal FloatingPointEditorValue(TInt aControlId) const;
       
  1543 	
       
  1544     /**
       
  1545      * @deprecated Not supported.
       
  1546      */
       
  1547     IMPORT_C TInt FixedPointEditorValue(TInt aControlId) const;
       
  1548 	
       
  1549     /**
       
  1550      * @deprecated Not supported.
       
  1551      */
       
  1552     IMPORT_C TInt FixedPointEditorDecimal(TInt aControlId) const;
       
  1553 	
       
  1554     /**
       
  1555      * @deprecated Not supported.
       
  1556      */
       
  1557     IMPORT_C TReal FloatEditorValue(TInt aControlId) const;
       
  1558 	
       
  1559     /**
       
  1560      * @deprecated Not supported.
       
  1561      */
       
  1562     IMPORT_C TInt NumberEditorValue(TInt aControlId) const;
       
  1563 	
       
  1564     /**
       
  1565      * @deprecated Not supported.
       
  1566      */
       
  1567     IMPORT_C SEikRange RangeEditorValue(TInt aControlId) const;
       
  1568 	
       
  1569     /**
       
  1570      * @deprecated Not supported.
       
  1571      */
       
  1572     IMPORT_C TTime TTimeEditorValue(TInt aControlId) const;
       
  1573 	
       
  1574     /**
       
  1575      * @deprecated Not supported.
       
  1576      */
       
  1577     IMPORT_C TTimeIntervalSeconds DurationEditorValue(TInt aControlId) const;
       
  1578 	
       
  1579     /**
       
  1580      * @deprecated Not supported.
       
  1581      */
       
  1582     IMPORT_C TTimeIntervalSeconds TimeOffsetEditorValue(TInt aControlId) const;
       
  1583 
       
  1584 //	IMPORT_C SEikDegreesMinutesDirection LatitudeEditorValue(TInt aControlId) const;
       
  1585 //	IMPORT_C SEikDegreesMinutesDirection LongitudeEditorValue(TInt aControlId) const;
       
  1586 
       
  1587     /**
       
  1588      * @deprecated Not supported.
       
  1589      */
       
  1590     IMPORT_C void GetAutoValuesFromPage(CEikCapCArray* aLines);
       
  1591 	
       
  1592     /**
       
  1593      * @deprecated Not supported.
       
  1594      */
       
  1595     IMPORT_C TInt ListBoxCurrentItem(TInt aControlId) const;
       
  1596 	
       
  1597     /**
       
  1598      * @deprecated Not supported.
       
  1599      */
       
  1600     IMPORT_C void GetFileName(TFileName* aFileName,TInt aControlId) const;
       
  1601 
       
  1602     /**
       
  1603      * Only has effect on forms, call this after adding or deleting lines.
       
  1604      *
       
  1605      * @param aRedraw Whether to redraw the page. Usually expect this to be
       
  1606      *        @c ETrue.
       
  1607      */
       
  1608     IMPORT_C void UpdatePageL(TBool aRedraw);
       
  1609 
       
  1610 public:
       
  1611 
       
  1612     /**
       
  1613      * From @c CEikDialog (@c MEikDialogPageObserver).
       
  1614      *
       
  1615      * The interface method which is called when dialog page is tapped with
       
  1616      * a stylus.
       
  1617      *
       
  1618      * @param aEventID An event identification number.
       
  1619      */
       
  1620     IMPORT_C virtual void HandleDialogPageEventL(TInt aEventID);
       
  1621 
       
  1622     /**
       
  1623     * Instantiates mediator support and send a command with given parameters
       
  1624     * when a dialog is brought to display.
       
  1625     *
       
  1626     * @since 3.1
       
  1627     * @param aDialogIndex unique index to identify a dialog within the category.
       
  1628     * @param aCatUid  gategory uid, if default paramter is passed, application
       
  1629     *        uid is used as a category.
       
  1630     */
       
  1631     IMPORT_C void PublishDialogL(TInt aDialogIndex, TUid aCatUid = KNullUid);
       
  1632 
       
  1633     /**
       
  1634     * Instantiates mediator support and passes possible feedback to given
       
  1635     * intance. If no observer is set, dialog tries to handle feedback by it
       
  1636     * self.
       
  1637     * Please note that no commands will be instantiated unless command
       
  1638     * identifiers are are set using @c PublishDialogL.
       
  1639     *
       
  1640     * @since 3.1
       
  1641     * @param  aObserver Pointer to instance implementing
       
  1642     *         @c MAknDialogMediatorObserver API. Can be NULL.
       
  1643     */
       
  1644     IMPORT_C void SetMediatorObserver(MAknDialogMediatorObserver* aObserver);
       
  1645     
       
  1646     /* @since 3.1
       
  1647      * Tries to slide the dialog to the screen. If there is not enough memory for
       
  1648      * sliding, the dialog appears as before.
       
  1649      *
       
  1650      * Method is exported because of delayed notes.
       
  1651      *
       
  1652      * @return void 
       
  1653      */
       
  1654     IMPORT_C void SlideDialog();
       
  1655 
       
  1656 public:
       
  1657 	/** @since 3.2
       
  1658      * Sets dialog to be multilinequery.
       
  1659 	 * 
       
  1660 	 * This is called by multiline query only. Changes tab-key behaviour
       
  1661 	 * of the dialog page. Tab key works differently for forms and
       
  1662 	 * multiline queries.
       
  1663 	 *
       
  1664      * @param aIsMultilineQuery Whether this dialog is multiline query
       
  1665      */
       
  1666 	IMPORT_C void SetMultilineQuery(TBool aIsMultilineQuery);
       
  1667     };
       
  1668 
       
  1669 #endif