Struct slint::FilterModel
[−]pub struct FilterModel<M, F>(_)
where
M: 'static + Model,
F: 'static + Fn(&<M as Model>::Data) -> bool;
Expand description
Provides a filtered subset of rows by another Model
.
When the other Model is updated, the FilterModel
is updated accordingly.
Generic parameters:
M
the type of the wrappedModel
.F
the filter function.
Example
Here we have a VecModel
holding SharedString
s.
It is then filtered into a FilterModel
.
let model = VecModel::from(vec![
SharedString::from("Lorem"),
SharedString::from("ipsum"),
SharedString::from("dolor"),
]);
let filtered_model = FilterModel::new(model, |s| s.contains('o'));
assert_eq!(filtered_model.row_data(0).unwrap(), SharedString::from("Lorem"));
assert_eq!(filtered_model.row_data(1).unwrap(), SharedString::from("dolor"));
Alternatively you can use the shortcut ModelExt::filter
.
let filtered_model = VecModel::from(vec![
SharedString::from("Lorem"),
SharedString::from("ipsum"),
SharedString::from("dolor"),
]).filter(|s| s.contains('o'));
If you want to modify the underlying VecModel
you can give it a Rc
of the FilterModel:
let model = Rc::new(VecModel::from(vec![
SharedString::from("Lorem"),
SharedString::from("ipsum"),
SharedString::from("dolor"),
]));
let filtered_model = FilterModel::new(model.clone(), |s| s.contains('o'));
assert_eq!(filtered_model.row_data(0).unwrap(), SharedString::from("Lorem"));
assert_eq!(filtered_model.row_data(1).unwrap(), SharedString::from("dolor"));
model.set_row_data(1, SharedString::from("opsom"));
assert_eq!(filtered_model.row_data(0).unwrap(), SharedString::from("Lorem"));
assert_eq!(filtered_model.row_data(1).unwrap(), SharedString::from("opsom"));
assert_eq!(filtered_model.row_data(2).unwrap(), SharedString::from("dolor"));
Implementations
impl<M, F> FilterModel<M, F>where
M: 'static + Model,
F: 'static + Fn(&<M as Model>::Data) -> bool,
impl<M, F> FilterModel<M, F>where
M: 'static + Model,
F: 'static + Fn(&<M as Model>::Data) -> bool,
pub fn new(wrapped_model: M, filter_function: F) -> FilterModel<M, F>
pub fn new(wrapped_model: M, filter_function: F) -> FilterModel<M, F>
Creates a new FilterModel based on the given wrapped_model
and filtered by filter_function
.
Alternativly you can use ModelExt::filter
on your Model.
pub fn apply_filter(&self)
👎Deprecated: Use reset() instead
pub fn apply_filter(&self)
Manually reapply the filter. You need to run this e.g. if the filtering function depends on
mutable state and it has changed. This method is deprecated use reset
instead.
pub fn reset(&self)
pub fn reset(&self)
Manually reapply the filter. You need to run this e.g. if the filtering function depends on mutable state and it has changed.
pub fn unfiltered_row(&self, filtered_row: usize) -> usize
pub fn unfiltered_row(&self, filtered_row: usize) -> usize
Gets the row index of the underlying unfiltered model for a given filtered row index.
Trait Implementations
impl<M, F> Model for FilterModel<M, F>where
M: 'static + Model,
F: 'static + Fn(&<M as Model>::Data) -> bool,
impl<M, F> Model for FilterModel<M, F>where
M: 'static + Model,
F: 'static + Fn(&<M as Model>::Data) -> bool,
fn row_data(&self, row: usize) -> Option<<FilterModel<M, F> as Model>::Data>
fn row_data(&self, row: usize) -> Option<<FilterModel<M, F> as Model>::Data>
row < row_count()
. Read morefn set_row_data(&self, row: usize, data: <FilterModel<M, F> as Model>::Data)
fn set_row_data(&self, row: usize, data: <FilterModel<M, F> as Model>::Data)
fn model_tracker(&self) -> &dyn ModelTracker
fn model_tracker(&self) -> &dyn ModelTracker
ModelNotify
field. Read moreAuto Trait Implementations
impl<M, F> !RefUnwindSafe for FilterModel<M, F>
impl<M, F> !Send for FilterModel<M, F>
impl<M, F> !Sync for FilterModel<M, F>
impl<M, F> Unpin for FilterModel<M, F>
impl<M, F> !UnwindSafe for FilterModel<M, F>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> ModelExt for Twhere
T: Model,
impl<T> ModelExt for Twhere
T: Model,
fn row_data_tracked(&self, row: usize) -> Option<Self::Data>
fn row_data_tracked(&self, row: usize) -> Option<Self::Data>
ModelTracker::track_row_data_changes
before returning Model::row_data
. Read morefn map<F, U>(self, map_function: F) -> MapModel<Self, F>where
Self: 'static + Sized,
F: 'static + Fn(Self::Data) -> U,
fn map<F, U>(self, map_function: F) -> MapModel<Self, F>where
Self: 'static + Sized,
F: 'static + Fn(Self::Data) -> U,
map_function
.
This is a shortcut for MapModel::new()
. Read morefn filter<F>(self, filter_function: F) -> FilterModel<Self, F>where
Self: 'static + Sized,
F: 'static + Fn(&Self::Data) -> bool,
fn filter<F>(self, filter_function: F) -> FilterModel<Self, F>where
Self: 'static + Sized,
F: 'static + Fn(&Self::Data) -> bool,
filter_function
.
This is a shortcut for FilterModel::new()
. Read more