Allow changing appearance
This commit is contained in:
parent
e370bb37ed
commit
4fa6059a2a
|
@ -20,6 +20,7 @@ struct SettingsView: View {
|
|||
@Default(.isAutoSelectSubtitles) var isAutoSelectSubtitles
|
||||
@Default(.autoSelectSubtitlesLangCode) var autoSelectSubtitlesLangcode
|
||||
@Default(.autoSelectAudioLangCode) var autoSelectAudioLangcode
|
||||
@Default(.appAppearance) var appAppearance
|
||||
@State private var username: String = ""
|
||||
|
||||
func onAppear() {
|
||||
|
@ -61,6 +62,15 @@ struct SettingsView: View {
|
|||
set: { autoSelectAudioLangcode = $0.isoCode}
|
||||
)
|
||||
)
|
||||
Picker(NSLocalizedString("Appearance", comment: ""), selection: $appAppearance) {
|
||||
ForEach(self.viewModel.appearances, id: \.self) { appearance in
|
||||
Text(appearance.localizedName).tag(appearance.rawValue)
|
||||
}
|
||||
}.onChange(of: appAppearance, perform: { value in
|
||||
guard let window = UIApplication.shared.windows.first else { return }
|
||||
guard let appearance = AppAppearance(rawValue: value) else { return }
|
||||
window.overrideUserInterfaceStyle = appearance.style
|
||||
})
|
||||
}
|
||||
|
||||
Section {
|
||||
|
|
|
@ -16,4 +16,5 @@ extension Defaults.Keys {
|
|||
static let isAutoSelectSubtitles = Key<Bool>("isAutoSelectSubtitles", default: false)
|
||||
static let autoSelectSubtitlesLangCode = Key<String>("AutoSelectSubtitlesLangCode", default: "Auto")
|
||||
static let autoSelectAudioLangCode = Key<String>("AutoSelectAudioLangCode", default: "Auto")
|
||||
static let appAppearance = Key<String>("appAppearance", default: AppAppearance.system.rawValue)
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
*/
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
struct UserSettings: Decodable {
|
||||
var LocalMaxBitrate: Int
|
||||
|
@ -30,10 +31,32 @@ struct TrackLanguage: Hashable {
|
|||
static let auto = TrackLanguage(name: "Auto", isoCode: "Auto")
|
||||
}
|
||||
|
||||
enum AppAppearance: String, CaseIterable {
|
||||
case system
|
||||
case dark
|
||||
case light
|
||||
|
||||
var localizedName: String {
|
||||
return NSLocalizedString(self.rawValue.capitalized, comment: "")
|
||||
}
|
||||
|
||||
var style: UIUserInterfaceStyle {
|
||||
switch self {
|
||||
case .system:
|
||||
return .unspecified
|
||||
case .dark:
|
||||
return .dark
|
||||
case .light:
|
||||
return .light
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final class SettingsViewModel: ObservableObject {
|
||||
let currentLocale = Locale.current
|
||||
var bitrates: [Bitrates] = []
|
||||
var langs = [TrackLanguage]()
|
||||
let appearances = AppAppearance.allCases
|
||||
|
||||
init() {
|
||||
let url = Bundle.main.url(forResource: "bitrates", withExtension: "json")!
|
||||
|
|
Loading…
Reference in New Issue