diff --git a/Frameworks/Articles/Articles.xcodeproj/project.pbxproj b/Frameworks/Articles/Articles.xcodeproj/project.pbxproj index 12e1f6baa..f501f687a 100644 --- a/Frameworks/Articles/Articles.xcodeproj/project.pbxproj +++ b/Frameworks/Articles/Articles.xcodeproj/project.pbxproj @@ -217,13 +217,11 @@ TargetAttributes = { 844BEE5A1F0AB3C8004AB7CD = { CreatedOnToolsVersion = 8.3.2; - DevelopmentTeam = M8L2WTLA8W; LastSwiftMigration = 0830; ProvisioningStyle = Automatic; }; 844BEE631F0AB3C9004AB7CD = { CreatedOnToolsVersion = 8.3.2; - DevelopmentTeam = M8L2WTLA8W; ProvisioningStyle = Automatic; }; }; diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 09871e8cd..bbd4ae6b3 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 510D707E22B02A4B004E8F65 /* SettingsLocalAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510D707D22B02A4B004E8F65 /* SettingsLocalAccountView.swift */; }; 510D708022B02A5F004E8F65 /* SettingsFeedbinAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510D707F22B02A5F004E8F65 /* SettingsFeedbinAccountView.swift */; }; 510D708222B041CC004E8F65 /* SettingsAccountLabelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510D708122B041CC004E8F65 /* SettingsAccountLabelView.swift */; }; + 5110AB7822B7BD6200A94F76 /* AddView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5110AB7722B7BD6200A94F76 /* AddView.swift */; }; 51126DA4225FDE2F00722696 /* RSImage-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */; }; 5115CAF42266301400B21BCE /* AddContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51121B5A22661FEF00BC0EC1 /* AddContainerViewController.swift */; }; 5126EE97226CB48A00C22AFC /* NavigationStateController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126EE96226CB48A00C22AFC /* NavigationStateController.swift */; }; @@ -669,6 +670,7 @@ 510D707D22B02A4B004E8F65 /* SettingsLocalAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsLocalAccountView.swift; sourceTree = ""; }; 510D707F22B02A5F004E8F65 /* SettingsFeedbinAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsFeedbinAccountView.swift; sourceTree = ""; }; 510D708122B041CC004E8F65 /* SettingsAccountLabelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAccountLabelView.swift; sourceTree = ""; }; + 5110AB7722B7BD6200A94F76 /* AddView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddView.swift; sourceTree = ""; }; 51121AA12265430A00BC0EC1 /* NetNewsWire_iOS_target.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = NetNewsWire_iOS_target.xcconfig; sourceTree = ""; }; 51121B5A22661FEF00BC0EC1 /* AddContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddContainerViewController.swift; sourceTree = ""; }; 51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RSImage-Extensions.swift"; sourceTree = ""; }; @@ -992,6 +994,18 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 5110AB6E22B7BD3C00A94F76 /* UIKit */ = { + isa = PBXGroup; + children = ( + 51C452822265093600C03939 /* Add.storyboard */, + 51121B5A22661FEF00BC0EC1 /* AddContainerViewController.swift */, + 51C452842265093600C03939 /* AddFeedViewController.swift */, + 51C452812265093600C03939 /* AddFeedFolderPickerData.swift */, + 51C4528B2265095F00C03939 /* AddFolderViewController.swift */, + ); + path = UIKit; + sourceTree = ""; + }; 5127B235222B4849006D641D /* Keyboard */ = { isa = PBXGroup; children = ( @@ -1145,11 +1159,8 @@ 51C452802265093600C03939 /* Add */ = { isa = PBXGroup; children = ( - 51C452822265093600C03939 /* Add.storyboard */, - 51121B5A22661FEF00BC0EC1 /* AddContainerViewController.swift */, - 51C452842265093600C03939 /* AddFeedViewController.swift */, - 51C452812265093600C03939 /* AddFeedFolderPickerData.swift */, - 51C4528B2265095F00C03939 /* AddFolderViewController.swift */, + 5110AB6E22B7BD3C00A94F76 /* UIKit */, + 5110AB7722B7BD6200A94F76 /* AddView.swift */, ); path = Add; sourceTree = ""; @@ -2321,6 +2332,7 @@ files = ( 840D617F2029031C009BC708 /* AppDelegate.swift in Sources */, 512E08E72268801200BDCFDD /* FeedTreeControllerDelegate.swift in Sources */, + 5110AB7822B7BD6200A94F76 /* AddView.swift in Sources */, 51C452A422650A2D00C03939 /* ArticleUtilities.swift in Sources */, 51EF0F79227716380050506E /* ColorHash.swift in Sources */, 5183CCDA226E31A50010922C /* NonIntrinsicImageView.swift in Sources */, diff --git a/README.md b/README.md index a2777fbb1..48d115651 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Every community member is expected to abide by the code of conduct which is incl #### Pull Requests -See the [Contributing](Contributing.md) page for our process. It’s pretty straightforward. +See the [Contributing](CONTRIBUTING.md) page for our process. It’s pretty straightforward. #### Building diff --git a/Technotes/BranchingStrategy.md b/Technotes/BranchingStrategy.md index 768e9ab48..de82a7d49 100644 --- a/Technotes/BranchingStrategy.md +++ b/Technotes/BranchingStrategy.md @@ -21,7 +21,7 @@ There will also be a number of repository forks that NetNewWire developers will ## Tagging -Each release should be tagged using [Semantic Versioning](https://semver.org/). Candidates will continue to be tagged using the current convention which denotes the difference between developer, alpha and beta releases. Additionally, we will need to use a convention to avoid tag name collisions between iOS and macOS products. macOS will use even minor release numbers and iOS will use odd minor release numbers. (See the above diagram for examples.) +Each release should be tagged using [Semantic Versioning](https://semver.org/). Candidates will continue to be tagged using the current convention which denotes the difference between developer, alpha and beta releases. Additionally, we will need to use a convention to avoid tag name collisions between iOS and macOS products. macOS releases will be suffixed with "mac-" and iOS releases will be suffixed with "ios-". (See the above diagram for examples.) ## Submodules diff --git a/Technotes/Images/Branching-Full.png b/Technotes/Images/Branching-Full.png index 54de93b94..c69d7ae01 100644 Binary files a/Technotes/Images/Branching-Full.png and b/Technotes/Images/Branching-Full.png differ diff --git a/Technotes/Images/Branching.png b/Technotes/Images/Branching.png index a64ec6756..3aa4c67a8 100644 Binary files a/Technotes/Images/Branching.png and b/Technotes/Images/Branching.png differ diff --git a/iOS/Add/AddView.swift b/iOS/Add/AddView.swift new file mode 100644 index 000000000..0c57b1a97 --- /dev/null +++ b/iOS/Add/AddView.swift @@ -0,0 +1,23 @@ +// +// AddView.swift +// NetNewsWire-iOS +// +// Created by Maurice Parker on 6/17/19. +// Copyright © 2019 Ranchero Software. All rights reserved. +// + +import SwiftUI + +struct AddView : View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello World!"/*@END_MENU_TOKEN@*/) + } +} + +#if DEBUG +struct AddView_Previews : PreviewProvider { + static var previews: some View { + AddView() + } +} +#endif diff --git a/iOS/Add/Add.storyboard b/iOS/Add/UIKit/Add.storyboard similarity index 100% rename from iOS/Add/Add.storyboard rename to iOS/Add/UIKit/Add.storyboard diff --git a/iOS/Add/AddContainerViewController.swift b/iOS/Add/UIKit/AddContainerViewController.swift similarity index 100% rename from iOS/Add/AddContainerViewController.swift rename to iOS/Add/UIKit/AddContainerViewController.swift diff --git a/iOS/Add/AddFeedFolderPickerData.swift b/iOS/Add/UIKit/AddFeedFolderPickerData.swift similarity index 100% rename from iOS/Add/AddFeedFolderPickerData.swift rename to iOS/Add/UIKit/AddFeedFolderPickerData.swift diff --git a/iOS/Add/AddFeedViewController.swift b/iOS/Add/UIKit/AddFeedViewController.swift similarity index 99% rename from iOS/Add/AddFeedViewController.swift rename to iOS/Add/UIKit/AddFeedViewController.swift index b2dc3464b..a0495d8f9 100644 --- a/iOS/Add/AddFeedViewController.swift +++ b/iOS/Add/UIKit/AddFeedViewController.swift @@ -50,7 +50,6 @@ class AddFeedViewController: UITableViewController, AddContainerViewControllerCh if shouldDisplayPicker { folderPickerView.dataSource = self folderPickerView.delegate = self - folderPickerView.showsSelectionIndicator = true } else { folderPickerView.isHidden = true } diff --git a/iOS/Add/AddFolderViewController.swift b/iOS/Add/UIKit/AddFolderViewController.swift similarity index 100% rename from iOS/Add/AddFolderViewController.swift rename to iOS/Add/UIKit/AddFolderViewController.swift diff --git a/iOS/Settings/SettingsAddAccountView.swift b/iOS/Settings/SettingsAddAccountView.swift index 212c62f04..00b9107d8 100644 --- a/iOS/Settings/SettingsAddAccountView.swift +++ b/iOS/Settings/SettingsAddAccountView.swift @@ -12,13 +12,14 @@ import Account struct SettingsAddAccountView : View { var body: some View { List { - PresentationButton(SettingsAccountLabelView(accountImage: "accountLocal", accountLabel: Account.defaultLocalAccountName), - destination: SettingsLocalAccountView(name: "")).padding(.all, 4) - PresentationButton(SettingsAccountLabelView(accountImage: "accountFeedbin", accountLabel: "Feedbin"), - destination: SettingsFeedbinAccountView(viewModel: SettingsFeedbinAccountView.ViewModel())).padding(.all, 4) - PresentationButton(SettingsAccountLabelView(accountImage: "accountLocal", accountLabel: "Google Reader Compatible"), - destination: SettingsGoogleReaderCompatibleAccountView(viewModel: SettingsGoogleReaderCompatibleAccountView.ViewModel())).padding(.all, 4) - + PresentationButton(destination: SettingsLocalAccountView(name: "")) { + SettingsAccountLabelView(accountImage: "accountLocal", accountLabel: Account.defaultLocalAccountName) + } + .padding(4) + PresentationButton(destination: SettingsFeedbinAccountView(viewModel: SettingsFeedbinAccountView.ViewModel())) { + SettingsAccountLabelView(accountImage: "accountFeedbin", accountLabel: "Feedbin") + } + .padding(4) } .listStyle(.grouped) .navigationBarTitle(Text("Add Account"), displayMode: .inline) diff --git a/iOS/Settings/SettingsView.swift b/iOS/Settings/SettingsView.swift index 1ca917abc..73a734db5 100644 --- a/iOS/Settings/SettingsView.swift +++ b/iOS/Settings/SettingsView.swift @@ -10,8 +10,6 @@ import SwiftUI import Combine import Account - - struct SettingsView : View { @ObjectBinding var viewModel: ViewModel @State var subscriptionsImportAccounts: ActionSheet? = nil @@ -35,21 +33,23 @@ struct SettingsView : View { } Section(header: Text("ABOUT")) { - Text("About NetNewsWire") - - PresentationButton(Text("Website"), destination: SafariView(url: URL(string: "https://ranchero.com/netnewswire/")!)) - - PresentationButton(Text("Github Repository"), destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire")!)) - - PresentationButton(Text("Bug Tracker"), destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/issues")!)) - - PresentationButton(Text("Technotes"), destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/tree/master/Technotes")!)) - - PresentationButton(Text("How to Support NetNewsWire"), destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/blob/master/Technotes/HowToSupportNetNewsWire.markdown")!)) - + PresentationButton(destination: SafariView(url: URL(string: "https://ranchero.com/netnewswire/")!)) { + Text("Website") + } + PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire")!)) { + Text("Github Repository") + } + PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/issues")!)) { + Text("Bug Tracker") + } + PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/tree/master/Technotes")!)) { + Text("Technotes") + } + PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/blob/master/Technotes/HowToSupportNetNewsWire.markdown")!)) { + Text("How to Support NetNewsWire") + } Text("Add NetNewsWire News Feed") - } .foregroundColor(.primary) @@ -94,7 +94,7 @@ struct SettingsView : View { var createSubscriptionsImportAccounts: ActionSheet { var buttons = [ActionSheet.Button]() - for account in viewModel.accounts { + for account in viewModel.activeAccounts { let button = ActionSheet.Button.default(Text(verbatim: account.nameForDisplay)) { self.subscriptionsImportAccounts = nil self.subscriptionsImportDocumentPicker = Modal(SettingsSubscriptionsImportDocumentPickerView(account: account)) @@ -118,6 +118,8 @@ struct SettingsView : View { return ActionSheet(title: Text("Export Subscriptions..."), message: Text("Select the account to export out of."), buttons: buttons) } + // MARK: ViewModel + class ViewModel: BindableObject { let didChange = PassthroughSubject() @@ -135,6 +137,14 @@ struct SettingsView : View { } } + var activeAccounts: [Account] { + get { + return AccountManager.shared.sortedActiveAccounts + } + set { + } + } + var sortOldestToNewest: Bool { get { return AppDefaults.timelineSortDirection == .orderedDescending