fixed appkit and uikit conflicts

This commit is contained in:
neon443
2025-05-21 15:28:35 +01:00
parent ed016217db
commit 74603cc588

View File

@@ -11,6 +11,10 @@ import SwiftUI
import WidgetKit import WidgetKit
import UserNotifications import UserNotifications
import AppIntents import AppIntents
#if canImport(AppKit)
import AppKit
import IOKit
#endif
//@Model //@Model
//final class Item { //final class Item {
@@ -39,21 +43,44 @@ struct Event: Identifiable, Codable, Equatable, Animatable {
struct ColorCodable: Codable, Equatable { struct ColorCodable: Codable, Equatable {
init(_ color: Color) { init(_ color: Color) {
let uiColor = UIColor(color) var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 1
var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 1.0
uiColor.getRed(&r, green: &g, blue: &b, alpha: &a)
self.red = Double(r) #if canImport(UIKit)
self.green = Double(g) let uiColor = UIColor(color)
self.blue = Double(b) uiColor.getRed(&r, green: &g, blue: &b, alpha: &a)
#elseif canImport(AppKit)
let nscolor = NSColor(color).usingColorSpace(.deviceRGB)
nscolor!.getRed(&r, green: &g, blue: &b, alpha: &a)
#endif
self = ColorCodable(
red: r,
green: g,
blue: b
)
} }
#if canImport(UIKit)
init(uiColor: UIColor) { init(uiColor: UIColor) {
var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 1.0 var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 1.0
uiColor.getRed(&r, green: &g, blue: &b, alpha: &a) uiColor.getRed(&r, green: &g, blue: &b, alpha: &a)
self.red = Double(r) self = ColorCodable(
self.green = Double(g) red: r,
self.blue = Double(b) green: g,
blue: b
)
} }
#elseif canImport(AppKit)
init(nsColor: NSColor) {
var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 1.0
let nsColor = nsColor.usingColorSpace(.deviceRGB)
nsColor!.getRed(&r, green: &g, blue: &b, alpha: &a)
self = ColorCodable(
red: r,
green: g,
blue: b
)
}
#endif
init(red: Double, green: Double, blue: Double) { init(red: Double, green: Double, blue: Double) {
self.red = red self.red = red
self.green = green self.green = green
@@ -112,28 +139,57 @@ struct Settings: Codable, Equatable {
var prevAppVersion: String var prevAppVersion: String
} }
struct AccentIcon { class AccentIcon {
#if canImport(UIKit)
var icon: UIImage var icon: UIImage
#elseif canImport(AppKit)
var icon: NSImage
#endif
var color: Color var color: Color
var name: String var name: String
init(_ colorName: String) { init(_ colorName: String) {
if colorName == "orange" { #if canImport(UIKit)
self.icon = UIImage(named: "AppIcon")! self.icon = UIImage(named: "AppIcon")!
} else {
self.icon = UIImage(named: colorName)!
}
self.color = Color(uiColor: UIColor(named: "uiColors/\(colorName)")!) self.color = Color(uiColor: UIColor(named: "uiColors/\(colorName)")!)
#elseif canImport(AppKit)
self.icon = NSImage(imageLiteralResourceName: "AppIcon")
self.color = Color(nsColor: NSColor(named: "uiColors/\(colorName)")!)
#endif
self.name = colorName self.name = colorName
if colorName != "orange" {
setSelfIcon(to: colorName)
}
}
func setSelfIcon(to name: String) {
#if canImport(UIKit)
self.icon = UIImage(named: name)!
#elseif canImport(AppKit)
self.icon = NSImage(imageLiteralResourceName: name)
#endif
} }
} }
class SettingsViewModel: ObservableObject { class SettingsViewModel: ObservableObject {
#if canImport(UIKit)
@Published var settings: Settings = Settings( @Published var settings: Settings = Settings(
showCompletedInHome: false, showCompletedInHome: false,
tint: ColorCodable(uiColor: UIColor(named: "AccentColor")!), tint: ColorCodable(uiColor: UIColor(named: "AccentColor")!),
showWhatsNew: true, showWhatsNew: true,
prevAppVersion: getVersion()+getBuildID() prevAppVersion: getVersion()+getBuildID()
) )
#elseif canImport(AppKit)
@Published var settings: Settings = Settings(
showCompletedInHome: false,
tint: ColorCodable(nsColor: NSColor(named: "AccentColor")!),
showWhatsNew: true,
prevAppVersion: getVersion()+getBuildID()
)
#endif
@Published var notifsGranted: Bool = false @Published var notifsGranted: Bool = false
@Published var colorChoices: [AccentIcon] = [] @Published var colorChoices: [AccentIcon] = []
@@ -165,10 +221,16 @@ class SettingsViewModel: ObservableObject {
} }
func changeTint(to: String) { func changeTint(to: String) {
#if canImport(UIKit)
if let uicolor = UIColor(named: "uiColors/\(to)") { if let uicolor = UIColor(named: "uiColors/\(to)") {
self.settings.tint = ColorCodable(uiColor: uicolor) self.settings.tint = ColorCodable(uiColor: uicolor)
saveSettings() saveSettings()
} }
#elseif canImport(AppKit)
if let nscolor = NSColor(named: "uiColors/\(to)") {
self.settings.tint = ColorCodable(nsColor: nscolor)
}
#endif
} }
let appGroupSettingsStore = UserDefaults(suiteName: "group.NearFuture") ?? UserDefaults.standard let appGroupSettingsStore = UserDefaults(suiteName: "group.NearFuture") ?? UserDefaults.standard
@@ -580,6 +642,7 @@ func getBuildID() -> String {
} }
func getDevice() -> (sf: String, label: String) { func getDevice() -> (sf: String, label: String) {
#if canImport(UIKit)
let asi = ProcessInfo().isiOSAppOnMac let asi = ProcessInfo().isiOSAppOnMac
let model = UIDevice().model let model = UIDevice().model
if asi { if asi {
@@ -590,6 +653,10 @@ func getDevice() -> (sf: String, label: String) {
return (sf: model.lowercased(), label: model) return (sf: model.lowercased(), label: model)
} }
return (sf: "iphone", label: "iPhone") return (sf: "iphone", label: "iPhone")
#elseif canImport(AppKit)
return (sf: "", label: "")
#endif
} }
extension Event: AppEntity { extension Event: AppEntity {