use crate::api::search::perform_search; use eframe::egui; #[derive(Default)] pub struct AniShio { search_query: String, } impl AniShio { pub fn new(cc: &eframe::CreationContext<'_>) -> Self { let mut visuals = egui::Visuals::dark(); visuals.panel_fill = egui::Color32::from_rgba_unmultiplied(163, 136, 219, 80); cc.egui_ctx.set_visuals(visuals); Self::default() } } impl eframe::App for AniShio { fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame) { egui::Panel::left("sidebar") .resizable(false) .show_separator_line(false) .show_inside(ui, |ui| { ui.label( egui::RichText::new("AniShio") .size(28.0) .color(egui::Color32::BLACK), ); // ui.visuals_mut().override_text_color = Some(egui::Color32::BLACK); if ui.button("Home").clicked() { println!("Home button clicked"); } if ui.button("Library").clicked() { println!("Library button clicked"); } if ui.button("Settings").clicked() { println!("Settings button clicked"); } }); egui::CentralPanel::default().show_inside(ui, |ui| { ui.horizontal(|ui| { let response = egui::TextEdit::singleline(&mut self.search_query) .hint_text("Search...") .show(ui) .response; if (response.lost_focus() && ui.input(|i| i.key_pressed(egui::Key::Enter))) { perform_search(&self.search_query); } if (response.lost_focus() && ui.input(|i| i.key_pressed(egui::Key::Escape))) { self.search_query.clear(); } }); }); } fn clear_color(&self, _visuals: &egui::Visuals) -> [f32; 4] { egui::Color32::from_rgba_unmultiplied(163, 136, 219, 80).to_normalized_gamma_f32() } }