feat(core): wire up configurable search bar hint
This commit is contained in:
parent
6726436674
commit
9b52a06a8b
|
@ -50,7 +50,7 @@ impl<'a> MatchSelectorAdapter<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> MatchSelector for MatchSelectorAdapter<'a> {
|
impl<'a> MatchSelector for MatchSelectorAdapter<'a> {
|
||||||
fn select(&self, matches_ids: &[i32]) -> Option<i32> {
|
fn select(&self, matches_ids: &[i32], is_search: bool) -> Option<i32> {
|
||||||
let matches = self.match_provider.get_matches(&matches_ids);
|
let matches = self.match_provider.get_matches(&matches_ids);
|
||||||
let search_items: Vec<SearchItem> = matches
|
let search_items: Vec<SearchItem> = matches
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
@ -66,7 +66,13 @@ impl<'a> MatchSelector for MatchSelectorAdapter<'a> {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
match self.search_ui.show(&search_items) {
|
let hint = if is_search {
|
||||||
|
Some("Search matches by content or trigger (or type > to see commands)")
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
|
match self.search_ui.show(&search_items, hint) {
|
||||||
Ok(Some(selected_id)) => match selected_id.parse::<i32>() {
|
Ok(Some(selected_id)) => match selected_id.parse::<i32>() {
|
||||||
Ok(id) => Some(id),
|
Ok(id) => Some(id),
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
|
|
|
@ -24,7 +24,7 @@ use anyhow::Result;
|
||||||
pub mod modulo;
|
pub mod modulo;
|
||||||
|
|
||||||
pub trait SearchUI {
|
pub trait SearchUI {
|
||||||
fn show(&self, items: &[SearchItem]) -> Result<Option<String>>;
|
fn show(&self, items: &[SearchItem], hint: Option<&str>) -> Result<Option<String>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
|
@ -38,9 +38,10 @@ impl<'a> ModuloSearchUI<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> SearchUI for ModuloSearchUI<'a> {
|
impl<'a> SearchUI for ModuloSearchUI<'a> {
|
||||||
fn show(&self, items: &[SearchItem]) -> anyhow::Result<Option<String>> {
|
fn show(&self, items: &[SearchItem], hint: Option<&str>) -> anyhow::Result<Option<String>> {
|
||||||
let modulo_config = ModuloSearchConfig {
|
let modulo_config = ModuloSearchConfig {
|
||||||
title: "espanso",
|
title: "espanso",
|
||||||
|
hint,
|
||||||
items: convert_items(&items),
|
items: convert_items(&items),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -67,6 +68,7 @@ impl<'a> SearchUI for ModuloSearchUI<'a> {
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
struct ModuloSearchConfig<'a> {
|
struct ModuloSearchConfig<'a> {
|
||||||
title: &'a str,
|
title: &'a str,
|
||||||
|
hint: Option<&'a str>,
|
||||||
items: Vec<ModuloSearchItemConfig<'a>>,
|
items: Vec<ModuloSearchItemConfig<'a>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user