From 7b28fe63137b147b1651c21605e9f2d3236c28e0 Mon Sep 17 00:00:00 2001 From: jika Date: Sun, 6 Aug 2023 12:03:03 +0200 Subject: [PATCH] typo + move media control in app --- app/src/controller/media.rs | 68 +++++++++++++++++++++++++++++++++++++ app/src/controller/mod.rs | 1 + app/src/main.rs | 64 +++------------------------------- lib/src/lib.rs | 2 +- lib/src/tcp/mod.rs | 2 +- remote/ui/app-manager.slint | 1 - 6 files changed, 75 insertions(+), 63 deletions(-) create mode 100644 app/src/controller/media.rs create mode 100644 app/src/controller/mod.rs diff --git a/app/src/controller/media.rs b/app/src/controller/media.rs new file mode 100644 index 0000000..0d64733 --- /dev/null +++ b/app/src/controller/media.rs @@ -0,0 +1,68 @@ +use std::{process::Command, time::Duration, thread}; +use lib::{MessageToClient, MessageFromClient, ClientMessage, ServerMessage}; +use log::info; + + +fn get_np() -> anyhow::Result { + let output = Command::new("playerctl") + .arg("metadata") + .arg("-f") + .arg("{{title}} - {{artist}}") + .output()? + .stdout; + let title = String::from_utf8(output)?; + Ok(title.trim().to_string()) +} + +fn get_playing() -> anyhow::Result { + let output = Command::new("playerctl").arg("status").output()?.stdout; + + let res = String::from_utf8(output)?; + Ok(res.contains("Playing")) +} + + +pub fn init(sender:MessageToClient,receiver:MessageFromClient){ + + let mut i = 0; + loop { + i += 1; + if i == 35 { + i = 0; + sender + .send(ServerMessage::NowPlaying(get_np().unwrap())) + .unwrap(); + thread::sleep(Duration::from_millis(200)); + sender + .send(ServerMessage::Playing(get_playing().unwrap())) + .unwrap(); + } + if receiver.is_empty() { + thread::sleep(Duration::from_millis(200)); + continue; + } + let msg = receiver.recv().unwrap(); + info!("[Client] : {msg:?}"); + + match msg { + ClientMessage::Next => { + Command::new("playerctl").arg("next").spawn().unwrap(); + thread::sleep(Duration::from_millis(200)); + sender + .send(ServerMessage::NowPlaying(get_np().unwrap())) + .unwrap(); + } + ClientMessage::PlayPause => { + Command::new("playerctl").arg("play-pause").spawn().unwrap(); + } + ClientMessage::Previous => { + Command::new("playerctl").arg("previous").spawn().unwrap(); + thread::sleep(Duration::from_millis(200)); + sender + .send(ServerMessage::NowPlaying(get_np().unwrap())) + .unwrap(); + } + }; + } + +} diff --git a/app/src/controller/mod.rs b/app/src/controller/mod.rs new file mode 100644 index 0000000..b30398d --- /dev/null +++ b/app/src/controller/mod.rs @@ -0,0 +1 @@ +pub mod media; diff --git a/app/src/main.rs b/app/src/main.rs index 1fce5c7..75980d0 100644 --- a/app/src/main.rs +++ b/app/src/main.rs @@ -1,71 +1,15 @@ -use std::{process::Command, thread, time::Duration}; +mod controller; -use lib::{tcp::start_server, ClientMessage, ServerMessage}; -use log::info; +use lib::tcp::start_server; fn main() { env_logger::init_from_env( env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "info"), ); - let (sender_s, receiver_c) = start_server().unwrap(); + let (sender, receiver) = start_server().unwrap(); - let mut i = 0; - loop { - i += 1; - if i == 35 { - i = 0; - sender_s - .send(ServerMessage::NowPlaying(get_np().unwrap())) - .unwrap(); - thread::sleep(Duration::from_millis(200)); - sender_s - .send(ServerMessage::Playing(get_playing().unwrap())) - .unwrap(); - } - if receiver_c.is_empty() { - thread::sleep(Duration::from_millis(200)); - continue; - } - let msg = receiver_c.recv().unwrap(); - info!("[Client] : {msg:?}"); + controller::media::init(sender, receiver); - match msg { - ClientMessage::Next => { - Command::new("playerctl").arg("next").spawn().unwrap(); - thread::sleep(Duration::from_millis(200)); - sender_s - .send(ServerMessage::NowPlaying(get_np().unwrap())) - .unwrap(); - } - ClientMessage::PlayPause => { - Command::new("playerctl").arg("play-pause").spawn().unwrap(); - } - ClientMessage::Previous => { - Command::new("playerctl").arg("previous").spawn().unwrap(); - thread::sleep(Duration::from_millis(200)); - sender_s - .send(ServerMessage::NowPlaying(get_np().unwrap())) - .unwrap(); - } - }; - } } -fn get_np() -> anyhow::Result { - let output = Command::new("playerctl") - .arg("metadata") - .arg("-f") - .arg("{{title}} - {{artist}}") - .output()? - .stdout; - let title = String::from_utf8(output)?; - Ok(title.trim().to_string()) -} - -fn get_playing() -> anyhow::Result { - let output = Command::new("playerctl").arg("status").output()?.stdout; - - let res = String::from_utf8(output)?; - Ok(res.contains("Playing")) -} diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 8f4dcac..80feee7 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -20,7 +20,7 @@ pub enum ServerMessage { pub type MessageToServer = Sender; pub type MessageFromServer = Receiver; pub type MessageToClient = Sender; -pub type MessageFomClient = Receiver; +pub type MessageFromClient = Receiver; pub enum Origin { Server, diff --git a/lib/src/tcp/mod.rs b/lib/src/tcp/mod.rs index db5354a..fdc359e 100644 --- a/lib/src/tcp/mod.rs +++ b/lib/src/tcp/mod.rs @@ -80,7 +80,7 @@ where Ok(()) } -pub fn start_server() -> Result<(MessageToClient, MessageFomClient)> { +pub fn start_server() -> Result<(MessageToClient, MessageFromClient)> { let (message_to_server, message_from_client) = channel::bounded(4); let (message_to_client, message_from_server) = channel::bounded(4); diff --git a/remote/ui/app-manager.slint b/remote/ui/app-manager.slint index 7bacba0..022a817 100644 --- a/remote/ui/app-manager.slint +++ b/remote/ui/app-manager.slint @@ -4,6 +4,5 @@ export global AppManager { in-out property keyboard-enabled: true; in-out property widgets-enabled: true; - in-out property debug: false; }