feat(io): add user-approved recovery
This commit is contained in:
parent
25515fa33c
commit
9e90e50662
25 changed files with 2723 additions and 198 deletions
|
|
@ -1565,7 +1565,11 @@ impl OpenCADStudio {
|
|||
iced::widget::Space::new().width(0).height(0).into()
|
||||
};
|
||||
|
||||
let open_progress_layer: Element<'_, Message> = if let Some(p) = &self.opening {
|
||||
let open_progress_layer: Element<'_, Message> = if let Some(p) = self
|
||||
.opening
|
||||
.as_ref()
|
||||
.filter(|progress| progress.recovery_error.is_none())
|
||||
{
|
||||
crate::ui::window::open_progress::view(p, iced::time::Instant::now())
|
||||
} else {
|
||||
iced::widget::Space::new().width(0).height(0).into()
|
||||
|
|
@ -1641,7 +1645,10 @@ impl OpenCADStudio {
|
|||
// (currently just the open-progress indicator). Without this gate the
|
||||
// app burned 2-3% CPU continuously redrawing an unchanged view.
|
||||
// See #18.
|
||||
let needs_frames = self.opening.is_some();
|
||||
let needs_frames = self
|
||||
.opening
|
||||
.as_ref()
|
||||
.is_some_and(|progress| progress.recovery_error.is_none());
|
||||
let frames = if needs_frames {
|
||||
window::frames().map(Message::Tick)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@ impl OpenCADStudio {
|
|||
Some(K::PointStyle) => crate::tr!("modal-point-style"),
|
||||
Some(K::AttributeEditor) => crate::tr!("modal-attribute-editor"),
|
||||
Some(K::SaveDialog) => crate::tr!("modal-save-drawing-as"),
|
||||
Some(K::Recovery) => crate::tr!("modal-recovery-report"),
|
||||
Some(K::RecoveryPrompt) => crate::tr!("modal-recovery-prompt"),
|
||||
None => String::new(),
|
||||
}
|
||||
}
|
||||
|
|
@ -1289,6 +1291,27 @@ impl OpenCADStudio {
|
|||
)
|
||||
})
|
||||
}
|
||||
super::super::ModalKind::Recovery => {
|
||||
let report = self.recovery_report.as_ref()?;
|
||||
sized_flow(ex, 680, 460, |flow| {
|
||||
crate::ui::window::recovery::view_window(
|
||||
report,
|
||||
self.pending_opens.is_empty(),
|
||||
flow,
|
||||
)
|
||||
})
|
||||
}
|
||||
super::super::ModalKind::RecoveryPrompt => {
|
||||
let opening = self.opening.as_ref()?;
|
||||
let error = opening.recovery_error.as_deref()?;
|
||||
automatic_flow(ex, |flow| {
|
||||
crate::ui::window::recovery::view_prompt(
|
||||
&opening.name,
|
||||
error,
|
||||
flow,
|
||||
)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue