logisheets_controller 0.7.0

the core of LogiSheets
Documentation
use im::HashMap;
use logisheets_base::{ColId, StyleId};

#[derive(Debug, Clone, Default)]
pub struct ColInfoManager {
    data: HashMap<ColId, ColInfo>,
}

impl ColInfoManager {
    pub fn get_col_info(&self, col_id: ColId) -> Option<&ColInfo> {
        self.data.get(&col_id)
    }

    pub fn get_col_info_mut(&mut self, col_id: ColId) -> Option<&mut ColInfo> {
        self.data.get_mut(&col_id)
    }

    pub fn set_col_info(&mut self, col_id: ColId, info: ColInfo) {
        self.data.insert(col_id, info);
    }

    pub fn get_all_col_info(&self) -> Vec<(ColId, &ColInfo)> {
        self.data.iter().map(|(k, v)| (*k, v)).collect()
    }
}

#[derive(Debug, Clone)]
pub struct ColInfo {
    pub best_fit: bool,
    pub collapsed: bool,
    pub custom_width: bool,
    pub hidden: bool,
    pub outline_level: u8,
    pub style: StyleId,
    pub width: Option<f64>,
}

impl Default for ColInfo {
    fn default() -> Self {
        ColInfo {
            best_fit: false,
            collapsed: false,
            custom_width: false,
            hidden: false,
            outline_level: 0,
            style: 0,
            width: None,
        }
    }
}