aboutsummaryrefslogtreecommitdiff
path: root/src/app/form.rs
diff options
context:
space:
mode:
authorJoris2022-01-09 14:50:45 +0100
committerJoris2022-01-09 14:50:45 +0100
commit6c47403b11e7aaf1a22778bdc7615051779cb7bd (patch)
tree66b643ed4032b65e16dffce9182a6a1e46c56e3a /src/app/form.rs
parentd0a9063631e71928484a698f6c585ebb3915e8a2 (diff)
downloadcalendar-6c47403b11e7aaf1a22778bdc7615051779cb7bd.tar.gz
calendar-6c47403b11e7aaf1a22778bdc7615051779cb7bd.tar.bz2
calendar-6c47403b11e7aaf1a22778bdc7615051779cb7bd.zip
Allow to delete events
Diffstat (limited to 'src/app/form.rs')
-rw-r--r--src/app/form.rs23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/app/form.rs b/src/app/form.rs
index 6c42cd0..7f75db0 100644
--- a/src/app/form.rs
+++ b/src/app/form.rs
@@ -46,11 +46,14 @@ pub async fn show(app: &App, event: Event, is_new: bool) {
vbox.append(&label("Fin"));
vbox.append(&end);
- let button = gtk::Button::with_label("Créer");
+ 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 => move |_| {
+ 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) } {
@@ -66,6 +69,22 @@ pub async fn show(app: &App, event: Event, is_new: bool) {
}
}));
+ 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;
}