summaryrefslogtreecommitdiffstats
path: root/Solsnu.Widget/Models/Season.swift
diff options
context:
space:
mode:
authorivar <i@oiee.no>2026-03-23 16:47:59 +0100
committerivar <i@oiee.no>2026-03-23 16:47:59 +0100
commit94bf65b7e6b0cb683ea9c952aed86b034d1c8363 (patch)
tree6158072e01f9ffe2dd8754e9b136f8978bb11d6e /Solsnu.Widget/Models/Season.swift
parente45dd001f178a640e1f799616868accb4254c313 (diff)
downloadsolverv-94bf65b7e6b0cb683ea9c952aed86b034d1c8363.tar.xz
solverv-94bf65b7e6b0cb683ea9c952aed86b034d1c8363.zip
feat: implement SolvervDef methods and update widget timeline to refresh at midnight
Diffstat (limited to 'Solsnu.Widget/Models/Season.swift')
-rw-r--r--Solsnu.Widget/Models/Season.swift49
1 files changed, 49 insertions, 0 deletions
diff --git a/Solsnu.Widget/Models/Season.swift b/Solsnu.Widget/Models/Season.swift
new file mode 100644
index 0000000..01eaf99
--- /dev/null
+++ b/Solsnu.Widget/Models/Season.swift
@@ -0,0 +1,49 @@
+import SwiftUI
+
+enum Season: String, Codable {
+ case spring
+ case summer
+ case autumn
+ case winter
+
+ var displayName: String {
+ switch self {
+ case .spring: return "Spring"
+ case .summer: return "Summer"
+ case .autumn: return "Autumn"
+ case .winter: return "Winter"
+ }
+ }
+
+ var description: String {
+ switch self {
+ case .spring: return "Day and night are approximately equal length"
+ case .summer: return "Longest day of the year"
+ case .autumn: return "Day and night are approximately equal length"
+ case .winter: return "Shortest day of the year"
+ }
+ }
+
+ var colorLight: Color {
+ switch self {
+ case .spring: return Color(red: 0.298, green: 0.686, blue: 0.314) // #4CAF50
+ case .summer: return Color(red: 1.0, green: 0.761, blue: 0.039) // #FFC107
+ case .autumn: return Color(red: 1.0, green: 0.596, blue: 0.0) // #FF9800
+ case .winter: return Color(red: 0.129, green: 0.588, blue: 0.953) // #2196F3
+ }
+ }
+
+ var assetName: String {
+ return "Season\(displayName)"
+ }
+
+ static func fromDate(_ date: Date) -> Season {
+ let month = Calendar.current.component(.month, from: date)
+ switch month {
+ case 3, 4, 5: return .spring
+ case 6, 7, 8: return .summer
+ case 9, 10, 11: return .autumn
+ default: return .winter
+ }
+ }
+}