MCPcopy Create free account
hub / github.com/RizeCrime/linuxblaster_control / autoeq_pane

Function autoeq_pane

src/app.rs:357–518  ·  view source on GitHub ↗
(blaster: &BlasterXG6, ui: &mut egui::Ui)

Source from the content-addressed store, hash-verified

355}
356
357fn autoeq_pane(blaster: &BlasterXG6, ui: &mut egui::Ui) {
358 let mut search = SEARCH_QUERY.lock().unwrap();
359 let db: AutoEqDb = AutoEqDb {
360 results: Some(&AUTOEQ_DB),
361 };
362
363 ui.vertical_centered_justified(|ui| {
364 // Header
365 ui.horizontal(|ui| {
366 if ui.button(RichText::new("Back")).clicked() {
367 *AUTOEQ_MODAL.lock().unwrap() = false;
368 }
369 ui.heading(
370 RichText::new("Select AutoEq Profile").color(Color32::GRAY),
371 );
372 });
373 ui.separator();
374
375 // Search Bar
376 ui.horizontal(|ui| {
377 ui.label("Search Headphones:");
378
379 let response = ui.text_edit_singleline(&mut *search);
380 if response.changed() {
381 let matcher = SkimMatcherV2::default();
382 let mut results: Vec<(i64, &'static str)> = Vec::new();
383
384 if let Some(map) = db.results {
385 for key in map.keys() {
386 if let Some(score) = matcher.fuzzy_match(key, &search) {
387 results.push((score, *key));
388 }
389 }
390 }
391
392 results.sort_unstable_by_key(|k| Reverse(k.0));
393
394 *SEARCH_RESULTS.lock().unwrap() =
395 results.into_iter().take(50).map(|(_, key)| key).collect();
396 }
397 });
398 ui.separator();
399
400 // Search Results
401
402 if search.is_empty() {
403 ui.label("Enter search term to see results");
404 return;
405 }
406
407 let results_cache = SEARCH_RESULTS.lock().unwrap();
408
409 ScrollArea::vertical().show(ui, |ui| {
410 if results_cache.is_empty() {
411 ui.label("No results found");
412 return;
413 }
414

Callers 1

updateMethod · 0.85

Calls 2

set_featureMethod · 0.80

Tested by

no test coverage detected