Files
Reflect/Shared/Models/Mood.swift
Trey t 0442eab1f8 Rebrand entire project from Feels to Reflect
Complete rename across all bundle IDs, App Groups, CloudKit containers,
StoreKit product IDs, data store filenames, URL schemes, logger subsystems,
Swift identifiers, user-facing strings (7 languages), file names, directory
names, Xcode project, schemes, assets, and documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 11:47:16 -06:00

102 lines
2.6 KiB
Swift

//
// Mood.swift
// Reflect
//
// Created by Trey Tartt on 1/5/22.
//
import Foundation
import SwiftUI
enum Mood: Int {
case horrible
case bad
case average
case good
case great
case missing
case placeholder
var next: Mood {
var moodValue = self.rawValue
moodValue -= 1
if moodValue < 0 {
moodValue = 4
}
return Mood.init(rawValue: moodValue) ?? Mood.horrible
}
var strValue: String {
switch self {
case .horrible:
return String(localized: "mood_value_horrible")
case .bad:
return String(localized: "mood_value_bad")
case .average:
return String(localized: "mood_value_average")
case .good:
return String(localized: "mood_value_good")
case .great:
return String(localized: "mood_value_great")
case .missing:
return String(localized: "mood_value_missing")
case .placeholder:
return String("placeholder")
}
}
/// Non-localized display name for use in widgets (which don't have access to app's localization)
var widgetDisplayName: String {
switch self {
case .horrible: return "Horrible"
case .bad: return "Bad"
case .average: return "Average"
case .good: return "Good"
case .great: return "Great"
case .missing: return "Missing"
case .placeholder: return "Placeholder"
}
}
static var allValues: [Mood] {
return [Mood.horrible, Mood.bad, Mood.average, Mood.good, Mood.great].reversed()
}
#if !os(watchOS)
var color: Color {
let moodTint: MoodTintable.Type = UserDefaultsStore.moodTintable()
return moodTint.color(forMood: self)
}
var icon: Image {
let moodImages: MoodImagable.Type = UserDefaultsStore.moodMoodImagable()
return moodImages.icon(forMood: self)
}
var graphic: Image {
switch self {
case .horrible:
return Image("HorribleGraphic", bundle: .main)
case .bad:
return Image("BadGraphic", bundle: .main)
case .average:
return Image("AverageGraphic", bundle: .main)
case .good:
return Image("GoodGraphic", bundle: .main)
case .great:
return Image("GreatGraphic", bundle: .main)
case .missing:
return Image("MissingGraphic", bundle: .main)
case .placeholder:
return Image("MissingGraphic", bundle: .main)
}
}
#endif
}
extension Mood: Identifiable {
var id: Int {
rawValue
}
}