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
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
|
||||||
|
|
||||||
mod new_roll;
|
mod new_roll;
|
||||||
mod roll_view;
|
|
||||||
mod roll;
|
mod roll;
|
||||||
|
mod roll_view;
|
||||||
|
|
||||||
use eframe::egui;
|
use eframe::egui;
|
||||||
use new_roll::NewRollWindow;
|
use new_roll::NewRollWindow;
|
||||||
@ -63,9 +63,8 @@ impl eframe::App for MyApp {
|
|||||||
if ui.button("Add").clicked() && self.new_roll_window.is_none() {
|
if ui.button("Add").clicked() && self.new_roll_window.is_none() {
|
||||||
self.new_roll_window = Some(NewRollWindow::default());
|
self.new_roll_window = Some(NewRollWindow::default());
|
||||||
}
|
}
|
||||||
self.roll_views.retain_mut(|win| {
|
self.roll_views
|
||||||
!win.draw(ctx, &mut self.state)
|
.retain_mut(|win| !win.draw(ctx, &mut self.state));
|
||||||
});
|
|
||||||
if let Some(new_roll_window) = self.new_roll_window.as_mut() {
|
if let Some(new_roll_window) = self.new_roll_window.as_mut() {
|
||||||
if new_roll_window.draw(ctx, &mut self.state) {
|
if new_roll_window.draw(ctx, &mut self.state) {
|
||||||
self.new_roll_window = None;
|
self.new_roll_window = None;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use chrono::NaiveDate;
|
use chrono::NaiveDate;
|
||||||
use serde::{Serialize, Deserialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct Exposure {
|
pub struct Exposure {
|
||||||
|
111
src/roll_view.rs
111
src/roll_view.rs
@ -1,7 +1,9 @@
|
|||||||
|
use chrono::NaiveDate;
|
||||||
use eframe::{
|
use eframe::{
|
||||||
egui::{self, RichText, Window},
|
egui::{self, RichText, Window},
|
||||||
epaint::Color32,
|
epaint::Color32,
|
||||||
};
|
};
|
||||||
|
use egui_datepicker::DatePicker;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
|
|
||||||
use crate::AppState;
|
use crate::AppState;
|
||||||
@ -10,6 +12,14 @@ pub struct RollViewWindow {
|
|||||||
roll: usize,
|
roll: usize,
|
||||||
confirm_delete: bool,
|
confirm_delete: bool,
|
||||||
exp: u8,
|
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 {
|
impl RollViewWindow {
|
||||||
@ -18,6 +28,14 @@ impl RollViewWindow {
|
|||||||
roll,
|
roll,
|
||||||
confirm_delete: false,
|
confirm_delete: false,
|
||||||
exp: 0,
|
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);
|
.open(&mut close_unclicked);
|
||||||
window.show(ctx, |ui| {
|
window.show(ctx, |ui| {
|
||||||
let roll = &mut app_state.rolls[self.roll];
|
let roll = &mut app_state.rolls[self.roll];
|
||||||
ui.label(format!("Name: {}", roll.name));
|
ui.horizontal(|ui| {
|
||||||
ui.label(format!("Description: {}", roll.desc));
|
if self.editing_id {
|
||||||
ui.label(format!("Date: {}", roll.date.format("%Y-%m-%d")));
|
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.label("Exposures:");
|
||||||
ui.horizontal_top(|ui| {
|
ui.horizontal_top(|ui| {
|
||||||
ui.vertical(|ui| {
|
ui.vertical(|ui| {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user