120 lines
3.2 KiB
Swift
120 lines
3.2 KiB
Swift
// Copyright © 2023 Mastodon gGmbH. All rights reserved.
|
|
|
|
import UIKit
|
|
import MastodonLocalization
|
|
|
|
struct GeneralSettingsSection: Hashable {
|
|
let type: GeneralSettingsSectionType
|
|
let entries: [GeneralSetting]
|
|
}
|
|
|
|
enum GeneralSettingsSectionType: Hashable {
|
|
case appearance
|
|
case askBefore
|
|
case design
|
|
case language
|
|
case links
|
|
|
|
var sectionTitle: String {
|
|
switch self {
|
|
case .appearance:
|
|
return L10n.Scene.Settings.General.Appearance.sectionTitle
|
|
case .askBefore:
|
|
return L10n.Scene.Settings.General.AskBefore.sectionTitle
|
|
case .design:
|
|
return L10n.Scene.Settings.General.Design.sectionTitle
|
|
case .language:
|
|
return L10n.Scene.Settings.General.Language.sectionTitle
|
|
case .links:
|
|
return L10n.Scene.Settings.General.Links.sectionTitle
|
|
}
|
|
}
|
|
}
|
|
|
|
enum GeneralSetting: Hashable {
|
|
|
|
case appearance(Appearance)
|
|
case askBefore(AskBefore)
|
|
case design(Design)
|
|
case language(Language)
|
|
case openLinksIn(OpenLinksIn)
|
|
|
|
enum Appearance: Int, CaseIterable {
|
|
case light = 1
|
|
case dark = 2
|
|
case system = 0
|
|
|
|
var title: String {
|
|
switch self {
|
|
case .light:
|
|
return L10n.Scene.Settings.General.Appearance.light
|
|
case .dark:
|
|
return L10n.Scene.Settings.General.Appearance.dark
|
|
case .system:
|
|
return L10n.Scene.Settings.General.Appearance.system
|
|
}
|
|
}
|
|
|
|
var interfaceStyle: UIUserInterfaceStyle {
|
|
.init(rawValue: rawValue) ?? .unspecified
|
|
}
|
|
}
|
|
|
|
enum AskBefore: Hashable {
|
|
case postingWithoutAltText
|
|
case unfollowingSomeone
|
|
case boostingAPost
|
|
case deletingAPost
|
|
|
|
var title: String {
|
|
switch self {
|
|
case .postingWithoutAltText:
|
|
return L10n.Scene.Settings.General.AskBefore.postingWithoutAltText
|
|
case .unfollowingSomeone:
|
|
return L10n.Scene.Settings.General.AskBefore.unfollowingSomeone
|
|
case .boostingAPost:
|
|
return L10n.Scene.Settings.General.AskBefore.boostingAPost
|
|
case .deletingAPost:
|
|
return L10n.Scene.Settings.General.AskBefore.deletingAPost
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
enum Design: Hashable {
|
|
case showAnimations
|
|
|
|
var title: String {
|
|
switch self {
|
|
case .showAnimations:
|
|
return L10n.Scene.Settings.General.Design.showAnimations
|
|
}
|
|
}
|
|
}
|
|
|
|
enum Language: Hashable {
|
|
case defaultPostLanguage
|
|
|
|
var title: String {
|
|
switch self {
|
|
case .defaultPostLanguage:
|
|
return L10n.Scene.Settings.General.Language.defaultPostLanguage
|
|
}
|
|
}
|
|
}
|
|
|
|
enum OpenLinksIn: Hashable, CaseIterable {
|
|
case mastodon
|
|
case browser
|
|
|
|
var title: String {
|
|
switch self {
|
|
case .mastodon:
|
|
return L10n.Scene.Settings.General.Links.openInMastodon
|
|
case .browser:
|
|
return L10n.Scene.Settings.General.Links.openInBrowser
|
|
}
|
|
}
|
|
}
|
|
}
|