Trait ListModel
pub trait ListModel {
type Key: Clone + Eq + Hash + 'static;
Show 20 methods
// Required methods
fn len(&self) -> usize;
fn key_at(&self, index: usize) -> Option<Self::Key>;
fn index_of(&self, key: &Self::Key) -> Option<usize>;
// Provided methods
fn is_empty(&self) -> bool { ... }
fn row_state(&self, _index: usize) -> Arrival<(), &str> { ... }
fn can_retry(&self, _index: usize) -> bool { ... }
fn retry(&mut self, _index: usize) { ... }
fn request_range(&mut self, _range: Range<usize>) { ... }
fn poll_changed(&mut self) -> bool { ... }
fn poll_changes(&mut self) -> Vec<ListModelChange<Self::Key>> { ... }
fn needs_poll(&self) -> bool { ... }
fn label(&self, _index: usize) -> Option<String> { ... }
fn key_presenting(&self, _id: &str) -> Option<Self::Key> { ... }
fn group_at(&self, _index: usize) -> Option<RowGroup> { ... }
fn tree_at(&self, _index: usize) -> Option<TreeRow<Self::Key>> { ... }
fn accepts_children(&self, _index: usize) -> bool { ... }
fn renames(&self, _index: usize) -> bool { ... }
fn has_subtasks(&self, _index: usize) -> bool { ... }
fn discloses(&self) -> bool { ... }
fn opens_in_place(&self, _index: usize) -> bool { ... }
}Expand description
Random-access collection contract for VirtualList. Keys must be
unique and stable while an item represents the same logical entity.
Required Associated Types§
Required Methods§
fn len(&self) -> usize
fn key_at(&self, index: usize) -> Option<Self::Key>
fn index_of(&self, key: &Self::Key) -> Option<usize>
Provided Methods§
fn is_empty(&self) -> bool
fn row_state(&self, _index: usize) -> Arrival<(), &str>
fn row_state(&self, _index: usize) -> Arrival<(), &str>
Where a logical row’s data stands: Arrival::Pending (saying where
it comes from), ready, or failed with the reason. A paged model keeps
stable keys and geometry while its rows arrive; the list reserves a
pending row’s slot and paints its placeholder there
(crate::widget::ArrivingRows), and builds the row’s delegate only
once it is ready.
fn can_retry(&self, _index: usize) -> bool
fn can_retry(&self, _index: usize) -> bool
Whether row index, failed, can be asked for again: its failure
then offers a retry, which calls Self::retry.
fn request_range(&mut self, _range: Range<usize>)
fn request_range(&mut self, _range: Range<usize>)
Opportunity to enqueue work for the visible window plus overscan.
fn poll_changed(&mut self) -> bool
fn poll_changed(&mut self) -> bool
Drain a model-owned invalidation wakeup. Return true after logical
order, count, key, or row-state changes. Use
VirtualList::invalidate_rows as well when ready delegate content
changed without changing state.
fn poll_changes(&mut self) -> Vec<ListModelChange<Self::Key>>
fn poll_changes(&mut self) -> Vec<ListModelChange<Self::Key>>
Drain specific model changes. Prefer this to Self::poll_changed
when an asynchronous source can identify its batch: stable delegates
then survive structural changes and only named content rows rebuild.
fn needs_poll(&self) -> bool
fn needs_poll(&self) -> bool
Keep scheduling frames while Self::poll_changed or
Self::poll_changes may observe an in-flight asynchronous source.
fn label(&self, _index: usize) -> Option<String>
fn label(&self, _index: usize) -> Option<String>
The name a person reads row index by, which typing its first
letters in the focused list moves to (crate::type_ahead). None
for a row without one, or a model that names no rows.
fn key_presenting(&self, _id: &str) -> Option<Self::Key>
fn key_presenting(&self, _id: &str) -> Option<Self::Key>
The key of the row showing the resource id, when the model can say: a host that
renders rows as they show offers this (crate::component::RowSource).
fn group_at(&self, _index: usize) -> Option<RowGroup>
fn group_at(&self, _index: usize) -> Option<RowGroup>
What the row index is grouped by, when the model groups its rows: the list draws the
heading over the first row of each group (RowGroup), a disclosure the keyboard
reaches like a row and assistive technology reads as one. None for a row in no group,
or a model that groups nothing.
fn tree_at(&self, _index: usize) -> Option<TreeRow<Self::Key>>
fn tree_at(&self, _index: usize) -> Option<TreeRow<Self::Key>>
What the row stands as in a tree (VirtualList::with_tree): the row it is under, and
what the list shows of its subtasks. None for a row outside a tree, or a model that
holds none.
fn accepts_children(&self, _index: usize) -> bool
fn accepts_children(&self, _index: usize) -> bool
Whether the row index takes other rows as its subtasks: a tree’s drag offers a drop
into it (DropPlacement::Inside), and the keyboard indents a row into it. false
for a leaf, or a model that holds no tree.
fn renames(&self, _index: usize) -> bool
fn renames(&self, _index: usize) -> bool
Whether the row index can be renamed in place (VirtualList::on_rename): F2, a
double click and VirtualList::begin_rename open a field only over a row that does.
fn has_subtasks(&self, _index: usize) -> bool
fn has_subtasks(&self, _index: usize) -> bool
Whether the row index has subtasks to disclose, whether or not any of them stands in
the list: a folder read when it opens shows the disclosure that reads it. false for
a leaf, or a model that holds no tree.
fn discloses(&self) -> bool
fn discloses(&self) -> bool
Whether the list heads or nests its rows, keeping a disclosure gutter left of its column.
fn opens_in_place(&self, _index: usize) -> bool
fn opens_in_place(&self, _index: usize) -> bool
Whether the row index opens into its item where it stands: the row carries the
item’s document under it, and choosing the row opens it there rather than anywhere
else. false for a row that opens elsewhere, or a model whose rows open nothing.