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