When oneLevelOnly
is false
,
CountItemsUnder()
acts just like
FullListCountItems()
,
except the first item in the list that's considered
is underItem
instead of the first item in the full list.
| Class Overview |
BOutlineListView(BRect
frame,
const char* name,
list_view_type type = B_SINGLE_SELECTION_LIST,
uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
BOutlineListView(BMessage
* archive);
Initializes the BOutlineListView
. This constructor matches the
BListView
constructor in every detail, including default arguments. All argument
values are passed to the BListView
constructor without change. The
BOutlineListView
class doesn't do any initialization of its own.
virtual ~BOutlineListView();
Does nothing; this class relies on the
BListView
constructor destructor.
virtual void KeyDown(const char* bytes,
int32 numBytes);
Augments the inherited version of
KeyDown()
to allow users to navigate
the outline hierarchy using the arrow keys and to expand or collapse
sections of the outline using Control—arrow key combinations.
virtual void MouseDown(BPoint
point);
Augments the inherited version of
MouseDown()
to permit users to expand
and collapse sections of the outline by clicking on an item's latch.
virtual bool AddUnder(BListItem
* item,
BListItem
* superitem);
These functions add an item
to the list.
AddItem()
adds the item at
index
—where the index counts all items assigned to the
BOutlineListView
—or, if an index
isn't specified, at the end of the
list. The two versions of this function override their
BListView
counterparts to ensure that the item is correctly entered into the
outline. If the item is added to a portion of the list that is collapsed,
it won't be visible.
AddUnder()
adds an item
immediately after another item in the list and at
one outline level deeper. The level of the item
is modified accordingly.
Thus, the item already in the list becomes the superitem for the newly
added item
. If its new superitem is collapsed or is in a collapsed part
of the list, the item will not be visible.
Unlike AddUnder()
, AddItem()
respects the outline level of the item. By
setting the item's level before calling AddItem()
, you can add it as a
subitem to an item at a higher outline level or insert it as a superitem
to items at a lower level.
See also:
the BListItem
class
Adds a group of items to the list just as
AddItem()
adds a single item.
The index
counts all items assigned to the BOutlineListView
.
The newItems
BList
must contain pointers to
BListItem
objects.
See also:
BListView::AddList()
virtual status_t Archive(BMessage
* archive,
bool deep = true) const;
Archives the BOutlineListView
object much as the
Archive()
function in
the BListView
class
does, but makes sure that all items are archived,
including items in collapsed sections of the list, when the deep
flag is
true
.
See also:
BListView::Archive()
,
Instantiate()
static function
void Collapse(BListItem
* item);
void Expand(BListItem
* item);
These functions collapse and expand the section of the list controlled by
the item
superitem. If item
isn't a superitem, it is nevertheless flagged
as expanded or collapsed so that it will behave appropriately in case it
does become a superitem.
See also:
BListItem::SetExpanded()
int32 CountItemsUnder(BListItem
* underItem,
bool oneLevelOnly) const;
Counts the items located under the underItem
superitem and returns that
value. If the oneLevelOnly
argument is true
, only items directly
contained within the specified superitem are considered. If oneLevelOnly
is false
, all subitems of the specified item are considered, as are all
subitems of those subitems and so forth.
When oneLevelOnly
is false
,
CountItemsUnder()
acts just like
FullListCountItems()
,
except the first item in the list that's considered
is underItem
instead of the first item in the full list.
See also:
BListView::CountItems()
BListItem
* EachItemUnder(BListItem
* underItem,
bool oneLevelOnly,
BListItem
* (*eachFunc) (BListItem
*, void* ),
void* data);
Calls the function eachFunc
for every item
located under the underItem
superitem. If oneLevelOnly
is
true
, eachFunc
is only called for items
located directly under the underItem
; if
oneLevelOnly
is false
, the
eachFunc
is called once for every subitem of
underItem
, including
subitems of subitems, recursively.
The data
argument is passed through to each call
to the eachFunc
function
as the second argument to that function, and may be used for whatever
purpose your eachFunc
requires.
If the eachFunc
function returns a pointer to a
BListItem
(rather than
NULL
), processing is stopped immediately, even if there are items still
unvisited. The BListItem
pointer returned by the eachFunc
function is
returned by EachItemUnder()
.
When oneLevelOnly
is false
,
EachItemUnder()
acts just like
FullListDoForEach()
,
except the first item in the list that's considered
is underItem
instead of the first item in the full list.
See also:
BListView::DoForEach()
int32 FullListCountItems() const;
int32 FullListCurrentSelection(int32 index = 0) const;
BListItem
* FullListFirstItem() const;
BListItem
* FullListLastItem() const;
BListItem
* FullListItemAt(int32 index) const;
bool FullListHasItem(BListItem
* item) const;
bool FullListIsEmpty() const;
void FullListDoForEach(bool (*func)(BListItem
*));
void FullListDoForEach(bool (*func)(BListItem
*), void* ));
void FullListDoForEach(bool (*func)(BListItem
*), void* ), void* );
void FullListSortItems(int (*compareFunc)(const BListItem
*, const BListItem
*));
These functions parallel a similar set of functions defined in the
BListView
class.
The BListView
functions have identical names, but
without the FullList…()
prefix. When applied to a
BOutlineListView
object, the inherited functions consider only items in sections of the
outline that can be displayed on-screen—that is, they skip over
items in collapsed portions of the list.
These BOutlineListView
functions, on the other hand, consider all items
in the list. For example,
IndexOf()
and
FullListIndexOf()
both return an index to a given item. However, for
IndexOf()
the index is to the
position of the item in the list that can be currently displayed, but for
FullListIndexOf()
it's to the item's position in the full list, including collapsed sections.
bool IsExpanded(int32 index);
Returns true
if the item at index
is marked as controlling an expanded section of the list, and
false
if it's marked as controlling a collapsed
section or if there's no item at that index. If a superitem is expanded,
the BOutlineListView
can display its subitems; if not, the subitems are
hidden.
The index
passed to this function is to the full list of items assigned
to the BOutlineListView
.
See also:
BListItem::IsExpanded()
BListItem
* ItemUnderAt(BListItem
* underItem,
bool oneLevelOnly,
int32 index) const;
Returns a pointer to the index
th item under
the specified underItem
. If
oneLevelOnly
is true
,
only items located directly under the underItem
are
considered. If oneLevelOnly
is
false
, subitems are scanned recursively to
locate the appropriate index.
When oneLevelOnly
is false
,
ItemUnderAt()
acts just like
FullListItemAt()
,
except the first item in the list that's considered is
underItem
instead of the first item in the full list.
virtual void MakeEmpty();
Overrides the BListView
version of MakeEmpty()
to remove all items from the list. The
BListView
version of this function won't work as advertised
on a BOutlineListView
.
virtual bool RemoveItems(int32 index,
int32 count);
These functions work like their
BListView
counterparts, except that:
They can remove items from any part of the list, including collapsed
sections. The index counts all items assigned to the BOutlineListView
;
the specified item can be hidden.
If the item being removed is a superitem, they also remove all of its subitems.
The BListView
versions of these functions will not produce reliable
results when applied to a BOutlineListView
, even if the item being
removed is in an expanded section of the list and is not a superitem.
See also:
BListView::RemoveItem()
void SortItemsUnder(BListItem
* underItem,
bool oneLevelOnly,
int (*compareFunc)(const BListItem
*, const BListItem
*));
Sorts the items located under the specified underItem
. If oneLevelOnly
is
true
, only items located directly under the underItem
are considered. If
oneLevelOnly
is false
, subitems are scanned recursively and sorted.
The hierarchy of the list is ignored when sorting with oneLevelOnly
set
to false
; items can (and will) be moved from one level to another. If you
want to sort without moving items from one level to another, you should
call SortItemsUnder()
once for each superitem with oneLevelOnly
set to
true
.
When oneLevelOnly
is false
,
SortItemsUnder()
acts just like
FullListSortItems()
,
except the first item in the list that's considered
is underItem
instead of the first item in the full list.
static BArchivable
* Instantiate(BMessage
* archive);
Returns a new BOutlineListView
object, allocated by new and created with
the version of the constructor that takes a
BMessage
archive. However,
this function returns NULL
if the specified
archive
doesn't contain data
for a BOutlineListView
object.
See also:
BArchivable::Instantiate()
,
instantiate_object()
,
Archive()