59 lines
2.1 KiB
Rust
59 lines
2.1 KiB
Rust
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()
|
|
}
|
|
}
|