logisheets_controller/theme_manager/
mod.rs1use 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}