From 202212f4173723ade4cdfd1010e2294837a4df57 Mon Sep 17 00:00:00 2001 From: Matt Kiazyk Date: Tue, 26 Jan 2021 22:45:43 -0600 Subject: [PATCH] Updates PreferencesView To use built in Settings Scene --- Xcodes.xcodeproj/project.pbxproj | 4 ++ .../Preferences/AdvancedPreferencePane.swift | 4 -- .../Preferences/GeneralPreferencePane.swift | 6 +-- .../Preferences/PreferencesView.swift | 31 +++++++++++++ .../Preferences/UpdatesPreferencePane.swift | 4 -- Xcodes/XcodesApp.swift | 45 +++---------------- 6 files changed, 43 insertions(+), 51 deletions(-) create mode 100644 Xcodes/Frontend/Preferences/PreferencesView.swift diff --git a/Xcodes.xcodeproj/project.pbxproj b/Xcodes.xcodeproj/project.pbxproj index 9d54250..e016f2f 100644 --- a/Xcodes.xcodeproj/project.pbxproj +++ b/Xcodes.xcodeproj/project.pbxproj @@ -100,6 +100,7 @@ CAFE4AB425B7D3AF0064FE51 /* AdvancedPreferencePane.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAFE4AB325B7D3AF0064FE51 /* AdvancedPreferencePane.swift */; }; CAFE4ABC25B7D54B0064FE51 /* UpdatesPreferencePane.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAFE4ABB25B7D54B0064FE51 /* UpdatesPreferencePane.swift */; }; CAFFFED8259CDA5000903F81 /* XcodeListViewRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAFFFED7259CDA5000903F81 /* XcodeListViewRow.swift */; }; + E8977EA325C11E1500835F80 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8977EA225C11E1500835F80 /* PreferencesView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -260,6 +261,7 @@ CAFE4ABB25B7D54B0064FE51 /* UpdatesPreferencePane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdatesPreferencePane.swift; sourceTree = ""; }; CAFFFED7259CDA5000903F81 /* XcodeListViewRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XcodeListViewRow.swift; sourceTree = ""; }; CAFFFEEE259CEAC400903F81 /* RingProgressViewStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RingProgressViewStyle.swift; sourceTree = ""; }; + E8977EA225C11E1500835F80 /* PreferencesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -542,6 +544,7 @@ CAFE4AB325B7D3AF0064FE51 /* AdvancedPreferencePane.swift */, CAFE4AAB25B7D2C70064FE51 /* GeneralPreferencePane.swift */, CAFE4ABB25B7D54B0064FE51 /* UpdatesPreferencePane.swift */, + E8977EA225C11E1500835F80 /* PreferencesView.swift */, ); path = Preferences; sourceTree = ""; @@ -794,6 +797,7 @@ CAE424B4259A764700B8B246 /* AppState+Install.swift in Sources */, CAE42487259A68A300B8B246 /* XcodeListCategory.swift in Sources */, CAA858C425A2BE4E00ACF8C0 /* Downloader.swift in Sources */, + E8977EA325C11E1500835F80 /* PreferencesView.swift in Sources */, CA9FF87B2595293E00E47BAF /* DataSource.swift in Sources */, CABFA9C92592EEEA00380FEE /* URLRequest+Apple.swift in Sources */, CABFAA432593104F00380FEE /* AboutView.swift in Sources */, diff --git a/Xcodes/Frontend/Preferences/AdvancedPreferencePane.swift b/Xcodes/Frontend/Preferences/AdvancedPreferencePane.swift index 42a162e..1b1d90d 100644 --- a/Xcodes/Frontend/Preferences/AdvancedPreferencePane.swift +++ b/Xcodes/Frontend/Preferences/AdvancedPreferencePane.swift @@ -2,10 +2,6 @@ import AppleAPI import Preferences import SwiftUI -extension Preferences.PaneIdentifier { - static let advanced = Self("advanced") -} - struct AdvancedPreferencePane: View { @EnvironmentObject var appState: AppState @AppStorage("dataSource") var dataSource: DataSource = .xcodeReleases diff --git a/Xcodes/Frontend/Preferences/GeneralPreferencePane.swift b/Xcodes/Frontend/Preferences/GeneralPreferencePane.swift index ac74ee7..2bb7e81 100644 --- a/Xcodes/Frontend/Preferences/GeneralPreferencePane.swift +++ b/Xcodes/Frontend/Preferences/GeneralPreferencePane.swift @@ -2,13 +2,9 @@ import AppleAPI import Preferences import SwiftUI -extension Preferences.PaneIdentifier { - static let general = Self("general") -} - struct GeneralPreferencePane: View { @EnvironmentObject var appState: AppState - + var body: some View { Preferences.Container(contentWidth: 400.0) { Preferences.Section(title: "Apple ID") { diff --git a/Xcodes/Frontend/Preferences/PreferencesView.swift b/Xcodes/Frontend/Preferences/PreferencesView.swift new file mode 100644 index 0000000..8e896aa --- /dev/null +++ b/Xcodes/Frontend/Preferences/PreferencesView.swift @@ -0,0 +1,31 @@ +import SwiftUI + +struct PreferencesView: View { + private enum Tabs: Hashable { + case general, updates, advanced + } + @EnvironmentObject var appState: AppState + + var body: some View { + TabView { + GeneralPreferencePane() + .environmentObject(appState) + .tabItem { + Label("General", systemImage: "gearshape") + } + .tag(Tabs.general) + UpdatesPreferencePane() + .tabItem { + Label("Updates", systemImage: "arrow.triangle.2.circlepath.circle") + } + .tag(Tabs.updates) + AdvancedPreferencePane() + .environmentObject(appState) + .tabItem { + Label("Advanced", systemImage: "gearshape.2") + } + .tag(Tabs.advanced) + } + .padding(20) + } +} diff --git a/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift b/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift index 58a6c87..4a29e6e 100644 --- a/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift +++ b/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift @@ -3,10 +3,6 @@ import Preferences import Sparkle import SwiftUI -extension Preferences.PaneIdentifier { - static let updates = Self("updates") -} - struct UpdatesPreferencePane: View { @StateObject var updater = ObservableUpdater() diff --git a/Xcodes/XcodesApp.swift b/Xcodes/XcodesApp.swift index 4a8ab64..188fbe9 100644 --- a/Xcodes/XcodesApp.swift +++ b/Xcodes/XcodesApp.swift @@ -36,13 +36,7 @@ struct XcodesApp: App { appDelegate.checkForUpdates() } } - CommandGroup(replacing: .appSettings) { - Button("Preferences...") { - showPreferencesWindow() - } - .keyboardShortcut(KeyEquivalent(","), modifiers: .command) - } - + CommandGroup(after: CommandGroupPlacement.newItem) { Button("Refresh") { appState.update() @@ -72,37 +66,12 @@ struct XcodesApp: App { } } } - } - - private func showPreferencesWindow() { - PreferencesWindowController( - panes: [ - Preferences.Pane( - identifier: .general, - title: "General", - toolbarIcon: NSImage(systemSymbolName: "gearshape", accessibilityDescription: "General")! - ) { - GeneralPreferencePane() - .environmentObject(appState) - }, - Preferences.Pane( - identifier: .updates, - title: "Updates", - toolbarIcon: NSImage(systemSymbolName: "arrow.triangle.2.circlepath.circle", accessibilityDescription: "Updates")! - ) { - UpdatesPreferencePane() - }, - Preferences.Pane( - identifier: .advanced, - title: "Advanced", - toolbarIcon: NSImage(systemSymbolName: "gearshape.2", accessibilityDescription: "Advanced")! - ) { - AdvancedPreferencePane() - .environmentObject(appState) - }, - ] - ) - .show() + #if os(macOS) + Settings { + PreferencesView() + .environmentObject(appState) + } + #endif } }