rtlibs-tui 0.1.5

rtools library: ratatui widgets
Documentation
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())
    }
}