format merge
This commit is contained in:
parent
071d07d5ff
commit
e12da2cf07
|
@ -1,16 +1,15 @@
|
|||
//
|
||||
/*
|
||||
* SwiftFin is subject to the terms of the Mozilla Public
|
||||
* License, v2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* Copyright 2021 Aiden Vigue & Jellyfin Contributors
|
||||
*/
|
||||
// Swiftfin is subject to the terms of the Mozilla Public
|
||||
// License, v2.0. If a copy of the MPL was not distributed with this
|
||||
// file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
//
|
||||
// Copyright (c) 2022 Jellyfin & Jellyfin Contributors
|
||||
//
|
||||
|
||||
#if os(tvOS)
|
||||
import TVVLCKit
|
||||
import TVVLCKit
|
||||
#else
|
||||
import MobileVLCKit
|
||||
import MobileVLCKit
|
||||
#endif
|
||||
|
||||
extension VLCMediaPlayer {
|
||||
|
@ -18,9 +17,7 @@ extension VLCMediaPlayer {
|
|||
///
|
||||
/// This is pretty hacky until VLCKit 4 has a public API to support this
|
||||
func setSubtitleSize(_ size: SubtitleSize) {
|
||||
perform(
|
||||
Selector(("setTextRendererFontSize:")),
|
||||
with: size.textRendererFontSize
|
||||
)
|
||||
perform(Selector(("setTextRendererFontSize:")),
|
||||
with: size.textRendererFontSize)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
//
|
||||
/*
|
||||
* SwiftFin is subject to the terms of the Mozilla Public
|
||||
* License, v2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* Copyright 2021 Aiden Vigue & Jellyfin Contributors
|
||||
*/
|
||||
// Swiftfin is subject to the terms of the Mozilla Public
|
||||
// License, v2.0. If a copy of the MPL was not distributed with this
|
||||
// file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
//
|
||||
// Copyright (c) 2022 Jellyfin & Jellyfin Contributors
|
||||
//
|
||||
|
||||
import Defaults
|
||||
|
||||
|
|
|
@ -34,7 +34,8 @@ extension Defaults.Keys {
|
|||
static let inNetworkBandwidth = Key<Int>("InNetworkBandwidth", default: 40_000_000, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let outOfNetworkBandwidth = Key<Int>("OutOfNetworkBandwidth", default: 40_000_000, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let isAutoSelectSubtitles = Key<Bool>("isAutoSelectSubtitles", default: false, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let autoSelectSubtitlesLangCode = Key<String>("AutoSelectSubtitlesLangCode", default: "Auto", suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let autoSelectSubtitlesLangCode = Key<String>("AutoSelectSubtitlesLangCode", default: "Auto",
|
||||
suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let autoSelectAudioLangCode = Key<String>("AutoSelectAudioLangCode", default: "Auto", suite: SwiftfinStore.Defaults.generalSuite)
|
||||
|
||||
// Customize settings
|
||||
|
@ -44,8 +45,10 @@ extension Defaults.Keys {
|
|||
// Video player / overlay settings
|
||||
static let overlayType = Key<OverlayType>("overlayType", default: .normal, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let jumpGesturesEnabled = Key<Bool>("gesturesEnabled", default: true, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let videoPlayerJumpForward = Key<VideoPlayerJumpLength>("videoPlayerJumpForward", default: .fifteen, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let videoPlayerJumpBackward = Key<VideoPlayerJumpLength>("videoPlayerJumpBackward", default: .fifteen, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let videoPlayerJumpForward = Key<VideoPlayerJumpLength>("videoPlayerJumpForward", default: .fifteen,
|
||||
suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let videoPlayerJumpBackward = Key<VideoPlayerJumpLength>("videoPlayerJumpBackward", default: .fifteen,
|
||||
suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let autoplayEnabled = Key<Bool>("autoPlayNextItem", default: true, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let resumeOffset = Key<Bool>("resumeOffset", default: false, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let subtitleSize = Key<SubtitleSize>("subtitleSize", default: .regular, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
|
@ -56,11 +59,13 @@ extension Defaults.Keys {
|
|||
static let shouldShowAutoPlay = Key<Bool>("shouldShowAutoPlayNextItem", default: true, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
|
||||
// Should show video player items in overlay menu
|
||||
static let shouldShowJumpButtonsInOverlayMenu = Key<Bool>("shouldShowJumpButtonsInMenu", default: true, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let shouldShowJumpButtonsInOverlayMenu = Key<Bool>("shouldShowJumpButtonsInMenu", default: true,
|
||||
suite: SwiftfinStore.Defaults.generalSuite)
|
||||
|
||||
// Experimental settings
|
||||
struct Experimental {
|
||||
static let syncSubtitleStateWithAdjacent = Key<Bool>("experimental.syncSubtitleState", default: false, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
enum Experimental {
|
||||
static let syncSubtitleStateWithAdjacent = Key<Bool>("experimental.syncSubtitleState", default: false,
|
||||
suite: SwiftfinStore.Defaults.generalSuite)
|
||||
static let liveTVAlphaEnabled = Key<Bool>("liveTVAlphaEnabled", default: false, suite: SwiftfinStore.Defaults.generalSuite)
|
||||
}
|
||||
|
||||
|
|
|
@ -13,18 +13,29 @@ import SwiftUI
|
|||
|
||||
struct SettingsView: View {
|
||||
|
||||
@EnvironmentObject var settingsRouter: SettingsCoordinator.Router
|
||||
@ObservedObject var viewModel: SettingsViewModel
|
||||
@EnvironmentObject
|
||||
var settingsRouter: SettingsCoordinator.Router
|
||||
@ObservedObject
|
||||
var viewModel: SettingsViewModel
|
||||
|
||||
@Default(.autoSelectAudioLangCode) var autoSelectAudioLangcode
|
||||
@Default(.videoPlayerJumpForward) var jumpForwardLength
|
||||
@Default(.videoPlayerJumpBackward) var jumpBackwardLength
|
||||
@Default(.downActionShowsMenu) var downActionShowsMenu
|
||||
@Default(.confirmClose) var confirmClose
|
||||
@Default(.tvOSCinematicViews) var tvOSCinematicViews
|
||||
@Default(.showPosterLabels) var showPosterLabels
|
||||
@Default(.resumeOffset) var resumeOffset
|
||||
@Default(.subtitleSize) var subtitleSize
|
||||
@Default(.autoSelectAudioLangCode)
|
||||
var autoSelectAudioLangcode
|
||||
@Default(.videoPlayerJumpForward)
|
||||
var jumpForwardLength
|
||||
@Default(.videoPlayerJumpBackward)
|
||||
var jumpBackwardLength
|
||||
@Default(.downActionShowsMenu)
|
||||
var downActionShowsMenu
|
||||
@Default(.confirmClose)
|
||||
var confirmClose
|
||||
@Default(.tvOSCinematicViews)
|
||||
var tvOSCinematicViews
|
||||
@Default(.showPosterLabels)
|
||||
var showPosterLabels
|
||||
@Default(.resumeOffset)
|
||||
var resumeOffset
|
||||
@Default(.subtitleSize)
|
||||
var subtitleSize
|
||||
|
||||
var body: some View {
|
||||
GeometryReader { reader in
|
||||
|
@ -38,9 +49,7 @@ struct SettingsView: View {
|
|||
Form {
|
||||
Section(header: EmptyView()) {
|
||||
|
||||
Button {
|
||||
|
||||
} label: {
|
||||
Button {} label: {
|
||||
HStack {
|
||||
Text("User")
|
||||
Spacer()
|
||||
|
|
|
@ -391,7 +391,7 @@ extension VLCPlayerViewController {
|
|||
// remove old player
|
||||
|
||||
if vlcMediaPlayer.media != nil {
|
||||
viewModelListeners.forEach({ $0.cancel() })
|
||||
viewModelListeners.forEach { $0.cancel() }
|
||||
|
||||
vlcMediaPlayer.stop()
|
||||
viewModel.sendStopReport()
|
||||
|
@ -413,7 +413,7 @@ extension VLCPlayerViewController {
|
|||
|
||||
// Stop current media if there is one
|
||||
if vlcMediaPlayer.media != nil {
|
||||
viewModelListeners.forEach({ $0.cancel() })
|
||||
viewModelListeners.forEach { $0.cancel() }
|
||||
|
||||
vlcMediaPlayer.stop()
|
||||
viewModel.sendStopReport()
|
||||
|
@ -455,6 +455,7 @@ extension VLCPlayerViewController {
|
|||
}
|
||||
|
||||
// MARK: startPlayback
|
||||
|
||||
func startPlayback() {
|
||||
vlcMediaPlayer.play()
|
||||
|
||||
|
|
|
@ -1043,7 +1043,6 @@
|
|||
62ECA01926FA6D6900E8EBB7 /* AppURLHandler */,
|
||||
5377CBF8263B596B003A4E83 /* Assets.xcassets */,
|
||||
53F866422687A45400DCD1D7 /* Components */,
|
||||
5D160401278A41BA00D22B99 /* Extensions */,
|
||||
5377CC02263B596B003A4E83 /* Info.plist */,
|
||||
E13D02842788B634000FCB04 /* Swiftfin.entitlements */,
|
||||
5377CBFA263B596B003A4E83 /* Preview Content */,
|
||||
|
@ -1224,13 +1223,6 @@
|
|||
path = Components;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5D160401278A41BA00D22B99 /* Extensions */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = Extensions;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5D64683B277B15E4009E09AE /* PreferenceUIHosting */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
|
@ -13,23 +13,39 @@ import SwiftUI
|
|||
|
||||
struct SettingsView: View {
|
||||
|
||||
@EnvironmentObject var settingsRouter: SettingsCoordinator.Router
|
||||
@ObservedObject var viewModel: SettingsViewModel
|
||||
@EnvironmentObject
|
||||
var settingsRouter: SettingsCoordinator.Router
|
||||
@ObservedObject
|
||||
var viewModel: SettingsViewModel
|
||||
|
||||
@Default(.inNetworkBandwidth) var inNetworkStreamBitrate
|
||||
@Default(.outOfNetworkBandwidth) var outOfNetworkStreamBitrate
|
||||
@Default(.isAutoSelectSubtitles) var isAutoSelectSubtitles
|
||||
@Default(.autoSelectSubtitlesLangCode) var autoSelectSubtitlesLangcode
|
||||
@Default(.autoSelectAudioLangCode) var autoSelectAudioLangcode
|
||||
@Default(.appAppearance) var appAppearance
|
||||
@Default(.overlayType) var overlayType
|
||||
@Default(.videoPlayerJumpForward) var jumpForwardLength
|
||||
@Default(.videoPlayerJumpBackward) var jumpBackwardLength
|
||||
@Default(.jumpGesturesEnabled) var jumpGesturesEnabled
|
||||
@Default(.showPosterLabels) var showPosterLabels
|
||||
@Default(.showCastAndCrew) var showCastAndCrew
|
||||
@Default(.resumeOffset) var resumeOffset
|
||||
@Default(.subtitleSize) var subtitleSize
|
||||
@Default(.inNetworkBandwidth)
|
||||
var inNetworkStreamBitrate
|
||||
@Default(.outOfNetworkBandwidth)
|
||||
var outOfNetworkStreamBitrate
|
||||
@Default(.isAutoSelectSubtitles)
|
||||
var isAutoSelectSubtitles
|
||||
@Default(.autoSelectSubtitlesLangCode)
|
||||
var autoSelectSubtitlesLangcode
|
||||
@Default(.autoSelectAudioLangCode)
|
||||
var autoSelectAudioLangcode
|
||||
@Default(.appAppearance)
|
||||
var appAppearance
|
||||
@Default(.overlayType)
|
||||
var overlayType
|
||||
@Default(.videoPlayerJumpForward)
|
||||
var jumpForwardLength
|
||||
@Default(.videoPlayerJumpBackward)
|
||||
var jumpBackwardLength
|
||||
@Default(.jumpGesturesEnabled)
|
||||
var jumpGesturesEnabled
|
||||
@Default(.showPosterLabels)
|
||||
var showPosterLabels
|
||||
@Default(.showCastAndCrew)
|
||||
var showCastAndCrew
|
||||
@Default(.resumeOffset)
|
||||
var resumeOffset
|
||||
@Default(.subtitleSize)
|
||||
var subtitleSize
|
||||
|
||||
var body: some View {
|
||||
Form {
|
||||
|
@ -66,19 +82,19 @@ struct SettingsView: View {
|
|||
}
|
||||
|
||||
// TODO: Implement these for playback
|
||||
// Section(header: Text("Networking")) {
|
||||
// Picker("Default local quality", selection: $inNetworkStreamBitrate) {
|
||||
// ForEach(self.viewModel.bitrates, id: \.self) { bitrate in
|
||||
// Text(bitrate.name).tag(bitrate.value)
|
||||
// }
|
||||
// }
|
||||
// Section(header: Text("Networking")) {
|
||||
// Picker("Default local quality", selection: $inNetworkStreamBitrate) {
|
||||
// ForEach(self.viewModel.bitrates, id: \.self) { bitrate in
|
||||
// Text(bitrate.name).tag(bitrate.value)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// Picker("Default remote quality", selection: $outOfNetworkStreamBitrate) {
|
||||
// ForEach(self.viewModel.bitrates, id: \.self) { bitrate in
|
||||
// Text(bitrate.name).tag(bitrate.value)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// Picker("Default remote quality", selection: $outOfNetworkStreamBitrate) {
|
||||
// ForEach(self.viewModel.bitrates, id: \.self) { bitrate in
|
||||
// Text(bitrate.name).tag(bitrate.value)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
Section(header: Text("Video Player")) {
|
||||
Picker("Jump Forward Length", selection: $jumpForwardLength) {
|
||||
|
|
|
@ -293,7 +293,7 @@ extension VLCPlayerViewController {
|
|||
// remove old player
|
||||
|
||||
if vlcMediaPlayer.media != nil {
|
||||
viewModelListeners.forEach({ $0.cancel() })
|
||||
viewModelListeners.forEach { $0.cancel() }
|
||||
|
||||
vlcMediaPlayer.stop()
|
||||
viewModel.sendStopReport()
|
||||
|
@ -346,6 +346,7 @@ extension VLCPlayerViewController {
|
|||
}
|
||||
|
||||
// MARK: startPlayback
|
||||
|
||||
func startPlayback() {
|
||||
vlcMediaPlayer.play()
|
||||
|
||||
|
|
Loading…
Reference in New Issue