/* * Copyright 2013 Haiku Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * John Scipione, jscipione@gmail.com * * Corresponds to: * headers/os/interface/OutlineListView.h hrev46526 * src/kits/interface/OutlineListView.cpp hrev46526 */ /*! \file OutlineListView.h \ingroup interface \ingroup libbe \brief Provides the BOutlineListView class. */ /*! \class BOutlineListView \ingroup interface \ingroup libbe \brief Expands upon BListView to display a hierarchical list of items. Items with subitems underneath them are called super items and are drawn with a small arrow to the left of their label. The label faces right if the item is collapsed and faces down if the item is expanded. An example of an outline list view looks like this: \image html BOutlineListView_example.png \see BListView for more info on how to use a list view, most of which also applies to an outline list view. */ /*! \fn BOutlineListView::BOutlineListView(BRect frame, const char* name, list_view_type type, uint32 resizingMode, uint32 flags) \brief Creates a new BOutlineListView object. \param frame The \a frame rectangle to create the view in. \param name The name of the view. \param type Whether the list view supports a single selection or multiple selections. \param resizingMode The resizing mode flags. See BView for details. \param flags The view flags. See BView for details. */ /*! \fn BOutlineListView::BOutlineListView(const char* name, list_view_type type, uint32 flags) \brief Creates a new BOutlineListView object suitable for use in a BLayout. \param name The name of the view. \param type Whether the list view supports a single selection or multiple selections. \param flags The view flags. See BView for details. */ /*! \fn BOutlineListView::BOutlineListView(BMessage* archive) \brief Creates a BOutlineListView object from the \a archive message. \param archive The message to create the object from. */ /*! \fn BOutlineListView::~BOutlineListView() \brief Delete the outline BOutlineListView object and free the memory used by it. This method does not free the attached list items. */ /*! \name Archiving */ //! @{ /*! \fn BArchivable* BOutlineListView::Instantiate(BMessage* archive) \brief Create a new BOutlineListView object from the message \a archive. \param archive The message to create the object from. */ /*! \fn status_t BOutlineListView::Archive(BMessage* archive, bool deep) const \brief Archive the BOutlineListView object to a message. \param archive The message to archive the object to. \param deep \c true to archive child views. */ //! @} /*! \name Hook methods */ //! @{ /*! \fn void BOutlineListView::AllAttached() \brief Hook method called once all views are attached to the outline list view. \see BView::AllAttached() */ /*! \fn void BOutlineListView::AllDetached() \brief Hook method called once all views are detached from the outline list view. \see BView::AllDetached() */ /*! \fn void BOutlineListView::DetachedFromWindow() \brief Hook method that is called when the outline list view is removed from the view hierarchy. \see BView::DetachedFromWindow() */ /*! \fn void BOutlineListView::FrameMoved(BPoint new_position) \brief Hook method called when the outline list view is moved. \param new_position The list view's new position. \see BView::FrameMoved() */ /*! \fn void BOutlineListView::FrameResized(float width, float height) \brief Hook method called when the outline list view is resized. \param width The new \a width of the view. \param height The new \a height of the view. \see BView::FrameResized() */ /*! \fn void BOutlineListView::KeyDown(const char* bytes, int32 numBytes) \brief Hook method that is called when a key is pressed while the view is the focus view of the active window. Responds to arrow keys to provide the ability to navigate the outline list or to expand or collapse sections of the outline. Inherits the keys recognized by BListView. The following keys are used by the outline list view by default: - Right Arrow Expands the selected item. - Left Arrow Collapses the selected item. \param bytes The bytes of the key combination pressed. \param numBytes The number of bytes in \a bytes. \see BListView::KeyDown() */ /*! \fn void BOutlineListView::MessageReceived(BMessage* message) \brief Hook method called when a message is received by the outline list view. \param message The message received by the view. \see BView::MessageReceived() */ /*! \fn void BOutlineListView::MouseDown(BPoint where) \brief Hook method called when a mouse button is pressed while the cursor is contained in the frame of the outline list view. Responds to mouse clicks expanding or collapsing sections of the outline when the user clicks on a latch. \param where The point on the screen where to mouse pointer is when the mouse button is pressed. \see BListView::MouseDown() */ /*! \fn void BOutlineListView::MouseUp(BPoint where) \brief Hook method that is called when a mouse button is released while the cursor is contained in the frame of the outline list view. \param where The location that the mouse button was released. \see BView::MouseUp() */ //! @} /*! \name Add and remove item methods */ //! @{ /*! \fn bool BOutlineListView::AddUnder(BListItem* item, BListItem* superItem) \brief Adds the \a item one level deeper and immediately after \a superItem. \param item The \a item to add. \param superItem The item to add under, if \c NULL adds to end. \return \c true if the \a item was added, \c false otherwise. */ /*! \fn bool BOutlineListView::AddItem(BListItem* item) \brief Adds the \a item to the end of the list. \param item The \a item to add. \return \c true if the \a item was added, \c false otherwise. */ /*! \fn bool BOutlineListView::AddItem(BListItem* item, int32 fullListIndex) \brief Adds the \a item at \a fullListIndex. \param item The \a item to add. \param fullListIndex The index to add \a item at. \return \c true if the \a item was added, \c false otherwise. */ /*! \fn bool BOutlineListView::AddList(BList* newItems) \brief Adds a list of items to the end of the list. \param newItems The list of items to add. \return \c true if the items was added, \c false otherwise. */ /*! \fn bool BOutlineListView::AddList(BList* newItems, int32 fullListIndex) \brief Adds a list of items at \a fullListIndex \param newItems The list of items to add. \param fullListIndex The index to add \a item at. \return \c true if the items was added, \c false otherwise. */ /*! \fn bool BOutlineListView::RemoveItem(BListItem* item) \brief Removes the \a item from the list. \param item The \a item to remove. \return \c true if the \a item was removed, \c false otherwise. */ /*! \fn BListItem* BOutlineListView::RemoveItem(int32 fullListIndex) \brief Removes the \a item located at \a fullListIndex from the list. \return A pointer to the BListItem removed. */ /*! \fn bool BOutlineListView::RemoveItems(int32 fullListIndex, int32 count) \brief Removes \a count items starting at \a fullListIndex from the list. \return \c true if the items were removed, \c false otherwise. */ //! @} /*! \name Full list methods These methods replicate similar methods in BListView except work on the full list. */ //! @{ /*! \fn BListItem* BOutlineListView::FullListItemAt(int32 fullListIndex) const \brief Returns a pointer to the BListItem at \a fullListIndex. \return A pointer to the the BListItem at \a fullListIndex or \c NULL if not found. \see BListView::ItemAt(int32 index) */ /*! \fn int32 BOutlineListView::FullListIndexOf(BPoint where) const \brief Returns the full list index of the item at \a where. \return The index of the item at \a where or -1 if not found. \see BListView::IndexOf(BListItem* item) */ /*! \fn int32 BOutlineListView::FullListIndexOf(BListItem* item) const \brief Returns the full list index of \a item. \return The index of the item at \a where or -1 if not found. \see BListView::IndexOf(BPoint point) */ /*! \fn BListItem* BOutlineListView::FullListFirstItem() const \brief Returns a pointer to the first BListItem in the list. \return A pointer to the first item in the list or \c NULL there are no items. \see BListView::FirstItem() */ /*! \fn BListItem* BOutlineListView::FullListLastItem() const \brief Returns a pointer to the list BListItem in the list \return A pointer to the last item in the list or \c NULL there are no items. \see BListView::LastItem() */ /*! \fn bool BOutlineListView::FullListHasItem(BListItem* item) const \brief Returns whether or not the list contains the specified \a item. \param item The list item to check. \return \c true if \a item is in the list, \c false otherwise. \see BListView::HasItem(BListItem* item) */ /*! \fn int32 BOutlineListView::FullListCountItems() const \brief Returns the number of items contained in the outline list view. \return The number of items. \see BListView::CountItems() */ /*! \fn int32 BOutlineListView::FullListCurrentSelection(int32 index) const \brief Returns the index of a currently selected item relative to the passed in \a index. \param index The \a index of the item to get relative to the selected item's index. \see BListView::CurrentSelection(int32 index) */ /*! \fn void BOutlineListView::MakeEmpty() \brief Empties the outline list view of all items. */ /*! \fn bool BOutlineListView::FullListIsEmpty() const \brief Returns whether or not the outline list view is empty. \return \c true if the outline list view is empty, \c false otherwise. \see BListView::IsEmpty() */ /*! \fn void BOutlineListView::FullListDoForEach(bool(*func)(BListItem* item)) \brief Calls the specified function on each item in the outline list. \param func The function to call on each item. \see BListView::DoForEach(bool (*func)(BListItem* item)) */ /*! \fn void BOutlineListView::FullListDoForEach(bool(*func)(BListItem* item, void* arg), void* arg) \brief Calls the specified function on each item in the outline list. \param func The function to call on each item. \param arg The second argument of the function. \sa BListView::DoForEach(bool (*func)(BListItem* item, void* arg), void* arg) */ //! @} /*! \fn BListItem* BOutlineListView::Superitem(const BListItem* item) \brief Returns a pointer to the item at one level above \a item. \return A pointer to the superitem of \a item or \c NULL if the \a item is at the outermost level or not found. */ /*! \fn void BOutlineListView::Expand(BListItem* item) \brief Expands the section referenced by \a item. */ /*! \fn void BOutlineListView::Collapse(BListItem* item) \brief Collapses the section referenced by \a item. */ /*! \fn bool BOutlineListView::IsExpanded(int32 fullListIndex) \brief Returns whether or not the section that the item at \a fullListIndex is expanded or not. \return \c true if the section is expanded, \c false if it is collapsed. */ /*! \name Sort methods */ //! @{ /*! \fn void BOutlineListView::FullListSortItems( int (*compareFunc)(const BListItem* a, const BListItem* b)) \brief Sort the items according the the passed in compare function. \param compareFunc The compare function to use to sort the items. \see BListView::SortItems(int (*cmp)(const void *, const void *)) */ /*! \fn void BOutlineListView::SortItemsUnder(BListItem* superItem, bool oneLevelOnly, int (*compareFunc)(const BListItem* a, const BListItem* b)) \brief Sorts the items under \a superItem. \param superItem The base item. \param oneLevelOnly if \c true, only items located one level under superItem are considered. \param compareFunc The compare function to use to sort the items. */ //! @} /*! \fn int32 BOutlineListView::CountItemsUnder(BListItem* superItem, bool oneLevelOnly) const \brief Returns the number of items under \a superItem. \param superItem The base item. \param oneLevelOnly if \c true, only items located one level under superItem are considered. \return The number of items under \a superItem. */ /*! \fn BListItem* BOutlineListView::EachItemUnder(BListItem* superItem, bool oneLevelOnly, BListItem* (*eachFunc)(BListItem* item, void* arg), void* arg) \brief Calls \a eachFunc for each item under \a superItem. \param superItem The base item. \param oneLevelOnly if \c true, only items located one level under superItem are considered. \param eachFunc The function to call on each item. \param arg The second argument of \a eachFunc. */ /*! \fn BListItem* BOutlineListView::ItemUnderAt(BListItem* superItem, bool oneLevelOnly, int32 index) const \brief Returns a pointer to the item at \a index under \a superItem. \note If \a oneLevelOnly is \a false, this method acts like FullListItemAt() except the first item in the list is considered to be \a superItem. \param superItem The base item. \param oneLevelOnly if \c true, only items located one level under superItem are considered. \param index The index of the item to get. \return A pointer to the item at \a index under \a superItem or \c NULL if not found. */ /*! \fn bool BOutlineListView::DoMiscellaneous(MiscCode code, MiscData* data) \brief If \a code is \a B_SWAP_OP, swap the items in \a data, otherwise pass the arguments to BListView::DoMiscellaneous(). \param code The action \a code to use. \param data The \a data to act on. \see BListView::DoMiscellaneous() */ /*! \fn void BOutlineListView::ExpandOrCollapse(BListItem* item, bool expand) \brief Toggle the expanded state of \a item. \param item The \a item to toggle. \param expand If \c true, expand the \a item, if \c false, collapse the \a item. */ /*! \fn BRect BOutlineListView::LatchRect(BRect itemRect, int32 level) const \brief Used by derived classes to return the latch area. \param itemRect The area of the item to get the latch area of. \param level The \a level of the item to get the latch area of. */ /*! \fn void BOutlineListView::DrawLatch(BRect itemRect, int32 level, bool collapsed, bool highlighted, bool misTracked) \brief Used by derived classes to draw the latch. \param itemRect The area of the item to get the latch area of, this is passed to LatchRect() to get the latch area. \param level The \a level of the item to get the latch area of, also passed to LatchRect(). \param collapsed \c true to draw the latch in a collapsed state, \c false to draw the latch in an expanded state. \param highlighted \c true to draw the latch in a selected state, \c false to draw the latch in an unselected state. Unused by the base class. \param misTracked Unused by the base class. */ /*! \fn void BOutlineListView::DrawItem(BListItem* item, BRect itemRect, bool complete) \brief Used by derived classes to draw the \a item. \param item The \a item to draw. \param itemRect The area of the \a item to draw. \param complete Whether or not to draw the background in addition to the contents. */