From 96639729326361712a0b7d4325ee16b9e5af658d Mon Sep 17 00:00:00 2001 From: Niels Sascha Reedijk Date: Sun, 29 Mar 2020 09:26:50 +0100 Subject: [PATCH] HaikuBook: Add documentation for BSplitView and BLayoutBuilder::Split<> Change-Id: I4cfb369d21097ff49a53ebfc52ca57cab7c8049b Reviewed-on: https://review.haiku-os.org/c/haiku/+/2443 Reviewed-by: Adrien Destugues --- docs/user/interface/LayoutBuilder.Grid.dox | 2 +- docs/user/interface/LayoutBuilder.Group.dox | 15 +- docs/user/interface/LayoutBuilder.Split.dox | 517 ++++++++++++++++++ docs/user/interface/SplitView.dox | 380 +++++++------ .../images/BSplitView_HaikuDepot.png | Bin 0 -> 58055 bytes 5 files changed, 722 insertions(+), 192 deletions(-) create mode 100644 docs/user/interface/LayoutBuilder.Split.dox create mode 100644 docs/user/interface/images/BSplitView_HaikuDepot.png diff --git a/docs/user/interface/LayoutBuilder.Grid.dox b/docs/user/interface/LayoutBuilder.Grid.dox index 4701a9a060..99e9bdfda8 100644 --- a/docs/user/interface/LayoutBuilder.Grid.dox +++ b/docs/user/interface/LayoutBuilder.Grid.dox @@ -7,9 +7,9 @@ * * Corresponds to: * headers/os/interface/LayoutBuilder.h rev 51359 - * src/kits/interface/LayoutBuilder.cpp rev 51359 */ + /*! \class BLayoutBuilder::Grid<> \ingroup layout diff --git a/docs/user/interface/LayoutBuilder.Group.dox b/docs/user/interface/LayoutBuilder.Group.dox index 93f33cf141..c8a187ddda 100644 --- a/docs/user/interface/LayoutBuilder.Group.dox +++ b/docs/user/interface/LayoutBuilder.Group.dox @@ -12,16 +12,6 @@ */ -/*! - \file GroupLayoutBuilder.h - \ingroup layout - \ingroup libbe - \brief Provides the BLayoutBuilder::Group<> class. - - \since Haiku R1 -*/ - - /*! \class BLayoutBuilder::Group<> \ingroup layout @@ -137,6 +127,7 @@ //! @{ + /*! \fn ThisBuilder& BLayoutBuilder::Group::Add(BView* view) \brief Add a BView to the BGroupLayout this builder represents. @@ -278,7 +269,7 @@ \param gridLayout The BGridLayout to be added and used to construct the returned GridBuilder. - \param weight The weight for \a groupLayout in the BGroupLayout this builder + \param weight The weight for \a gridLayout in the BGroupLayout this builder represents. \returns a GridBuilder representing \a gridLayout. @@ -294,7 +285,7 @@ \param gridView The BGridView to be added and used to construct the returned GridBuilder. - \param weight The weight for \a groupLayout in the BGroupLayout this builder + \param weight The weight for \a gridView in the BGroupLayout this builder represents. \returns a GridBuilder representing \a gridView. diff --git a/docs/user/interface/LayoutBuilder.Split.dox b/docs/user/interface/LayoutBuilder.Split.dox new file mode 100644 index 0000000000..f23cb3bc18 --- /dev/null +++ b/docs/user/interface/LayoutBuilder.Split.dox @@ -0,0 +1,517 @@ +/* + * Copyright 2020 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Niels Sascha Reedijk, niels.reedijk@gmail.com + * + * Corresponds to: + * headers/os/interface/LayoutBuilder.h rev 49977 + */ + + +/*! + \class BLayoutBuilder::Split<> + \ingroup layout + \ingroup libbe + \brief BLayoutBuilder::Base subclass for building BSplitViews. + + \since Haiku R1 + + A BSplitView consists of elements, for which in between there are dividers + that the user can manipulate to alter the division of space between each of + the element.s + + For a detailed view on the properties, see the \link BSplitView class + description\endlink. +*/ + + +/*! + \typedef BLayoutBuilder::Split::ThisBuilder + \brief Shorthand representing the type of \c this. + + \since Haiku R1 +*/ + + +/*! + \typedef BLayoutBuilder::Split::GroupBuilder + \brief Shorthand for builders returned by this builder's AddGroup() methods. + + \since Haiku R1 +*/ + + +/*! + \typedef BLayoutBuilder::Split::GridBuilder + \brief Shorthand for builders returned by this builder's AddGrid() methods. + + \since Haiku R1 +*/ + + +/*! + \typedef BLayoutBuilder::Split::SplitBuilder + \brief Shorthand for builders returned by this builder's AddSplit() methods. + + \since Haiku R1 +*/ + + +/*! + \typedef BLayoutBuilder::Split::CardBuilder + \brief Shorthand for builders returned by this builder's AddCards() + methods. + + \since Haiku R1 +*/ + + +/*! + \name Constructors +*/ + + +//! @{ + + +/*! + \fn BLayoutBuilder::Split::Split(orientation orientation, + float spacing) + \brief Creates a builder for a new BSplitView. + + \param orientation The orientation for the new BSplitView. + \param spacing The spacing for the new BSplitView. + + \since Haiku R1 +*/ + + +/*! + \fn BLayoutBuilder::Split::Split(orientation orientation, + float spacing) + \brief Creates a builder for a new BSplitView. + + \param orientation The orientation for the new BSplitView. + \param spacing The spacing for the new BSplitView. + + \since Haiku R1 +*/ + + +/*! + \fn BLayoutBuilder::Split::Split(BSplitView *view) + \brief Creates a builder for an existing BSplitView + + \param view The existing view to operate on. + + \since Haiku R1 +*/ + + +//! @} + + +/*! + \name Accessors +*/ + + +//! @{ + + +/*! + \fn BSplitView* BLayoutBuilder::Split::View() const + \brief Get a borrowed pointer to the underlying BSplitView + + \returns A borrowed pointer to the underlying BSplitView +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::GetView( + BView** _view) + \brief Get a borrowed pointer to the underlying view. + + \param[out] _view Location to store the underlying BSplitView as a BView + reference. + + \return The method returns a self reference, so that calls to the builder + may be chained. +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::GetSplitView( + BSplitView** _view) + \brief Get a borrowed pointer to the underlying view. + + \param[out] _view Location to store the underlying BSplitView reference. + + \return The method returns a self reference, so that calls to the builder + may be chained. +*/ + + +/*! + \fn BLayoutBuilder::Split::operator BSplitView*() + \brief Cast this builder into the BSplitView it represents. + + \since Haiku R1 +*/ + + +//! @} + + +/*! + \name Adding BViews and BLayoutItems +*/ + + +//! @{ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::Add(BView* view) + \brief Add a \a view to the underlying BSplitView. + + The \a view will be added to the right or the bottom of the existing + elements. + + \param view The BView to be added. The underlying BSplitView will take + ownership of the object. + + \see BSplitView::Add(BView*) + + \since Haiku R1 +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::Add(BView* view, + float weight) + \brief Add a \a view with a \a weight to the underlying BSplitView. + + The \a view will be added to the right or the bottom of the existing + elements. + + \param view The BView to be added. The underlying BSplitView will take + ownership of the object. + \param weight The weight of the view. + + \see BSplitView::Add(BView*, float) + + \since Haiku R1 +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::Add( + BLayoutItem* item) + \brief Add a \a item to the underlying BSplitView. + + The layout item will be added to the right or the bottom of the existing + elements. + + \param item The BLayoutItem to be added. The underlying BSplitView will + take ownership of the object. + + \see BSplitView::Add(BLayoutItem*) + + \since Haiku R1 +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::Add( + BLayoutItem* item, float weight) + \brief Add an \a item with a \a weight to the underlying BSplitView. + + The layout item will be added to the right or the bottom of the existing + elements. + + \param item The BLayoutItem to be added. The underlying BSplitView will + take ownership of the object. + \param weight The weight of the item. + + \see BSplitView::Add(BLayoutItem*, float) + + \since Haiku R1 +*/ + + +//! @} + + +/*! + \name Adding BLayouts and their BView Pairs + + A set of methods that add a BLayout or BView subclass and return a + BLayoutBuilder::Base subclass representing the newly added object. These + methods push a new builder on top of the stack, you will not be using + \c this builder again until you call End(). +*/ + + +//! @{ + + +/*! + \fn GroupBuilder BLayoutBuilder::Split::AddGroup( + orientation orientation, float spacing, float weight) + \brief Construct and add a viewless BGroupLayout, then return a GroupBuilder + representing the newly added layout. + + \param orientation The orientation to use for the new BGroupLayout. + \param spacing The spacing to use for the new BGroupLayout. + \param weight The weight for the new BGroupLayout in the BGroupLayout this + builder represents. + + \returns A GroupBuilder representing the newly created BGroupLayout. + + \since Haiku R1 +*/ + + +/*! + \fn GroupBuilder BLayoutBuilder::Split::AddGroup(BGroupView* + groupView, float weight) + \brief Add BGroupView and return a builder representing the newly added + BGroupView. + + \param groupView The BGroupView to be added. + \param weight The weight for \a groupView in the BGroupLayout this builder + represents. + + \returns A GroupBuilder representing \a groupView. + + \since Haiku R1 +*/ + + +/*! + \fn GroupBuilder BLayoutBuilder::Split::AddGroup( + BGroupLayout* groupLayout, float weight) + \brief Add a BGroupLayout and return a builder representing the newly added + BGroupLayout. + + \param groupLayout The BGroupLayout to be added. + \param weight The weight for \a groupLayout in the BGroupLayout this builder + represents. + + \returns A GroupBuilder representing \a groupLayout. + + \since Haiku R1 +*/ + + +/*! + \fn GridBuilder BLayoutBuilder::Split::AddGrid( + float horizontalSpacing = 0.0f, float verticalSpacing = 0.0f, + float weight = 1.0f) + \brief Create and add a viewless BGridLayout, then return a builder + representing the newly created BGridLayout. + + \param horizontalSpacing The horizontal spacing for the new BGridLayout. + \param verticalSpacing The vertical spacing for the new BGridLayout. + \param weight The weight for the new BGridLayout in the BSplitView this + builder represents. + + \returns A GridBuilder representing the newly created BGridLayout. + + \since Haiku R1 +*/ + + +/*! + \fn GridBuilder BLayoutBuilder::Split::AddGrid( + BGridLayout* gridLayout, float weight = 1.0f) + \brief Add a BGridLayout, then return a builder the newly added BGridLayout. + + \param gridLayout The BGridLayout to be added and used to construct the + returned GridBuilder. + \param weight The weight for \a gridLayout in the BSplitView this builder + represents. + + \returns A GridBuilder representing \a gridLayout. + + \since Haiku R1 +*/ + + +/*! + \fn GridBuilder BLayoutBuilder::Split::AddGrid( + BGridView* gridView, float weight = 1.0f) + \brief Add a BGridView, then return a builder the newly added BGridView. + + \param gridView The BGridView to be added and used to construct the + returned GridBuilder. + \param weight The weight for \a gridView in the BSplitView this builder + represents. + + \returns A GridBuilder representing \a gridView. + + \since Haiku R1 +*/ + + +/*! + \fn SplitBuilder BLayoutBuilder::Split::AddSplit( + orientation orientation, float spacing, float weight) + \brief Create and add a new BSplitView with a weight of \c weight, then + return a SplitBuilder representing the new BSplitView. + + \param orientation The orientation of the new BSplitView. + \param spacing The spacing of the new BSplitView. + \param weight The weight, in this BSplitView for the new BSplitView. + + \returns A SplitBuilder representing the new BSplitView. + + \since Haiku R1 +*/ + + +/*! + \fn SplitBuilder BLayoutBuilder::Split::AddSplit( + BSplitView* splitView, float weight = 1.0f) + \brief Add a BSplitView to the BSplitView this builder represents and + return a SplitBuilder representing the BSplitView. + + \param splitView The BSplitView to be added. + \param weight The weight of the BSplitView in the BSplitView this builder + represents. + + \returns A SplitBuilder representing the new BSplitView. + + \since Haiku R1 +*/ + + +/*! + \fn CardBuilder BLayoutBuilder::Split::AddCards( + float weight) + \brief Add a new BCardLayout to the BSplitView this builder represents and + return a CardBuilder representing the new layout. + + \param weight The weight of the BCardLayout in the BSplitView this builder + represents. + + \returns A CardBuilder representing the new BCardLayout. + + \since Haiku R1 +*/ + + +/*! + \fn CardBuilder BLayoutBuilder::Split::AddCards( + BCardLayout* cardLayout, float weight) + \brief Add an existing BCardLayout to the BSplitView this builder + represents and return a CardBuilder representing this layout. + + \param cardLayout The existing layout that will be added to the underlying + BSplitView. + \param weight The weight of the BCardLayout in the BSplitView this builder + represents. + + \returns A CardBuilder representing the new BCardLayout. + + \since Haiku R1 +*/ + + +/*! + \fn CardBuilder BLayoutBuilder::Split::AddCards( + BCardView* cardView, float weight) + \brief Add an existing BCardView to the BSplitView this builder + represents and return a CardBuilder representing this layout. + + \param cardView The existing view that will be added to the underlying + BSplitView. + \param weight The weight of the BCardLayout in the BSplitView this builder + represents. + + \returns A CardBuilder representing the new BCardLayout. + + \since Haiku R1 +*/ + + +//! @} + + +/*! + \name Collapsability of elements +*/ + + +//! @{ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::SetCollapsible( + bool collapsible) + \copydoc BSplitView::SetCollapsible(bool) + + \see BSplitView::SetCollapsible(bool) +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::SetCollapsible( + int32 index, bool collapsible) + \copydoc BSplitView::SetCollapsible(int32, bool) + + \see BSplitView::SetCollapsible(int32, bool) +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::SetCollapsible( + int32 first, int32 last, bool collapsible) + \copydoc BSplitView::SetCollapsible(int32, int32, bool) + + \see BSplitView::SetCollapsible(int32, int32, bool) +*/ + + +//! @} + + +/*! + \name Insets +*/ + + +//! @{ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::SetInsets( + float left, float top, float right, float bottom) + \copydoc BSplitView::SetInsets(float, float, float, float) + + \see BSplitView::SetInsets(float, float, float, float) +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::SetInsets( + float horizontal, float vertical) + \copydoc BSplitView::SetInsets(float, float) + + \see BSplitView::SetInsets(float, float) +*/ + + +/*! + \fn ThisBuilder& BLayoutBuilder::Split::SetInsets( + float insets) + \copydoc BSplitView::SetInsets(float) + + \see BSplitView::SetInsets(float) +*/ + + +//! @} diff --git a/docs/user/interface/SplitView.dox b/docs/user/interface/SplitView.dox index f037276caa..d64bfea1d2 100644 --- a/docs/user/interface/SplitView.dox +++ b/docs/user/interface/SplitView.dox @@ -1,9 +1,12 @@ /* - * Copyright 2019 Haiku, Inc. All rights reserved. + * Copyright 2020 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: - * Name, email@email.com + * Niels Sascha Reedijk, niels.reedijk@gmail.com + * + * Reviewers: + * Adrien Destugues, pulkomandy@pulkomandy.tk * * Corresponds to: * headers/os/interface/SplitView.h hrev49977 @@ -14,7 +17,8 @@ /*! \file SplitView.h \ingroup layout - \brief Undocumented file. + \ingroup libbe + \brief Provides the BSplitView class. \since Haiku R1 */ @@ -24,7 +28,50 @@ \class BSplitView \ingroup layout \ingroup libbe - \brief Undocumented class. + \brief A container with two or more sections, with dividers in between, + so that a user can manipulate the size of the sections by dragging + a slider. + + This container view consists one of more items, that are laid out + horizontally or vertically. Between two adjoining items, there is a + splitter. This splitter allows the user to change how the space between the + individual items is divided. + + The screenshot below shows the BSplitView being used in HaikuDepot. The + BSplitView is the main container of the window, in this case with a + \ref B_VERTICAL layout. The top part contains the list of packages, and + some filter tools. At the bottom are individual package details. In between + the two visual elements there is a dotted line, indicating the draggable + separator. At the right hand of this separator, above the \b Install + button, you can see that the mouse cursor changed into the double arrow, + indicating the user that the element is dragable. + + \image html BSplitView_HaikuDepot.png + + Because of the dynamic nature of the size of the sections within the + split view, it is best to use this container with the \link layout layout + system\endlink. It is fully supported by the layout builder utilities. See + the \ref BLayoutBuilder::Split<> documentation for the builder that + accompanies this view. + + The container has the following properties: + - \b Insets are the padding for the split view. + - \b Spacing is the spacing between the components. + - \b Orientation is whether the splits are horizontal or vertical. + - \b Splitter \b size is the size of the splitter. + + Specifically for individual elements, the following properties may also + be set: + - \b Weight for the weight of the item within the split view (determines + how space is allocated between the items). + - \b Collapsible determines if an element is collapsible, meaning the user + can drag the splitter as such as to hide the item completely. If an item + is not collapsible, at least a part of the item will always be visible + to the user. + + \related The \ref BGroupView essentially has the same properties for + organizing the layout items, though it does not offer the functionality + for users to change the size of the elements. \since Haiku R1 */ @@ -32,13 +79,10 @@ /*! \fn BSplitView::BSplitView(orientation orientation=B_HORIZONTAL, float spacing=B_USE_DEFAULT_SPACING) - \brief Undocumented public method + \brief Creates a new split view. - \param orientation Undocumented - \param spacing Undocumented - - \return Undocumented - \retval Undocumented + \param orientation The orientation of the splits. + \param spacing The spacing in between the elements. \since Haiku R1 */ @@ -46,12 +90,9 @@ /*! \fn BSplitView::BSplitView(BMessage *from) - \brief Undocumented public method + \brief Unarchive a split view. - \param from Undocumented - - \return Undocumented - \retval Undocumented + \param from The \ref BMessage that contains the split view. \since Haiku R1 */ @@ -59,10 +100,7 @@ /*! \fn virtual virtual BSplitView::~BSplitView() - \brief Undocumented public method - - \return Undocumented - \retval Undocumented + \brief Destructor. \since Haiku R1 */ @@ -70,12 +108,13 @@ /*! \fn void BSplitView::SetInsets(float left, float top, float right, float bottom) - \brief Undocumented public method + \brief Set the insets between the bounds of the view and the inner + elements. - \param left Undocumented - \param top Undocumented - \param right Undocumented - \param bottom Undocumented + \param left The left inset. + \param top The top inset. + \param right The right inset. + \param bottom The bottom inset. \since Haiku R1 */ @@ -83,10 +122,11 @@ /*! \fn void BSplitView::SetInsets(float horizontal, float vertical) - \brief Undocumented public method + \brief Set the insets between the bounds of the view and the inner + elements. - \param horizontal Undocumented - \param vertical Undocumented + \param horizontal The left and right inset. + \param vertical The top and bottom inset. \since Haiku R1 */ @@ -94,9 +134,10 @@ /*! \fn void BSplitView::SetInsets(float insets) - \brief Undocumented public method + \brief Set the insets between the bounds of the view and the inner + elements. - \param insets Undocumented + \param insets The value for the left, top, right and bottom inset. \since Haiku R1 */ @@ -104,12 +145,15 @@ /*! \fn void BSplitView::GetInsets(float *left, float *top, float *right, float *bottom) const - \brief Undocumented public method + \brief Get the insets that apply to this view. - \param left Undocumented - \param top Undocumented - \param right Undocumented - \param bottom Undocumented + You may pass \c NULL for any of the parameters, if you do not wish to + retrieve their value. + + \param[out] left Will be set to the left inset. + \param[out] top Will be set to the top inset. + \param[out] right Will be set to the right inset. + \param[out] bottom Will be set to the bottom inset. \since Haiku R1 */ @@ -117,10 +161,9 @@ /*! \fn float BSplitView::Spacing() const - \brief Undocumented public method + \brief Get the spacing between elements in this view. - \return Undocumented - \retval Undocumented + \return The spacing between elements as a \c float. \since Haiku R1 */ @@ -128,9 +171,10 @@ /*! \fn void BSplitView::SetSpacing(float spacing) - \brief Undocumented public method + \brief Set the spacing between elements in this view. - \param spacing Undocumented + \param spacing The desired spacing between elements. This will apply to all + elements. \since Haiku R1 */ @@ -138,10 +182,10 @@ /*! \fn orientation BSplitView::Orientation() const - \brief Undocumented public method + \brief Get the orientation of the elements in this view. - \return Undocumented - \retval Undocumented + \retval B_HORIZONTAL The elements are ordered left-to-right. + \retval B_VERTICAL The elements are ordered top-to-bottom. \since Haiku R1 */ @@ -149,9 +193,9 @@ /*! \fn void BSplitView::SetOrientation(orientation orientation) - \brief Undocumented public method + \brief Set the orientation of the elements in this view. - \param orientation Undocumented + \param orientation May be \ref B_HORIZONTAL or \ref B_VERTICAL. \since Haiku R1 */ @@ -159,10 +203,9 @@ /*! \fn float BSplitView::SplitterSize() const - \brief Undocumented public method + \brief Get the size of the splitter(s) in this view. - \return Undocumented - \retval Undocumented + \return The size of the splitter(s). \since Haiku R1 */ @@ -170,9 +213,10 @@ /*! \fn void BSplitView::SetSplitterSize(float size) - \brief Undocumented public method + \brief Set the size of the splitter(s) in this view. - \param size Undocumented + \param size The size as a \c float that will be applied to all splitters + in this view. \since Haiku R1 */ @@ -180,10 +224,10 @@ /*! \fn int32 BSplitView::CountItems() const - \brief Undocumented public method + \brief The number of items in this view. - \return Undocumented - \retval Undocumented + \return Returns the number of items in this view. The splitters themselves + are not included in this number. \since Haiku R1 */ @@ -191,12 +235,11 @@ /*! \fn float BSplitView::ItemWeight(int32 index) const - \brief Undocumented public method + \brief Get the item weight for the item at the \a index. - \param index Undocumented + \param index The index of the item (zero-based). - \return Undocumented - \retval Undocumented + \return The weight of the item, or \c 0.0 if there is no item at \a index. \since Haiku R1 */ @@ -204,12 +247,12 @@ /*! \fn float BSplitView::ItemWeight(BLayoutItem *item) const - \brief Undocumented public method + \brief Get the item weight for an existing \a item. - \param item Undocumented + \param item An existing layout item object. - \return Undocumented - \retval Undocumented + \return The weight of the \a item, or \c 0.0 if the item is not associated + with this view. \since Haiku R1 */ @@ -217,11 +260,15 @@ /*! \fn void BSplitView::SetItemWeight(int32 index, float weight, bool invalidateLayout) - \brief Undocumented public method + \brief Set the weight of the item at \a index. - \param index Undocumented - \param weight Undocumented - \param invalidateLayout Undocumented + The weight is relative to all other items in the layout, and determines how + the available space is distributed over the items in the layout. + + \param index The index of the item (zero-based). + \param weight The weight of the item. + \param invalidateLayout When \c true, calls + \ref BLayout::InvalidateLayout() to recalculate the layout. \since Haiku R1 */ @@ -229,10 +276,13 @@ /*! \fn void BSplitView::SetItemWeight(BLayoutItem *item, float weight) - \brief Undocumented public method + \brief Set the weight of the \a item. - \param item Undocumented - \param weight Undocumented + The weight is relative to all other items in the layout, and determines how + the available space is distributed over the items in the layout. + + \param item The item within this view that the weight applies to. + \param weight The weight of the item. \since Haiku R1 */ @@ -240,12 +290,12 @@ /*! \fn bool BSplitView::IsCollapsible(int32 index) const - \brief Undocumented public method + \brief Get whether the item at \a index is collapsible. - \param index Undocumented + \param index The index of the item (zero-based). - \return Undocumented - \retval Undocumented + \retval true The user can collapse the item. + \retval false The user cannot collapse the item. \since Haiku R1 */ @@ -253,9 +303,10 @@ /*! \fn void BSplitView::SetCollapsible(bool collapsible) - \brief Undocumented public method + \brief Set the whether all the layout items in this view are collapsible. - \param collapsible Undocumented + \param collapsible \c true if all items in this layout are collapsible, + \c false if they are not. \since Haiku R1 */ @@ -263,10 +314,11 @@ /*! \fn void BSplitView::SetCollapsible(int32 index, bool collapsible) - \brief Undocumented public method + \brief Set whether the item at \a index is collapsible. - \param index Undocumented - \param collapsible Undocumented + \param index The index of the item (zero-based). + \param collapsible \c true if the user may collaps the item, \c false if + they may not. \since Haiku R1 */ @@ -274,11 +326,14 @@ /*! \fn void BSplitView::SetCollapsible(int32 first, int32 last, bool collapsible) - \brief Undocumented public method + \brief Set whether the items from \a first to \a last are collapsible. - \param first Undocumented - \param last Undocumented - \param collapsible Undocumented + \param first The index of the first item that you want the setting to apply + to (zero-based). + \param last The index of the last item that you want the setting to apply + to (zero-based). + \param collapsible \c true if the user may collaps the item, \c false if + they may not. \since Haiku R1 */ @@ -286,12 +341,12 @@ /*! \fn bool BSplitView::IsItemCollapsed(int32 index) const - \brief Undocumented public method + \brief Check whether the item at \a index is collapsed. - \param index Undocumented + \param index The index of the item (zero-based). - \return Undocumented - \retval Undocumented + \retval true The item is collapsed. + \retval false The item is not collapsed. \since Haiku R1 */ @@ -299,10 +354,11 @@ /*! \fn void BSplitView::SetItemCollapsed(int32 index, bool collapsed) - \brief Undocumented public method + \brief Set whether the item at \a index is displayed as collapsed. - \param index Undocumented - \param collapsed Undocumented + \param index The index of the item (zero-based). + \param collapsed \c true if the item should be rendered collapsed, \c + false if it needs to be visible. \since Haiku R1 */ @@ -310,10 +366,11 @@ /*! \fn void BSplitView::AddChild(BView *child, BView *sibling=NULL) - \brief Undocumented public method + \brief Add a \a child to the view. - \param child Undocumented - \param sibling Undocumented + Passthrough for \ref BView::AddChild(BView *child, BView *sibling). This + bypasses the layout system, so only use it when you know what you are + doing. \since Haiku R1 */ @@ -321,13 +378,16 @@ /*! \fn bool BSplitView::AddChild(BView *child, float weight) - \brief Undocumented public method + \brief Add a \a child with a \a weight. - \param child Undocumented - \param weight Undocumented + The view will be added at the end of the existing layout items, meaning it + will be placed to the right or bottom of existing items. - \return Undocumented - \retval Undocumented + \param child The view that should be added as a child. The ownership is + transferred to this view. + \param weight The weight of the item. + + \return \c true when succesfully, \c false if there was an error. \since Haiku R1 */ @@ -335,14 +395,17 @@ /*! \fn bool BSplitView::AddChild(int32 index, BView *child, float weight) - \brief Undocumented public method + \brief Add a \a child at \a index with a \a weight. - \param index Undocumented - \param child Undocumented - \param weight Undocumented + \param index The desired position for the \a child. Existing items will be + shifted to the right or down based on the orientation. If the index is + higher than the number of items, the item will be added after farmost + item. The index is zero-based. + \param child The view that should be added as a child. The ownership is + transferred to this view. + \param weight The weight of the item. - \return Undocumented - \retval Undocumented + \return \c true when succesfully, \c false if there was an error. \since Haiku R1 */ @@ -350,12 +413,14 @@ /*! \fn bool BSplitView::AddChild(BLayoutItem *child) - \brief Undocumented public method + \brief Add a \a child. - \param child Undocumented + The child will be added at the end of the existing layout items, meaning it + will be placed to the right or bottom of existing items. - \return Undocumented - \retval Undocumented + \param child The layout item to add. + + \return \c true when succesfully, \c false if there was an error. \since Haiku R1 */ @@ -363,13 +428,15 @@ /*! \fn bool BSplitView::AddChild(BLayoutItem *child, float weight) - \brief Undocumented public method + \brief Add a \a child with a \a weight. - \param child Undocumented - \param weight Undocumented + The child will be added at the end of the existing layout items, meaning it + will be placed to the right or bottom of existing items. - \return Undocumented - \retval Undocumented + \param child The layout item to add. + \param weight The weight of the item. + + \return \c true when succesfully, \c false if there was an error. \since Haiku R1 */ @@ -377,14 +444,16 @@ /*! \fn bool BSplitView::AddChild(int32 index, BLayoutItem *child, float weight) - \brief Undocumented public method + \brief Add a \a child at \a index with a \a weight. - \param index Undocumented - \param child Undocumented - \param weight Undocumented + \param index The desired position for the \a child. Existing items will be + shifted to the right or down based on the orientation. If the index is + higher than the number of items, the item will be added after farmost + item. The index is zero-based. + \param child The layout item to add. + \param weight The weight of the item. - \return Undocumented - \retval Undocumented + \return \c true when succesfully, \c false if there was an error. \since Haiku R1 */ @@ -392,7 +461,7 @@ /*! \fn virtual virtual void BSplitView::AttachedToWindow() - \brief Undocumented public method + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -400,9 +469,7 @@ /*! \fn virtual virtual void BSplitView::Draw(BRect updateRect) - \brief Undocumented public method - - \param updateRect Undocumented + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -410,9 +477,7 @@ /*! \fn virtual virtual void BSplitView::DrawAfterChildren(BRect updateRect) - \brief Undocumented public method - - \param updateRect Undocumented + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -420,9 +485,7 @@ /*! \fn virtual virtual void BSplitView::MouseDown(BPoint where) - \brief Undocumented public method - - \param where Undocumented + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -430,9 +493,7 @@ /*! \fn virtual virtual void BSplitView::MouseUp(BPoint where) - \brief Undocumented public method - - \param where Undocumented + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -440,11 +501,7 @@ /*! \fn virtual virtual void BSplitView::MouseMoved(BPoint where, uint32 transit, const BMessage *message) - \brief Undocumented public method - - \param where Undocumented - \param transit Undocumented - \param message Undocumented + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -452,9 +509,7 @@ /*! \fn virtual virtual void BSplitView::MessageReceived(BMessage *message) - \brief Undocumented public method - - \param message Undocumented + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -462,9 +517,7 @@ /*! \fn virtual virtual void BSplitView::SetLayout(BLayout *layout) - \brief Undocumented public method - - \param layout Undocumented + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -472,27 +525,13 @@ /*! \fn virtual virtual status_t BSplitView::Archive(BMessage *into, bool deep=true) const - \brief Undocumented public method - - \param into Undocumented - \param deep Undocumented - - \return Undocumented - \retval Undocumented - - \since Haiku R1 + \copydoc BArchivable::Archive() */ /*! \fn virtual virtual status_t BSplitView::Perform(perform_code d, void *arg) - \brief Undocumented public method - - \param d Undocumented - \param arg Undocumented - - \return Undocumented - \retval Undocumented + \brief Hook method overridden from BView. \since Haiku R1 */ @@ -500,12 +539,7 @@ /*! \fn static static BArchivable* BSplitView::Instantiate(BMessage *from) - \brief Undocumented public method - - \param from Undocumented - - \return Undocumented - \retval Undocumented + \brief Instantiate the view from the message \a from. \since Haiku R1 */ @@ -513,12 +547,7 @@ /*! \fn virtual virtual status_t BSplitView::AllArchived(BMessage *into) const - \brief Undocumented protected method - - \param into Undocumented - - \return Undocumented - \retval Undocumented + \brief Hook method overridden from BArchivable. \since Haiku R1 */ @@ -526,12 +555,7 @@ /*! \fn virtual virtual status_t BSplitView::AllUnarchived(const BMessage *from) - \brief Undocumented protected method - - \param from Undocumented - - \return Undocumented - \retval Undocumented + \brief Hook method overridden from BArchivable. \since Haiku R1 */ @@ -539,12 +563,10 @@ /*! \fn virtual virtual void BSplitView::DrawSplitter(BRect frame, const BRect &updateRect, orientation orientation, bool pressed) - \brief Undocumented protected method + \brief Hook method called when the splitter needs to be drawn. - \param frame Undocumented - \param updateRect Undocumented - \param orientation Undocumented - \param pressed Undocumented + This method is called in the context of a \ref BView::Draw() operation. + Derived classes can override this to draw a splitter. \since Haiku R1 */ diff --git a/docs/user/interface/images/BSplitView_HaikuDepot.png b/docs/user/interface/images/BSplitView_HaikuDepot.png new file mode 100644 index 0000000000000000000000000000000000000000..546f58e4874996851749f06b4cb2658b48c6fa39 GIT binary patch literal 58055 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