diff --git a/Mist.xcodeproj/project.pbxproj b/Mist.xcodeproj/project.pbxproj index 8d3e273..435f3b8 100644 --- a/Mist.xcodeproj/project.pbxproj +++ b/Mist.xcodeproj/project.pbxproj @@ -55,6 +55,8 @@ 39252ABB285C7D3800956C74 /* SettingsInstallersCatalogsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39252ABA285C7D3800956C74 /* SettingsInstallersCatalogsView.swift */; }; 39252ABD285C8FFC00956C74 /* ListRowInstaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39252ABC285C8FFC00956C74 /* ListRowInstaller.swift */; }; 39252AC3285CA5FE00956C74 /* InstallerExportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39252AC2285CA5FE00956C74 /* InstallerExportView.swift */; }; + 392B30082B8B1D5C00B34BA4 /* SettingsGeneralAppIconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392B30072B8B1D5C00B34BA4 /* SettingsGeneralAppIconView.swift */; }; + 392B300A2B8B1E3900B34BA4 /* AppIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392B30092B8B1E3900B34BA4 /* AppIcon.swift */; }; 3935F47428643AB800760AB0 /* UNNotificationCategory+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3935F47328643AB800760AB0 /* UNNotificationCategory+Extension.swift */; }; 3935F47628643AF000760AB0 /* UNNotificationAction+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3935F47528643AF000760AB0 /* UNNotificationAction+Extension.swift */; }; 3935F47828643B1F00760AB0 /* UserNotificationCenterDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3935F47728643B1F00760AB0 /* UserNotificationCenterDelegate.swift */; }; @@ -221,6 +223,8 @@ 39252ABA285C7D3800956C74 /* SettingsInstallersCatalogsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsInstallersCatalogsView.swift; sourceTree = ""; }; 39252ABC285C8FFC00956C74 /* ListRowInstaller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListRowInstaller.swift; sourceTree = ""; }; 39252AC2285CA5FE00956C74 /* InstallerExportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstallerExportView.swift; sourceTree = ""; }; + 392B30072B8B1D5C00B34BA4 /* SettingsGeneralAppIconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsGeneralAppIconView.swift; sourceTree = ""; }; + 392B30092B8B1E3900B34BA4 /* AppIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIcon.swift; sourceTree = ""; }; 3935F47328643AB800760AB0 /* UNNotificationCategory+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UNNotificationCategory+Extension.swift"; sourceTree = ""; }; 3935F47528643AF000760AB0 /* UNNotificationAction+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UNNotificationAction+Extension.swift"; sourceTree = ""; }; 3935F47728643B1F00760AB0 /* UserNotificationCenterDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserNotificationCenterDelegate.swift; sourceTree = ""; }; @@ -430,6 +434,7 @@ 390451C32856E4A500E0B563 /* Model */ = { isa = PBXGroup; children = ( + 392B30092B8B1E3900B34BA4 /* AppIcon.swift */, 573A23612A28711C00EC9470 /* Architecture.swift */, 39CB5E3C293F5C2E00CFDBB8 /* Catalog.swift */, 390451E428574F0000E0B563 /* CatalogType.swift */, @@ -575,6 +580,7 @@ 3935F47B2864434B00760AB0 /* SettingsGeneralNotificationsView.swift */, 39252AB0285C5C1E00956C74 /* SettingsGeneralRetryView.swift */, 39252AB2285C5D7700956C74 /* SettingsGeneralUpdatesView.swift */, + 392B30072B8B1D5C00B34BA4 /* SettingsGeneralAppIconView.swift */, 39252A88285AD0AB00956C74 /* SettingsHeaderView.swift */, 39FF05F52859850F00A86670 /* SettingsFirmwaresView.swift */, 39252A78285A85AF00956C74 /* SettingsInstallersView.swift */, @@ -862,6 +868,7 @@ 3935F4A6286AD3E100760AB0 /* ActivityHeaderView.swift in Sources */, 3935F480286551FB00760AB0 /* Double+Extension.swift in Sources */, 398BE6B52B62450500FE0C29 /* FloatingAlert.swift in Sources */, + 392B30082B8B1D5C00B34BA4 /* SettingsGeneralAppIconView.swift in Sources */, 39252ABD285C8FFC00956C74 /* ListRowInstaller.swift in Sources */, 3935F49D286ABE4D00760AB0 /* FooterView.swift in Sources */, 390451CC2856F23100E0B563 /* ScaledSystemImage.swift in Sources */, @@ -881,6 +888,7 @@ 39D68B892861369B00A7848C /* InstallerCreator.swift in Sources */, 39CF56312862A8C5006FB5D2 /* InstallMediaCreator.swift in Sources */, 39252AB1285C5C1E00956C74 /* SettingsGeneralRetryView.swift in Sources */, + 392B300A2B8B1E3900B34BA4 /* AppIcon.swift in Sources */, 390451DC28573F1000E0B563 /* Dictionary+Extension.swift in Sources */, 390451D02856F63700E0B563 /* Installer.swift in Sources */, 3935F47628643AF000760AB0 /* UNNotificationAction+Extension.swift in Sources */, @@ -1088,8 +1096,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon - Sonoma"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application"; CODE_SIGN_STYLE = Manual; @@ -1122,8 +1131,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon - Sonoma"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application"; CODE_SIGN_STYLE = Manual; diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/Contents.json b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/Contents.json similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Mist/Assets.xcassets/App Icon - Monterey.appiconset/Contents.json diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128.png new file mode 100755 index 0000000..d3903ef Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128@2x.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128@2x.png new file mode 100755 index 0000000..e88768e Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16.png new file mode 100755 index 0000000..839ae51 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16@2x.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16@2x.png new file mode 100755 index 0000000..33efaae Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256.png new file mode 100755 index 0000000..d5702ad Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256@2x.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256@2x.png new file mode 100755 index 0000000..6893098 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32.png new file mode 100755 index 0000000..33efaae Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32@2x.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32@2x.png new file mode 100755 index 0000000..9af7a08 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512.png new file mode 100755 index 0000000..6893098 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512.png differ diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512@2x.png b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512@2x.png new file mode 100755 index 0000000..5aa3d51 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/Contents.json b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/Contents.json new file mode 100644 index 0000000..64dc11e --- /dev/null +++ b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "filename" : "icon_16x16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "icon_16x16@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "icon_32x32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "icon_32x32@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "icon_128x128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "icon_128x128@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "icon_256x256.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "icon_256x256@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "icon_512x512.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "icon_512x512@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_128x128.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_128x128.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_128x128.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_128x128.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_128x128@2x.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_128x128@2x.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_16x16.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_16x16.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_16x16.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_16x16.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_16x16@2x.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_16x16@2x.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_256x256.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_256x256.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_256x256.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_256x256.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_256x256@2x.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_256x256@2x.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_32x32.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_32x32.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_32x32.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_32x32.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_32x32@2x.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_32x32@2x.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_512x512.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_512x512.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_512x512.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_512x512.png diff --git a/Mist/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png b/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_512x512@2x.png similarity index 100% rename from Mist/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png rename to Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_512x512@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/Contents.json b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/Contents.json new file mode 100644 index 0000000..64dc11e --- /dev/null +++ b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "filename" : "icon_16x16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "icon_16x16@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "icon_32x32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "icon_32x32@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "icon_128x128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "icon_128x128@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "icon_256x256.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "icon_256x256@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "icon_512x512.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "icon_512x512@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128.png new file mode 100755 index 0000000..3a0ad6a Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128@2x.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128@2x.png new file mode 100755 index 0000000..76ff6bd Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16.png new file mode 100755 index 0000000..1739f62 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16@2x.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16@2x.png new file mode 100755 index 0000000..a1b03b0 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256.png new file mode 100755 index 0000000..0ac426c Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256@2x.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256@2x.png new file mode 100755 index 0000000..fb5bccc Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32.png new file mode 100755 index 0000000..a1b03b0 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32@2x.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32@2x.png new file mode 100755 index 0000000..5112184 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512.png new file mode 100755 index 0000000..fb5bccc Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512.png differ diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512@2x.png b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512@2x.png new file mode 100755 index 0000000..49f7ebd Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/App Icon Preview - Monterey.png b/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/App Icon Preview - Monterey.png new file mode 100644 index 0000000..d5702ad Binary files /dev/null and b/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/App Icon Preview - Monterey.png differ diff --git a/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/Contents.json b/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/Contents.json new file mode 100644 index 0000000..3f777f9 --- /dev/null +++ b/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "App Icon Preview - Monterey.png", + "idiom" : "mac" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/App Icon Preview - Sonoma.png b/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/App Icon Preview - Sonoma.png new file mode 100644 index 0000000..db71bd5 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/App Icon Preview - Sonoma.png differ diff --git a/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/Contents.json b/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/Contents.json new file mode 100644 index 0000000..b929aa8 --- /dev/null +++ b/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "App Icon Preview - Sonoma.png", + "idiom" : "mac" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/App Icon Preview - Ventura.png b/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/App Icon Preview - Ventura.png new file mode 100644 index 0000000..0ac426c Binary files /dev/null and b/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/App Icon Preview - Ventura.png differ diff --git a/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/Contents.json b/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/Contents.json new file mode 100644 index 0000000..bf81c9e --- /dev/null +++ b/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "App Icon Preview - Ventura.png", + "idiom" : "mac" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/MistApp.swift b/Mist/MistApp.swift index 12ee0d9..6724090 100644 --- a/Mist/MistApp.swift +++ b/Mist/MistApp.swift @@ -12,6 +12,8 @@ struct MistApp: App { // swiftlint:disable:next weak_delegate @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate: AppDelegate + @AppStorage("appIcon") + private var appIcon: AppIcon = .default @StateObject var sparkleUpdater: SparkleUpdater = .init() @StateObject var logManager: LogManager = .shared @State private var refreshing: Bool = false @@ -23,6 +25,9 @@ struct MistApp: App { .onReceive(NotificationCenter.default.publisher(for: NSApplication.willUpdateNotification)) { _ in hideZoomButton() } + .onAppear { + setAppIcon() + } } .fixedWindow() .commands { @@ -38,7 +43,7 @@ struct MistApp: App { .handlesExternalEvents(matching: ["log"]) } - func hideZoomButton() { + private func hideZoomButton() { for window in NSApplication.shared.windows { guard let button: NSButton = window.standardWindowButton(NSWindow.ButtonType.zoomButton) else { continue @@ -47,4 +52,8 @@ struct MistApp: App { button.isEnabled = false } } + + private func setAppIcon() { + NSApplication.shared.applicationIconImage = NSImage(named: appIcon.name) + } } diff --git a/Mist/Model/AppIcon.swift b/Mist/Model/AppIcon.swift new file mode 100644 index 0000000..8fadcef --- /dev/null +++ b/Mist/Model/AppIcon.swift @@ -0,0 +1,32 @@ +// +// AppIcon.swift +// Mist +// +// Created by Nindi Gill on 25/2/2024. +// + +import Foundation + +enum AppIcon: String, CaseIterable, Identifiable { + case monterey = "Monterey" + case ventura = "Ventura" + case sonoma = "Sonoma" + + static let `default`: AppIcon = .sonoma + + var id: String { + rawValue + } + + var description: String { + rawValue + } + + var name: String { + "App Icon - \(rawValue)" + } + + var previewName: String { + "App Icon Preview - \(rawValue)" + } +} diff --git a/Mist/Views/Settings/SettingsGeneralAppIconView.swift b/Mist/Views/Settings/SettingsGeneralAppIconView.swift new file mode 100644 index 0000000..cb801fb --- /dev/null +++ b/Mist/Views/Settings/SettingsGeneralAppIconView.swift @@ -0,0 +1,45 @@ +// +// SettingsGeneralAppIconView.swift +// Mist +// +// Created by Nindi Gill on 25/2/2024. +// + +import SwiftUI + +struct SettingsGeneralAppIconView: View { + @Binding var appIcon: AppIcon + private let length: CGFloat = 64 + + var body: some View { + VStack { + HStack { + Picker("App Icon:", selection: $appIcon) { + ForEach(AppIcon.allCases) { icon in + VStack { + ScaledImage(name: icon.previewName, length: length) + Text(icon.description) + } + .padding(.trailing) + .tag(icon) + } + } + .pickerStyle(.radioGroup) + .horizontalRadioGroupLayout() + } + } + .onChange(of: appIcon) { icon in + setAppIcon(appIcon: icon) + } + } + + private func setAppIcon(appIcon: AppIcon) { + NSApplication.shared.applicationIconImage = NSImage(named: appIcon.name) + } +} + +struct SettingsGeneralAppIconView_Previews: PreviewProvider { + static var previews: some View { + SettingsGeneralAppIconView(appIcon: .constant(.default)) + } +} diff --git a/Mist/Views/Settings/SettingsGeneralView.swift b/Mist/Views/Settings/SettingsGeneralView.swift index c3a93ed..9992725 100644 --- a/Mist/Views/Settings/SettingsGeneralView.swift +++ b/Mist/Views/Settings/SettingsGeneralView.swift @@ -18,6 +18,8 @@ struct SettingsGeneralView: View { private var enableAutomaticChecks: Bool = true @AppStorage("SUScheduledCheckInterval") private var scheduledCheckInterval: Int = 86_400 + @AppStorage("appIcon") + private var appIcon: AppIcon = .default @ObservedObject var sparkleUpdater: SparkleUpdater private let enableNotificationsDefault: Bool = false private let retriesDefault: Int = 10 @@ -43,6 +45,8 @@ struct SettingsGeneralView: View { PaddedDivider() SettingsGeneralUpdatesView(sparkleUpdater: sparkleUpdater, enable: $enableAutomaticChecks, interval: $scheduledCheckInterval, width: width) PaddedDivider() + SettingsGeneralAppIconView(appIcon: $appIcon) + PaddedDivider() ResetToDefaultButton { reset() } @@ -56,6 +60,7 @@ struct SettingsGeneralView: View { retryDelay = retryDelayDefault enableAutomaticChecks = enableAutomaticChecksDefault scheduledCheckInterval = scheduledCheckIntervalDefault + appIcon = .default } }