mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-04-28 06:21:23 +00:00
add toggle-pause command to pwsp-cli
This commit is contained in:
+22
-1
@@ -1,5 +1,5 @@
|
||||
use crate::{
|
||||
types::socket::Response,
|
||||
types::{audio_player::PlayerState, socket::Response},
|
||||
utils::{daemon::get_audio_player, pipewire::get_all_devices},
|
||||
};
|
||||
use async_trait::async_trait;
|
||||
@@ -16,6 +16,8 @@ pub struct PauseCommand {}
|
||||
|
||||
pub struct ResumeCommand {}
|
||||
|
||||
pub struct TogglePauseCommand {}
|
||||
|
||||
pub struct StopCommand {}
|
||||
|
||||
pub struct IsPausedCommand {}
|
||||
@@ -75,6 +77,25 @@ impl Executable for ResumeCommand {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Executable for TogglePauseCommand {
|
||||
async fn execute(&self) -> Response {
|
||||
let mut audio_player = get_audio_player().await.lock().await;
|
||||
|
||||
if audio_player.get_state() == PlayerState::Stopped {
|
||||
return Response::new(false, "Audio is not playing");
|
||||
}
|
||||
|
||||
if audio_player.is_paused() {
|
||||
audio_player.resume();
|
||||
Response::new(true, "Audio was resumed")
|
||||
} else {
|
||||
audio_player.pause();
|
||||
Response::new(true, "Audio was paused")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Executable for StopCommand {
|
||||
async fn execute(&self) -> Response {
|
||||
|
||||
@@ -32,6 +32,10 @@ impl Request {
|
||||
Request::new("resume", vec![])
|
||||
}
|
||||
|
||||
pub fn toggle_pause() -> Self {
|
||||
Request::new("toggle_pause", vec![])
|
||||
}
|
||||
|
||||
pub fn stop() -> Self {
|
||||
Request::new("stop", vec![])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user