aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-06-05 20:28:00 +0200
committermetamuffin <metamuffin@disroot.org>2023-06-05 20:28:00 +0200
commitbcf0f3526883af82f129d0ddb0de484ded80fc4d (patch)
treea6dda2c6d5eab41bdca39ea93d801e1cf9c94e9b
parente9185e5fb133fbf62d7cc86e644d2f9d272ba719 (diff)
downloadjellything-bcf0f3526883af82f129d0ddb0de484ded80fc4d.tar
jellything-bcf0f3526883af82f129d0ddb0de484ded80fc4d.tar.bz2
jellything-bcf0f3526883af82f129d0ddb0de484ded80fc4d.tar.zst
show player config in player itself
-rw-r--r--server/src/routes/ui/account/mod.rs2
-rw-r--r--server/src/routes/ui/player.rs78
-rw-r--r--server/src/routes/ui/style/player.css3
3 files changed, 41 insertions, 42 deletions
diff --git a/server/src/routes/ui/account/mod.rs b/server/src/routes/ui/account/mod.rs
index b778b64..0e4e0cc 100644
--- a/server/src/routes/ui/account/mod.rs
+++ b/server/src/routes/ui/account/mod.rs
@@ -206,7 +206,7 @@ pub fn format_form_error<T>(form: Form<Contextual<T>>) -> MyError {
}
MyError(anyhow!(k))
}
-
+
pub fn hash_password(username: &str, password: &str) -> Vec<u8> {
Argon2::default()
.hash_password(
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"];
+ }
+ }
}
diff --git a/server/src/routes/ui/style/player.css b/server/src/routes/ui/style/player.css
index deff065..bd65a4b 100644
--- a/server/src/routes/ui/style/player.css
+++ b/server/src/routes/ui/style/player.css
@@ -55,6 +55,9 @@ fieldset label:hover {
color: var(--accent-light);
}
+.playerconf {
+ margin: 2em;
+}
.playerconf h2 {
grid-area: h;
text-align: center;