epoc32/include/mw/coelayoutman.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // CoeLayoutManager.H
    15 // 
    16 //
    17 
    18 #ifndef __COELAYOUTMANAGER_H__
    19 #define __COELAYOUTMANAGER_H__
    20 
    21 #include <e32base.h>
    22 
    23 class CCoeControl;
    24 
    25 
    26 /**
    27 Base class for layout managers.
    28 
    29 A layout manager can be attached to one, or many (depending on the concrete layout
    30 manager), compound controls. The layout manager handles the layout of the components
    31 of the attached compound controls, and calculates the attached compound controls' 
    32 minimum size. 
    33 
    34 @publishedAll
    35 @released
    36 */
    37 class MCoeLayoutManager
    38 	{
    39 protected:
    40 	IMPORT_C MCoeLayoutManager();
    41 	
    42 public:
    43 
    44 	/** Determines if it is possible to attach another control to the layout manager.
    45 	@return <code>ETrue</code> if possible, otherwise <code>EFalse</code>
    46 	*/
    47 	virtual TBool CanAttach() const = 0;
    48 
    49 	/** Attaches <code>aCompoundControl</code> to the layout manager.
    50 	Is normally not called manually since <code>CCoeControl::SetLayoutManagerL()</code>
    51 	calls this function.
    52 	Once a compound control is attached to a layout manager, the layout manager owns itself.
    53 	@see Detach()
    54 	@see CCoeControl::SetLayoutManagerL()
    55 	@param aCompoundControl The compound control.
    56 	*/
    57 	virtual void AttachL(CCoeControl& aCompoundControl) = 0;
    58 
    59 	/** Detaches <code>aCompoundControl</code> from the layout manager.
    60 	Is normally not called manually since <code>CCoeControl::SetLayoutManagerL()</code>
    61 	calls this function when you switch layout managers on a control. It is also called
    62 	from <code>CCoeControl::~CCoeControl</code>
    63 	When the last attached compound control detaches, the layout manager deletes itself.
    64 	@see CCoeControl::SetLayoutManagerL()
    65 	@param aCompoundControl The compound control.
    66 	*/
    67 	virtual void Detach(CCoeControl& aCompoundControl) = 0;
    68 
    69 	/** Calculates the minimum size of <code>aCompoundControl</code>
    70 	Is normally not called manually since <code>CCoeControl::MinimumSize()</code>
    71 	calls this function in the default implementation on controls with layout managers.
    72 
    73 	To calculate the minimum size is almost as time consuming as performing an actual layout
    74 	and should be used with caution. The minimum size depends on <code>aCompoundControl</code>'s
    75 	maximum width.
    76 	@see CCoeControl::MaximumWidth()
    77 	@param aCompoundControl The compound control
    78 	@return The minimum size
    79 	*/
    80 	virtual TSize CalcMinimumSize(const CCoeControl& aCompoundControl) const = 0;
    81 
    82 	/** Performs the layout of the attached controls
    83 	Is normally not called manually since <code>CCoeControl::SizeChanged()</code>
    84 	calls this function in the default implementation on controls with layout managers.
    85 
    86 	The layout is generally performed by calling the component controls'
    87 	<code>SetMaximumWidth()</code>, followed by <code>MinimumSize()</code>, and then the
    88 	layout manager tries to place the component controls according to their minimum
    89 	sizes and the settings.
    90 
    91 	@see CCoeControl::SetMaximumWidth()
    92 	@see CCoeControl::MinimumSize()
    93 	*/
    94 	virtual void PerformLayout() = 0;
    95 
    96 	/** Gets the offset to the first text baseline relative to the top of the control.
    97 	
    98 	@param aCompoundControl The control
    99 	@param aSize The size of the control
   100 	@return The baseline
   101 	@see CCoeControl::TextBaselineOffset()
   102 	*/
   103 	virtual TInt CalcTextBaselineOffset(const CCoeControl& aCompoundControl, const TSize& aSize) const = 0;
   104 
   105 	/** Sets the spacing between text baselines.
   106 
   107 	@param aBaselineSpacing The new value for the baseline
   108 	@see CCoeControl::SetTextBaseLineSpacing()
   109 	*/
   110 	virtual void SetTextBaselineSpacing(TInt aBaselineSpacing) = 0;
   111 	
   112 	/** Returns the baseline spacing.
   113 	@return The baseline value.
   114 	*/
   115 	virtual TInt TextBaselineSpacing() const = 0;
   116 
   117 	/** Handles when a component control is added to an attached compound control
   118 	Is normally not called manually since <code>CCoeControlArray::InsertLC()</code>
   119 	calls this function for controls with layout managers.
   120 	Is used by layout managers to prepare to layout one more component control.
   121 	@see CCoeControlArray::InsertLC()
   122 	@param aCompoundControl The compound control.
   123 	@param aAddedControl The added control
   124 	*/
   125 	virtual void HandleAddedControlL(const CCoeControl& aCompoundControl, const CCoeControl& aAddedControl) = 0;
   126 	
   127 	/** Handles when a component control is removed from an attached compound control
   128 	Is normally not called manually since <code>CCoeControlArray::Remove()</code>
   129 	calls this function for controls with layout managers.
   130 	Is used by layout managers to remove all settings and similar that are specific for
   131 	<code>aRemovedControl</code>.
   132 	@see CCoeControlArray::Remove()
   133 	@param aCompoundControl The compound control.
   134 	@param aRemovedControl The removed control
   135 	*/
   136 	virtual void HandleRemovedControl(const CCoeControl& aCompoundControl, const CCoeControl& aRemovedControl) = 0;
   137 
   138 	/** Handles when a component control is replaced by another component control
   139 	in an attached compound control
   140 	
   141 	Is not called by <code>CCoeControl</code>.
   142 	Is used by layout managers to move settings and similar that are specified for 
   143 	<code>aOldControl</code> to <code>aNewControl</code>
   144 	If this function is called, neither <code>HandleAddedControlL</code> nor 
   145 	<code>HandleRemovedControl</code> is allowed to be called.
   146 	@param aOldControl The old component control
   147 	@param aNewControl The new component control
   148 	@return <code>KErrNone</code> if no error. <code>KErrNotFound</code> if the
   149 	layout manager cannot find <code>aOldControl</code>
   150 	*/
   151 	virtual TInt HandleControlReplaced(const CCoeControl& aOldControl, const CCoeControl& aNewControl) = 0;
   152 
   153 	
   154 private:
   155 	IMPORT_C virtual void Reserved_MCoeLayoutManager_1();
   156 	IMPORT_C virtual void Reserved_MCoeLayoutManager_2();
   157 	IMPORT_C virtual void Reserved_MCoeLayoutManager_3();
   158 	IMPORT_C virtual void Reserved_MCoeLayoutManager_4();
   159 	IMPORT_C virtual void Reserved_MCoeLayoutManager_5();
   160 	IMPORT_C virtual void Reserved_MCoeLayoutManager_6();
   161 	IMPORT_C virtual void Reserved_MCoeLayoutManager_7();
   162 	IMPORT_C virtual void Reserved_MCoeLayoutManager_8();
   163 	IMPORT_C virtual void Reserved_MCoeLayoutManager_9();
   164 	IMPORT_C virtual void Reserved_MCoeLayoutManager_10();
   165 	IMPORT_C virtual void Reserved_MCoeLayoutManager_11();
   166 private:
   167 	TInt iMCoeLayoutManager_Reserved1;
   168 	};
   169 
   170 
   171 #endif	// __COELAYOUTMANAGER_H__