From 56f8ec594795537af8ada5e2e0620552f9328345 Mon Sep 17 00:00:00 2001 From: NathanGrenier Date: Fri, 28 Mar 2025 00:13:10 -0400 Subject: [PATCH] WIP: set theme music volume level via user setting --- .gitignore | 4 +++ .../components/LibraryPreferences.tsx | 28 ++++++++++++++++++- .../preferences/hooks/useDisplaySettings.ts | 2 ++ .../types/displaySettingsValues.ts | 1 + .../routes/user/display/index.tsx | 14 ++++++++++ .../displaySettings/displaySettings.js | 20 +++++++++++++ .../displaySettings.template.html | 7 +++++ src/elements/emby-slider/emby-slider.scss | 8 ++++++ src/scripts/settings/userSettings.js | 14 ++++++++++ src/strings/en-us.json | 2 ++ 10 files changed, 99 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d76f8f959c..5b0726c96b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,7 @@ config.json # environment related .envrc + +# other +repomix.config.json +repomix-output.txt \ No newline at end of file diff --git a/src/apps/experimental/features/preferences/components/LibraryPreferences.tsx b/src/apps/experimental/features/preferences/components/LibraryPreferences.tsx index 487fcd4e58..41f31c45f3 100644 --- a/src/apps/experimental/features/preferences/components/LibraryPreferences.tsx +++ b/src/apps/experimental/features/preferences/components/LibraryPreferences.tsx @@ -1,4 +1,5 @@ import Checkbox from '@mui/material/Checkbox'; +import Slider from '@mui/material/Slider'; import FormControl from '@mui/material/FormControl'; import FormControlLabel from '@mui/material/FormControlLabel'; import FormHelperText from '@mui/material/FormHelperText'; @@ -13,10 +14,11 @@ import type { DisplaySettingsValues } from '../types/displaySettingsValues'; interface LibraryPreferencesProps { onChange: (event: React.SyntheticEvent) => void; + onSliderChange: () => (event: Event, value: number | number[]) => void; values: DisplaySettingsValues; } -export function LibraryPreferences({ onChange, values }: Readonly) { +export function LibraryPreferences({ onChange, onSliderChange, values }: Readonly) { return ( {globalize.translate('HeaderLibraries')} @@ -79,6 +81,30 @@ export function LibraryPreferences({ onChange, values }: Readonly + + + } + label={globalize.translate('LabelThemeSongVolume')} + name='libraryThemeSongsVolumeLevel' + /> + + {globalize.translate('ThemeSongVolumeHelp')} + + + (e: Event, newValue: number | number[]) => { + const target = e.target as HTMLInputElement; + const fieldName = target.name as keyof DisplaySettingsValues; + const value = Array.isArray(newValue) ? newValue[0] : newValue; + + if (values?.[fieldName] !== value) { + updateField({ + name: fieldName, + value: value.toString() + }); + } + }, [updateField, values]); + if (loading || !values) { return ; } @@ -66,6 +79,7 @@ export default function UserDisplayPreferences() { /> ${EnableThemeSongsHelp} +
+
+ +
+
${ThemeSongVolumeHelp}
+
+