diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/cone/inc/CoeLayoutMan.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/cone/inc/CoeLayoutMan.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,171 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// CoeLayoutManager.H +// +// + +#ifndef __COELAYOUTMANAGER_H__ +#define __COELAYOUTMANAGER_H__ + +#include + +class CCoeControl; + + +/** +Base class for layout managers. + +A layout manager can be attached to one, or many (depending on the concrete layout +manager), compound controls. The layout manager handles the layout of the components +of the attached compound controls, and calculates the attached compound controls' +minimum size. + +@publishedAll +@released +*/ +class MCoeLayoutManager + { +protected: + IMPORT_C MCoeLayoutManager(); + +public: + + /** Determines if it is possible to attach another control to the layout manager. + @return ETrue if possible, otherwise EFalse + */ + virtual TBool CanAttach() const = 0; + + /** Attaches aCompoundControl to the layout manager. + Is normally not called manually since CCoeControl::SetLayoutManagerL() + calls this function. + Once a compound control is attached to a layout manager, the layout manager owns itself. + @see Detach() + @see CCoeControl::SetLayoutManagerL() + @param aCompoundControl The compound control. + */ + virtual void AttachL(CCoeControl& aCompoundControl) = 0; + + /** Detaches aCompoundControl from the layout manager. + Is normally not called manually since CCoeControl::SetLayoutManagerL() + calls this function when you switch layout managers on a control. It is also called + from CCoeControl::~CCoeControl + When the last attached compound control detaches, the layout manager deletes itself. + @see CCoeControl::SetLayoutManagerL() + @param aCompoundControl The compound control. + */ + virtual void Detach(CCoeControl& aCompoundControl) = 0; + + /** Calculates the minimum size of aCompoundControl + Is normally not called manually since CCoeControl::MinimumSize() + calls this function in the default implementation on controls with layout managers. + + To calculate the minimum size is almost as time consuming as performing an actual layout + and should be used with caution. The minimum size depends on aCompoundControl's + maximum width. + @see CCoeControl::MaximumWidth() + @param aCompoundControl The compound control + @return The minimum size + */ + virtual TSize CalcMinimumSize(const CCoeControl& aCompoundControl) const = 0; + + /** Performs the layout of the attached controls + Is normally not called manually since CCoeControl::SizeChanged() + calls this function in the default implementation on controls with layout managers. + + The layout is generally performed by calling the component controls' + SetMaximumWidth(), followed by MinimumSize(), and then the + layout manager tries to place the component controls according to their minimum + sizes and the settings. + + @see CCoeControl::SetMaximumWidth() + @see CCoeControl::MinimumSize() + */ + virtual void PerformLayout() = 0; + + /** Gets the offset to the first text baseline relative to the top of the control. + + @param aCompoundControl The control + @param aSize The size of the control + @return The baseline + @see CCoeControl::TextBaselineOffset() + */ + virtual TInt CalcTextBaselineOffset(const CCoeControl& aCompoundControl, const TSize& aSize) const = 0; + + /** Sets the spacing between text baselines. + + @param aBaselineSpacing The new value for the baseline + @see CCoeControl::SetTextBaseLineSpacing() + */ + virtual void SetTextBaselineSpacing(TInt aBaselineSpacing) = 0; + + /** Returns the baseline spacing. + @return The baseline value. + */ + virtual TInt TextBaselineSpacing() const = 0; + + /** Handles when a component control is added to an attached compound control + Is normally not called manually since CCoeControlArray::InsertLC() + calls this function for controls with layout managers. + Is used by layout managers to prepare to layout one more component control. + @see CCoeControlArray::InsertLC() + @param aCompoundControl The compound control. + @param aAddedControl The added control + */ + virtual void HandleAddedControlL(const CCoeControl& aCompoundControl, const CCoeControl& aAddedControl) = 0; + + /** Handles when a component control is removed from an attached compound control + Is normally not called manually since CCoeControlArray::Remove() + calls this function for controls with layout managers. + Is used by layout managers to remove all settings and similar that are specific for + aRemovedControl. + @see CCoeControlArray::Remove() + @param aCompoundControl The compound control. + @param aRemovedControl The removed control + */ + virtual void HandleRemovedControl(const CCoeControl& aCompoundControl, const CCoeControl& aRemovedControl) = 0; + + /** Handles when a component control is replaced by another component control + in an attached compound control + + Is not called by CCoeControl. + Is used by layout managers to move settings and similar that are specified for + aOldControl to aNewControl + If this function is called, neither HandleAddedControlL nor + HandleRemovedControl is allowed to be called. + @param aOldControl The old component control + @param aNewControl The new component control + @return KErrNone if no error. KErrNotFound if the + layout manager cannot find aOldControl + */ + virtual TInt HandleControlReplaced(const CCoeControl& aOldControl, const CCoeControl& aNewControl) = 0; + + +private: + IMPORT_C virtual void Reserved_MCoeLayoutManager_1(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_2(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_3(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_4(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_5(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_6(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_7(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_8(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_9(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_10(); + IMPORT_C virtual void Reserved_MCoeLayoutManager_11(); +private: + TInt iMCoeLayoutManager_Reserved1; + }; + + +#endif // __COELAYOUTMANAGER_H__