Clean up code to determine whether a window will close

This commit is contained in:
pjht 2023-05-30 13:36:10 -05:00
parent 4dc64031b4
commit bea57e2110
Signed by: pjht
GPG Key ID: CA239FC6934E6F3A
2 changed files with 64 additions and 77 deletions

View File

@ -31,9 +31,10 @@ impl Default for NewRollWindow {
impl NewRollWindow { impl NewRollWindow {
pub fn draw(&mut self, ctx: &egui::Context, app_state: &mut AppState) -> bool { pub fn draw(&mut self, ctx: &egui::Context, app_state: &mut AppState) -> bool {
let mut open = true; let mut close_unclicked = true;
let close_req = Window::new("New Roll") let mut close_window = false;
.open(&mut open) Window::new("New Roll")
.open(&mut close_unclicked)
.show(ctx, |ui| { .show(ctx, |ui| {
ui.horizontal(|ui| { ui.horizontal(|ui| {
let label = ui.label("ID: "); let label = ui.label("ID: ");
@ -72,17 +73,13 @@ impl NewRollWindow {
self.date, self.date,
self.exps, self.exps,
)); ));
return true; close_window = true;
} }
} }
if self.show_id_req_err { if self.show_id_req_err {
ui.colored_label(Color32::DARK_RED, "Error: ID required"); ui.colored_label(Color32::DARK_RED, "Error: ID required");
} }
false });
}) !close_unclicked || close_window
.unwrap()
.inner
.unwrap_or(false);
!open || close_req
} }
} }

View File

@ -22,76 +22,66 @@ impl RollViewWindow {
} }
pub fn draw(&mut self, ctx: &egui::Context, app_state: &mut AppState) -> bool { pub fn draw(&mut self, ctx: &egui::Context, app_state: &mut AppState) -> bool {
let mut open = true; let mut close_unclicked = true;
let window = Window::new(format!("Roll {}", app_state.rolls[self.roll].id)).open(&mut open); let mut close_window = false;
let deleted = window let window = Window::new(format!("Roll {}", app_state.rolls[self.roll].id))
.show(ctx, |ui| { .open(&mut close_unclicked);
let roll = &mut app_state.rolls[self.roll]; window.show(ctx, |ui| {
ui.label(format!("Name: {}", roll.name)); let roll = &mut app_state.rolls[self.roll];
ui.label(format!("Description: {}", roll.desc)); ui.label(format!("Name: {}", roll.name));
ui.label(format!("Date: {}", roll.date.format("%Y-%m-%d"))); ui.label(format!("Description: {}", roll.desc));
ui.label("Exposures:"); ui.label(format!("Date: {}", roll.date.format("%Y-%m-%d")));
ui.horizontal_top(|ui| { ui.label("Exposures:");
ui.vertical(|ui| { ui.horizontal_top(|ui| {
for (i, chunk) in roll.exposures.iter().chunks(5).into_iter().enumerate() { ui.vertical(|ui| {
ui.horizontal(|ui| { for (i, chunk) in roll.exposures.iter().chunks(5).into_iter().enumerate() {
for (j, exp) in chunk.enumerate() { ui.horizontal(|ui| {
let num = i * 5 + j; for (j, exp) in chunk.enumerate() {
let mut label = RichText::new(format!("{:02}", exp.num)); let num = i * 5 + j;
if exp.printed { let mut label = RichText::new(format!("{:02}", exp.num));
if exp.damaged { if exp.printed {
label = label.color(Color32::DARK_RED); if exp.damaged {
} else { label = label.color(Color32::DARK_RED);
label = label.color(Color32::DARK_BLUE); } else {
} label = label.color(Color32::DARK_BLUE);
} }
ui.selectable_value(&mut self.exp, num as u8, label);
} }
}); ui.selectable_value(&mut self.exp, num as u8, label);
} }
}); });
ui.vertical(|ui| { }
let exp = &mut roll.exposures[self.exp as usize];
ui.checkbox(&mut exp.printed, "Printed");
if !exp.printed {
exp.damaged = false;
}
if exp.printed {
ui.checkbox(&mut exp.damaged, "Damaged");
}
});
}); });
if ui.button("Delete").clicked() { ui.vertical(|ui| {
self.confirm_delete = true; let exp = &mut roll.exposures[self.exp as usize];
} ui.checkbox(&mut exp.printed, "Printed");
if self.confirm_delete { if !exp.printed {
Window::new("Confirm delete") exp.damaged = false;
.show(ctx, |ui| { }
ui.heading(format!( if exp.printed {
"Really delete roll {}?", ui.checkbox(&mut exp.damaged, "Damaged");
app_state.rolls[self.roll].id }
)); });
if ui.button("No").clicked() { });
self.confirm_delete = false; if ui.button("Delete").clicked() {
return false; self.confirm_delete = true;
} }
if ui.button("Yes").clicked() { if self.confirm_delete {
app_state.rolls.remove(self.roll); Window::new("Confirm delete").show(ctx, |ui| {
return true; ui.heading(format!(
} "Really delete roll {}?",
false app_state.rolls[self.roll].id
}) ));
.unwrap() if ui.button("No").clicked() {
.inner self.confirm_delete = false;
.unwrap_or(false) }
} else { if ui.button("Yes").clicked() {
false app_state.rolls.remove(self.roll);
} close_window = true;
}) }
.unwrap() });
.inner }
.unwrap_or(false); });
!open || deleted !close_unclicked || close_window
} }
pub fn roll(&self) -> usize { pub fn roll(&self) -> usize {