Add roll detail editing to the roll view
This commit is contained in:
parent
c14c499467
commit
ddc9cc8ac8
@ -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;
|
||||
|
@ -1,5 +1,5 @@
|
||||
use chrono::NaiveDate;
|
||||
use serde::{Serialize, Deserialize};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct Exposure {
|
||||
|
105
src/roll_view.rs
105
src/roll_view.rs
@ -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| {
|
||||
|
Loading…
x
Reference in New Issue
Block a user