1use gled_model::{asset::palette::Palette, asset_id::AssetId};
7use serde::{Deserialize, Serialize};
8
9pub const STORAGE_KEY: &str = "gled_client_settings";
11
12#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
13#[serde(default)]
14pub struct ClientSettings {
15 effects_size: f32,
16 preview_palette: Option<AssetId<Palette>>,
17 midi_access_wanted: bool,
20}
21
22impl Default for ClientSettings {
23 fn default() -> Self {
24 Self {
25 effects_size: 100.0,
26 preview_palette: None,
27 midi_access_wanted: false,
28 }
29 }
30}
31
32impl ClientSettings {
33 pub fn new(effects_size: f32, preview_palette: Option<AssetId<Palette>>) -> Self {
34 Self {
35 effects_size,
36 preview_palette,
37 ..Self::default()
38 }
39 }
40
41 pub(crate) fn effects_size(&self) -> f32 {
42 self.effects_size
43 }
44
45 pub(crate) fn effects_size_mut(&mut self) -> &mut f32 {
46 &mut self.effects_size
47 }
48
49 pub(crate) fn preview_palette(&self) -> Option<AssetId<Palette>> {
50 self.preview_palette
51 }
52
53 pub(crate) fn preview_palette_mut(&mut self) -> &mut Option<AssetId<Palette>> {
54 &mut self.preview_palette
55 }
56
57 pub(crate) fn midi_access_wanted(&self) -> bool {
58 self.midi_access_wanted
59 }
60
61 pub(crate) fn want_midi_access(&mut self) {
62 self.midi_access_wanted = true;
63 }
64}