From 1445e23a26c6581ad0c3f5b5016e47e95d224e9f Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 20 Feb 2022 09:33:55 +0100 Subject: Save repetition in events But don’t show repetead events for now. --- src/app/form.rs | 101 -------------------------------------------------------- 1 file changed, 101 deletions(-) delete mode 100644 src/app/form.rs (limited to 'src/app/form.rs') diff --git a/src/app/form.rs b/src/app/form.rs deleted file mode 100644 index 7f75db0..0000000 --- a/src/app/form.rs +++ /dev/null @@ -1,101 +0,0 @@ -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 vbox = gtk::Box::builder() - .orientation(gtk::Orientation::Vertical) - .build(); - vbox.add_css_class("g-Form__Inputs"); - content_area.append(&vbox); - - let name = entry(&event.name); - vbox.append(&label("Événement")); - vbox.append(&name); - - let date = entry(&event.date.format(event::DATE_FORMAT).to_string()); - vbox.append(&label("Jour")); - vbox.append(&date); - - let start = entry( - &event - .start - .map(event::pprint_time) - .unwrap_or("".to_string()), - ); - vbox.append(&label("Début")); - vbox.append(&start); - - let end = entry(&event.end.map(event::pprint_time).unwrap_or("".to_string())); - vbox.append(&label("Fin")); - vbox.append(&end); - - let button = gtk::Button::builder() - .label(if is_new { "Créer" } else { "Modifier" }) - .margin_bottom(10) - .build(); - vbox.append(&button); - let conn = app.conn.clone(); - let tx = app.tx.clone(); - button.connect_clicked(glib::clone!(@weak dialog, @strong event => move |_| { - match event::validate(event.id, date.buffer().text(), name.buffer().text(), start.buffer().text(), end.buffer().text()) { - 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(_) => () - } - }, - None => () - } - })); - - if !is_new { - let button = gtk::Button::builder().label("Supprimer").build(); - vbox.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() -} -- cgit v1.2.3