xref: /haiku/headers/os/interface/GroupLayout.h (revision 9ecf9d1c1d4888d341a6eac72112c72d1ae3a4cb)
1*9ecf9d1cSIngo Weinhold /*
2*9ecf9d1cSIngo Weinhold  * Copyright 2006, Haiku Inc.
3*9ecf9d1cSIngo Weinhold  * Distributed under the terms of the MIT License.
4*9ecf9d1cSIngo Weinhold  */
5*9ecf9d1cSIngo Weinhold #ifndef	_GROUP_LAYOUT_H
6*9ecf9d1cSIngo Weinhold #define	_GROUP_LAYOUT_H
7*9ecf9d1cSIngo Weinhold 
8*9ecf9d1cSIngo Weinhold #include <TwoDimensionalLayout.h>
9*9ecf9d1cSIngo Weinhold 
10*9ecf9d1cSIngo Weinhold class BGroupLayout : public BTwoDimensionalLayout {
11*9ecf9d1cSIngo Weinhold public:
12*9ecf9d1cSIngo Weinhold 								BGroupLayout(enum orientation orientation,
13*9ecf9d1cSIngo Weinhold 									float spacing = 0.0f);
14*9ecf9d1cSIngo Weinhold 	virtual						~BGroupLayout();
15*9ecf9d1cSIngo Weinhold 
16*9ecf9d1cSIngo Weinhold 			float				Spacing() const;
17*9ecf9d1cSIngo Weinhold 			void				SetSpacing(float spacing);
18*9ecf9d1cSIngo Weinhold 
19*9ecf9d1cSIngo Weinhold 			orientation			Orientation() const;
20*9ecf9d1cSIngo Weinhold 			void				SetOrientation(enum orientation orientation);
21*9ecf9d1cSIngo Weinhold 
22*9ecf9d1cSIngo Weinhold 			float				ItemWeight(int32 index) const;
23*9ecf9d1cSIngo Weinhold 			void				SetItemWeight(int32 index, float weight);
24*9ecf9d1cSIngo Weinhold 
25*9ecf9d1cSIngo Weinhold 	virtual	BLayoutItem*		AddView(BView* child);
26*9ecf9d1cSIngo Weinhold 	virtual	BLayoutItem*		AddView(int32 index, BView* child);
27*9ecf9d1cSIngo Weinhold 	virtual	BLayoutItem*		AddView(BView* child, float weight);
28*9ecf9d1cSIngo Weinhold 	virtual	BLayoutItem*		AddView(int32 index, BView* child,
29*9ecf9d1cSIngo Weinhold 									float weight);
30*9ecf9d1cSIngo Weinhold 
31*9ecf9d1cSIngo Weinhold 	virtual	bool				AddItem(BLayoutItem* item);
32*9ecf9d1cSIngo Weinhold 	virtual	bool				AddItem(int32 index, BLayoutItem* item);
33*9ecf9d1cSIngo Weinhold 	virtual	bool				AddItem(BLayoutItem* item, float weight);
34*9ecf9d1cSIngo Weinhold 	virtual	bool				AddItem(int32 index, BLayoutItem* item,
35*9ecf9d1cSIngo Weinhold 									float weight);
36*9ecf9d1cSIngo Weinhold 
37*9ecf9d1cSIngo Weinhold protected:
38*9ecf9d1cSIngo Weinhold 	virtual	void				ItemAdded(BLayoutItem* item);
39*9ecf9d1cSIngo Weinhold 	virtual	void				ItemRemoved(BLayoutItem* item);
40*9ecf9d1cSIngo Weinhold 
41*9ecf9d1cSIngo Weinhold 	virtual	void				PrepareItems(enum orientation orientation);
42*9ecf9d1cSIngo Weinhold 
43*9ecf9d1cSIngo Weinhold 	virtual	int32				InternalCountColumns();
44*9ecf9d1cSIngo Weinhold 	virtual	int32				InternalCountRows();
45*9ecf9d1cSIngo Weinhold 	virtual	void				GetColumnRowConstraints(
46*9ecf9d1cSIngo Weinhold 									enum orientation orientation,
47*9ecf9d1cSIngo Weinhold 									int32 index,
48*9ecf9d1cSIngo Weinhold 									ColumnRowConstraints* constraints);
49*9ecf9d1cSIngo Weinhold 	virtual	void	 			GetItemDimensions(BLayoutItem* item,
50*9ecf9d1cSIngo Weinhold 									Dimensions* dimensions);
51*9ecf9d1cSIngo Weinhold 
52*9ecf9d1cSIngo Weinhold private:
53*9ecf9d1cSIngo Weinhold 			struct ItemLayoutData;
54*9ecf9d1cSIngo Weinhold 
55*9ecf9d1cSIngo Weinhold 			ItemLayoutData*		_LayoutDataForItem(BLayoutItem* item) const;
56*9ecf9d1cSIngo Weinhold 
57*9ecf9d1cSIngo Weinhold 			orientation			fOrientation;
58*9ecf9d1cSIngo Weinhold 			BList				fVisibleItems;
59*9ecf9d1cSIngo Weinhold };
60*9ecf9d1cSIngo Weinhold 
61*9ecf9d1cSIngo Weinhold #endif	// _GROUP_LAYOUT_H
62