grey out search results once it's visted

This commit is contained in:
rushmore75 2025-04-02 01:16:43 -06:00
parent 6d24b304ce
commit 789c593f7e

View File

@ -82,7 +82,7 @@ enum Message {
Clear(usize), Clear(usize),
WordSearchInput(usize, String), WordSearchInput(usize, String),
SubmitWordSearch(usize), SubmitWordSearch(usize),
QuickSearch(usize, String), QuickSearch(usize, String, usize),
AddColRight, AddColRight,
DeleteColumn(usize), DeleteColumn(usize),
} }
@ -95,7 +95,7 @@ struct ColState {
scripture_body: Option<String>, scripture_body: Option<String>,
word_search: String, word_search: String,
word_search_results: Option<Vec<String>>, word_search_results: Option<Vec<(String, bool)>>,
} }
impl Default for ColState { impl Default for ColState {
@ -176,8 +176,12 @@ impl State {
} }
} }
} }
Message::QuickSearch(i, s) => { Message::QuickSearch(i, s, result_index) => {
self.states[i].bible_search = s; self.states[i].bible_search = s;
if let Some(wsr) = &mut self.states[i].word_search_results {
// set "visited" for this link
wsr[result_index].1 = true;
}
return self.update(Message::BibleSearchSubmit(i)); return self.update(Message::BibleSearchSubmit(i));
} }
Message::BibleSearchInput(i, query) => self.states[i].bible_search = query, Message::BibleSearchInput(i, query) => self.states[i].bible_search = query,
@ -196,7 +200,12 @@ impl State {
Message::SubmitWordSearch(i) => { Message::SubmitWordSearch(i) => {
if let Some(bible) = &self.states[i].bible_selected { if let Some(bible) = &self.states[i].bible_selected {
let res = bible::search_for_word(&self.states[i].word_search, bible); let res = bible::search_for_word(&self.states[i].word_search, bible);
self.states[i].word_search_results = Some(res); self.states[i].word_search_results = Some(
res
.into_iter()
.map(|f| (f, false))
.collect()
);
} }
} }
Message::CopyText(i) => { Message::CopyText(i) => {
@ -258,12 +267,22 @@ impl State {
.clone() .clone()
.unwrap_or(Vec::new()) .unwrap_or(Vec::new())
.into_iter() .into_iter()
.map(|i| button(text(i.clone())) .enumerate()
.map(|(idx,i)| {
let style = if i.1 {
button::secondary
} else {
button::primary
};
button(text(i.0.clone()))
.style(style)
.on_press_with(move || Message::QuickSearch( .on_press_with(move || Message::QuickSearch(
col_index, col_index,
i.to_owned() i.0.to_owned(),
idx
)) ))
.into()) .into()
})
) )
.padding([5, 5]) .padding([5, 5])
) )