Compare commits

...

2 Commits

Author SHA1 Message Date
Joey Pollack b51980e097 Force a new query when the skip button is pressed 2 years ago
Joey Pollack 41d87810e4 Adds a button to skip to the next track 2 years ago

@ -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 {
viewport: egui::ViewportBuilder::default().with_inner_size([320.0, 240.0]),
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,48 +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.heading("Media Meta Viewer");
ui.horizontal_centered(|ui|
{
ui.image(egui::include_image!(
"../assets/Music Note.png"
));
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();
self.force_query = true
}
});
});
});
}
}

@ -21,9 +21,10 @@ impl SongMetadata
}
const COM_START: &str = "playerctl --player=strawberry";
pub fn get_song_metadata() -> SongMetadata
{
const COM_START: &str = "playerctl --player=strawberry";
let command = format!("{} {}", COM_START, "metadata --format {{title}},{{artist}},{{album}}");
@ -40,6 +41,12 @@ pub fn get_song_metadata() -> SongMetadata
sm
}
pub fn next_track()
{
let command = format!("{} {}", COM_START, "next");
let _ = run_command(&command);
}
fn run_command(command: &str) -> String
{

Loading…
Cancel
Save