diff --git a/HomeAssistant.xcodeproj/project.pbxproj b/HomeAssistant.xcodeproj/project.pbxproj index 0b375d229..6d8623c95 100644 --- a/HomeAssistant.xcodeproj/project.pbxproj +++ b/HomeAssistant.xcodeproj/project.pbxproj @@ -560,6 +560,8 @@ 420FE84B2B556BB100878E06 /* CarPlayActionsTemplate+Build.swift in Sources */ = {isa = PBXBuildFile; fileRef = 420FE84A2B556BB100878E06 /* CarPlayActionsTemplate+Build.swift */; }; 420FE84E2B556CE500878E06 /* CarPlayEntitiesListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 420FE84D2B556CE500878E06 /* CarPlayEntitiesListViewModel.swift */; }; 420FE8502B556F7500878E06 /* CarPlayEntitiesListTemplate+Build.swift in Sources */ = {isa = PBXBuildFile; fileRef = 420FE84F2B556F7500878E06 /* CarPlayEntitiesListTemplate+Build.swift */; }; + 421155212D3525F500A71630 /* AppIconSelectorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421155202D3525F500A71630 /* AppIconSelectorView.swift */; }; + 421155232D354F3F00A71630 /* AppIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421155222D354F3F00A71630 /* AppIcon.swift */; }; 421326A82C0FC81800C7D059 /* View+ConditionalModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421B1C1B2BD65BFA001ED18C /* View+ConditionalModifier.swift */; }; 4214388C2CF5F1D700E2D44D /* ServerFixture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42F5CABB2B10AE1A00409816 /* ServerFixture.swift */; }; 4214388D2CF5F1D700E2D44D /* ServerFixture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42F5CABB2B10AE1A00409816 /* ServerFixture.swift */; }; @@ -1858,6 +1860,8 @@ 420FE84A2B556BB100878E06 /* CarPlayActionsTemplate+Build.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CarPlayActionsTemplate+Build.swift"; sourceTree = ""; }; 420FE84D2B556CE500878E06 /* CarPlayEntitiesListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarPlayEntitiesListViewModel.swift; sourceTree = ""; }; 420FE84F2B556F7500878E06 /* CarPlayEntitiesListTemplate+Build.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CarPlayEntitiesListTemplate+Build.swift"; sourceTree = ""; }; + 421155202D3525F500A71630 /* AppIconSelectorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconSelectorView.swift; sourceTree = ""; }; + 421155222D354F3F00A71630 /* AppIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIcon.swift; sourceTree = ""; }; 4219606F2CA2AE1600F7134E /* WidgetAssistViewTintedWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetAssistViewTintedWrapper.swift; sourceTree = ""; }; 421B1C152BD65246001ED18C /* WidgetsSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetsSettingsView.swift; sourceTree = ""; }; 421B1C172BD6524E001ED18C /* WidgetsSettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetsSettingsViewModel.swift; sourceTree = ""; }; @@ -3702,6 +3706,14 @@ path = Entities; sourceTree = ""; }; + 4211551F2D3525E800A71630 /* AppIcon */ = { + isa = PBXGroup; + children = ( + 421155202D3525F500A71630 /* AppIconSelectorView.swift */, + ); + path = AppIcon; + sourceTree = ""; + }; 421B1C142BD65238001ED18C /* Widgets */ = { isa = PBXGroup; children = ( @@ -4725,6 +4737,7 @@ B661FB6B226BCC8500E541DD /* Settings */ = { isa = PBXGroup; children = ( + 4211551F2D3525E800A71630 /* AppIcon */, 4278CB862D01F0BE00CFAAC9 /* Gestures */, 42EFFAEA2C8882CC002F10FC /* CarPlay */, 4251AAC32C6CF5D6004CCC9D /* MagicItem */, @@ -4737,6 +4750,7 @@ 11AD2E542528FE1300FBC437 /* Notifications */, 421B1C142BD65238001ED18C /* Widgets */, B626AAF01D8F972800A0D225 /* SettingsDetailViewController.swift */, + 421155222D354F3F00A71630 /* AppIcon.swift */, B6B2E6A4216ACE4400D39A26 /* ActionConfigurator.swift */, B661FB69226BBDA900E541DD /* SettingsViewController.swift */, B641BC1D1E2097EF002CCBC1 /* AboutViewController.swift */, @@ -6838,6 +6852,7 @@ 420C1BB22CF7DA9100AF22E7 /* ClientEventsLogView.swift in Sources */, B626AAF11D8F972800A0D225 /* SettingsDetailViewController.swift in Sources */, 42E6C08C2CE4F7A8007CA622 /* DownloadManagerViewModel.swift in Sources */, + 421155212D3525F500A71630 /* AppIconSelectorView.swift in Sources */, 1127381C2622B6F300F5E312 /* DebugSettingsViewController.swift in Sources */, 42266B252B7A4BA900E94A71 /* BarcodeScannerViewModel.swift in Sources */, 11DE823024FAE66F00E636B8 /* UIWindow+Additions.swift in Sources */, @@ -6860,6 +6875,7 @@ 42F1DA6D2B4ED29C002729BC /* CarPlayPaginatedListTemplate.swift in Sources */, 11DA6B4B27137A60008ADFAF /* InputAccessoryView.swift in Sources */, 4278CB882D01F65300CFAAC9 /* AppleLikeListTopRowHeader.swift in Sources */, + 421155232D354F3F00A71630 /* AppIcon.swift in Sources */, 42FCD0142B9B29740057783F /* ThreadCredentialDetailsView.swift in Sources */, 42B942F62CAA1E5600E36E02 /* PayloadConstants.swift in Sources */, 42E95C552CA44FC90010ECE3 /* SafariWebView.swift in Sources */, diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-beta.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-beta.imageset/Contents.json new file mode 100644 index 000000000..768d46e07 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-beta.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "beta.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-beta.imageset/beta.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-beta.imageset/beta.jpg new file mode 100644 index 000000000..bb67680aa Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-beta.imageset/beta.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-bi_pride.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-bi_pride.imageset/Contents.json new file mode 100644 index 000000000..969ed1849 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-bi_pride.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "bi.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-bi_pride.imageset/bi.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-bi_pride.imageset/bi.jpg new file mode 100644 index 000000000..6605fc9e6 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-bi_pride.imageset/bi.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-black.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-black.imageset/Contents.json new file mode 100644 index 000000000..b243e9d88 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-black.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "black.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-black.imageset/black.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-black.imageset/black.jpg new file mode 100644 index 000000000..567e35c80 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-black.imageset/black.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-blue.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-blue.imageset/Contents.json new file mode 100644 index 000000000..5d1fbd84a --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-blue.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "blue.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-blue.imageset/blue.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-blue.imageset/blue.jpg new file mode 100644 index 000000000..82d74a441 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-blue.imageset/blue.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-caribbean-green.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-caribbean-green.imageset/Contents.json new file mode 100644 index 000000000..cbafc1c0e --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-caribbean-green.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "caribbean-green.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-caribbean-green.imageset/caribbean-green.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-caribbean-green.imageset/caribbean-green.jpg new file mode 100644 index 000000000..522dd89b5 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-caribbean-green.imageset/caribbean-green.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-classic.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-classic.imageset/Contents.json new file mode 100644 index 000000000..6eb999503 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-classic.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "classic.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-classic.imageset/classic.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-classic.imageset/classic.jpg new file mode 100644 index 000000000..d2f2dfee9 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-classic.imageset/classic.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-cornflower-blue.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-cornflower-blue.imageset/Contents.json new file mode 100644 index 000000000..7df61de71 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-cornflower-blue.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "cornflower-blue.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-cornflower-blue.imageset/cornflower-blue.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-cornflower-blue.imageset/cornflower-blue.jpg new file mode 100644 index 000000000..212b41aec Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-cornflower-blue.imageset/cornflower-blue.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-crimson.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-crimson.imageset/Contents.json new file mode 100644 index 000000000..56fffd965 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-crimson.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "crimson.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-crimson.imageset/crimson.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-crimson.imageset/crimson.jpg new file mode 100644 index 000000000..cd81e1c52 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-crimson.imageset/crimson.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dark-mode.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dark-mode.imageset/Contents.json new file mode 100644 index 000000000..b79d3e252 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dark-mode.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "dark-mode.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dark-mode.imageset/dark-mode.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dark-mode.imageset/dark-mode.jpg new file mode 100644 index 000000000..91efa572e Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dark-mode.imageset/dark-mode.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dev.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dev.imageset/Contents.json new file mode 100644 index 000000000..2d78ba09b --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dev.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "dev.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dev.imageset/dev.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dev.imageset/dev.jpg new file mode 100644 index 000000000..e8bee688c Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-dev.imageset/dev.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-electric-violet.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-electric-violet.imageset/Contents.json new file mode 100644 index 000000000..b46ba9c70 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-electric-violet.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "electric-violet.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-electric-violet.imageset/electric-violet.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-electric-violet.imageset/electric-violet.jpg new file mode 100644 index 000000000..22c1af43a Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-electric-violet.imageset/electric-violet.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-fire-orange.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-fire-orange.imageset/Contents.json new file mode 100644 index 000000000..8e3a1434b --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-fire-orange.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "fire-orange.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-fire-orange.imageset/fire-orange.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-fire-orange.imageset/fire-orange.jpg new file mode 100644 index 000000000..25e66fa11 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-fire-orange.imageset/fire-orange.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-green.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-green.imageset/Contents.json new file mode 100644 index 000000000..aa45a511e --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-green.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "green.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-green.imageset/green.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-green.imageset/green.jpg new file mode 100644 index 000000000..96c9a29c7 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-green.imageset/green.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-non-binary.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-non-binary.imageset/Contents.json new file mode 100644 index 000000000..41c2ab449 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-non-binary.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "nonbinary.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-non-binary.imageset/nonbinary.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-non-binary.imageset/nonbinary.jpg new file mode 100644 index 000000000..7271191a6 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-non-binary.imageset/nonbinary.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-beta.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-beta.imageset/Contents.json new file mode 100644 index 000000000..b70f2bdaa --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-beta.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "old-beta.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-beta.imageset/old-beta.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-beta.imageset/old-beta.jpg new file mode 100644 index 000000000..8bfa11309 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-beta.imageset/old-beta.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-dev.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-dev.imageset/Contents.json new file mode 100644 index 000000000..86fd4b2dc --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-dev.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "old-dev.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-dev.imageset/old-dev.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-dev.imageset/old-dev.jpg new file mode 100644 index 000000000..887d25081 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-dev.imageset/old-dev.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-release.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-release.imageset/Contents.json new file mode 100644 index 000000000..af4ed9f21 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-release.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "old-release.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-release.imageset/old-release.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-release.imageset/old-release.jpg new file mode 100644 index 000000000..6bcf01f79 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-old-release.imageset/old-release.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-orange.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-orange.imageset/Contents.json new file mode 100644 index 000000000..173208544 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-orange.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "orange.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-orange.imageset/orange.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-orange.imageset/orange.jpg new file mode 100644 index 000000000..f862d735f Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-orange.imageset/orange.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-pink.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-pink.imageset/Contents.json new file mode 100644 index 000000000..d6f48af00 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-pink.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "pink.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-pink.imageset/pink.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-pink.imageset/pink.jpg new file mode 100644 index 000000000..fece9731e Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-pink.imageset/pink.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-poc_pride.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-poc_pride.imageset/Contents.json new file mode 100644 index 000000000..eb6bb3d7e --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-poc_pride.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "pride.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-poc_pride.imageset/pride.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-poc_pride.imageset/pride.jpg new file mode 100644 index 000000000..70c6f9f39 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-poc_pride.imageset/pride.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-purple.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-purple.imageset/Contents.json new file mode 100644 index 000000000..0de187aa2 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-purple.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "purple.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-purple.imageset/purple.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-purple.imageset/purple.jpg new file mode 100644 index 000000000..9333cb963 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-purple.imageset/purple.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-rainbow.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-rainbow.imageset/Contents.json new file mode 100644 index 000000000..4e887d976 --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-rainbow.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "rainbow.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-rainbow.imageset/rainbow.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-rainbow.imageset/rainbow.jpg new file mode 100644 index 000000000..6de7d8a15 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-rainbow.imageset/rainbow.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-red.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-red.imageset/Contents.json new file mode 100644 index 000000000..dad97a67a --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-red.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "red.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-red.imageset/red.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-red.imageset/red.jpg new file mode 100644 index 000000000..71b46cb2e Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-red.imageset/red.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-release.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-release.imageset/Contents.json new file mode 100644 index 000000000..4e3b27ebf --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-release.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "release.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-release.imageset/release.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-release.imageset/release.jpg new file mode 100644 index 000000000..1e8d08a29 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-release.imageset/release.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-tinted-preview.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-tinted-preview.imageset/Contents.json new file mode 100644 index 000000000..d16c9b52a --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-tinted-preview.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "icon-tinted-preview.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-tinted-preview.imageset/icon-tinted-preview.png b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-tinted-preview.imageset/icon-tinted-preview.png new file mode 100644 index 000000000..74012d27b Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-tinted-preview.imageset/icon-tinted-preview.png differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-trans.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-trans.imageset/Contents.json new file mode 100644 index 000000000..1c346635f --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-trans.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "trans.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-trans.imageset/trans.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-trans.imageset/trans.jpg new file mode 100644 index 000000000..d21fe8121 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-trans.imageset/trans.jpg differ diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-white.imageset/Contents.json b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-white.imageset/Contents.json new file mode 100644 index 000000000..4897fa2ff --- /dev/null +++ b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-white.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "white.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-white.imageset/white.jpg b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-white.imageset/white.jpg new file mode 100644 index 000000000..bdd49a7c1 Binary files /dev/null and b/Sources/App/Resources/Assets.xcassets/AlternateIconsPreview/icon-white.imageset/white.jpg differ diff --git a/Sources/App/Resources/en.lproj/Localizable.strings b/Sources/App/Resources/en.lproj/Localizable.strings index 705d4f4a5..48bb83d5d 100644 --- a/Sources/App/Resources/en.lproj/Localizable.strings +++ b/Sources/App/Resources/en.lproj/Localizable.strings @@ -612,6 +612,8 @@ Home Assistant is free and open source home automation software with a focus on "settings_details.general.app_icon.enum.release" = "Release"; "settings_details.general.app_icon.enum.white" = "White"; "settings_details.general.app_icon.title" = "App Icon"; +"settings_details.general.app_icon.current_selected.title" = "- Selected"; +"settings_details.general.app_icon.explanation.title" = "Each icon has 3 variants (iOS 18+), default, dark and tinted to react according to the selected iOS home screen style. Some icons are the same in dark mode or handled automatically by iOS."; "settings_details.general.device_name.title" = "Device Name"; "settings_details.general.full_screen.title" = "Full Screen"; "settings_details.general.launch_on_login.title" = "Launch App on Login"; @@ -1102,4 +1104,4 @@ Home Assistant is free and open source home automation software with a focus on "widgets.sensors.description" = "Display state of sensors"; "widgets.sensors.not_configured" = "No Sensors Configured"; "widgets.sensors.title" = "Sensors"; -"yes_label" = "Yes"; \ No newline at end of file +"yes_label" = "Yes"; diff --git a/Sources/App/Settings/AppIcon.swift b/Sources/App/Settings/AppIcon.swift new file mode 100644 index 000000000..5099f9f4f --- /dev/null +++ b/Sources/App/Settings/AppIcon.swift @@ -0,0 +1,111 @@ +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 + } + } +} diff --git a/Sources/App/Settings/AppIcon/AppIconSelectorView.swift b/Sources/App/Settings/AppIcon/AppIconSelectorView.swift new file mode 100644 index 000000000..3bb02972f --- /dev/null +++ b/Sources/App/Settings/AppIcon/AppIconSelectorView.swift @@ -0,0 +1,103 @@ +import SFSafeSymbols +import Shared +import SwiftUI + +struct AppIconSelectorView: View { + static var controller = UIHostingController(rootView: AppIconSelectorView()) + struct IconImage { + let id: String + let icon: Image + } + + @State private var selectedIcon: String = "" + @State private var tintedIconPreviewColor: Color = .green + @State private var timer: Timer? + + var body: some View { + List { + Text(L10n.SettingsDetails.General.AppIcon.Explanation.title) + .font(.footnote) + ForEach(AppIcon.allCases, id: \.self) { icon in + makeRow(name: sectionNameForIcon(icon), icons: [ + .init(id: UUID().uuidString, icon: .init("icon-\(icon.rawValue)")), + .init(id: UUID().uuidString, icon: .init(icon.darkIcon)), + ], tag: icon.rawValue) + } + } + .onAppear { + selectedIcon = AppIcon.Release.rawValue + if let altIconName = UIApplication.shared.alternateIconName, + let icon = AppIcon(rawValue: altIconName) { + selectedIcon = icon.rawValue + } + timerToReplaceTintedPeviewColorByRandomColor() + } + .navigationTitle("App Icon") + } + + private func sectionNameForIcon(_ icon: AppIcon) -> String { + var name = icon.title + if icon.rawValue == selectedIcon { + name += " \(L10n.SettingsDetails.General.AppIcon.CurrentSelected.title)" + } + return name + } + + private func makeRow(name: String, icons: [IconImage], tag: String) -> some View { + Section(name) { + Button(action: { + selectedIcon = tag + UIApplication.shared.setAlternateIconName(tag) { error in + Current.Log + .info("set icon to \(String(describing: tag)) error: \(String(describing: error))") + } + }) { + HStack { + Group { + ForEach(icons, id: \.id) { icon in + icon.icon + .resizable() + .clipShape(RoundedRectangle(cornerRadius: 14)) + } + tintedIcon + } + .aspectRatio(contentMode: .fit) + .frame(maxWidth: .infinity, alignment: .center) + .frame(height: 64) + } + .frame(maxWidth: .infinity) + } + .buttonStyle(.plain) + } + } + + private var tintedIcon: some View { + ZStack { + Rectangle() + .foregroundStyle(tintedIconPreviewColor) + .animation(.easeInOut, value: tintedIconPreviewColor) + Image("icon-tinted-preview") + .resizable() + } + .clipShape(RoundedRectangle(cornerRadius: 14)) + } + + private func timerToReplaceTintedPeviewColorByRandomColor() { + timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { _ in + tintedIconPreviewColor = generateRandomColor() + } + } + + private func generateRandomColor() -> Color { + let red = Double.random(in: 0 ... 1) + let green = Double.random(in: 0 ... 1) + let blue = Double.random(in: 0 ... 1) + return Color(red: red, green: green, blue: blue) + } +} + +#Preview { + NavigationView { + AppIconSelectorView() + } +} diff --git a/Sources/App/Settings/SettingsDetailViewController.swift b/Sources/App/Settings/SettingsDetailViewController.swift index 8ef33b789..874ffad76 100644 --- a/Sources/App/Settings/SettingsDetailViewController.swift +++ b/Sources/App/Settings/SettingsDetailViewController.swift @@ -68,44 +68,13 @@ class SettingsDetailViewController: HAFormViewController, TypedRowControllerType +++ Section { $0.hidden = .isCatalyst } - - <<< PushRow("appIcon") { + <<< SettingsButtonRow { $0.hidden = .isCatalyst $0.title = L10n.SettingsDetails.General.AppIcon.title - $0.selectorTitle = $0.title - $0.options = AppIcon.allCases.sorted { a, b in - switch (a.isDefault, b.isDefault) { - case (true, false): return true - case (false, true): return false - default: - // swift sort isn't stable - return AppIcon.allCases.firstIndex(of: a)! < AppIcon.allCases.firstIndex(of: b)! - } - } - $0.value = AppIcon.Release - if let altIconName = UIApplication.shared.alternateIconName, - let icon = AppIcon(rawValue: altIconName) { - $0.value = icon - } - $0.displayValueFor = { $0?.title } - }.onPresent { [weak self] _, to in - to.selectableRowCellUpdate = { cell, row in - cell.height = { 72 } - cell.imageView?.layer.masksToBounds = true - cell.imageView?.layer.cornerRadius = 12.63 - guard let newIcon = row.selectableValue else { return } - cell.imageView?.image = self?.resizeImage( - image: UIImage(named: newIcon.rawValue), - newSize: .init(width: 64, height: 64) - ) - cell.textLabel?.text = newIcon.title - } - }.onChange { row in - let iconName = row.value?.iconName - UIApplication.shared.setAlternateIconName(iconName) { error in - Current.Log - .info("set icon to \(String(describing: iconName)) error: \(String(describing: error))") - } + $0.icon = .squareRoundedIcon + $0.presentationMode = .show(controllerProvider: ControllerProvider.callback { + AppIconSelectorView.controller + }, onDismiss: nil) } +++ Section { @@ -916,106 +885,6 @@ class SettingsDetailViewController: HAFormViewController, TypedRowControllerType } } -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 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 - } - } -} - enum OpenInBrowser: String, CaseIterable { case Chrome case Firefox diff --git a/Sources/Shared/Resources/Swiftgen/Strings.swift b/Sources/Shared/Resources/Swiftgen/Strings.swift index ebf6a0994..9b551eaf1 100644 --- a/Sources/Shared/Resources/Swiftgen/Strings.swift +++ b/Sources/Shared/Resources/Swiftgen/Strings.swift @@ -2121,6 +2121,10 @@ public enum L10n { public enum AppIcon { /// App Icon public static var title: String { return L10n.tr("Localizable", "settings_details.general.app_icon.title") } + public enum CurrentSelected { + /// - Selected + public static var title: String { return L10n.tr("Localizable", "settings_details.general.app_icon.current_selected.title") } + } public enum Enum { /// Beta public static var beta: String { return L10n.tr("Localizable", "settings_details.general.app_icon.enum.beta") } @@ -2177,6 +2181,10 @@ public enum L10n { /// White public static var white: String { return L10n.tr("Localizable", "settings_details.general.app_icon.enum.white") } } + public enum Explanation { + /// Each icon has 3 variants (iOS 18+), default, dark and tinted to react according to the selected iOS home screen style. Some icons are the same in dark mode or handled automatically by iOS. + public static var title: String { return L10n.tr("Localizable", "settings_details.general.app_icon.explanation.title") } + } } public enum DeviceName { /// Device Name