Files
anishio/src/app.rs
T

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()
}
}