classicui_plat/extended_dialogs_api/inc/EikDialogExt.h
changeset 0 2f259fa3e83a
child 23 3d340a0166ff
equal deleted inserted replaced
-1:000000000000 0:2f259fa3e83a
       
     1 /*
       
     2 * Copyright (c) 2003 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 __EIKDIALOGEXT_H__
       
    20 #define __EIKDIALOGEXT_H__
       
    21 
       
    22 #include <e32base.h>
       
    23 
       
    24 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
       
    25 #include <akntransitionutils.h>
       
    26 #endif
       
    27 
       
    28 class CEikDialogPageSelector ;
       
    29 class CEikDialog ;
       
    30 class CAknsListBoxBackgroundControlContext ;
       
    31 class CAknEdwinDrawingModifier ;
       
    32 class CAknMediatorFacade;
       
    33 
       
    34 /*
       
    35  * Extension structure for extra data members without breaking BC.
       
    36  * This header should not be a published interface.
       
    37  */
       
    38 NONSHARABLE_CLASS(CEikDialogExtension) : public CActive
       
    39 	{
       
    40 	friend class CEikDialogPageSelector ;
       
    41 	friend class CEikDialog ;
       
    42 
       
    43 public: 
       
    44 	/**
       
    45 	* This enumeration encodes the way that CEikDialog is used in Averell.
       
    46 	*/
       
    47 	enum TLayoutCategory
       
    48 		{
       
    49 		ENotConstructed, // Returned if CEikDialog is not constructed enough to evaluate
       
    50 		EUnknownLayout, // Layout is not known
       
    51 		EFullScreenLayout, // returned if EEikDialogFlagFillAppClientRect has been set
       
    52 		EFormLayout,      // True if the object is a CAknForm and appriopriate resource has been used
       
    53 		EPopupLayout	// Popup layout; used for Notes, Queries; effectively the default
       
    54 		};
       
    55 	/**
       
    56 	* Returns the type of Averell Layout that this instance of CEikDialog is implementing.
       
    57 	* This is internal API for use inside Averell only.
       
    58 	* 
       
    59 	* @return	TLayoutCategory 
       
    60 	*/
       
    61 	IMPORT_C TLayoutCategory LayoutCategory() const;
       
    62 
       
    63 	enum TPublicFlags
       
    64 		{
       
    65         /** When set, dialog doesn't draw in the space of its child controls */
       
    66         EClipChildControlRect,
       
    67         EUseVirtualInput,
       
    68         EDelayedExit,
       
    69         EFullyConstructed
       
    70 		};	
       
    71 		
       
    72 private :
       
    73 	static CEikDialogExtension* NewL( const CEikDialog& aParent ) ;
       
    74 	~CEikDialogExtension() ;
       
    75 	CEikDialogExtension( const CEikDialog& aParent ) ;
       
    76 
       
    77     /**
       
    78     * Symbian OS 2nd stage contruction
       
    79     */
       
    80     void ConstructL();
       
    81 
       
    82 protected: // from CActive
       
    83     void DoCancel();
       
    84     void RunL();
       
    85 
       
    86 private:
       
    87     void StartDelayedExit();
       
    88         
       
    89 private:
       
    90 	enum TFlags
       
    91 		{
       
    92 		EEditableStateInitialised,
       
    93 	    // whether dialog will show up with sliding effect or not
       
    94 		ESlidingEnabled,
       
    95 		ELayoutChangeWhileInvisible
       
    96 		};
       
    97 		
       
    98 	const CEikDialog& iParent ; // NOT OWNED.  To access the dialog.  
       
    99 	CAknsListBoxBackgroundControlContext* iBgContext ; // OWNED. <SKIN> might need: CAknsListBoxBackgroundControlContext
       
   100     TBitFlags iFlags;
       
   101     CAknEdwinDrawingModifier* iDrawingModifier; // OWNED - detailed control of edwin drawing
       
   102     CAknMediatorFacade* iAknDSSD;
       
   103     TInt iButtonId;
       
   104 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
       
   105     TUid iRegisteredContext;
       
   106     TBool iSleepDialogExitBeginCalled;
       
   107 #endif
       
   108 
       
   109 public:
       
   110     TBitFlags iPublicFlags;
       
   111     TBool iInitialMade;
       
   112   } ;
       
   113 
       
   114 
       
   115 #ifdef RD_SLIDING_ANIMATION_EFFECTS
       
   116 /**
       
   117 * Class used for fake sliding animation.
       
   118 * The control creates whole screen size window and slides dialog background in it.
       
   119 */
       
   120 
       
   121 NONSHARABLE_CLASS(CEikDialogSlider) : public CCoeControl
       
   122 	{
       
   123 public:    
       
   124     ~CEikDialogSlider();
       
   125 	static CEikDialogSlider* NewL(CWindowGc& aWindowGc, CFbsBitmap*& aDialogBack, CFbsBitmap*& aScreen);
       
   126     void SlideDialogL(TPoint& aStart, TPoint& aEnd, TInt aStepCount);
       
   127 	
       
   128 protected:
       
   129 	CEikDialogSlider(CWindowGc& aWindowGc, CFbsBitmap*& aDialogBack, CFbsBitmap*& aScreen);
       
   130 	void ConstructL();
       
   131 	void Draw(const TRect& aRect) const;
       
   132 
       
   133 private:
       
   134 	CWindowGc& iWindowGc;
       
   135 	CFbsBitmap* iDialogBack;
       
   136 	CFbsBitmap* iScreen;
       
   137     TInt        iSpare;
       
   138     };
       
   139 #endif //RD_SLIDING_ANIMATION_EFFECTS
       
   140 
       
   141 
       
   142 #endif