mirror of
https://github.com/yattee/yattee.git
synced 2025-08-09 20:24:06 +00:00
Controls layouts, gestures and settings
This commit is contained in:
@@ -7,6 +7,10 @@ struct PlayerSettings: View {
|
||||
|
||||
@Default(.playerSidebar) private var playerSidebar
|
||||
@Default(.showHistoryInPlayer) private var showHistory
|
||||
@Default(.playerControlsLayout) private var playerControlsLayout
|
||||
@Default(.fullScreenPlayerControlsLayout) private var fullScreenPlayerControlsLayout
|
||||
@Default(.horizontalPlayerGestureEnabled) private var horizontalPlayerGestureEnabled
|
||||
@Default(.seekGestureSpeed) private var seekGestureSpeed
|
||||
@Default(.showKeywords) private var showKeywords
|
||||
@Default(.pauseOnHidingPlayer) private var pauseOnHidingPlayer
|
||||
@Default(.closeLastItemOnPlaybackEnd) private var closeLastItemOnPlaybackEnd
|
||||
@@ -68,6 +72,18 @@ struct PlayerSettings: View {
|
||||
systemControlsCommandsPicker
|
||||
}
|
||||
|
||||
Section(header: SettingsHeader(text: "Controls"), footer: controlsLayoutFooter) {
|
||||
#if !os(tvOS)
|
||||
horizontalPlayerGestureEnabledToggle
|
||||
SettingsHeader(text: "Seek gesture sensitivity", secondary: true)
|
||||
seekGestureSpeedPicker
|
||||
SettingsHeader(text: "Regular size", secondary: true)
|
||||
playerControlsLayoutPicker
|
||||
SettingsHeader(text: "Fullscreen size", secondary: true)
|
||||
#endif
|
||||
fullScreenPlayerControlsLayoutPicker
|
||||
}
|
||||
|
||||
Section(header: SettingsHeader(text: "Interface")) {
|
||||
#if os(iOS)
|
||||
if idiom == .pad {
|
||||
@@ -150,6 +166,44 @@ struct PlayerSettings: View {
|
||||
.modifier(SettingsPickerModifier())
|
||||
}
|
||||
|
||||
private var horizontalPlayerGestureEnabledToggle: some View {
|
||||
Toggle("Seek with horizontal swipe on video", isOn: $horizontalPlayerGestureEnabled)
|
||||
}
|
||||
|
||||
private var seekGestureSpeedPicker: some View {
|
||||
Picker("Seek gesture sensitivity", selection: $seekGestureSpeed) {
|
||||
ForEach([1, 0.75, 0.66, 0.5, 0.33, 0.25, 0.1], id: \.self) { value in
|
||||
Text(String(format: "%.0f%%", value * 100)).tag(value)
|
||||
}
|
||||
}
|
||||
.disabled(!horizontalPlayerGestureEnabled)
|
||||
.modifier(SettingsPickerModifier())
|
||||
}
|
||||
|
||||
@ViewBuilder private var controlsLayoutFooter: some View {
|
||||
#if os(iOS)
|
||||
Text("Large and very large sizes are not suitable for all devices and using them may cause controls not to fit on the screen.")
|
||||
#endif
|
||||
}
|
||||
|
||||
private var playerControlsLayoutPicker: some View {
|
||||
Picker("Regular Size", selection: $playerControlsLayout) {
|
||||
ForEach(PlayerControlsLayout.allCases, id: \.self) { layout in
|
||||
Text(layout.description).tag(layout.rawValue)
|
||||
}
|
||||
}
|
||||
.modifier(SettingsPickerModifier())
|
||||
}
|
||||
|
||||
private var fullScreenPlayerControlsLayoutPicker: some View {
|
||||
Picker("Fullscreen Size", selection: $fullScreenPlayerControlsLayout) {
|
||||
ForEach(PlayerControlsLayout.allCases, id: \.self) { layout in
|
||||
Text(layout.description).tag(layout.rawValue)
|
||||
}
|
||||
}
|
||||
.modifier(SettingsPickerModifier())
|
||||
}
|
||||
|
||||
private var keywordsToggle: some View {
|
||||
Toggle("Show keywords", isOn: $showKeywords)
|
||||
}
|
||||
|
@@ -227,7 +227,7 @@ struct SettingsView: View {
|
||||
case .browsing:
|
||||
return 400
|
||||
case .player:
|
||||
return 420
|
||||
return 620
|
||||
case .quality:
|
||||
return 420
|
||||
case .history:
|
||||
|
Reference in New Issue
Block a user