Implémentation du sleep timer

Ajout de la fonctionnalité de sleep timer pour les renderers audio.

- Création du composant TimerControl.vue avec interface utilisateur interactive
- Implémentation des API endpoints pour gérer le sleep timer (start, update, cancel, get)
- Intégration du système de timer dans le control point avec surveillance par thread dédié
- Ajout de la logique de timer dans les renderers (sleep_timer.rs)
- Mise à jour des types et événements SSE pour le sleep timer
- Intégration du timer dans la barre de bas de l'application

Cette fonctionnalité permet aux utilisateurs de configurer un timer qui arrêtera automatiquement la lecture après une durée définie, avec une interface intuitive et des notifications en temps réel.
This commit is contained in:
2026-01-10 18:14:46 +01:00
parent 220eeb1244
commit 7f10f55086
12 changed files with 1365 additions and 1 deletions

View File

@@ -282,6 +282,26 @@ pub struct TransferQueueRequest {
pub destination_renderer_id: String,
}
/// Requête pour démarrer ou mettre à jour le sleep timer
#[cfg(feature = "pmoserver")]
#[derive(Debug, Clone, Deserialize, ToSchema)]
pub struct SleepTimerRequest {
/// Durée en secondes (maximum 7200 = 2 heures)
pub duration_seconds: u32,
}
/// État du sleep timer
#[cfg(feature = "pmoserver")]
#[derive(Debug, Clone, Serialize, ToSchema)]
pub struct SleepTimerState {
/// Timer actif ou non
pub active: bool,
/// Durée totale configurée en secondes
pub duration_seconds: u32,
/// Secondes restantes (None si timer inactif)
pub remaining_seconds: Option<u32>,
}
/// Réponse générique de succès
#[cfg(feature = "pmoserver")]
#[derive(Debug, Clone, Serialize, ToSchema)]
@@ -426,6 +446,10 @@ GET /control/servers/{server_id}/containers/{container_id}
crate::pmoserver_ext::volume_up_renderer,
crate::pmoserver_ext::volume_down_renderer,
crate::pmoserver_ext::toggle_mute_renderer,
crate::pmoserver_ext::start_sleep_timer,
crate::pmoserver_ext::update_sleep_timer,
crate::pmoserver_ext::cancel_sleep_timer,
crate::pmoserver_ext::get_sleep_timer_state,
crate::pmoserver_ext::attach_playlist_binding,
crate::pmoserver_ext::detach_playlist_binding,
crate::pmoserver_ext::play_content,
@@ -456,6 +480,8 @@ GET /control/servers/{server_id}/containers/{container_id}
SeekQueueRequest,
SeekRequest,
TransferQueueRequest,
SleepTimerRequest,
SleepTimerState,
SuccessResponse,
ErrorResponse,
)),