lafagnosticuifoundation/cone/inc/CoeLayoutMan.h
changeset 0 2f259fa3e83a
--- /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 <e32base.h>
+
+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 <code>ETrue</code> if possible, otherwise <code>EFalse</code>
+	*/
+	virtual TBool CanAttach() const = 0;
+
+	/** Attaches <code>aCompoundControl</code> to the layout manager.
+	Is normally not called manually since <code>CCoeControl::SetLayoutManagerL()</code>
+	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 <code>aCompoundControl</code> from the layout manager.
+	Is normally not called manually since <code>CCoeControl::SetLayoutManagerL()</code>
+	calls this function when you switch layout managers on a control. It is also called
+	from <code>CCoeControl::~CCoeControl</code>
+	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 <code>aCompoundControl</code>
+	Is normally not called manually since <code>CCoeControl::MinimumSize()</code>
+	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 <code>aCompoundControl</code>'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 <code>CCoeControl::SizeChanged()</code>
+	calls this function in the default implementation on controls with layout managers.
+
+	The layout is generally performed by calling the component controls'
+	<code>SetMaximumWidth()</code>, followed by <code>MinimumSize()</code>, 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 <code>CCoeControlArray::InsertLC()</code>
+	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 <code>CCoeControlArray::Remove()</code>
+	calls this function for controls with layout managers.
+	Is used by layout managers to remove all settings and similar that are specific for
+	<code>aRemovedControl</code>.
+	@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 <code>CCoeControl</code>.
+	Is used by layout managers to move settings and similar that are specified for 
+	<code>aOldControl</code> to <code>aNewControl</code>
+	If this function is called, neither <code>HandleAddedControlL</code> nor 
+	<code>HandleRemovedControl</code> is allowed to be called.
+	@param aOldControl The old component control
+	@param aNewControl The new component control
+	@return <code>KErrNone</code> if no error. <code>KErrNotFound</code> if the
+	layout manager cannot find <code>aOldControl</code>
+	*/
+	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__