Compare commits

..

No commits in common. 'b51980e097dc9572f8a47251b98d12fa72a84fd1' and '295136e8e2abaa8f9d65e8ff0ed454308c7eb905' have entirely different histories.

@ -1,22 +1,22 @@
use eframe::egui;
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use eframe::egui;
mod player_interface; mod player_interface;
use player_interface::SongMetadata; use player_interface::SongMetadata;
fn main() -> Result<(), eframe::Error> fn main() -> Result<(), eframe::Error>
{ {
env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`). 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([320.0, 240.0]),
viewport: egui::ViewportBuilder::default().with_inner_size([600.0, 240.0]),
..Default::default() ..Default::default()
}; };
eframe::run_native( eframe::run_native(
"Media Metadata Viewer", "Media Metadata Viewer",
options, options,
Box::new(|cc| Box::new(|cc| {
{
// This gives us image support: // This gives us image support:
egui_extras::install_image_loaders(&cc.egui_ctx); egui_extras::install_image_loaders(&cc.egui_ctx);
@ -29,55 +29,48 @@ struct JpmmvApp
{ {
last_query_time: Instant, last_query_time: Instant,
current_metadata: SongMetadata, current_metadata: SongMetadata,
force_query: bool,
} }
impl Default for JpmmvApp impl Default for JpmmvApp
{ {
fn default() -> Self { fn default() -> Self
{
Self { Self {
last_query_time: Instant::now(), last_query_time: Instant::now(),
current_metadata: SongMetadata::new(), current_metadata: SongMetadata::new(),
force_query: true,
} }
} }
} }
impl eframe::App for JpmmvApp 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) || self.force_query if self.last_query_time.elapsed() >= Duration::from_secs(1)
{ {
self.current_metadata = player_interface::get_song_metadata(); self.current_metadata = player_interface::get_song_metadata();
self.last_query_time = Instant::now(); self.last_query_time = Instant::now();
self.force_query = false;
} }
egui::CentralPanel::default().show(ctx, |ui| egui::CentralPanel::default().show(ctx, |ui|
{
ui.heading("Media Meta Viewer");
ui.horizontal_centered(|ui|
{ {
// ui.heading("Media Meta Viewer"); ui.image(egui::include_image!(
ui.horizontal_centered(|ui| "../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!("{}", self.current_metadata.name));
ui.label(format!("by: {}", self.current_metadata.artist)); ui.label(format!("by: {}", self.current_metadata.artist));
ui.label(format!("album: {}", self.current_metadata.album)); 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,10 +21,9 @@ impl SongMetadata
} }
const COM_START: &str = "playerctl --player=strawberry";
pub fn get_song_metadata() -> SongMetadata pub fn get_song_metadata() -> SongMetadata
{ {
const COM_START: &str = "playerctl --player=strawberry";
let command = format!("{} {}", COM_START, "metadata --format {{title}},{{artist}},{{album}}"); let command = format!("{} {}", COM_START, "metadata --format {{title}},{{artist}},{{album}}");
@ -41,12 +40,6 @@ pub fn get_song_metadata() -> SongMetadata
sm sm
} }
pub fn next_track()
{
let command = format!("{} {}", COM_START, "next");
let _ = run_command(&command);
}
fn run_command(command: &str) -> String fn run_command(command: &str) -> String
{ {

Loading…
Cancel
Save