diff --git a/src/rust/amadeus-rs/amadeus/Cargo.toml b/src/rust/amadeus-rs/amadeus/Cargo.toml index cdea7bab694b64ad3539838cf85cf70e0b2e1eef..433ad7596a78a5c579b7aa0615ab59ce854ed646 100644 --- a/src/rust/amadeus-rs/amadeus/Cargo.toml +++ b/src/rust/amadeus-rs/amadeus/Cargo.toml @@ -9,9 +9,9 @@ lkt_lib = { path = "../lkt-lib" } amadeus_macro = { path = "../amadeus-macro" } serde = { version = "1", default-features = false, features = [ "derive", "std" ] } serde_json = { version = "1", default-features = false, features = [ "std" ] } -eframe = { version = "0.17.0", features = [ "persistence" ] } +eframe = { version = "0", features = [ "persistence" ] } image = { version = "^0.24", default-features = false, features = [ "jpeg", "ico", "png" ] } -egui = { version = "0.17.0", features = [ "extra_debug_asserts", "extra_asserts", "serde", "persistence" ] } -epi = { version = "0.17.0", features = [ "persistence" ] } +egui = { version = "0", features = [ "extra_debug_asserts", "extra_asserts", "serde", "persistence" ] } +epi = { version = "0", features = [ "persistence" ] } log = { version = "0.4" } lazy_static = "1" \ No newline at end of file diff --git a/src/rust/amadeus-rs/amadeus/src/amadeus.rs b/src/rust/amadeus-rs/amadeus/src/amadeus.rs index f3c857bb7c9c2cfeff4efb062a1a9f7684358e30..a7c1abcc6ea5f819951efb2488b871b64874e197 100644 --- a/src/rust/amadeus-rs/amadeus/src/amadeus.rs +++ b/src/rust/amadeus-rs/amadeus/src/amadeus.rs @@ -10,10 +10,7 @@ use crate::{ widgets, }; use amadeus_macro::either; -use eframe::{ - egui, - epi::{self, App}, -}; +use eframe::{egui, App}; use lkt_lib::{ query::LektorQuery, response::LektorFormatedResponse, @@ -98,8 +95,24 @@ impl Default for Amadeus<'_> { } impl Amadeus<'_> { - pub fn create() -> Box<Self> { - Box::new(Amadeus::default()) + pub fn create(cc: &eframe::CreationContext<'_>) -> Box<Self> { + let mut ret = Amadeus::default(); + let ctx = &cc.egui_ctx; + if let Some(storage) = cc.storage { + ret.config = eframe::get_value(storage, "amadeus-rs-config").unwrap_or_default(); + } + + ctx.set_fonts(utils::font::get_font_definitions()); + ret.load_amadeus_logo(ctx); + + let mut style = (*ctx.style()).clone(); + style.text_styles = utils::font::get_font_styles(); + ctx.set_style(style); + + ret.apply_settings(); + ret.fill_debug_values(); + + Box::new(ret) } fn load_amadeus_logo(&mut self, ctx: &egui::Context) { @@ -109,7 +122,8 @@ impl Amadeus<'_> { [size_x as usize, size_y as usize], pixels.as_slice(), ); - self.amadeus_logo_texture = Some(ctx.load_texture("amadeus-logo", logo_texture)); + self.amadeus_logo_texture = + Some(ctx.load_texture("amadeus-logo", logo_texture, egui::TextureFilter::Linear)); } fn collect_fulfilled_actions(&mut self) -> Vec<(u64, action::Action)> { @@ -138,7 +152,7 @@ impl Amadeus<'_> { } } - fn render_side_panel(&mut self, ctx: &egui::Context, _frame: &epi::Frame) { + fn render_side_panel(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { if self.config.side_panel_show { egui::SidePanel::left("LEFT_PANEL") .resizable(true) @@ -158,7 +172,7 @@ impl Amadeus<'_> { } } - fn render_central_panel(&mut self, ctx: &egui::Context, _frame: &epi::Frame) { + fn render_central_panel(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { egui::CentralPanel::default().show(ctx, |ui| { use utils::AmadeusMainView::*; match self.config.main_panel_view { @@ -184,7 +198,7 @@ impl Amadeus<'_> { }); } - fn render_bottom_panel(&mut self, ctx: &egui::Context, _frame: &epi::Frame) { + fn render_bottom_panel(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { let seconds = time::SystemTime::now() .duration_since(time::SystemTime::UNIX_EPOCH) .unwrap() @@ -207,7 +221,7 @@ impl Amadeus<'_> { if let Some(current_kara) = &self.lektord_current_kara { current_kara.render_compact(ui, self.config.dark_mode); } - ui.with_layout(egui::Layout::right_to_left(), |ui| { + ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| { ui.style_mut().override_text_style = Some(utils::font::heading3()); ui.add_space(constants::PADDING * 2.); ui.label(text_duration); @@ -222,11 +236,11 @@ impl Amadeus<'_> { }); } - fn render_top_panel(&mut self, ctx: &egui::Context, frame: &epi::Frame) { + fn render_top_panel(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) { egui::TopBottomPanel::top("MENU").show(ctx, |ui| { ui.add_space(constants::TOP_PANEL_PADDING * 2.); egui::menu::bar(ui, |ui| { - ui.with_layout(egui::Layout::left_to_right(), |ui| { + ui.with_layout(egui::Layout::left_to_right(egui::Align::Min), |ui| { ui.style_mut().override_text_style = Some(utils::font::heading1()); if ui.add(egui::Button::new("Amadeus").frame(false)).clicked() { self.config.side_panel_show = !self.config.side_panel_show; @@ -285,10 +299,10 @@ impl Amadeus<'_> { .then(|| self.actions.push(action::Action::PlaybackNext)); }); - ui.with_layout(egui::Layout::right_to_left(), |ui| { + ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| { ui.style_mut().override_text_style = Some(utils::font::body()); if ui.add(egui::Button::new("âŒ")).clicked() { - frame.quit(); + frame.close(); } ui.style_mut().override_text_style = Some(utils::font::small_body()); @@ -449,7 +463,7 @@ impl Amadeus<'_> { } impl App for Amadeus<'_> { - fn update(&mut self, ctx: &egui::Context, frame: &epi::Frame) { + fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) { self.begin_render_instant = time::SystemTime::now(); ctx.request_repaint(); self.set_visuals(ctx); @@ -482,30 +496,9 @@ impl App for Amadeus<'_> { } } - fn setup( - &mut self, - ctx: &egui::Context, - _frame: &epi::Frame, - maybe_storage: Option<&dyn epi::Storage>, - ) { - if let Some(storage) = maybe_storage { - self.config = eframe::epi::get_value(storage, "amadeus-rs-config").unwrap_or_default(); - } - - ctx.set_fonts(utils::font::get_font_definitions()); - self.load_amadeus_logo(ctx); - - let mut style = (*ctx.style()).clone(); - style.text_styles = utils::font::get_font_styles(); - ctx.set_style(style); - - self.apply_settings(); - self.fill_debug_values(); - } - - fn save(&mut self, storage: &mut dyn eframe::epi::Storage) { + fn save(&mut self, storage: &mut dyn eframe::Storage) { if self.has_config_changed { - eframe::epi::set_value(storage, "amadeus-rs-config", &self.config); + eframe::set_value(storage, "amadeus-rs-config", &self.config); self.has_config_changed = false; } } @@ -521,8 +514,4 @@ impl App for Amadeus<'_> { fn auto_save_interval(&self) -> time::Duration { time::Duration::from_secs(1) } - - fn name(&self) -> &str { - "Amadeus" - } } diff --git a/src/rust/amadeus-rs/amadeus/src/cards/card.rs b/src/rust/amadeus-rs/amadeus/src/cards/card.rs index b3645f253037ba95fbe53e2f24464b742b21e84f..5d3a9027c15437e8dd5f0eb33dbe11820127486f 100644 --- a/src/rust/amadeus-rs/amadeus/src/cards/card.rs +++ b/src/rust/amadeus-rs/amadeus/src/cards/card.rs @@ -103,7 +103,7 @@ impl Card<'_, Kara> for KaraCard { format!("{} - {}", self.inner.category, self.inner.language), ); if left_space >= MIN_WIDTH_FOR_ADDITIONAL_INFOS { - ui.with_layout(egui::Layout::right_to_left(), |ui| { + ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| { ui.label(format!("kara by {}", self.inner.author)); }); } @@ -114,7 +114,7 @@ impl Card<'_, Kara> for KaraCard { ui.colored_label(constants::get_text_color(dark_mode), song); ui.style_mut().override_text_style = Some(utils::font::body()); if left_space >= MIN_WIDTH_FOR_ADDITIONAL_INFOS { - ui.with_layout(egui::Layout::right_to_left(), |ui| { + ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| { if !self.inner.is_available { ui.colored_label( constants::get_accent_color(dark_mode), diff --git a/src/rust/amadeus-rs/amadeus/src/main.rs b/src/rust/amadeus-rs/amadeus/src/main.rs index 23ee924e005b8b70d3b83ba65d0d127348b0af38..bcc5cb62d9ca7394f8b6b2c09833cbbde3034830 100644 --- a/src/rust/amadeus-rs/amadeus/src/main.rs +++ b/src/rust/amadeus-rs/amadeus/src/main.rs @@ -16,7 +16,7 @@ fn main() { logger::set_level(log::Level::Debug); eframe::run_native( - amadeus::Amadeus::create(), + "amadeus-rs", eframe::NativeOptions { maximized: false, decorated: true, @@ -26,5 +26,6 @@ fn main() { icon_data: Some(utils::get_icon_data()), ..Default::default() }, + Box::new(|cc| amadeus::Amadeus::create(cc)), ); } diff --git a/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs b/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs index 33363d7b63d3efb2b552fed178942807365ed4bc..2cc99ad39eaf7ca76c2dafe3a7043263f0670e3c 100644 --- a/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs +++ b/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs @@ -14,7 +14,6 @@ use std::{ }; pub trait Deamon: Sized { - #[must_use] type Channels; /// Quit the deamon diff --git a/src/rust/amadeus-rs/amadeus/src/utils/mod.rs b/src/rust/amadeus-rs/amadeus/src/utils/mod.rs index 8cb073149ccca5b9d67f44a1154c1ff2292c9cc4..babd0e72d59234e083392acc5b8a71e16a135da1 100644 --- a/src/rust/amadeus-rs/amadeus/src/utils/mod.rs +++ b/src/rust/amadeus-rs/amadeus/src/utils/mod.rs @@ -19,9 +19,9 @@ pub(crate) fn get_icon_as_dynamic_image() -> (image::RgbaImage, [u32; 2]) { return (logo_buffer, size); } -pub(crate) fn get_icon_data() -> epi::IconData { +pub(crate) fn get_icon_data() -> eframe::IconData { let (logo_buffer, [size_x, size_y]) = get_icon_as_dynamic_image(); - return epi::IconData { + return eframe::IconData { rgba: logo_buffer.to_vec(), height: size_y, width: size_x, diff --git a/src/rust/amadeus-rs/amadeus/src/widgets/mod.rs b/src/rust/amadeus-rs/amadeus/src/widgets/mod.rs index 2bc632de7aaa183d402ab91cb446ed8b1e864f46..1f9ab805afdb623062e42f0704e9fee3db5ce0e5 100644 --- a/src/rust/amadeus-rs/amadeus/src/widgets/mod.rs +++ b/src/rust/amadeus-rs/amadeus/src/widgets/mod.rs @@ -50,7 +50,7 @@ pub fn add_labelled_toggle_switch( ui.horizontal(|ui| { ui.style_mut().override_text_style = Some(utils::font::body()); ui.add(egui::Label::new(before)); - ui.with_layout(egui::Layout::right_to_left(), |ui| { + ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| { let response = ui.add(toggle_switch(dark_mode, switch)); *changed |= response.changed(); });