logisheets_controller/theme_manager/
mod.rs

1use logisheets_workbook::prelude::{CtColorScheme, ThemePart};
2
3#[derive(Default, Clone)]
4pub struct ThemeManager {
5    pub theme: Option<ThemePart>,
6}
7
8impl ThemeManager {
9    pub fn from(part: ThemePart) -> Self {
10        ThemeManager { theme: Some(part) }
11    }
12
13    pub fn get_color(&self, idx: u32) -> String {
14        if self.theme.is_none() {
15            return String::from("");
16        }
17        match idx {
18            0 => self.get_color_scheme().dk1.get_color(),
19            1 => self.get_color_scheme().lt1.get_color(),
20            2 => self.get_color_scheme().dk2.get_color(),
21            3 => self.get_color_scheme().lt2.get_color(),
22            4 => self.get_color_scheme().accent1.get_color(),
23            5 => self.get_color_scheme().accent2.get_color(),
24            6 => self.get_color_scheme().accent3.get_color(),
25            7 => self.get_color_scheme().accent4.get_color(),
26            8 => self.get_color_scheme().accent5.get_color(),
27            9 => self.get_color_scheme().accent6.get_color(),
28            10 => self.get_color_scheme().hlink.get_color(),
29            11 => self.get_color_scheme().fol_hlink.get_color(),
30            _ => String::from(""),
31        }
32    }
33
34    fn get_color_scheme(&self) -> &CtColorScheme {
35        let clr_scheme = &self.theme.as_ref().unwrap().theme_elements.clr_scheme;
36        clr_scheme
37    }
38}