diff options
| author | Rubén Beltrán del Río <jj@r.bdr.sh> | 2026-01-17 11:22:22 +0100 |
|---|---|---|
| committer | Rubén Beltrán del Río <jj@r.bdr.sh> | 2026-01-17 12:24:45 +0100 |
| commit | 88d6bf80f5cdbbb90ead197bd41a67eb8c44e50e (patch) | |
| tree | 401549b24fe8a747ef6739389b1b38f33ef016bb /src/preferences/window.rs | |
| parent | 17898fbabde35ab346c133114e78614e707c0eca (diff) | |
Make clippy stricter and fix
Diffstat (limited to 'src/preferences/window.rs')
| -rw-r--r-- | src/preferences/window.rs | 187 |
1 files changed, 112 insertions, 75 deletions
diff --git a/src/preferences/window.rs b/src/preferences/window.rs index 2118056..0997716 100644 --- a/src/preferences/window.rs +++ b/src/preferences/window.rs @@ -143,9 +143,9 @@ impl SimpleComponent for PreferencesWindow { root: Self::Root, sender: ComponentSender<Self>, ) -> ComponentParts<Self> { - let general_page = general::GeneralPage::new(sender.input_sender().clone()); - let editor_page = editor::EditorPage::new(&preferences, sender.input_sender().clone()); - let map_page = map::MapPage::new(&preferences, sender.input_sender().clone()); + let general_page = general::GeneralPage::new(&sender.input_sender().clone()); + let editor_page = editor::EditorPage::new(&preferences, &sender.input_sender().clone()); + let map_page = map::MapPage::new(&preferences, &sender.input_sender().clone()); let stages_page = stages::StagesPage::new(&preferences, sender.input_sender().clone()); let templates_page = templates::TemplatesPage::new(&preferences, sender.input_sender().clone()); @@ -167,7 +167,6 @@ impl SimpleComponent for PreferencesWindow { fn update(&mut self, message: Self::Input, sender: ComponentSender<Self>) { match message { - // General page actions PreferencesInput::Export => { general::show_export_dialog(sender.input_sender(), &self.window); } @@ -188,8 +187,6 @@ impl SimpleComponent for PreferencesWindow { self.sync_ui_from_preferences(); self.save_and_notify(&sender); } - - // Map preferences PreferencesInput::SetShowMapBackground(v) => { self.preferences.show_map_background = v; self.save_and_notify(&sender); @@ -210,8 +207,6 @@ impl SimpleComponent for PreferencesWindow { self.preferences.use_smart_label_positioning = v; self.save_and_notify(&sender); } - - // Editor preferences PreferencesInput::SetUseCustomEditorFont(v) => { self.preferences.use_custom_editor_font = v; self.save_and_notify(&sender); @@ -228,88 +223,29 @@ impl SimpleComponent for PreferencesWindow { self.preferences.soft_wrap_lines = v; self.save_and_notify(&sender); } - - // Templates - PreferencesInput::AddTemplate(name) => { - let template = super::models::Template::new(name, String::new(), false); - self.preferences.map_templates.push(template); - self.templates_page.refresh(&self.preferences); - self.save_and_notify(&sender); - } - PreferencesInput::RemoveTemplate(id) => { - self.preferences.map_templates.retain(|t| t.id != id); - self.templates_page.refresh(&self.preferences); - self.save_and_notify(&sender); - } + PreferencesInput::AddTemplate(name) => self.handle_add_template(name, &sender), + PreferencesInput::RemoveTemplate(id) => self.handle_remove_template(id, &sender), PreferencesInput::SetTemplateContent(id, content) => { - if let Some(template) = self - .preferences - .map_templates - .iter_mut() - .find(|t| t.id == id) - { - template.content = content; - self.save_and_notify(&sender); - } + self.handle_set_template_content(id, content, &sender); } PreferencesInput::SetTemplateName(id, name) => { - if let Some(template) = self - .preferences - .map_templates - .iter_mut() - .find(|t| t.id == id) - { - template.name = name; - self.templates_page.refresh(&self.preferences); - self.save_and_notify(&sender); - } + self.handle_set_template_name(id, name, &sender); } PreferencesInput::SetDefaultTemplate(id) => { self.preferences.set_default_template(id); self.templates_page.refresh(&self.preferences); self.save_and_notify(&sender); } - - // Custom stages - PreferencesInput::AddCustomStage => { - let stage = super::models::CustomStage::placeholder_default(); - self.preferences.custom_stages.push(stage); - self.stages_page.refresh(&self.preferences); - self.save_and_notify(&sender); - } + PreferencesInput::AddCustomStage => self.handle_add_custom_stage(&sender), PreferencesInput::RemoveCustomStage(id) => { - self.preferences.custom_stages.retain(|s| s.id != id); - self.stages_page.refresh(&self.preferences); - self.save_and_notify(&sender); + self.handle_remove_custom_stage(id, &sender); } PreferencesInput::SetCustomStageName(id, name) => { - if let Some(stage) = self - .preferences - .custom_stages - .iter_mut() - .find(|s| s.id == id) - { - stage.name = name; - self.save_and_notify(&sender); - } + self.handle_set_custom_stage_name(id, name, &sender); } PreferencesInput::SetCustomStageLabel(id, label, value) => { - if let Some(stage) = self - .preferences - .custom_stages - .iter_mut() - .find(|s| s.id == id) - { - match label { - StageLabel::I => stage.stage.i = value, - StageLabel::Ii => stage.stage.ii = value, - StageLabel::Iii => stage.stage.iii = value, - StageLabel::Iv => stage.stage.iv = value, - } - self.save_and_notify(&sender); - } + self.handle_set_custom_stage_label(id, label, value, &sender); } - PreferencesInput::Close => { sender.output(PreferencesOutput::Closed).ok(); } @@ -333,4 +269,105 @@ impl PreferencesWindow { self.stages_page.refresh(&self.preferences); self.templates_page.refresh(&self.preferences); } + + fn handle_add_template(&mut self, name: String, sender: &ComponentSender<Self>) { + let template = super::models::Template::new(name, String::new(), false); + self.preferences.map_templates.push(template); + self.templates_page.refresh(&self.preferences); + self.save_and_notify(sender); + } + + fn handle_remove_template(&mut self, id: uuid::Uuid, sender: &ComponentSender<Self>) { + self.preferences.map_templates.retain(|t| t.id != id); + self.templates_page.refresh(&self.preferences); + self.save_and_notify(sender); + } + + fn handle_set_template_content( + &mut self, + id: uuid::Uuid, + content: String, + sender: &ComponentSender<Self>, + ) { + if let Some(template) = self + .preferences + .map_templates + .iter_mut() + .find(|t| t.id == id) + { + template.content = content; + self.save_and_notify(sender); + } + } + + fn handle_set_template_name( + &mut self, + id: uuid::Uuid, + name: String, + sender: &ComponentSender<Self>, + ) { + if let Some(template) = self + .preferences + .map_templates + .iter_mut() + .find(|t| t.id == id) + { + template.name = name; + self.templates_page.refresh(&self.preferences); + self.save_and_notify(sender); + } + } + + fn handle_add_custom_stage(&mut self, sender: &ComponentSender<Self>) { + let stage = super::models::CustomStage::placeholder_default(); + self.preferences.custom_stages.push(stage); + self.stages_page.refresh(&self.preferences); + self.save_and_notify(sender); + } + + fn handle_remove_custom_stage(&mut self, id: uuid::Uuid, sender: &ComponentSender<Self>) { + self.preferences.custom_stages.retain(|s| s.id != id); + self.stages_page.refresh(&self.preferences); + self.save_and_notify(sender); + } + + fn handle_set_custom_stage_name( + &mut self, + id: uuid::Uuid, + name: String, + sender: &ComponentSender<Self>, + ) { + if let Some(stage) = self + .preferences + .custom_stages + .iter_mut() + .find(|s| s.id == id) + { + stage.name = name; + self.save_and_notify(sender); + } + } + + fn handle_set_custom_stage_label( + &mut self, + id: uuid::Uuid, + label: StageLabel, + value: String, + sender: &ComponentSender<Self>, + ) { + if let Some(stage) = self + .preferences + .custom_stages + .iter_mut() + .find(|s| s.id == id) + { + match label { + StageLabel::I => stage.stage.i = value, + StageLabel::Ii => stage.stage.ii = value, + StageLabel::Iii => stage.stage.iii = value, + StageLabel::Iv => stage.stage.iv = value, + } + self.save_and_notify(sender); + } + } } |