mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2024-12-28 10:30:14 +01:00
0e0f46fa49
This commit makes some assumptions: - `AppSettings` is an `ObservableObject` that uses `@AppStorage` where possible, which sets default values. - Each change to an property triggers an `objectWillChange.send()` call. - `IconSize` is not used. Instead, it defaults to 40.0 with minimums and maximums of 20.0 and 60.0, controlled via Timeline settings.
73 lines
1.9 KiB
Swift
73 lines
1.9 KiB
Swift
//
|
|
// AppSettings.swift
|
|
// Multiplatform iOS
|
|
//
|
|
// Created by Stuart Breckenridge on 1/7/20.
|
|
// Copyright © 2020 Ranchero Software. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
enum ColorPalette: Int, CustomStringConvertible, CaseIterable {
|
|
case automatic = 0
|
|
case light = 1
|
|
case dark = 2
|
|
|
|
var description: String {
|
|
switch self {
|
|
case .automatic:
|
|
return NSLocalizedString("Automatic", comment: "Automatic")
|
|
case .light:
|
|
return NSLocalizedString("Light", comment: "Light")
|
|
case .dark:
|
|
return NSLocalizedString("Dark", comment: "Dark")
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
class AppSettings: ObservableObject {
|
|
|
|
struct Key {
|
|
static let userInterfaceColorPalette = "userInterfaceColorPalette"
|
|
static let activeExtensionPointIDs = "activeExtensionPointIDs"
|
|
static let lastImageCacheFlushDate = "lastImageCacheFlushDate"
|
|
static let firstRunDate = "firstRunDate"
|
|
static let timelineGroupByFeed = "timelineGroupByFeed"
|
|
static let refreshClearsReadArticles = "refreshClearsReadArticles"
|
|
static let timelineNumberOfLines = "timelineNumberOfLines"
|
|
static let timelineIconSize = "timelineIconSize"
|
|
static let timelineSortDirection = "timelineSortDirection"
|
|
static let articleFullscreenAvailable = "articleFullscreenAvailable"
|
|
static let articleFullscreenEnabled = "articleFullscreenEnabled"
|
|
static let confirmMarkAllAsRead = "confirmMarkAllAsRead"
|
|
static let lastRefresh = "lastRefresh"
|
|
static let addWebFeedAccountID = "addWebFeedAccountID"
|
|
static let addWebFeedFolderName = "addWebFeedFolderName"
|
|
static let addFolderAccountID = "addFolderAccountID"
|
|
}
|
|
|
|
static let isDeveloperBuild: Bool = {
|
|
if let dev = Bundle.main.object(forInfoDictionaryKey: "DeveloperEntitlements") as? String, dev == "-dev" {
|
|
return true
|
|
}
|
|
return false
|
|
}()
|
|
|
|
static let isFirstRun: Bool = {
|
|
if let _ = AppDefaults.shared.object(forKey: Key.firstRunDate) as? Date {
|
|
return false
|
|
}
|
|
firstRunDate = Date()
|
|
return true
|
|
}()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|