Public Member Functions | Protected Member Functions | List of all members
BGroupLayout Class Reference

The BGroupLayout class is a simple BLayout subclass that arranges the items it holds within a vertical or horizontal box. More...

Inherits BTwoDimensionalLayout.

Public Member Functions

 BGroupLayout (orientation orientation, float spacing=B_USE_DEFAULT_SPACING)
 Creates a new BGroupLayout. More...
 
 BGroupLayout (BMessage *from)
 Archive constructor. More...
 
virtual ~BGroupLayout ()
 Destructor method. More...
 
virtual bool AddItem (BLayoutItem *item)
 Adds item to this layout as the last item. In a vertical BGroupLayout, item will be on the right, in a horizontal BGroupLayout, item will be at the bottom. More...
 
virtual bool AddItem (int32 index, BLayoutItem *item)
 Adds item to this layout at index. More...
 
virtual bool AddItem (BLayoutItem *item, float weight)
 Adds item to the end of this layout with a weight of weight. More...
 
virtual bool AddItem (int32 index, BLayoutItem *item, float weight)
 Adds item this layout at index with a weight of weight. More...
 
virtual BLayoutItemAddView (BView *child)
 Adds child to this layout as the last item. In a vertical BGroupLayout, child will be on the right, in a horizontal BGroupLayout, child will be at the bottom. More...
 
virtual BLayoutItemAddView (int32 index, BView *child)
 Adds child to this layout at index. More...
 
virtual BLayoutItemAddView (BView *child, float weight)
 Adds child to the end of this layout with a weight of weight. More...
 
virtual BLayoutItemAddView (int32 index, BView *child, float weight)
 Adds child this layout at index with a weight of weight. More...
 
virtual status_t Archive (BMessage *into, bool deep=true) const
 Archives this layout into archive. If deep is true, also archives the items in this layout, calling ItemArchived() for each one. More...
 
float ItemWeight (int32 index) const
 Get the weight of the item at index. More...
 
orientation Orientation () const
 Get the orientation of this BGroupLayout. More...
 
virtual status_t Perform (perform_code d, void *arg)
 Perform some action (Internal method defined for binary compatibility purposes).
 
void SetItemWeight (int32 index, float weight)
 Set the weight of the item at index. More...
 
void SetOrientation (orientation orientation)
 Set the orientation of this BGroupLayout. More...
 
void SetSpacing (float spacing)
 Set the amount of spacing (in pixels) between each item. More...
 
float Spacing () const
 Get the amount of spacing (in pixels) between each item. More...
 
- Public Member Functions inherited from BTwoDimensionalLayout
void AlignLayoutWith (BTwoDimensionalLayout *other, orientation orientation)
 Align the BLayoutItem's in the specified orientation within two or more BTwoDimensionalLayout's. More...
 
virtual BAlignment BaseAlignment ()
 Method to be implemented in derived classes return the preferred alignment for this BAbstractLayout.
 
virtual BSize BaseMaxSize ()
 Method to be implemented in derived classes return the maximum size constraint for this BAbstractLayout. More...
 
virtual BSize BaseMinSize ()
 Method to be implemented in derived classes return the minimum size constraint for this BAbstractLayout. More...
 
virtual BSize BasePreferredSize ()
 Method to be implemented in derived classes return the preferred size constraint for this BAbstractLayout. More...
 
virtual void GetHeightForWidth (float width, float *min, float *max, float *preferred)
 Get this BLayoutItem's height constraints for a given width. More...
 
void GetInsets (float *left, float *top, float *right, float *bottom) const
 Get the insets for the BTwoDimensionalLayout (in pixels). More...
 
virtual bool HasHeightForWidth ()
 Returns whether or not this BLayoutItem's height constraints are dependent on its width. More...
 
virtual void SetFrame (BRect frame)
 Set the bounding frame of this item. More...
 
void SetInsets (float left, float top, float right, float bottom)
 Set the insets for this BTwoDimensionalLayout (in pixels). More...
 
- Public Member Functions inherited from BAbstractLayout
virtual BAlignment Alignment ()
 Returns the requested alignment for this item. More...
 
virtual BRect Frame ()
 Return the bounding frame of this item. More...
 
virtual bool IsVisible ()
 Return the current local visibility of this item. If an item is not visible, it will not be given space by the BLayout it resides in. More...
 
virtual BSize MaxSize ()
 Returns the maximum desirable size for this item. More...
 
virtual BSize MinSize ()
 Returns the minimum desirable size for this item. More...
 
virtual BSize PreferredSize ()
 Returns the preferred size for this item. More...
 
virtual void SetExplicitAlignment (BAlignment alignment)
 Set this item's explicit alignment, to be used in Alignment(). More...
 
virtual void SetExplicitMaxSize (BSize size)
 Set this item's explicit max size, to be used in MaxSize(). More...
 
virtual void SetExplicitMinSize (BSize size)
 Set this item's explicit min size, to be used in MinSize(). More...
 
virtual void SetExplicitPreferredSize (BSize size)
 Set this item's explicit preferred size, to be used in PreferredSize(). More...
 
virtual void SetVisible (bool visible)
 Set the local visibility of this item. More...
 
 BAbstractLayout ()
 Construct a BAbstractLayout. More...
 
 BAbstractLayout (BMessage *from)
 Archive constructor. More...
 
- Public Member Functions inherited from BLayout
 BLayout ()
 Default constructor. More...
 
 BLayout (BMessage *archive)
 Archive constructor. More...
 
virtual ~BLayout ()
 Destructor, deletes all BLayoutItem's that this layout manages, and detaches from this BLayout's owner view if there is one. More...
 
BViewOwner () const
 Returns the Owner of this layout, i.e. the view this layout manages. More...
 
BViewTargetView () const
 Returns the target view of this layout. More...
 
virtual BViewView ()
 Returns the same BView* as BLayout::Owner(), this method is inherited from BLayoutItem. More...
 
virtual bool RemoveView (BView *child)
 Removes and deletes all BLayoutItem representing a BView from this layout. More...
 
virtual bool RemoveItem (BLayoutItem *item)
 Removes a BLayoutItem from this layout, and also removes the view it represents from this BLayout's target view. More...
 
virtual BLayoutItemRemoveItem (int32 index)
 Remove the BLayoutItem at index. More...
 
BLayoutItemItemAt (int32 index) const
 Get the BLayoutItem at index. Returns NULL if index is out of bounds. More...
 
int32 CountItems () const
 Get the number of BLayoutItem s in this layout. More...
 
int32 IndexOfItem (const BLayoutItem *item) const
 Get the index of a BLayoutItem in this layout. More...
 
int32 IndexOfView (BView *child) const
 Get the index of child in this layout. More...
 
virtual void Relayout (bool immediate=false)
 Request this BLayout to reposition and resize its items as required. More...
 
void LayoutItems (bool force=false)
 If there is no layout currently ongoing, and force is false, creates a new BLayoutContext and calls the DoLayout() method of this BLayout and any BLayout's nested in this BLayout. More...
 
BLayoutContext * LayoutContext () const
 Returns the BLayoutContext this BLayout is currently operating in, or NULL. More...
 
bool AncestorsVisible () const
 Get the visibility of the ancestors of this layout. More...
 
BRect LayoutArea ()
 Returns the on-screen area this layout has received to lay out its items in. More...
 
virtual void InvalidateLayout (bool children=false)
 Invalidate this layout and any cached data this layout has relating to positioning and sizing of its items. More...
 
void RequireLayout ()
 Flag this layout as stale, i.e. any cached data may still be valid, but the items need to be repositioned or resized. More...
 
bool IsValid ()
 Returns whether this layout has been invalidated (via BLayout::InvalidateLayout()) and has not yet been validated (by doing a layout, or by its ResetLayoutInvalidation() method. More...
 
void EnableLayoutInvalidation ()
 Re-enable layout invalidation after a call to DisableLayoutInvalidation(). More...
 
void DisableLayoutInvalidation ()
 Disable layout invalidation notifications, i.e. calls to this object's InvalidateLayout() method. More...
 
- Public Member Functions inherited from BLayoutItem
 BLayoutItem (BMessage *from)
 Archive constructor. More...
 
BLayoutLayout () const
 Returns the BLayout this BLayoutItem resides in. More...
 
void AlignInFrame (BRect frame)
 Position this BLayoutItem within frame, given the value returned by Alignment(), and the size constraints for this item. More...
 
void * LayoutData () const
 Retrieve arbitrary data attached to this BLayoutItem. More...
 
void SetLayoutData (void *data)
 Attach arbitrary data to this BLayoutItem. More...
 
- Public Member Functions inherited from BArchivable
 BArchivable (BMessage *from)
 Constructor. Does important behind-the-scenes work in the unarchiving process. More...
 
 BArchivable ()
 Constructor. Does nothing. More...
 
virtual ~BArchivable ()
 Destructor. Does nothing. More...
 

Protected Member Functions

virtual status_t AllArchived (BMessage *into) const
 Method relating to the use of BArchiver. More...
 
virtual status_t AllUnarchived (const BMessage *from)
 Unarchives the BLayoutItem's for this layout, calling ItemUnarchived() for each one. More...
 
virtual void GetColumnRowConstraints (orientation orientation, int32 index, ColumnRowConstraints *constraints)
 Fill in the ColumnRowConstraints for a certain column or row in the BTwoDimensionalLayout. More...
 
virtual void GetItemDimensions (BLayoutItem *item, Dimensions *dimensions)
 Tell the base class what column and row a BLayoutItem is in as well as how many columns and rows it covers. More...
 
virtual int32 InternalCountColumns ()
 Get the number of columns in the BTwoDimensionalLayout. More...
 
virtual int32 InternalCountRows ()
 Get the number of rows in the BTwoDimensionalLayout. More...
 
virtual bool ItemAdded (BLayoutItem *item, int32 atIndex)
 Hook method called when item is added to this layout. More...
 
virtual status_t ItemArchived (BMessage *into, BLayoutItem *item, int32 index) const
 Hook for derived classes to add data specific to item to the into BMessage. item resides at index. More...
 
virtual void ItemRemoved (BLayoutItem *item, int32 fromIndex)
 Hook method called when item is removed from this layout. More...
 
virtual status_t ItemUnarchived (const BMessage *from, BLayoutItem *item, int32 index)
 Hook for derived classes to retrieve data specific to item from the from BMessage. item resides at index. More...
 
virtual void PrepareItems (orientation orientation)
 Prepare the BLayoutItem in this BTwoDimensionalLayout subclass for layout within a certain orientation. More...
 
- Protected Member Functions inherited from BTwoDimensionalLayout
virtual void DoLayout ()
 Implemented by derived classes to position and resize the items in this layout. More...
 
virtual void LayoutInvalidated (bool children=false)
 
virtual bool HasMultiColumnItems ()
 Tests whether or not this BTwoDimensionalLayout contains any BLayoutItem's spanning more than one column. More...
 
virtual bool HasMultiRowItems ()
 Tests whether or not this BTwoDimensionalLayout contains any BLayoutItem's spanning more than one row. More...
 
- Protected Member Functions inherited from BAbstractLayout
virtual void AncestorVisibilityChanged (bool shown)
 Hook method inherited from BLayoutItem, classes derived from BLayout must include the BLayout version of this method in their implementation. More...
 
virtual void AttachedToLayout ()
 Hook method inherited from BLayoutItem, classes derived from BLayout must include the BLayout version of this method in their implementation. More...
 
virtual void DetachedFromLayout (BLayout *layout)
 Hook method inherited from BLayoutItem, classes derived from BLayout must include the BLayout version of this method in their implementation. More...
 
virtual void OwnerChanged (BView *was)
 Hook method called when this layout is attached to a BView. More...
 
- Protected Member Functions inherited from BLayout
void VisibilityChanged (bool show)
 Method to be called by derived classes in their SetVisible() implementation. Calls AncestorVisibilityChanged() on the items in this BLayout. More...
 
void ResetLayoutInvalidation ()
 Reset layout invalidation, causing InvalidateLayout calls to proceed again. This method should be called once any cached data has been validated, or updated to valid values. More...
 
Hook methods

Additional Inherited Members

- Static Public Member Functions inherited from BArchivable
static BArchivableInstantiate (BMessage *archive)
 Static member to restore objects from messages. More...
 

Detailed Description

The BGroupLayout class is a simple BLayout subclass that arranges the items it holds within a vertical or horizontal box.

In a horizontal BGroupLayout, each BLayoutItem is given the same vertical area, but different horizontal areas. In a vertical BGroupLayout, each BLayoutItem is given the same horizontal area, but different vertical areas. Despite this, because of alignment and size constraints, the items in a BGroupLayout may not all use the same vertical or horizontal area on screen. Some BLayoutItems may have alignments that cause them to sit at the bottom of the area they are given, for example. This is not a flaw or bug, but something that you may come across when using this class.

In a BGroupLayout, each BLayoutItem or BView has a weight, the default weight is 1.0f. When a BGroupLayout is not given enough space to satisfy the minimum sizes of all items, then space is distributed according to weight, while still attempting to satisfy minimum size constraints. Weighting is scaled over the sum weight of all the items in this layout. If a particular item has half of the sum weight of all items, it will get half of the total space, unless this exceeds that item's maximum size. If the space for an item exceeds the items maximum size, the excess will be distributed to other items.

Warning
This class is not yet finalized, if you use it in your software assume that it will break some time in the future.
Since
Haiku R1

Constructor & Destructor Documentation

◆ BGroupLayout() [1/2]

BGroupLayout::BGroupLayout ( orientation  orientation,
float  spacing = B_USE_DEFAULT_SPACING 
)

Creates a new BGroupLayout.

Parameters
orientationThe orientation of this BGroupLayout.
spacingThe spacing between BLayoutItems in this BGroupLayout.
Since
Haiku R1

◆ BGroupLayout() [2/2]

BGroupLayout::BGroupLayout ( BMessage from)

Archive constructor.

Parameters
fromThe message to construct the BGroupLayout from.
Since
Haiku R1

◆ ~BGroupLayout()

BGroupLayout::~BGroupLayout ( )
virtual

Destructor method.

Standard Destructor.

Since
Haiku R1

Member Function Documentation

◆ AddItem() [1/4]

bool BGroupLayout::AddItem ( BLayoutItem item)
virtual

Adds item to this layout as the last item. In a vertical BGroupLayout, item will be on the right, in a horizontal BGroupLayout, item will be at the bottom.

item will have a weight of 1.0f.

Since
Haiku R1

Reimplemented from BLayout.

Referenced by BLayoutBuilder::Group< ParentBuilder >::Add(), BLayoutBuilder::Group< ParentBuilder >::AddGlue(), BLayoutBuilder::Group< ParentBuilder >::AddGrid(), BLayoutBuilder::Group< ParentBuilder >::AddGroup(), and BLayoutBuilder::Group< ParentBuilder >::AddStrut().

◆ AddItem() [2/4]

bool BGroupLayout::AddItem ( int32  index,
BLayoutItem item 
)
virtual

Adds item to this layout at index.

item will have a weight of 1.0f.

Since
Haiku R1

Reimplemented from BLayout.

◆ AddItem() [3/4]

bool BGroupLayout::AddItem ( BLayoutItem item,
float  weight 
)
virtual

Adds item to the end of this layout with a weight of weight.

Since
Haiku R1

◆ AddItem() [4/4]

bool BGroupLayout::AddItem ( int32  index,
BLayoutItem item,
float  weight 
)
virtual

Adds item this layout at index with a weight of weight.

Since
Haiku R1

◆ AddView() [1/4]

BLayoutItem * BGroupLayout::AddView ( BView child)
virtual

Adds child to this layout as the last item. In a vertical BGroupLayout, child will be on the right, in a horizontal BGroupLayout, child will be at the bottom.

child will have a weight of 1.0f.

Since
Haiku R1

Reimplemented from BLayout.

Referenced by BLayoutBuilder::Group< ParentBuilder >::Add(), and BLayoutBuilder::Group< ParentBuilder >::AddSplit().

◆ AddView() [2/4]

BLayoutItem * BGroupLayout::AddView ( int32  index,
BView child 
)
virtual

Adds child to this layout at index.

child will have a weight of 1.0f.

Since
Haiku R1

Reimplemented from BLayout.

◆ AddView() [3/4]

BLayoutItem * BGroupLayout::AddView ( BView child,
float  weight 
)
virtual

Adds child to the end of this layout with a weight of weight.

Since
Haiku R1

◆ AddView() [4/4]

BLayoutItem * BGroupLayout::AddView ( int32  index,
BView child,
float  weight 
)
virtual

Adds child this layout at index with a weight of weight.

Since
Haiku R1

◆ AllArchived()

virtual status_t BGroupLayout::AllArchived ( BMessage into) const
protectedvirtual

Method relating to the use of BArchiver.

This hook function is called once the first BArchiver that was created in an archiving session is either destroyed, or has its Finish() method called. Implementations of this method can be used, in conjunction with BArchiver::IsArchived(), to reference objects in your archive that you do not own, depending on whether or not those objects were archived by their owners. Implementations of this method should call the implementation of their parent class, the same as for the Archive() method.

Warning
To guarantee that your AllArchived() method will be called during archival, you must create a BArchiver object in your Archive() implementation.
You should archive any objects you own in your Archive() method implementation, and NOT your AllArchived() method.
See also
BArchiver BArchiver::Finish()
Since
Haiku R1

Reimplemented from BTwoDimensionalLayout.

◆ AllUnarchived()

virtual status_t BGroupLayout::AllUnarchived ( const BMessage from)
protectedvirtual

Unarchives the BLayoutItem's for this layout, calling ItemUnarchived() for each one.

Since
Haiku R1

Reimplemented from BTwoDimensionalLayout.

◆ Archive()

virtual status_t BGroupLayout::Archive ( BMessage archive,
bool  deep = true 
) const
virtual

Archives this layout into archive. If deep is true, also archives the items in this layout, calling ItemArchived() for each one.

Since
Haiku R1

Reimplemented from BTwoDimensionalLayout.

◆ GetColumnRowConstraints()

virtual void BGroupLayout::GetColumnRowConstraints ( orientation  orientation,
int32  index,
ColumnRowConstraints constraints 
)
protectedvirtual

Fill in the ColumnRowConstraints for a certain column or row in the BTwoDimensionalLayout.

This method is used to communicate the size constraints and weight for a given row/column in the BTwoDimensionalLayout.

Since
Haiku R1

Implements BTwoDimensionalLayout.

◆ GetItemDimensions()

virtual void BGroupLayout::GetItemDimensions ( BLayoutItem item,
Dimensions dimensions 
)
protectedvirtual

Tell the base class what column and row a BLayoutItem is in as well as how many columns and rows it covers.

Since
Haiku R1

Implements BTwoDimensionalLayout.

◆ InternalCountColumns()

virtual int32 BGroupLayout::InternalCountColumns ( )
protectedvirtual

Get the number of columns in the BTwoDimensionalLayout.

Returns
The number of columns in the BTwoDimensionalLayout.
Since
Haiku R1

Implements BTwoDimensionalLayout.

◆ InternalCountRows()

virtual int32 BGroupLayout::InternalCountRows ( )
protectedvirtual

Get the number of rows in the BTwoDimensionalLayout.

Returns
The number of rows in the BTwoDimensionalLayout.
Since
Haiku R1

Implements BTwoDimensionalLayout.

◆ ItemAdded()

virtual bool BGroupLayout::ItemAdded ( BLayoutItem item,
int32  atIndex 
)
protectedvirtual

Hook method called when item is added to this layout.

Parameters
itemThe BLayoutItem that is being added.
atIndexThe index of the BLayoutItem.
Returns
true on succcess, false if item will not be added.
Note
This is a good time to allocate data for a BLayoutItem and attach it to item via BLayoutItem::SetLayoutData().
Since
Haiku R1

Reimplemented from BAbstractLayout.

◆ ItemArchived()

virtual status_t BGroupLayout::ItemArchived ( BMessage into,
BLayoutItem item,
int32  index 
) const
protectedvirtual

Hook for derived classes to add data specific to item to the into BMessage. item resides at index.

Note
The same archive is passed to BLayout::ItemArchived() for all items, so any data added for each item will be stored in an array.
Since
Haiku R1

Reimplemented from BTwoDimensionalLayout.

◆ ItemRemoved()

virtual void BGroupLayout::ItemRemoved ( BLayoutItem item,
int32  fromIndex 
)
protectedvirtual

Hook method called when item is removed from this layout.

Parameters
itemThe BLayoutItem being removed.
fromIndexThe index where item used to reside.

When this hook is called, item is not yet completely removed. It can no longer be accessed with LayoutItemAt(), nor does it contribute to the value of CountItems(), but the item has not yet had its ItemDetached() hook called.

Note
This is a good time to delete the data you've attached to item via BLayoutItem::SetLayoutData().
Since
Haiku R1

Reimplemented from BAbstractLayout.

◆ ItemUnarchived()

virtual status_t BGroupLayout::ItemUnarchived ( const BMessage from,
BLayoutItem item,
int32  index 
)
protectedvirtual

Hook for derived classes to retrieve data specific to item from the from BMessage. item resides at index.

Note
The same archive is passed to BLayout::ItemArchived() for all items, so any data added for each item will be stored in an array. You should pass index to the BMessage methods you will be using in this method.
Since
Haiku R1

Reimplemented from BTwoDimensionalLayout.

◆ ItemWeight()

float BGroupLayout::ItemWeight ( int32  index) const

Get the weight of the item at index.

Since
Haiku R1

◆ Orientation()

orientation BGroupLayout::Orientation ( ) const

Get the orientation of this BGroupLayout.

Since
Haiku R1

Referenced by BLayoutBuilder::Group< ParentBuilder >::AddStrut().

◆ PrepareItems()

virtual void BGroupLayout::PrepareItems ( orientation  orientation)
protectedvirtual

Prepare the BLayoutItem in this BTwoDimensionalLayout subclass for layout within a certain orientation.

This is a good place to update cache information that will be used in other hook methods, for example.

Since
Haiku R1

Reimplemented from BTwoDimensionalLayout.

◆ SetItemWeight()

void BGroupLayout::SetItemWeight ( int32  index,
float  weight 
)

Set the weight of the item at index.

Since
Haiku R1

◆ SetOrientation()

void BGroupLayout::SetOrientation ( orientation  orientation)

Set the orientation of this BGroupLayout.

Parameters
orientationThe new orientation of this BGroupLayout.
Since
Haiku R1

◆ SetSpacing()

void BGroupLayout::SetSpacing ( float  spacing)

Set the amount of spacing (in pixels) between each item.

Since
Haiku R1

◆ Spacing()

float BGroupLayout::Spacing ( ) const

Get the amount of spacing (in pixels) between each item.

Since
Haiku R1