NetNewsWire/Evergreen/Preferences/Defaults.swift

58 lines
1.3 KiB
Swift

//
// Defaults.swift
// Evergreen
//
// Created by Brent Simmons on 2/20/16.
// Copyright © 2016 Ranchero Software, LLC. All rights reserved.
//
import Foundation
final class AppDefaults {
}
extension AppDefaultsKey {
static let sidebarFontSizeKVO = "values." + sidebarFontSize
static let timelineFontSizeKVO = "values." + timelineFontSize
static let detailFontSizeKVO = "values." + detailFontSize
}
enum FontSize: Int {
case small = 0
case medium = 1
case large = 2
case veryLarge = 3
}
private let smallestFontSizeRawValue = FontSize.small.rawValue
private let largestFontSizeRawValue = FontSize.veryLarge.rawValue
func registerDefaults() {
let defaults = [AppDefaultsKey.sidebarFontSize: FontSize.medium.rawValue, AppDefaultsKey.timelineFontSize: FontSize.medium.rawValue, AppDefaultsKey.detailFontSize: FontSize.medium.rawValue]
UserDefaults.standard.register(defaults: defaults)
}
func timelineFontSize() -> FontSize {
return fontSizeForKey(TimelineFontSizeKey)
}
private func fontSizeForKey(_ key: String) -> FontSize {
var rawFontSize = UserDefaults.standard.integer(forKey: key)
if rawFontSize < smallestFontSizeRawValue {
rawFontSize = smallestFontSizeRawValue
}
if rawFontSize > largestFontSizeRawValue {
rawFontSize = largestFontSizeRawValue
}
return FontSize(rawValue: rawFontSize)!
}