use super::StatusBarItem;
#[derive(Debug, Default)]
pub struct StatusBarState
{
pub(crate) items: Vec<StatusBarItem>,
}
impl StatusBarState
{
pub fn new() -> Self
{
Self::default()
}
pub fn with_item(
mut self,
item: StatusBarItem,
) -> Self
{
self.items
.push(item);
self
}
pub fn set_value<S1, S2>(
&mut self,
key: S1,
value: S2,
) where
S1: AsRef<str>,
S2: AsRef<str>,
{
let mut inner = move |key: &str, value: &str| {
if let Some(item) = self
.items
.iter_mut()
.find(
|i| {
i.key
.eq(key)
},
)
{
item.set_value(value);
}
};
inner(
key.as_ref(),
value.as_ref(),
)
}
pub fn clear_value<S>(
&mut self,
key: S,
) where
S: AsRef<str>,
{
let mut inner = move |key: &str| {
if let Some(item) = self
.items
.iter_mut()
.find(
|i| {
i.key
.eq(key)
},
)
{
item.clear_value();
}
};
inner(key.as_ref())
}
}