use iced::widget::{column, container};
use iced::{Element, Length};
use crate::components::{device_selector, header, selection_panels, status_views, step_indicators};
use crate::core::{FlashKraft, Message};
pub fn view(state: &FlashKraft) -> Element<'_, Message> {
let content = if state.is_flash_complete() {
status_views::view_complete(state)
} else if state.is_flashing() {
status_views::view_flashing(state)
} else if state.has_error() {
let error = state.error_message.as_deref().unwrap_or("Unknown error");
status_views::view_error(state, error)
} else {
view_main(state)
};
container(content)
.width(Length::Fill)
.height(Length::Fill)
.center_x(Length::Fill)
.center_y(Length::Fill)
.into()
}
fn view_main(state: &FlashKraft) -> Element<'_, Message> {
if state.device_selection_open {
return device_selector::view_device_selector(
&state.available_drives,
&state.selected_target,
&state.selected_image,
);
}
let header = header::view_header(state);
let step_indicators = step_indicators::view_step_indicators(state);
let buttons = selection_panels::view_buttons(
&state.selected_image,
&state.selected_target,
state.is_ready_to_flash(),
);
column![header, step_indicators, buttons]
.spacing(30)
.padding(20)
.width(Length::Fill)
.into()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_view_renders() {
let state = FlashKraft::new();
let _view = view(&state);
}
}