// // 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 import Foundation import UIKit // TODO: Organize extension UserDefaults { static let generalSuite = UserDefaults(suiteName: "swiftfinstore-general-defaults")! static let universalSuite = UserDefaults(suiteName: "swiftfinstore-universal-defaults")! } extension Defaults.Keys { // Universal settings static let defaultHTTPScheme = Key("defaultHTTPScheme", default: .http, suite: .universalSuite) static let appAppearance = Key("appAppearance", default: .system, suite: .universalSuite) // General settings static let lastServerUserID = Defaults.Key("lastServerUserID", suite: .generalSuite) static let inNetworkBandwidth = Key("InNetworkBandwidth", default: 40_000_000, suite: .generalSuite) static let outOfNetworkBandwidth = Key("OutOfNetworkBandwidth", default: 40_000_000, suite: .generalSuite) enum Customization { static let itemViewType = Key("itemViewType", default: .compactLogo, suite: .generalSuite) static let showPosterLabels = Key("showPosterLabels", default: true, suite: .generalSuite) static let nextUpPosterType = Key("nextUpPosterType", default: .portrait, suite: .generalSuite) static let recentlyAddedPosterType = Key("recentlyAddedPosterType", default: .portrait, suite: .generalSuite) static let latestInLibraryPosterType = Key("latestInLibraryPosterType", default: .portrait, suite: .generalSuite) static let recommendedPosterType = Key("recommendedPosterType", default: .portrait, suite: .generalSuite) static let searchPosterType = Key("searchPosterType", default: .portrait, suite: .generalSuite) enum Episodes { static let useSeriesLandscapeBackdrop = Key("useSeriesBackdrop", default: true, suite: .generalSuite) } enum Library { static let viewType = Key("Customization.Library.viewType", default: .grid, suite: .generalSuite) static let gridPosterType = Key("Customization.Library.gridPosterType", default: .portrait, suite: .generalSuite) } } // Video player / overlay settings static let overlayType = Key("overlayType", default: .normal, suite: .generalSuite) static let jumpGesturesEnabled = Key("gesturesEnabled", default: true, suite: .generalSuite) static let systemControlGesturesEnabled = Key( "systemControlGesturesEnabled", default: true, suite: .generalSuite ) static let playerGesturesLockGestureEnabled = Key( "playerGesturesLockGestureEnabled", default: true, suite: .generalSuite ) static let seekSlideGestureEnabled = Key( "seekSlideGestureEnabled", default: true, suite: .generalSuite ) static let videoPlayerJumpForward = Key( "videoPlayerJumpForward", default: .fifteen, suite: .generalSuite ) static let videoPlayerJumpBackward = Key( "videoPlayerJumpBackward", default: .fifteen, suite: .generalSuite ) static let autoplayEnabled = Key("autoPlayNextItem", default: true, suite: .generalSuite) static let resumeOffset = Key("resumeOffset", default: false, suite: .generalSuite) static let subtitleFontName = Key( "subtitleFontName", default: UIFont.systemFont(ofSize: 14).fontName, suite: .generalSuite ) static let subtitleSize = Key("subtitleSize", default: .regular, suite: .generalSuite) // Should show video player items static let shouldShowPlayPreviousItem = Key("shouldShowPreviousItem", default: true, suite: .generalSuite) static let shouldShowPlayNextItem = Key("shouldShowNextItem", default: true, suite: .generalSuite) static let shouldShowAutoPlay = Key("shouldShowAutoPlayNextItem", default: true, suite: .generalSuite) // Should show missing seasons and episodes static let shouldShowMissingSeasons = Key("shouldShowMissingSeasons", default: true, suite: .generalSuite) static let shouldShowMissingEpisodes = Key("shouldShowMissingEpisodes", default: true, suite: .generalSuite) // Should show video player items in overlay menu static let shouldShowJumpButtonsInOverlayMenu = Key( "shouldShowJumpButtonsInMenu", default: true, suite: .generalSuite ) static let shouldShowChaptersInfoInBottomOverlay = Key( "shouldShowChaptersInfoInBottomOverlay", default: true, suite: .generalSuite ) // Experimental settings enum Experimental { static let syncSubtitleStateWithAdjacent = Key( "experimental.syncSubtitleState", default: false, suite: .generalSuite ) static let forceDirectPlay = Key("forceDirectPlay", default: false, suite: .generalSuite) static let nativePlayer = Key("nativePlayer", default: false, suite: .generalSuite) static let liveTVAlphaEnabled = Key("liveTVAlphaEnabled", default: false, suite: .generalSuite) static let liveTVForceDirectPlay = Key("liveTVForceDirectPlay", default: false, suite: .generalSuite) static let liveTVNativePlayer = Key("liveTVNativePlayer", default: false, suite: .generalSuite) } // tvos specific static let downActionShowsMenu = Key("downActionShowsMenu", default: true, suite: .generalSuite) static let confirmClose = Key("confirmClose", default: false, suite: .generalSuite) }