improvements to captions on tvOS

This commit is contained in:
Toni Förster
2024-05-20 14:20:08 +02:00
parent 4db02b2638
commit c9125644ed
3 changed files with 207 additions and 136 deletions

View File

@@ -49,6 +49,10 @@ struct PlayerSettings: View {
}
#endif
#if os(tvOS)
@State private var isShowingLanguagePicker = false
#endif
var body: some View {
Group {
#if os(macOS)
@@ -101,7 +105,23 @@ struct PlayerSettings: View {
Section(header: SettingsHeader(text: "Captions".localized())) {
showCaptionsAutoShowToggle
captionDefaultLanguagePicker
#if !os(tvOS)
captionDefaultLanguagePicker
#else
Button(action: { isShowingLanguagePicker = true }) {
HStack {
Text("Default language")
Spacer()
Text("\(LanguageCodes(rawValue: captionsDefaultLanguageCode)!.description.capitalized) (\(captionsDefaultLanguageCode))").foregroundColor(.secondary)
}
}
.frame(maxWidth: .infinity).sheet(isPresented: $isShowingLanguagePicker) {
LanguagePickerTVOS(
selectedLanguage: $captionsDefaultLanguageCode,
isShowing: $isShowingLanguagePicker
)
}
#endif
}
#if !os(tvOS)
@@ -290,21 +310,11 @@ struct PlayerSettings: View {
}
#endif
private var showCaptionsAutoShowToggle: some View {
Toggle("Always show captions", isOn: $captionsAutoShow)
}
#if !os(tvOS)
private var inspectorVisibilityPicker: some View {
Picker("Inspector", selection: $showInspector) {
Text("Always").tag(ShowInspectorSetting.always)
Text("Only for local files and URLs").tag(ShowInspectorSetting.onlyLocal)
}
#if os(macOS)
.labelsHidden()
#endif
}
private var showCaptionsAutoShowToggle: some View {
Toggle("Always show captions", isOn: $captionsAutoShow)
}
private var captionDefaultLanguagePicker: some View {
Picker("Default language", selection: $captionsDefaultLanguageCode) {
ForEach(LanguageCodes.allCases, id: \.self) { language in
@@ -315,6 +325,37 @@ struct PlayerSettings: View {
.labelsHidden()
#endif
}
#else
struct LanguagePickerTVOS: View {
@Binding var selectedLanguage: String
@Binding var isShowing: Bool
var body: some View {
NavigationView {
List(LanguageCodes.allCases, id: \.self) { language in
Button(action: {
selectedLanguage = language.rawValue
isShowing = false
}) {
Text("\(language.description.capitalized) (\(language.rawValue))")
}
}
.navigationTitle("Select Default Language")
}
}
}
#endif
#if !os(tvOS)
private var inspectorVisibilityPicker: some View {
Picker("Inspector", selection: $showInspector) {
Text("Always").tag(ShowInspectorSetting.always)
Text("Only for local files and URLs").tag(ShowInspectorSetting.onlyLocal)
}
#if os(macOS)
.labelsHidden()
#endif
}
private var showChaptersToggle: some View {
Toggle("Show chapters", isOn: $showChapters)