81 lines
2.6 KiB
Swift
81 lines
2.6 KiB
Swift
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import UIKit
|
|
|
|
protocol ChangeAppThemeControllerDelegate: class {
|
|
func changeAppThemeControllerDidChange(_ controller: ChangeAppThemeController)
|
|
}
|
|
|
|
class ChangeAppThemeController: StaticTableController {
|
|
weak var delegate: ChangeAppThemeControllerDelegate?
|
|
|
|
fileprivate let userDefaults: UserDefaultsManager
|
|
fileprivate let selectedStatus: UserDefaultsManager.AppTheme
|
|
|
|
fileprivate let themeAutomatic = StaticTableDefaultCellModel()
|
|
fileprivate let themeLight = StaticTableDefaultCellModel()
|
|
fileprivate let themeDark = StaticTableDefaultCellModel()
|
|
|
|
init(theme: Theme) {
|
|
self.userDefaults = UserDefaultsManager()
|
|
self.selectedStatus = userDefaults.appTheme
|
|
|
|
super.init(theme: theme, style: .plain, model: [
|
|
[themeAutomatic],
|
|
[themeLight],
|
|
[themeDark],
|
|
], footers: [
|
|
String(localized: "settings_theme_automatic_notice"),
|
|
nil,
|
|
nil]
|
|
)
|
|
|
|
updateModels()
|
|
|
|
title = String(localized: "settings_theme_title")
|
|
}
|
|
|
|
required convenience init?(coder aDecoder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
|
|
private extension ChangeAppThemeController {
|
|
func updateModels() {
|
|
themeAutomatic.value = String(localized: "settings_theme_automatic")
|
|
themeAutomatic.didSelectHandler = changeThemeAutomatic
|
|
|
|
themeLight.value = String(localized: "settings_theme_light")
|
|
themeLight.didSelectHandler = changeThemeLight
|
|
|
|
themeDark.value = String(localized: "settings_theme_dark")
|
|
themeDark.didSelectHandler = changeThemeDark
|
|
|
|
switch selectedStatus {
|
|
case .themeAutomatic:
|
|
themeAutomatic.rightImageType = .checkmark
|
|
case .themeLight:
|
|
themeLight.rightImageType = .checkmark
|
|
case .themeDark:
|
|
themeDark.rightImageType = .checkmark
|
|
}
|
|
}
|
|
|
|
func changeThemeAutomatic(_: StaticTableBaseCell) {
|
|
userDefaults.appTheme = .themeAutomatic
|
|
delegate?.changeAppThemeControllerDidChange(self)
|
|
}
|
|
|
|
func changeThemeLight(_: StaticTableBaseCell) {
|
|
userDefaults.appTheme = .themeLight
|
|
delegate?.changeAppThemeControllerDidChange(self)
|
|
}
|
|
|
|
func changeThemeDark(_: StaticTableBaseCell) {
|
|
userDefaults.appTheme = .themeDark
|
|
delegate?.changeAppThemeControllerDidChange(self)
|
|
}
|
|
}
|