feat(ui): add error field and red status line display

This commit is contained in:
2026-03-15 19:59:15 +01:00
parent aef33a53d7
commit 68d18aad16

View File

@@ -26,6 +26,7 @@ pub struct KLauncherApp {
results: Arc<Vec<SearchResult>>,
selected: usize,
cfg: AppearanceCfg,
error: Option<String>,
}
impl KLauncherApp {
@@ -41,6 +42,7 @@ impl KLauncherApp {
results: Arc::new(vec![]),
selected: 0,
cfg,
error: None,
}
}
}
@@ -55,6 +57,7 @@ pub enum Message {
fn update(state: &mut KLauncherApp, message: Message) -> Task<Message> {
match message {
Message::QueryChanged(q) => {
state.error = None;
state.query = q.clone();
state.selected = 0;
let engine = state.engine.clone();
@@ -186,7 +189,22 @@ fn view(state: &KLauncherApp) -> Element<'_, Message> {
scrollable(column(result_rows).spacing(2).width(Length::Fill)).height(Length::Fill)
};
let content = column![search_bar, results_list]
let maybe_error: Option<Element<'_, Message>> = state.error.as_ref().map(|msg| {
container(
text(msg.as_str())
.size(12.0)
.color(Color::from_rgba8(255, 80, 80, 1.0)),
)
.width(Length::Fill)
.padding([4, 12])
.into()
});
let mut content_children: Vec<Element<'_, Message>> = vec![search_bar.into(), results_list.into()];
if let Some(err) = maybe_error {
content_children.push(err);
}
let content = column(content_children)
.spacing(8)
.padding(12)
.width(Length::Fill)