From b51980e097dc9572f8a47251b98d12fa72a84fd1 Mon Sep 17 00:00:00 2001 From: Joey Pollack Date: Wed, 17 Apr 2024 19:04:09 -0400 Subject: [PATCH] Force a new query when the skip button is pressed --- src/main.rs | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/main.rs b/src/main.rs index 81c3eb8..499cca1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,22 +1,22 @@ - -use std::time::{Duration, Instant}; use eframe::egui; +use std::time::{Duration, Instant}; mod player_interface; - use player_interface::SongMetadata; fn main() -> Result<(), eframe::Error> { env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`). - let options = eframe::NativeOptions { + let options = eframe::NativeOptions + { viewport: egui::ViewportBuilder::default().with_inner_size([600.0, 240.0]), ..Default::default() }; eframe::run_native( "Media Metadata Viewer", options, - Box::new(|cc| { + Box::new(|cc| + { // This gives us image support: egui_extras::install_image_loaders(&cc.egui_ctx); @@ -29,53 +29,55 @@ struct JpmmvApp { last_query_time: Instant, current_metadata: SongMetadata, + force_query: bool, } impl Default for JpmmvApp { - fn default() -> Self - { + fn default() -> Self { Self { last_query_time: Instant::now(), current_metadata: SongMetadata::new(), + force_query: true, } } } impl eframe::App for JpmmvApp { - fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) - { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { - if self.last_query_time.elapsed() >= Duration::from_secs(1) + if self.last_query_time.elapsed() >= Duration::from_secs(1) || self.force_query { self.current_metadata = player_interface::get_song_metadata(); self.last_query_time = Instant::now(); + self.force_query = false; } egui::CentralPanel::default().show(ctx, |ui| - { - ui.heading("Media Meta Viewer"); - ui.horizontal_centered(|ui| { - ui.image(egui::include_image!( - "../assets/Music Note.png" - )); + // ui.heading("Media Meta Viewer"); + ui.horizontal_centered(|ui| + { + ui.image(egui::include_image!("../assets/Music Note.png")); - ui.vertical(|ui|{ + ui.vertical(|ui| { ui.label(format!("{}", self.current_metadata.name)); ui.label(format!("by: {}", self.current_metadata.artist)); ui.label(format!("album: {}", self.current_metadata.album)); - }); + ui.style_mut().text_styles.insert( + egui::TextStyle::Button, + egui::FontId::new(24.0, eframe::epaint::FontFamily::Proportional), + ); - if ui.button("Skip").clicked() - { - player_interface::next_track(); - } + if ui.button("Skip").clicked() + { + player_interface::next_track(); + self.force_query = true + } + }); }); }); } } - -