Add scss colors into rust via build-script, flesh out math evaluation in launcher, Restructure some code

This commit is contained in:
jmb05
2026-11-02 19:31:21 +01:00
parent 11fb03427c
commit c3ad6f38cf
15 changed files with 167 additions and 114 deletions

View File

@@ -516,30 +516,32 @@ impl BackendThread<MediaMessage, Sender<MediaMessage>> for MediaBackend {
return;
};
while let Ok(msg) = rx.recv() {
let mut instance_guard = instance.lock().unwrap();
if let Some(name) = &instance_guard.active_player
&& let Some(status) = instance_guard.players.get(name)
{
match msg {
MediaMessage::PlayerPlay => {
if let PlayerStatus::Paused(_) = status {
instance_guard.active_player_play(&connection).await;
}
let Some(name) = &instance.lock().unwrap().active_player.clone() else {
continue;
};
let Some(status) = instance.lock().unwrap().players.get(name).cloned()
else {
continue;
};
match msg {
MediaMessage::PlayerPlay => {
if let PlayerStatus::Paused(_) = status {
MediaBackend::player_play(name, &connection).await;
}
MediaMessage::PlayerPause => {
if let PlayerStatus::Playing(_) = status {
instance_guard.active_player_pause(&connection).await;
}
}
MediaMessage::PlayerStop => {
if let PlayerStatus::Playing(_) | PlayerStatus::Paused(_) =
status
{
instance_guard.active_player_stop(&connection).await;
}
}
_ => {}
}
MediaMessage::PlayerPause => {
if let PlayerStatus::Playing(_) = status {
MediaBackend::player_pause(name, &connection).await;
instance.lock().unwrap().update_active_player();
}
}
MediaMessage::PlayerStop => {
if let PlayerStatus::Playing(_) | PlayerStatus::Paused(_) = status {
MediaBackend::player_stop(name, &connection).await;
instance.lock().unwrap().select_active_player(None);
}
}
_ => {}
}
}
}
@@ -756,54 +758,35 @@ impl MediaBackend {
}
}
async fn active_player_play(&self, connection: &zbus::Connection) {
if let Some(player_name) = &self.active_player
&& let Ok(proxy) = zbus::Proxy::new(
connection,
player_name.as_str(),
MPRIS_PATH,
MPRIS_PLAYER_INTERFACE,
)
.await
async fn player_play(name: &str, connection: &zbus::Connection) {
if let Ok(proxy) =
zbus::Proxy::new(connection, name, MPRIS_PATH, MPRIS_PLAYER_INTERFACE).await
&& let Err(e) = proxy.call_method("Play", &()).await
{
warn!(
&LOGGER,
"Error starting play for player: {player_name}, {e}"
);
warn!(&LOGGER, "Error starting play for player: {name}, {e}");
}
}
async fn active_player_pause(&mut self, connection: &zbus::Connection) {
if let Some(player_name) = &self.active_player
&& let Ok(proxy) = zbus::Proxy::new(
connection,
player_name.as_str(),
MPRIS_PATH,
MPRIS_PLAYER_INTERFACE,
)
.await
async fn player_pause(name: &str, connection: &zbus::Connection) {
if let Ok(proxy) =
zbus::Proxy::new(connection, name, MPRIS_PATH, MPRIS_PLAYER_INTERFACE).await
&& let Err(e) = proxy.call_method("Pause", &()).await
{
warn!(&LOGGER, "Error pausing player: {player_name}, {e}");
self.select_active_player(self.active_player.clone());
warn!(&LOGGER, "Error pausing player: {name}, {e}");
}
}
async fn active_player_stop(&mut self, connection: &zbus::Connection) {
if let Some(player_name) = &self.active_player
&& let Ok(proxy) = zbus::Proxy::new(
connection,
player_name.as_str(),
MPRIS_PATH,
MPRIS_PLAYER_INTERFACE,
)
.await
async fn player_stop(name: &str, connection: &zbus::Connection) {
if let Ok(proxy) =
zbus::Proxy::new(connection, name, MPRIS_PATH, MPRIS_PLAYER_INTERFACE).await
&& let Err(e) = proxy.call_method("Stop", &()).await
{
warn!(&LOGGER, "Error stopping player: {player_name}, {e}");
warn!(&LOGGER, "Error stopping player: {name}, {e}");
}
self.select_active_player(None);
}
fn update_active_player(&mut self) {
self.select_active_player(self.active_player.clone());
}
fn select_active_player(&mut self, changed_player: Option<String>) {

View File

@@ -1,7 +1,7 @@
use crate::LOGGER;
use crate::backend::{BackendThread, SimpleBackendThread};
use crate::ctl::{ControlCommand, SOCKET_PATH};
use crossbeam_channel::{Receiver, Sender};
use jmb_bar::{ControlCommand, SOCKET_PATH};
use jmb_logger_rs::*;
use std::io::Read;
use std::net::Shutdown;

View File

@@ -1,7 +1,7 @@
use crate::backend::{BackendThread, Registrator};
use crate::config::IdleConfig;
use crate::{APP_NAME, LOGGER};
use crossbeam_channel::{Receiver, Sender};
use jmb_bar::config::IdleConfig;
use jmb_logger_rs::*;
use std::collections::HashMap;
use std::error::Error;