aboutsummaryrefslogtreecommitdiff
path: root/src/preferences/window.rs
diff options
context:
space:
mode:
authorRubén Beltrán del Río <jj@r.bdr.sh>2026-01-17 11:22:22 +0100
committerRubén Beltrán del Río <jj@r.bdr.sh>2026-01-17 12:24:45 +0100
commit88d6bf80f5cdbbb90ead197bd41a67eb8c44e50e (patch)
tree401549b24fe8a747ef6739389b1b38f33ef016bb /src/preferences/window.rs
parent17898fbabde35ab346c133114e78614e707c0eca (diff)
Make clippy stricter and fix
Diffstat (limited to 'src/preferences/window.rs')
-rw-r--r--src/preferences/window.rs187
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);
+ }
+ }
}