import Foundation /// Das Akkusymbol zum jeweiligen Zustand. /// /// Ein Symbol, das bei 5 % genauso aussieht wie bei 95 %, ist Dekoration und /// keine Anzeige — es beantwortet die eine Frage nicht, für die es da ist. Wer /// in der Menüleiste nur das Symbol stehen hat, will es auf einen Blick lesen /// können, ohne die Zahl daneben. public enum BatterySymbol { /// Kein Akku da — oder keiner zu lesen. public static let unavailable = "batteryblock.slash" /// Der Blitz beim Laden — **getrennt** vom Füllstand. /// /// Nachgemessen, nicht angenommen: von den kombinierten Symbolen existiert /// allein `battery.100percent.bolt`. Für 0, 25, 50 und 75 Prozent gibt es /// keine Blitz-Variante, und `battery.slash` gibt es auch nicht. /// /// Den Füllstand beim Laden gegen einen Blitz einzutauschen wäre die /// falsche Wahl: dass geladen wird, sieht man am Netzstecker; **wie weit** /// es ist, sieht man nirgends sonst. Also bleibt der Füllstand, und der /// Blitz kommt als kleines Zeichen darüber. public static let chargingBolt = "bolt.fill" /// SF Symbols kennt fünf Füllstufen. Gerundet wird zur nächsten: 60 % soll /// nicht halbleer aussehen und 40 % nicht dreiviertel voll. private static let steps = [0, 25, 50, 75, 100] public static func name(charge: Double) -> String { let percent = Int((min(max(charge, 0), 1) * 100).rounded()) let step = steps.min { abs($0 - percent) < abs($1 - percent) } ?? 0 return "battery.\(step)percent" } }