diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard index a48d6bdf8..acc9e9694 100644 --- a/Mac/Base.lproj/Preferences.storyboard +++ b/Mac/Base.lproj/Preferences.storyboard @@ -32,14 +32,14 @@ - + - + - + @@ -47,7 +47,7 @@ - + @@ -82,7 +82,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -177,7 +177,7 @@ - + @@ -416,16 +416,16 @@ - + - + - + - + @@ -532,7 +532,7 @@ - + @@ -587,16 +587,16 @@ - + - + - + - + @@ -699,7 +699,7 @@ - + diff --git a/Multiplatform/Shared/MainApp.swift b/Multiplatform/Shared/MainApp.swift index d58a25751..9f60267f4 100644 --- a/Multiplatform/Shared/MainApp.swift +++ b/Multiplatform/Shared/MainApp.swift @@ -77,7 +77,6 @@ struct MainApp: App { .navigationTitle("Preferences") .environmentObject(defaults) } - .windowToolbarStyle(UnifiedWindowToolbarStyle()) #endif diff --git a/Multiplatform/macOS/Preferences/MacPreferencesModel.swift b/Multiplatform/macOS/Preferences/MacPreferencesModel.swift new file mode 100644 index 000000000..b0df1edd9 --- /dev/null +++ b/Multiplatform/macOS/Preferences/MacPreferencesModel.swift @@ -0,0 +1,35 @@ +// +// MacPreferencesModel.swift +// Multiplatform macOS +// +// Created by Stuart Breckenridge on 12/7/20. +// Copyright © 2020 Ranchero Software. All rights reserved. +// + +import Foundation + +class MacPreferencesModel { + + enum PreferencePane: Int, CaseIterable { + case general = 0 + case accounts = 1 + case advanced = 2 + + var description: String { + switch self { + case .general: + return "General" + case .accounts: + return "Accounts" + case .advanced: + return "Advanced" + } + } + } + var currentPreferencePane: PreferencePane = PreferencePane.general + + // General Preferences + + + +} diff --git a/Multiplatform/macOS/Preferences/MacPreferencesView.swift b/Multiplatform/macOS/Preferences/MacPreferencesView.swift index 606d7eb27..94c56849a 100644 --- a/Multiplatform/macOS/Preferences/MacPreferencesView.swift +++ b/Multiplatform/macOS/Preferences/MacPreferencesView.swift @@ -7,83 +7,63 @@ import SwiftUI -struct MacPreferenceViewModel { - - enum PreferencePane: Int, CaseIterable { - case general = 0 - case accounts = 1 - case advanced = 2 - - var description: String { - switch self { - case .general: - return "General" - case .accounts: - return "Accounts" - case .advanced: - return "Advanced" - } - } - } - - var currentPreferencePane: PreferencePane = PreferencePane.general - -} struct MacPreferencesView: View { - - @EnvironmentObject var defaults: AppDefaults - @State private var viewModel = MacPreferenceViewModel() - - var body: some View { - VStack { - if viewModel.currentPreferencePane == .general { - AnyView(GeneralPreferencesView().environmentObject(defaults)) - } - else if viewModel.currentPreferencePane == .accounts { - AnyView(AccountsPreferencesView().environmentObject(defaults)) - } - else { - AnyView(AdvancedPreferencesView().environmentObject(defaults)) - } - } - .toolbar { - ToolbarItem { - Button(action: { - viewModel.currentPreferencePane = .general - }, label: { - Image(systemName: "checkmark.rectangle") - Text("General") - }) - } - ToolbarItem { - Button(action: { - viewModel.currentPreferencePane = .accounts - }, label: { - Image(systemName: "network") - Text("Accounts") - }) - } - ToolbarItem { - Button(action: { - viewModel.currentPreferencePane = .advanced - }, label: { - Image(systemName: "gearshape.fill") - Text("Advanced") - }) - } - } - .presentedWindowToolbarStyle(UnifiedCompactWindowToolbarStyle()) - .presentedWindowStyle(TitleBarWindowStyle()) - .navigationTitle(Text(viewModel.currentPreferencePane.description)) - } + + @EnvironmentObject var defaults: AppDefaults + @StateObject private var viewModel = MacPreferencesModel() + + var body: some View { + VStack { + switch viewModel.currentPreferencePane { + case .general: + GeneralPreferencesView() + .environmentObject(defaults) + case .accounts: + AccountsPreferencesView() + .environmentObject(defaults) + case .advanced: + AdvancedPreferencesView() + .environmentObject(defaults) + } + } + .toolbar { + ToolbarItem { + Button(action: { + viewModel.currentPreferencePane = .general + }, label: { + Image(systemName: "checkmark.rectangle") + Text("General") + }) + } + ToolbarItem { + Button(action: { + viewModel.currentPreferencePane = .accounts + }, label: { + Image(systemName: "network") + Text("Accounts") + }) + } + ToolbarItem { + Button(action: { + viewModel.currentPreferencePane = .advanced + }, label: { + Image(systemName: "gearshape.fill") + Text("Advanced") + }) + } + } + .presentedWindowToolbarStyle(UnifiedCompactWindowToolbarStyle()) + .presentedWindowStyle(TitleBarWindowStyle()) + .navigationTitle(Text(viewModel.currentPreferencePane.description)) + } } struct MacPreferencesView_Previews: PreviewProvider { - static var previews: some View { - MacPreferencesView() - } + static var previews: some View { + MacPreferencesView() + } } diff --git a/Multiplatform/macOS/Preferences/View/AccountsPreferencesView.swift b/Multiplatform/macOS/Preferences/Preferences Subviews/AccountsPreferencesView.swift similarity index 100% rename from Multiplatform/macOS/Preferences/View/AccountsPreferencesView.swift rename to Multiplatform/macOS/Preferences/Preferences Subviews/AccountsPreferencesView.swift diff --git a/Multiplatform/macOS/Preferences/View/AdvancedPreferencesView.swift b/Multiplatform/macOS/Preferences/Preferences Subviews/AdvancedPreferencesView.swift similarity index 100% rename from Multiplatform/macOS/Preferences/View/AdvancedPreferencesView.swift rename to Multiplatform/macOS/Preferences/Preferences Subviews/AdvancedPreferencesView.swift diff --git a/Multiplatform/macOS/Preferences/Preferences Subviews/GeneralPreferencesView.swift b/Multiplatform/macOS/Preferences/Preferences Subviews/GeneralPreferencesView.swift new file mode 100644 index 000000000..0eec502b0 --- /dev/null +++ b/Multiplatform/macOS/Preferences/Preferences Subviews/GeneralPreferencesView.swift @@ -0,0 +1,34 @@ +// +// GeneralPreferencesView.swift +// macOS +// +// Created by Stuart Breckenridge on 27/6/20. +// + +import SwiftUI + +struct GeneralPreferencesView: View { + + @EnvironmentObject private var defaults: AppDefaults + + var body: some View { + VStack { + Form { + Picker("Refresh Feeds", + selection: $defaults.interval, + content: { + ForEach(RefreshInterval.allCases, content: { interval in + Text(interval.description()).tag(interval.rawValue) + }) + }) + .frame(width: 300, alignment: .center) + + Toggle("Open webpages in background in browser", isOn: $defaults.openInBrowserInBackground) + + Toggle("Hide Unread Count in Dock", isOn: $defaults.hideDockUnreadCount) + } + Spacer() + }.frame(width: 300, alignment: .center) + } + +} diff --git a/Multiplatform/macOS/Preferences/View/GeneralPreferencesView.swift b/Multiplatform/macOS/Preferences/View/GeneralPreferencesView.swift deleted file mode 100644 index 909e9a682..000000000 --- a/Multiplatform/macOS/Preferences/View/GeneralPreferencesView.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// GeneralPreferencesView.swift -// macOS -// -// Created by Stuart Breckenridge on 27/6/20. -// - -import SwiftUI - -struct GeneralPreferencesView: View { - - @EnvironmentObject private var defaults: AppDefaults - - var body: some View { - VStack { - Form { - Picker("Refresh Feeds", - selection: $defaults.interval, - content: { - ForEach(RefreshInterval.allCases, content: { interval in - Text(interval.description()).tag(interval.rawValue) - }) - }).frame(width: 300, alignment: .center) - - Toggle("Open webpages in background in browser", isOn: $defaults.openInBrowserInBackground) - - Toggle("Hide Unread Count in Dock", isOn: $defaults.hideDockUnreadCount) - } - Spacer() - }.frame(width: 300, alignment: .center) - } - -} diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 968be9eed..3378a408f 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 1717535624BADF33004498C6 /* MacPreferencesModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1717535524BADF33004498C6 /* MacPreferencesModel.swift */; }; 172199C924AB228900A31D04 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172199C824AB228900A31D04 /* SettingsView.swift */; }; 172199ED24AB2E0100A31D04 /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172199EC24AB2E0100A31D04 /* SafariView.swift */; }; 172199F124AB716900A31D04 /* SidebarToolbarModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172199F024AB716900A31D04 /* SidebarToolbarModifier.swift */; }; @@ -1778,6 +1779,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 1717535524BADF33004498C6 /* MacPreferencesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MacPreferencesModel.swift; sourceTree = ""; }; 172199C824AB228900A31D04 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; 172199EC24AB2E0100A31D04 /* SafariView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = ""; }; 172199F024AB716900A31D04 /* SidebarToolbarModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarToolbarModifier.swift; sourceTree = ""; }; @@ -2503,20 +2505,21 @@ 1729528F24AA1A4F00D65E66 /* Preferences */ = { isa = PBXGroup; children = ( + 1717535524BADF33004498C6 /* MacPreferencesModel.swift */, 1729529624AA1CD000D65E66 /* MacPreferencesView.swift */, - 1729529924AA1CE100D65E66 /* View */, + 1729529924AA1CE100D65E66 /* Preferences Subviews */, ); path = Preferences; sourceTree = ""; }; - 1729529924AA1CE100D65E66 /* View */ = { + 1729529924AA1CE100D65E66 /* Preferences Subviews */ = { isa = PBXGroup; children = ( + 1729529224AA1CAA00D65E66 /* GeneralPreferencesView.swift */, 1729529024AA1CAA00D65E66 /* AccountsPreferencesView.swift */, 1729529124AA1CAA00D65E66 /* AdvancedPreferencesView.swift */, - 1729529224AA1CAA00D65E66 /* GeneralPreferencesView.swift */, ); - path = View; + path = "Preferences Subviews"; sourceTree = ""; }; 17930ED224AF10CD00A9BA52 /* Add */ = { @@ -4145,46 +4148,46 @@ TargetAttributes = { 51314636235A7BBE00387FDC = { CreatedOnToolsVersion = 11.2; - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; LastSwiftMigration = 1120; ProvisioningStyle = Automatic; }; 513C5CE5232571C2003D4054 = { CreatedOnToolsVersion = 11.0; - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; }; 518B2ED12351B3DD00400001 = { CreatedOnToolsVersion = 11.2; - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; TestTargetID = 840D617B2029031C009BC708; }; 51C0513C24A77DF800194D5E = { CreatedOnToolsVersion = 12.0; - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; }; 51C0514324A77DF800194D5E = { CreatedOnToolsVersion = 12.0; - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; }; 6581C73220CED60000F4AD34 = { - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; }; 65ED3FA2235DEF6C0081F399 = { - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; }; 65ED4090235DEF770081F399 = { - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; }; 840D617B2029031C009BC708 = { CreatedOnToolsVersion = 9.3; - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.BackgroundModes = { @@ -4194,7 +4197,7 @@ }; 849C645F1ED37A5D003D8FC0 = { CreatedOnToolsVersion = 8.2.1; - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.HardenedRuntime = { @@ -4204,7 +4207,7 @@ }; 849C64701ED37A5D003D8FC0 = { CreatedOnToolsVersion = 8.2.1; - DevelopmentTeam = SHJK2V3AJG; + DevelopmentTeam = FQLBNX3GP7; ProvisioningStyle = Automatic; TestTargetID = 849C645F1ED37A5D003D8FC0; }; @@ -5137,6 +5140,7 @@ 51E4996C24A8762D00B667CB /* ExtractedArticle.swift in Sources */, 51E4990824A808C300B667CB /* RSHTMLMetadata+Extension.swift in Sources */, 51919FF824AB8B7700541E64 /* TimelineView.swift in Sources */, + 1717535624BADF33004498C6 /* MacPreferencesModel.swift in Sources */, 51E4992B24A8676300B667CB /* ArticleArray.swift in Sources */, 51B54AB324B5AC830014348B /* ArticleButtonState.swift in Sources */, 17D5F17224B0BC6700375168 /* SidebarToolbarModel.swift in Sources */,