@@ -2,8 +2,8 @@ import AppKit
22import Path
33import SwiftUI
44import Version
5- import struct XCModel. SDKs
65import struct XCModel. Compilers
6+ import struct XCModel. SDKs
77
88struct InfoPane : View {
99 @EnvironmentObject var appState : AppState
@@ -18,12 +18,12 @@ struct InfoPane: View {
1818
1919 Text ( verbatim: " Xcode \( xcode. description) \( xcode. version. buildMetadataIdentifiersDisplay) " )
2020 . font ( . title)
21-
21+
2222 switch xcode. installState {
2323 case . notInstalled:
2424 InstallButton ( xcode: xcode)
2525 downloadFileSize ( for: xcode)
26- case . installing( let installationStep) :
26+ case let . installing( installationStep) :
2727 InstallationStepDetailView ( installationStep: installationStep)
2828 . fixedSize ( horizontal: false , vertical: true )
2929 CancelInstallButton ( xcode: xcode)
@@ -36,32 +36,32 @@ struct InfoPane: View {
3636 . buttonStyle ( PlainButtonStyle ( ) )
3737 . help ( " RevealInFinder " )
3838 }
39-
39+
4040 HStack {
4141 SelectButton ( xcode: xcode)
4242 . disabled ( xcode. selected)
4343 . help ( " Selected " )
44-
44+
4545 OpenButton ( xcode: xcode)
4646 . help ( " Open " )
47-
47+
4848 Spacer ( )
4949 UninstallButton ( xcode: xcode)
5050 }
5151 }
52-
52+
5353 Divider ( )
5454
55- Group {
55+ Group {
5656 ReleaseNotesView ( url: xcode. releaseNotesURL)
5757 ReleaseDateView ( date: xcode. releaseDate)
5858 . frame ( maxWidth: . infinity, alignment: . leading)
5959 IdenticalBuildsView ( builds: xcode. identicalBuilds)
6060 CompatibilityView ( requiredMacOSVersion: xcode. requiredMacOSVersion)
61- sdks ( for : xcode)
61+ SDKsView ( sdks : xcode. sdks )
6262 compilers ( for: xcode)
6363 }
64-
64+
6565 Spacer ( )
6666 }
6767 . padding ( )
@@ -72,42 +72,15 @@ struct InfoPane: View {
7272 . frame ( minWidth: 200 , maxWidth: . infinity)
7373 }
7474 }
75-
76- @ViewBuilder
77- private func sdks( for xcode: Xcode ) -> some View {
78- if let sdks = xcode. sdks {
79- VStack ( alignment: . leading) {
80- Text ( " SDKs " )
81- . font ( . headline)
82- . frame ( maxWidth: . infinity, alignment: . leading)
83-
84- ForEach ( [
85- ( " macOS " , \SDKs . macOS) ,
86- ( " iOS " , \. iOS) ,
87- ( " watchOS " , \. watchOS) ,
88- ( " tvOS " , \. tvOS) ,
89- ( " visionOS " , \. visionOS) ,
90- ] , id: \. 0 ) { row in
91- if let sdk = sdks [ keyPath: row. 1 ] {
92- Text ( " \( row. 0 ) : \( sdk. compactMap { $0. number } . joined ( separator: " , " ) ) " )
93- . font ( . subheadline)
94- . frame ( maxWidth: . infinity, alignment: . leading)
95- }
96- }
97- }
98- } else {
99- EmptyView ( )
100- }
101- }
102-
75+
10376 @ViewBuilder
10477 private func compilers( for xcode: Xcode ) -> some View {
10578 if let compilers = xcode. compilers {
10679 VStack ( alignment: . leading) {
10780 Text ( " Compilers " )
10881 . font ( . headline)
10982 . frame ( maxWidth: . infinity, alignment: . leading)
110-
83+
11184 ForEach ( [
11285 ( " Swift " , \Compilers . swift) ,
11386 ( " Clang " , \. clang) ,
@@ -126,7 +99,7 @@ struct InfoPane: View {
12699 EmptyView ( )
127100 }
128101 }
129-
102+
130103 @ViewBuilder
131104 private func downloadFileSize( for xcode: Xcode ) -> some View {
132105 // if we've downloaded it no need to show the download size
@@ -143,7 +116,7 @@ struct InfoPane: View {
143116 EmptyView ( )
144117 }
145118 }
146-
119+
147120 @ViewBuilder
148121 private var empty : some View {
149122 Text ( " NoXcodeSelected " )
@@ -181,8 +154,8 @@ struct InfoPane_Previews: PreviewProvider {
181154 clang: . init( number: " 7.3 " ) ,
182155 swift: . init( number: " 5.3.2 " )
183156 ) ,
184- downloadFileSize: 242342424
185- )
157+ downloadFileSize: 242_342_424
158+ ) ,
186159 ]
187160 } )
188161 . previewDisplayName ( " Populated, Installed, Selected " )
@@ -208,7 +181,8 @@ struct InfoPane_Previews: PreviewProvider {
208181 clang: . init( number: " 7.3 " ) ,
209182 swift: . init( number: " 5.3.2 " )
210183 ) ,
211- downloadFileSize: 242342424 )
184+ downloadFileSize: 242_342_424
185+ ) ,
212186 ]
213187 } )
214188 . previewDisplayName ( " Populated, Installed, Unselected " )
@@ -234,7 +208,8 @@ struct InfoPane_Previews: PreviewProvider {
234208 clang: . init( number: " 7.3 " ) ,
235209 swift: . init( number: " 5.3.2 " )
236210 ) ,
237- downloadFileSize: 242342424 )
211+ downloadFileSize: 242_342_424
212+ ) ,
238213 ]
239214 } )
240215 . previewDisplayName ( " Populated, Uninstalled " )
@@ -248,7 +223,8 @@ struct InfoPane_Previews: PreviewProvider {
248223 selected: false ,
249224 icon: nil ,
250225 sdks: nil ,
251- compilers: nil )
226+ compilers: nil
227+ ) ,
252228 ]
253229 } )
254230 . previewDisplayName ( " Basic, installed " )
@@ -258,15 +234,16 @@ struct InfoPane_Previews: PreviewProvider {
258234 $0. allXcodes = [
259235 . init(
260236 version: Version ( major: 12 , minor: 3 , patch: 1 , buildMetadataIdentifiers: [ " 1234A " ] ) ,
261- installState: . installing( . downloading( progress: configure ( Progress ( totalUnitCount: 100 ) ) { $0. completedUnitCount = 40 ; $0. throughput = 232323232 ; $0. fileCompletedCount = 2323004 ; $0. fileTotalCount = 1193939393 } ) ) ,
237+ installState: . installing( . downloading( progress: configure ( Progress ( totalUnitCount: 100 ) ) { $0. completedUnitCount = 40 ; $0. throughput = 232_323_232 ; $0. fileCompletedCount = 2_323_004 ; $0. fileTotalCount = 1_193_939_393 } ) ) ,
262238 selected: false ,
263239 icon: nil ,
264240 sdks: nil ,
265- compilers: nil )
241+ compilers: nil
242+ ) ,
266243 ]
267244 } )
268245 . previewDisplayName ( " Basic, installing " )
269-
246+
270247 InfoPane ( selectedXcodeID: nil )
271248 . environmentObject ( configure ( AppState ( ) ) {
272249 $0. allXcodes = [
0 commit comments