aboutsummaryrefslogtreecommitdiff
path: root/src/app/form/mod.rs
diff options
context:
space:
mode:
authorJoris2022-02-26 18:57:55 +0100
committerJoris2022-02-26 18:57:55 +0100
commitf9f49285c5ecc76d3edfb0a54ffab53c2e296d7f (patch)
treef77f9b625446de7f0b9de1553fc52d702c4cbc69 /src/app/form/mod.rs
parent2d80413609130f1c121dcae39a150a27dd9f02ea (diff)
downloadcalendar-f9f49285c5ecc76d3edfb0a54ffab53c2e296d7f.tar.gz
calendar-f9f49285c5ecc76d3edfb0a54ffab53c2e296d7f.tar.bz2
calendar-f9f49285c5ecc76d3edfb0a54ffab53c2e296d7f.zip
Apply linter advices
Diffstat (limited to 'src/app/form/mod.rs')
-rw-r--r--src/app/form/mod.rs124
1 files changed, 0 insertions, 124 deletions
diff --git a/src/app/form/mod.rs b/src/app/form/mod.rs
deleted file mode 100644
index 9cb6ba7..0000000
--- a/src/app/form/mod.rs
+++ /dev/null
@@ -1,124 +0,0 @@
-mod repetition;
-
-use gtk4 as gtk;
-
-use gtk::glib;
-use gtk::prelude::*;
-
-use crate::{
- app::{update, update::Msg, App},
- db,
- model::{event, event::Event},
-};
-
-pub async fn show(app: &App, event: Event, is_new: bool) {
- let dialog = gtk::Dialog::builder()
- .transient_for(&*app.window)
- .modal(true)
- .title(if is_new { "Ajouter" } else { "Modifier" })
- .css_classes(vec!["g-Form".to_string()])
- .build();
-
- let content_area = dialog.content_area();
-
- let lines = gtk::Box::builder()
- .orientation(gtk::Orientation::Vertical)
- .build();
- content_area.append(&lines);
-
- let columns = gtk::Box::builder()
- .orientation(gtk::Orientation::Horizontal)
- .build();
- columns.add_css_class("g-Form__Columns");
- lines.append(&columns);
-
- // First column
-
- let column1 = gtk::Box::builder()
- .orientation(gtk::Orientation::Vertical)
- .build();
- column1.add_css_class("g-Form__Inputs");
- columns.append(&column1);
-
- let name = entry(&event.name);
- column1.append(&label("Événement"));
- column1.append(&name);
-
- let date = entry(&event.date.format(event::DATE_FORMAT).to_string());
- column1.append(&label("Jour"));
- column1.append(&date);
-
- let start = entry(
- &event
- .start
- .map(event::pprint_time)
- .unwrap_or("".to_string()),
- );
- column1.append(&label("Début"));
- column1.append(&start);
-
- let end = entry(&event.end.map(event::pprint_time).unwrap_or("".to_string()));
- column1.append(&label("Fin"));
- column1.append(&end);
-
- // Second column
-
- let repetition_model = repetition::view(&event);
- columns.append(&repetition_model.view);
-
- // Buttons
-
- let button = gtk::Button::builder()
- .label(if is_new { "Créer" } else { "Modifier" })
- .margin_bottom(10)
- .build();
- lines.append(&button);
- let conn = app.conn.clone();
- let tx = app.tx.clone();
- button.connect_clicked(glib::clone!(@weak dialog, @strong event => move |_| {
- let repetition = repetition::validate(&repetition_model).clone();
- match event::validate(event.id, date.buffer().text(), name.buffer().text(), start.buffer().text(), end.buffer().text(), repetition) {
- Some(new) => {
- match if is_new { db::insert(&conn, &new) } else { db::update(&conn, &new) } {
- Ok(_) => {
- let msg = if is_new { Msg::AddEvent { new } } else { Msg::UpdateEvent { old: event.clone(), new } };
- update::send(tx.clone(), msg);
- dialog.close()
- },
- Err(err) => eprintln!("Error when upserting event: {err}")
- }
- },
- None => eprintln!("Event is not valid: {event:?}")
- }
- }));
-
- if !is_new {
- let button = gtk::Button::builder().label("Supprimer").build();
- lines.append(&button);
- let conn = app.conn.clone();
- let tx = app.tx.clone();
- button.connect_clicked(glib::clone!(@weak dialog => move |_| {
- match db::delete(&conn, &event.id) {
- Ok(_) => {
- update::send(tx.clone(), Msg::DeleteEvent { event: event.clone() });
- dialog.close()
- },
- Err(_) => ()
- }
- }));
- }
-
- dialog.run_future().await;
-}
-
-fn entry(text: &str) -> gtk::Entry {
- gtk::Entry::builder().text(text).margin_bottom(10).build()
-}
-
-fn label(text: &str) -> gtk::Label {
- gtk::Label::builder()
- .label(text)
- .halign(gtk::Align::Start)
- .margin_bottom(5)
- .build()
-}