aboutsummaryrefslogtreecommitdiff
path: root/karlgui/src/views
diff options
context:
space:
mode:
Diffstat (limited to 'karlgui/src/views')
-rw-r--r--karlgui/src/views/edit.rs40
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");