diff --git a/crates/k-launcher-ui/src/app.rs b/crates/k-launcher-ui/src/app.rs index 8294ebd..3ff9654 100644 --- a/crates/k-launcher-ui/src/app.rs +++ b/crates/k-launcher-ui/src/app.rs @@ -26,6 +26,7 @@ pub struct KLauncherApp { results: Arc>, selected: usize, cfg: AppearanceCfg, + error: Option, } 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 { 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> = 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> = 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)