diff options
author | metamuffin <metamuffin@disroot.org> | 2023-06-05 20:28:00 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-06-05 20:28:00 +0200 |
commit | bcf0f3526883af82f129d0ddb0de484ded80fc4d (patch) | |
tree | a6dda2c6d5eab41bdca39ea93d801e1cf9c94e9b /server/src/routes/ui/player.rs | |
parent | e9185e5fb133fbf62d7cc86e644d2f9d272ba719 (diff) | |
download | jellything-bcf0f3526883af82f129d0ddb0de484ded80fc4d.tar jellything-bcf0f3526883af82f129d0ddb0de484ded80fc4d.tar.bz2 jellything-bcf0f3526883af82f129d0ddb0de484ded80fc4d.tar.zst |
show player config in player itself
Diffstat (limited to 'server/src/routes/ui/player.rs')
-rw-r--r-- | server/src/routes/ui/player.rs | 78 |
1 files changed, 37 insertions, 41 deletions
diff --git a/server/src/routes/ui/player.rs b/server/src/routes/ui/player.rs index 050a164..5a995ce 100644 --- a/server/src/routes/ui/player.rs +++ b/server/src/routes/ui/player.rs @@ -12,6 +12,7 @@ use crate::{ }, }; use jellycommon::SourceTrackKind; +use markup::DynRender; use rocket::{get, FromForm, State}; use std::{ path::{Path, PathBuf}, @@ -38,10 +39,6 @@ pub fn r_player( conf: PlayerConfig, ) -> MyResult<DynLayoutPage<'_>> { let item = library.nested_path(&path)?.get_item()?; - if conf.a.is_none() && conf.v.is_none() && conf.s.is_none() { - return player_conf(item); - } - let tracks = [] .into_iter() .chain(conf.v.into_iter()) @@ -53,12 +50,15 @@ pub fn r_player( title: item.info.title.to_owned(), class: Some("player"), content: markup::new! { - video[src=stream_uri(&item.lib_path, &tracks, true), controls]; + @if conf.a.is_some() || conf.v.is_some() || conf.s.is_some() { + video[src=stream_uri(&item.lib_path, &tracks, true), controls]{} + } + @player_conf(item.clone()) }, }) } -pub fn player_conf<'a>(item: Arc<Item>) -> MyResult<DynLayoutPage<'a>> { +pub fn player_conf<'a>(item: Arc<Item>) -> DynRender<'a> { let mut audio_tracks = vec![]; let mut video_tracks = vec![]; let mut sub_tracks = vec![]; @@ -70,46 +70,42 @@ pub fn player_conf<'a>(item: Arc<Item>) -> MyResult<DynLayoutPage<'a>> { } } - Ok(LayoutPage { - title: "Configure Player".to_string(), - content: markup::new! { - // img.backdrop[src=uri!(r_item_assets(&item.lib_path)).to_string()]; - form.playerconf[method = "GET", action = ""] { - h2 { "Select tracks for " @item.info.title } + markup::new! { + // img.backdrop[src=uri!(r_item_assets(&item.lib_path)).to_string()]; + form.playerconf[method = "GET", action = ""] { + h2 { "Select tracks for " @item.info.title } - fieldset.video { - legend { "Video" } - @for (i, (tid, track)) in video_tracks.iter().enumerate() { - input[type="radio", id=tid, name="v", value=tid, checked=i==0]; - label[for=tid] { @format!("{track}") } br; - } - input[type="radio", id="v-none", name="v", value=""]; - label[for="v-none"] { "No video" } + fieldset.video { + legend { "Video" } + @for (i, (tid, track)) in video_tracks.iter().enumerate() { + input[type="radio", id=tid, name="v", value=tid, checked=i==0]; + label[for=tid] { @format!("{track}") } br; } + input[type="radio", id="v-none", name="v", value=""]; + label[for="v-none"] { "No video" } + } - fieldset.audio { - legend { "Audio" } - @for (i, (tid, track)) in audio_tracks.iter().enumerate() { - input[type="radio", id=tid, name="a", value=tid, checked=i==0]; - label[for=tid] { @format!("{track}") } br; - } - input[type="radio", id="a-none", name="a", value=""]; - label[for="a-none"] { "No audio" } + fieldset.audio { + legend { "Audio" } + @for (i, (tid, track)) in audio_tracks.iter().enumerate() { + input[type="radio", id=tid, name="a", value=tid, checked=i==0]; + label[for=tid] { @format!("{track}") } br; } + input[type="radio", id="a-none", name="a", value=""]; + label[for="a-none"] { "No audio" } + } - fieldset.subtitles { - legend { "Subtitles" } - @for (_i, (tid, track)) in sub_tracks.iter().enumerate() { - input[type="radio", id=tid, name="s", value=tid]; - label[for=tid] { @format!("{track}") } br; - } - input[type="radio", id="s-none", name="s", value="", checked=true]; - label[for="s-none"] { "No subtitles" } + fieldset.subtitles { + legend { "Subtitles" } + @for (_i, (tid, track)) in sub_tracks.iter().enumerate() { + input[type="radio", id=tid, name="s", value=tid]; + label[for=tid] { @format!("{track}") } br; } - - input[type="submit", value="Start playback"]; + input[type="radio", id="s-none", name="s", value="", checked=true]; + label[for="s-none"] { "No subtitles" } } - }, - ..Default::default() - }) + + input[type="submit", value="Start playback"]; + } + } } |