diff options
Diffstat (limited to 'karlgui/src/views/edit.rs')
-rw-r--r-- | karlgui/src/views/edit.rs | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/karlgui/src/views/edit.rs b/karlgui/src/views/edit.rs index 160bea3..6162df1 100644 --- a/karlgui/src/views/edit.rs +++ b/karlgui/src/views/edit.rs @@ -45,6 +45,11 @@ impl ShowAndEdit { t.ui(ui, edit); ui.separator(); } + if ui.button("➕ Add task").clicked() { + let id = rand::random::<u64>(); + g.tasks.insert(id, Task::default_with_id(id)); + self.edit = Some(id); + } } } @@ -56,7 +61,11 @@ impl EditableWidget for Task { fn ui(&mut self, ui: &mut Ui, edit: bool) { CollapsingState::load_with_default_open(ui.ctx(), egui::Id::new(self.id), false) .show_header(ui, |ui| { - ui.heading(&self.name); + if edit { + ui.text_edit_singleline(&mut self.name); + } else { + ui.heading(&self.name); + } }) .body(|ui| { if let Some(d) = &mut self.description { @@ -65,6 +74,10 @@ impl EditableWidget for Task { } else { ui.label(&*d); } + } else if edit { + if ui.button("Add description").clicked() { + self.description = Some(String::new()) + } } if self.tags.len() != 0 || edit { ui.horizontal(|ui| { @@ -97,6 +110,31 @@ impl EditableWidget for Task { impl EditableWidget for Schedule { fn ui(&mut self, ui: &mut Ui, edit: bool) { + if edit { + ui.menu_button("✏ Change schedule kind", |ui| { + if ui.button("Never").clicked() { + *self = Schedule::Never; + ui.close_menu(); + } + if ui.button("Condition").clicked() { + *self = Schedule::Condition(Condition::Never); + ui.close_menu(); + } + if ui.button("Dynamic").clicked() { + *self = Schedule::Dynamic { + priority: 0.0, + scheduled: None, + duration: 60, + condition: Condition::Never, + }; + ui.close_menu(); + } + if ui.button("Static").clicked() { + *self = Schedule::Static(0..0); + ui.close_menu(); + } + }); + } match self { Schedule::Never => { ui.label("No schedule"); |