feature/prod-ready #1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user