Add roll detail editing to the roll view

This commit is contained in:
pjht 2023-05-30 15:48:20 -05:00
parent c14c499467
commit ddc9cc8ac8
Signed by: pjht
GPG Key ID: CA239FC6934E6F3A
3 changed files with 112 additions and 8 deletions

View File

@ -1,8 +1,8 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
mod new_roll;
mod roll_view;
mod roll;
mod roll_view;
use eframe::egui;
use new_roll::NewRollWindow;
@ -63,9 +63,8 @@ impl eframe::App for MyApp {
if ui.button("Add").clicked() && self.new_roll_window.is_none() {
self.new_roll_window = Some(NewRollWindow::default());
}
self.roll_views.retain_mut(|win| {
!win.draw(ctx, &mut self.state)
});
self.roll_views
.retain_mut(|win| !win.draw(ctx, &mut self.state));
if let Some(new_roll_window) = self.new_roll_window.as_mut() {
if new_roll_window.draw(ctx, &mut self.state) {
self.new_roll_window = None;

View File

@ -1,5 +1,5 @@
use chrono::NaiveDate;
use serde::{Serialize, Deserialize};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Exposure {

View File

@ -1,7 +1,9 @@
use chrono::NaiveDate;
use eframe::{
egui::{self, RichText, Window},
epaint::Color32,
};
use egui_datepicker::DatePicker;
use itertools::Itertools;
use crate::AppState;
@ -10,6 +12,14 @@ pub struct RollViewWindow {
roll: usize,
confirm_delete: bool,
exp: u8,
editing_id: bool,
edit_id: String,
editing_name: bool,
edit_name: String,
editing_desc: bool,
edit_desc: String,
editing_date: bool,
edit_date: NaiveDate,
}
impl RollViewWindow {
@ -18,6 +28,14 @@ impl RollViewWindow {
roll,
confirm_delete: false,
exp: 0,
editing_id: false,
edit_id: String::new(),
editing_name: false,
edit_name: String::new(),
editing_desc: false,
edit_desc: String::new(),
editing_date: false,
edit_date: NaiveDate::default(),
}
}
@ -28,9 +46,96 @@ impl RollViewWindow {
.open(&mut close_unclicked);
window.show(ctx, |ui| {
let roll = &mut app_state.rolls[self.roll];
ui.horizontal(|ui| {
if self.editing_id {
let label = ui.label("ID: ");
ui.text_edit_singleline(&mut self.edit_id)
.labelled_by(label.id);
if ui.button("Done").clicked() {
roll.id = self.edit_id.clone();
self.editing_id = false;
}
if ui.button("Cancel").clicked() {
self.editing_id = false;
}
} else {
ui.label(format!("ID: {}", roll.id));
if ui.button("Edit").clicked() {
self.editing_id = true;
self.edit_id = roll.id.clone();
}
}
});
ui.horizontal(|ui| {
if self.editing_name {
let label = ui.label("Name: ");
ui.text_edit_singleline(&mut self.edit_name)
.labelled_by(label.id);
if ui.button("Done").clicked() {
roll.name = self.edit_name.clone();
self.editing_name = false;
}
if ui.button("Cancel").clicked() {
self.editing_name = false;
}
} else {
ui.label(format!("Name: {}", roll.name));
if ui.button("Edit").clicked() {
self.editing_name = true;
self.edit_name = roll.name.clone();
}
}
});
if self.editing_desc {
let label = ui.horizontal(|ui| {
let label = ui.label("Description: ");
if ui.button("Done").clicked() {
roll.desc = self.edit_desc.clone();
self.editing_desc = false;
}
if ui.button("Cancel").clicked() {
self.editing_desc = false;
}
label
}).inner;
ui.text_edit_multiline(&mut self.edit_desc)
.labelled_by(label.id);
} else {
ui.horizontal(|ui| {
ui.label(format!("Description: {}", roll.desc));
if ui.button("Edit").clicked() {
self.editing_desc = true;
self.edit_desc = roll.desc.clone();
}
});
}
ui.horizontal(|ui| {
if self.editing_date {
let label = ui.label("Date: ");
ui.add(
DatePicker::new(
format!("roll_{}_view_date", self.roll),
&mut self.edit_date,
)
.sunday_first(true)
.highlight_weekend(false),
)
.labelled_by(label.id);
if ui.button("Done").clicked() {
roll.date = self.edit_date;
self.editing_date = false;
}
if ui.button("Cancel").clicked() {
self.editing_date = false;
}
} else {
ui.label(format!("Date: {}", roll.date.format("%Y-%m-%d")));
if ui.button("Edit").clicked() {
self.editing_date = true;
self.edit_date = roll.date;
}
}
});
ui.label("Exposures:");
ui.horizontal_top(|ui| {
ui.vertical(|ui| {