diff --git a/Multiplatform/Shared/SceneNavigationView.swift b/Multiplatform/Shared/SceneNavigationView.swift index 96a360523..fecdc5cec 100644 --- a/Multiplatform/Shared/SceneNavigationView.swift +++ b/Multiplatform/Shared/SceneNavigationView.swift @@ -14,25 +14,17 @@ struct SceneNavigationView: View { @Environment(\.horizontalSizeClass) private var horizontalSizeClass #endif - @ViewBuilder var sidebar: some View { - #if os(iOS) - if horizontalSizeClass == .compact { - CompactNavigationView() - } else { - SidebarView() - } - #else - SidebarView() - #endif - } - var body: some View { NavigationView { #if os(macOS) - sidebar + RegularSidebarContainerView() .frame(minWidth: 100, idealWidth: 150, maxWidth: 200, maxHeight: .infinity) #else - sidebar + if horizontalSizeClass == .compact { + CompactSidebarContainerView() + } else { + RegularSidebarContainerView() + } #endif #if os(iOS) diff --git a/Multiplatform/Shared/Sidebar/CompactNavigationView.swift b/Multiplatform/Shared/Sidebar/CompactNavigationView.swift deleted file mode 100644 index 44b55ecc4..000000000 --- a/Multiplatform/Shared/Sidebar/CompactNavigationView.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// CompactNavigationView.swift -// Multiplatform iOS -// -// Created by Stuart Breckenridge on 29/6/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import SwiftUI - -struct CompactNavigationView: View { - - @EnvironmentObject private var sceneModel: SceneModel - @StateObject private var sidebarModel = SidebarModel() - - var body: some View { - List { - ForEach(sidebarModel.sidebarItems) { section in - OutlineGroup(sidebarModel.sidebarItems, children: \.children) { sidebarItem in - Text(sidebarItem.nameForDisplay) - } - } - } - .navigationBarTitle(Text("Feeds")) - .listStyle(PlainListStyle()) - .onAppear { - sceneModel.sidebarModel = sidebarModel - sidebarModel.delegate = sceneModel - sidebarModel.rebuildSidebarItems() - } - - } - - -} - -struct CompactSidebarView_Previews: PreviewProvider { - static var previews: some View { - CompactNavigationView() - } -} diff --git a/Multiplatform/Shared/Sidebar/CompactSidebarContainerView.swift b/Multiplatform/Shared/Sidebar/CompactSidebarContainerView.swift new file mode 100644 index 000000000..ef4d32184 --- /dev/null +++ b/Multiplatform/Shared/Sidebar/CompactSidebarContainerView.swift @@ -0,0 +1,37 @@ +// +// CompactNavigationView.swift +// Multiplatform iOS +// +// Created by Stuart Breckenridge on 29/6/20. +// Copyright © 2020 Ranchero Software. All rights reserved. +// + +import SwiftUI + +struct CompactSidebarContainerView: View { + + @EnvironmentObject private var sceneModel: SceneModel + @StateObject private var sidebarModel = SidebarModel() + + var body: some View { + SidebarView() + .environmentObject(sidebarModel) + .navigationBarTitle(Text("Feeds")) + .listStyle(PlainListStyle()) + .onAppear { + sceneModel.sidebarModel = sidebarModel + sidebarModel.delegate = sceneModel + sidebarModel.rebuildSidebarItems() + } + + } + + +} + +struct CompactSidebarContainerView_Previews: PreviewProvider { + static var previews: some View { + CompactSidebarContainerView() + .environmentObject(SceneModel()) + } +} diff --git a/Multiplatform/Shared/Sidebar/RegularSidebarContainerView.swift b/Multiplatform/Shared/Sidebar/RegularSidebarContainerView.swift new file mode 100644 index 000000000..91d41e11b --- /dev/null +++ b/Multiplatform/Shared/Sidebar/RegularSidebarContainerView.swift @@ -0,0 +1,34 @@ +// +// SidebarView.swift +// NetNewsWire +// +// Created by Maurice Parker on 6/28/20. +// Copyright © 2020 Ranchero Software. All rights reserved. +// + +import SwiftUI + +struct RegularSidebarContainerView: View { + + @EnvironmentObject private var sceneModel: SceneModel + @StateObject private var sidebarModel = SidebarModel() + + var body: some View { + SidebarView() + .environmentObject(sidebarModel) + .navigationTitle(Text("Feeds")) + .listStyle(SidebarListStyle()) + .onAppear { + sceneModel.sidebarModel = sidebarModel + sidebarModel.delegate = sceneModel + sidebarModel.rebuildSidebarItems() + } + } +} + +struct RegularSidebarContainerView_Previews: PreviewProvider { + static var previews: some View { + RegularSidebarContainerView() + .environmentObject(SceneModel()) + } +} diff --git a/Multiplatform/Shared/Sidebar/SidebarView.swift b/Multiplatform/Shared/Sidebar/SidebarView.swift index f662ce915..0af760cb5 100644 --- a/Multiplatform/Shared/Sidebar/SidebarView.swift +++ b/Multiplatform/Shared/Sidebar/SidebarView.swift @@ -2,7 +2,7 @@ // SidebarView.swift // NetNewsWire // -// Created by Maurice Parker on 6/28/20. +// Created by Maurice Parker on 6/29/20. // Copyright © 2020 Ranchero Software. All rights reserved. // @@ -10,10 +10,9 @@ import SwiftUI struct SidebarView: View { - @EnvironmentObject private var sceneModel: SceneModel - @StateObject private var sidebarModel = SidebarModel() + @EnvironmentObject private var sidebarModel: SidebarModel - @ViewBuilder var body: some View { + var body: some View { List { ForEach(sidebarModel.sidebarItems) { section in OutlineGroup(sidebarModel.sidebarItems, children: \.children) { sidebarItem in @@ -21,20 +20,6 @@ struct SidebarView: View { } } } - .navigationTitle(Text("Feeds")) - .listStyle(SidebarListStyle()) - .onAppear { - sceneModel.sidebarModel = sidebarModel - sidebarModel.delegate = sceneModel - sidebarModel.rebuildSidebarItems() - } - } -} - -struct SidebarView_Previews: PreviewProvider { - static var previews: some View { - SidebarView() - .environmentObject(SceneModel()) - } + } diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 2f96869e5..53baf34f0 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -13,7 +13,7 @@ 1729529524AA1CAA00D65E66 /* GeneralPreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729529224AA1CAA00D65E66 /* GeneralPreferencesView.swift */; }; 1729529724AA1CD000D65E66 /* MacPreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729529624AA1CD000D65E66 /* MacPreferencesView.swift */; }; 1729529B24AA1FD200D65E66 /* MacSearchField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729529A24AA1FD200D65E66 /* MacSearchField.swift */; }; - 172952B024AA287100D65E66 /* CompactNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172952AF24AA287100D65E66 /* CompactNavigationView.swift */; }; + 172952B024AA287100D65E66 /* CompactSidebarContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172952AF24AA287100D65E66 /* CompactSidebarContainerView.swift */; }; 179DB1DFBCF9177104B12E0F /* AccountsNewsBlurWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */; }; 179DB3CE822BFCC2D774D9F4 /* AccountsNewsBlurWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */; }; 3B3A32A5238B820900314204 /* FeedWranglerAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A328B238B820900314204 /* FeedWranglerAccountViewController.swift */; }; @@ -206,6 +206,8 @@ 518C3193237B00D9004D740F /* DetailIconSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5141E7552374A2890013FF27 /* DetailIconSchemeHandler.swift */; }; 518C3194237B00DA004D740F /* DetailIconSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5141E7552374A2890013FF27 /* DetailIconSchemeHandler.swift */; }; 518ED21D23D0F26000E0A862 /* UIViewController-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 518ED21C23D0F26000E0A862 /* UIViewController-Extensions.swift */; }; + 51919FA624AA64B000541E64 /* SidebarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51919FA524AA64B000541E64 /* SidebarView.swift */; }; + 51919FA724AA64B000541E64 /* SidebarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51919FA524AA64B000541E64 /* SidebarView.swift */; }; 51934CCB230F599B006127BE /* InteractiveNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51934CC1230F5963006127BE /* InteractiveNavigationController.swift */; }; 51934CCE2310792F006127BE /* ActivityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51934CCD2310792F006127BE /* ActivityManager.swift */; }; 51938DF2231AFC660055A1A0 /* SearchTimelineFeedDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51938DF1231AFC660055A1A0 /* SearchTimelineFeedDelegate.swift */; }; @@ -538,8 +540,8 @@ 51E499D924A912C200B667CB /* SceneModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E499D724A912C200B667CB /* SceneModel.swift */; }; 51E499FD24A9137600B667CB /* SidebarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E499FC24A9137600B667CB /* SidebarModel.swift */; }; 51E499FE24A9137600B667CB /* SidebarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E499FC24A9137600B667CB /* SidebarModel.swift */; }; - 51E49A0024A91FC100B667CB /* SidebarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E499FF24A91FC100B667CB /* SidebarView.swift */; }; - 51E49A0124A91FC100B667CB /* SidebarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E499FF24A91FC100B667CB /* SidebarView.swift */; }; + 51E49A0024A91FC100B667CB /* RegularSidebarContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E499FF24A91FC100B667CB /* RegularSidebarContainerView.swift */; }; + 51E49A0124A91FC100B667CB /* RegularSidebarContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E499FF24A91FC100B667CB /* RegularSidebarContainerView.swift */; }; 51E49A0324A91FF600B667CB /* SceneNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E49A0224A91FF600B667CB /* SceneNavigationView.swift */; }; 51E49A0424A91FF600B667CB /* SceneNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E49A0224A91FF600B667CB /* SceneNavigationView.swift */; }; 51E4DAED2425F6940091EB5B /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E4DAEC2425F6940091EB5B /* CloudKit.framework */; }; @@ -1672,7 +1674,7 @@ 1729529224AA1CAA00D65E66 /* GeneralPreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneralPreferencesView.swift; sourceTree = ""; }; 1729529624AA1CD000D65E66 /* MacPreferencesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MacPreferencesView.swift; sourceTree = ""; }; 1729529A24AA1FD200D65E66 /* MacSearchField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MacSearchField.swift; sourceTree = ""; }; - 172952AF24AA287100D65E66 /* CompactNavigationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompactNavigationView.swift; sourceTree = ""; }; + 172952AF24AA287100D65E66 /* CompactSidebarContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompactSidebarContainerView.swift; sourceTree = ""; }; 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsNewsBlurWindowController.swift; sourceTree = ""; }; 3B3A328B238B820900314204 /* FeedWranglerAccountViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAccountViewController.swift; sourceTree = ""; }; 3B826DB02385C84800FC1ADB /* AccountsFeedWrangler.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsFeedWrangler.xib; sourceTree = ""; }; @@ -1794,6 +1796,7 @@ 518B2ED22351B3DD00400001 /* NetNewsWire-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "NetNewsWire-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 518B2EE92351B4C200400001 /* NetNewsWire_iOSTests_target.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = NetNewsWire_iOSTests_target.xcconfig; sourceTree = ""; }; 518ED21C23D0F26000E0A862 /* UIViewController-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController-Extensions.swift"; sourceTree = ""; }; + 51919FA524AA64B000541E64 /* SidebarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarView.swift; sourceTree = ""; }; 51934CC1230F5963006127BE /* InteractiveNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InteractiveNavigationController.swift; sourceTree = ""; }; 51934CCD2310792F006127BE /* ActivityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityManager.swift; sourceTree = ""; }; 51938DF1231AFC660055A1A0 /* SearchTimelineFeedDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchTimelineFeedDelegate.swift; sourceTree = ""; }; @@ -1885,7 +1888,7 @@ 51E4995824A873F900B667CB /* ErrorHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorHandler.swift; sourceTree = ""; }; 51E499D724A912C200B667CB /* SceneModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneModel.swift; sourceTree = ""; }; 51E499FC24A9137600B667CB /* SidebarModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarModel.swift; sourceTree = ""; }; - 51E499FF24A91FC100B667CB /* SidebarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarView.swift; sourceTree = ""; }; + 51E499FF24A91FC100B667CB /* RegularSidebarContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegularSidebarContainerView.swift; sourceTree = ""; }; 51E49A0224A91FF600B667CB /* SceneNavigationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneNavigationView.swift; sourceTree = ""; }; 51E4DAEC2425F6940091EB5B /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; 51E4DB072425F9EB0091EB5B /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/System/Library/Frameworks/CloudKit.framework; sourceTree = DEVELOPER_DIR; }; @@ -2802,10 +2805,11 @@ 51E499FB24A9135A00B667CB /* Sidebar */ = { isa = PBXGroup; children = ( - 51E499FC24A9137600B667CB /* SidebarModel.swift */, - 51E499FF24A91FC100B667CB /* SidebarView.swift */, - 172952AF24AA287100D65E66 /* CompactNavigationView.swift */, + 172952AF24AA287100D65E66 /* CompactSidebarContainerView.swift */, + 51E499FF24A91FC100B667CB /* RegularSidebarContainerView.swift */, 51408B7D24A9EC6F0073CF4E /* SidebarItem.swift */, + 51E499FC24A9137600B667CB /* SidebarModel.swift */, + 51919FA524AA64B000541E64 /* SidebarView.swift */, ); path = Sidebar; sourceTree = ""; @@ -3813,46 +3817,46 @@ TargetAttributes = { 51314636235A7BBE00387FDC = { CreatedOnToolsVersion = 11.2; - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; LastSwiftMigration = 1120; ProvisioningStyle = Automatic; }; 513C5CE5232571C2003D4054 = { CreatedOnToolsVersion = 11.0; - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; }; 518B2ED12351B3DD00400001 = { CreatedOnToolsVersion = 11.2; - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; TestTargetID = 840D617B2029031C009BC708; }; 51C0513C24A77DF800194D5E = { CreatedOnToolsVersion = 12.0; - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; }; 51C0514324A77DF800194D5E = { CreatedOnToolsVersion = 12.0; - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; }; 6581C73220CED60000F4AD34 = { - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; }; 65ED3FA2235DEF6C0081F399 = { - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; }; 65ED4090235DEF770081F399 = { - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; }; 840D617B2029031C009BC708 = { CreatedOnToolsVersion = 9.3; - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.BackgroundModes = { @@ -3862,7 +3866,7 @@ }; 849C645F1ED37A5D003D8FC0 = { CreatedOnToolsVersion = 8.2.1; - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.HardenedRuntime = { @@ -3872,7 +3876,7 @@ }; 849C64701ED37A5D003D8FC0 = { CreatedOnToolsVersion = 8.2.1; - DevelopmentTeam = FQLBNX3GP7; + DevelopmentTeam = SHJK2V3AJG; ProvisioningStyle = Automatic; TestTargetID = 849C645F1ED37A5D003D8FC0; }; @@ -4647,13 +4651,13 @@ 51E498FF24A808BB00B667CB /* SingleFaviconDownloader.swift in Sources */, 51E4997224A8784300B667CB /* DefaultFeedsImporter.swift in Sources */, 51E4990D24A808C500B667CB /* RSHTMLMetadata+Extension.swift in Sources */, - 51E49A0024A91FC100B667CB /* SidebarView.swift in Sources */, + 51E49A0024A91FC100B667CB /* RegularSidebarContainerView.swift in Sources */, 51E4995C24A875F300B667CB /* ArticleRenderer.swift in Sources */, 51E4992324A8095700B667CB /* URL-Extensions.swift in Sources */, 51E4993624A867E800B667CB /* UserInfoKey.swift in Sources */, 51E4990924A808C500B667CB /* WebFeedIconDownloader.swift in Sources */, 51E498F524A8085D00B667CB /* TodayFeedDelegate.swift in Sources */, - 172952B024AA287100D65E66 /* CompactNavigationView.swift in Sources */, + 172952B024AA287100D65E66 /* CompactSidebarContainerView.swift in Sources */, 51E4990B24A808C500B667CB /* ImageDownloader.swift in Sources */, 51E498F424A8085D00B667CB /* SmartFeedDelegate.swift in Sources */, 51E4993024A8676400B667CB /* ArticleSorter.swift in Sources */, @@ -4675,6 +4679,7 @@ 51E4994224A8713C00B667CB /* ArticleStatusSyncTimer.swift in Sources */, 51E498F624A8085D00B667CB /* SearchFeedDelegate.swift in Sources */, 51E498F224A8085D00B667CB /* SmartFeedsController.swift in Sources */, + 51919FA624AA64B000541E64 /* SidebarView.swift in Sources */, 51E4997024A8764C00B667CB /* ActivityManager.swift in Sources */, 51E4990F24A808CC00B667CB /* HTMLMetadataDownloader.swift in Sources */, 51E4993124A8676400B667CB /* FetchRequestOperation.swift in Sources */, @@ -4734,7 +4739,7 @@ 51E4991624A8090300B667CB /* ArticleUtilities.swift in Sources */, 51E4991A24A8090F00B667CB /* IconImage.swift in Sources */, 51E4992724A80AAB00B667CB /* AppAssets.swift in Sources */, - 51E49A0124A91FC100B667CB /* SidebarView.swift in Sources */, + 51E49A0124A91FC100B667CB /* RegularSidebarContainerView.swift in Sources */, 51E4995B24A875D500B667CB /* ArticlePasteboardWriter.swift in Sources */, 51E4993424A867E700B667CB /* UserInfoKey.swift in Sources */, 1729529724AA1CD000D65E66 /* MacPreferencesView.swift in Sources */, @@ -4771,6 +4776,7 @@ 51E4992024A8095000B667CB /* RSImage-Extensions.swift in Sources */, 51E499FE24A9137600B667CB /* SidebarModel.swift in Sources */, 51E498FE24A808BA00B667CB /* FaviconDownloader.swift in Sources */, + 51919FA724AA64B000541E64 /* SidebarView.swift in Sources */, 51E498FD24A808BA00B667CB /* ColorHash.swift in Sources */, 51E4992A24A866F000B667CB /* AppDefaults.swift in Sources */, 51E4991824A8090A00B667CB /* CacheCleaner.swift in Sources */,