Files
iOS/Sources/App/Settings/AppIcon.swift
Bruno Pantaleão Gonçalves 287d1ebbb5 Improve icon selection screen to reflect iOS 18+ icons (#3328)
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->

## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->

## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
![CleanShot 2025-01-13 at 15 31
47@2x](https://github.com/user-attachments/assets/a001f5ea-69df-4de4-9f63-f6dceaf4143b)

## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#

## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
2025-01-13 16:48:51 +01:00

112 lines
3.7 KiB
Swift

import Foundation
import Shared
enum AppIcon: String, CaseIterable {
case Release = "release"
case Beta = "beta"
case Dev = "dev"
case Black = "black"
case Blue = "blue"
case CaribbeanGreen = "caribbean-green"
case CornflowerBlue = "cornflower-blue"
case Crimson = "crimson"
case ElectricViolet = "electric-violet"
case FireOrange = "fire-orange"
case Green = "green"
case Classic = "classic"
case OldBeta = "old-beta"
case OldDev = "old-dev"
case OldRelease = "old-release"
case Orange = "orange"
case Pink = "pink"
case Purple = "purple"
case Red = "red"
case White = "white"
case BiPride = "bi_pride"
case POCPride = "POC_pride"
case NonBinary = "non-binary"
case Rainbow = "rainbow"
case Trans = "trans"
var title: String {
switch self {
case .Release:
return L10n.SettingsDetails.General.AppIcon.Enum.release
case .Beta:
return L10n.SettingsDetails.General.AppIcon.Enum.beta
case .Dev:
return L10n.SettingsDetails.General.AppIcon.Enum.dev
case .Black:
return L10n.SettingsDetails.General.AppIcon.Enum.black
case .Blue:
return L10n.SettingsDetails.General.AppIcon.Enum.blue
case .CaribbeanGreen:
return L10n.SettingsDetails.General.AppIcon.Enum.caribbeanGreen
case .CornflowerBlue:
return L10n.SettingsDetails.General.AppIcon.Enum.cornflowerBlue
case .Crimson:
return L10n.SettingsDetails.General.AppIcon.Enum.crimson
case .ElectricViolet:
return L10n.SettingsDetails.General.AppIcon.Enum.electricViolet
case .FireOrange:
return L10n.SettingsDetails.General.AppIcon.Enum.fireOrange
case .Green:
return L10n.SettingsDetails.General.AppIcon.Enum.green
case .Classic:
return L10n.SettingsDetails.General.AppIcon.Enum.classic
case .OldBeta:
return L10n.SettingsDetails.General.AppIcon.Enum.oldBeta
case .OldDev:
return L10n.SettingsDetails.General.AppIcon.Enum.oldDev
case .OldRelease:
return L10n.SettingsDetails.General.AppIcon.Enum.oldRelease
case .Orange:
return L10n.SettingsDetails.General.AppIcon.Enum.orange
case .Pink:
return L10n.SettingsDetails.General.AppIcon.Enum.pink
case .Purple:
return L10n.SettingsDetails.General.AppIcon.Enum.purple
case .Red:
return L10n.SettingsDetails.General.AppIcon.Enum.red
case .White:
return L10n.SettingsDetails.General.AppIcon.Enum.white
case .BiPride:
return L10n.SettingsDetails.General.AppIcon.Enum.prideBi
case .POCPride:
return L10n.SettingsDetails.General.AppIcon.Enum.pridePoc
case .Rainbow:
return L10n.SettingsDetails.General.AppIcon.Enum.prideRainbow
case .Trans:
return L10n.SettingsDetails.General.AppIcon.Enum.prideTrans
case .NonBinary:
return L10n.SettingsDetails.General.AppIcon.Enum.prideNonBinary
}
}
var darkIcon: String {
switch self {
case .Release, .White, .Beta:
return "icon-dark-mode"
default:
return "icon-\(rawValue)"
}
}
var isDefault: Bool {
switch Current.appConfiguration {
case .debug where self == .Dev: return true
case .beta where self == .Beta: return true
case .release where self == .Release: return true
default: return false
}
}
var iconName: String? {
if isDefault {
return nil
} else {
return rawValue
}
}
}