mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Adds Mac Preferences
This makes use of `@AppStorage` for preferences. Severeral more need to migrated from AppDefaults etc.
This commit is contained in:
96
Multiplatform/macOS/Preferences/Model/MacPreferences.swift
Normal file
96
Multiplatform/macOS/Preferences/Model/MacPreferences.swift
Normal file
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// MacPreferences.swift
|
||||
// macOS
|
||||
//
|
||||
// Created by Stuart Breckenridge on 27/6/20.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
enum FontSize: Int {
|
||||
case small = 0
|
||||
case medium = 1
|
||||
case large = 2
|
||||
case veryLarge = 3
|
||||
}
|
||||
|
||||
/// The `MacPreferences` object stores all macOS specific user preferences.
|
||||
class MacPreferences: ObservableObject {
|
||||
|
||||
private struct AppKeys {
|
||||
static let refreshInterval = "refreshInterval"
|
||||
static let openInBackground = "openInBrowserInBackground"
|
||||
static let showUnreadCountInDock = "showUnreadCountInDock"
|
||||
static let checkForUpdatesAutomatically = "checkForAppUpdates"
|
||||
static let downloadTestBuilds = "downloadTestBuilds"
|
||||
static let sendCrashLogs = "sendCrashLogs"
|
||||
}
|
||||
|
||||
// Refresh Interval
|
||||
public let refreshIntervals:[String] = RefreshFrequencies.allCases.map({ $0.description })
|
||||
@AppStorage(wrappedValue: 0, AppKeys.refreshInterval) var refreshFrequency {
|
||||
didSet {
|
||||
objectWillChange.send()
|
||||
}
|
||||
}
|
||||
|
||||
// Open in background
|
||||
@AppStorage(wrappedValue: false, AppKeys.openInBackground) var openInBackground {
|
||||
didSet {
|
||||
objectWillChange.send()
|
||||
}
|
||||
}
|
||||
|
||||
// Unread Count in Dock
|
||||
@AppStorage(wrappedValue: true, AppKeys.showUnreadCountInDock) var showUnreadCountInDock {
|
||||
didSet {
|
||||
objectWillChange.send()
|
||||
}
|
||||
}
|
||||
|
||||
// Check for App Updates
|
||||
@AppStorage(wrappedValue: true, AppKeys.checkForUpdatesAutomatically) var checkForUpdatesAutomatically {
|
||||
didSet {
|
||||
objectWillChange.send()
|
||||
}
|
||||
}
|
||||
|
||||
// Test builds
|
||||
@AppStorage(wrappedValue: false, AppKeys.downloadTestBuilds) var downloadTestBuilds {
|
||||
didSet {
|
||||
objectWillChange.send()
|
||||
}
|
||||
}
|
||||
|
||||
// Crash Logs
|
||||
@AppStorage(wrappedValue: false, AppKeys.sendCrashLogs) var sendCrashLogs {
|
||||
didSet {
|
||||
objectWillChange.send()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
enum RefreshFrequencies: CaseIterable, CustomStringConvertible {
|
||||
|
||||
case refreshEvery10Mins, refreshEvery20Mins, refreshHourly, refreshEvery2Hours, refreshEvery4Hours, refreshEvery8Hours, none
|
||||
|
||||
var description: String {
|
||||
switch self {
|
||||
case .refreshEvery10Mins:
|
||||
return "Every 10 minutes"
|
||||
case .refreshEvery20Mins:
|
||||
return "Every 20 minutes"
|
||||
case .refreshHourly:
|
||||
return "Every hour"
|
||||
case .refreshEvery2Hours:
|
||||
return "Every 2 hours"
|
||||
case .refreshEvery4Hours:
|
||||
return "Every 4 hours"
|
||||
case .refreshEvery8Hours:
|
||||
return "Every 8 hours"
|
||||
case .none:
|
||||
return "Manually"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user