From 81f7ac147a418774dcc6e6ca3f4e97b05075bca4 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Fri, 14 Jul 2023 11:18:04 -0700 Subject: [PATCH] Replace webFeed with Feed in a few more places (which also fixes the add-feed sheet). --- .../{AddWebFeedSheet.xib => AddFeedSheet.xib} | 0 .../AddFeed/AddFeedWIndowController.swift | 135 ++++++++++++++++-- .../AddFeedWindowControllerDelegate.swift | 25 ++++ ...ability.swift => Feed+Scriptability.swift} | 0 ...FeedSheet.strings => AddFeedSheet.strings} | 0 ...FeedSheet.strings => AddFeedSheet.strings} | 0 NetNewsWire.xcodeproj/project.pbxproj | 56 ++++---- 7 files changed, 176 insertions(+), 40 deletions(-) rename Mac/Base.lproj/{AddWebFeedSheet.xib => AddFeedSheet.xib} (100%) create mode 100644 Mac/MainWindow/AddFeed/AddFeedWindowControllerDelegate.swift rename Mac/Scriptability/{WebFeed+Scriptability.swift => Feed+Scriptability.swift} (100%) rename Mac/en-GB.lproj/{AddWebFeedSheet.strings => AddFeedSheet.strings} (100%) rename Mac/zh-Hans.lproj/{AddWebFeedSheet.strings => AddFeedSheet.strings} (100%) diff --git a/Mac/Base.lproj/AddWebFeedSheet.xib b/Mac/Base.lproj/AddFeedSheet.xib similarity index 100% rename from Mac/Base.lproj/AddWebFeedSheet.xib rename to Mac/Base.lproj/AddFeedSheet.xib diff --git a/Mac/MainWindow/AddFeed/AddFeedWIndowController.swift b/Mac/MainWindow/AddFeed/AddFeedWIndowController.swift index 87054e957..fb9a3c82c 100644 --- a/Mac/MainWindow/AddFeed/AddFeedWIndowController.swift +++ b/Mac/MainWindow/AddFeed/AddFeedWIndowController.swift @@ -1,25 +1,136 @@ // -// AddFeedWIndowController.swift +// AddFeedWindowController.swift // NetNewsWire // -// Created by Maurice Parker on 4/21/20. -// Copyright © 2020 Ranchero Software. All rights reserved. +// Created by Brent Simmons on 8/1/15. +// Copyright © 2015 Ranchero Software, LLC. All rights reserved. // -import Foundation +import AppKit +import RSCore +import RSTree +import Articles import Account -@MainActor protocol AddFeedWindowControllerDelegate: AnyObject { +@MainActor final class AddFeedWindowController : NSWindowController, AddFeedWindowControllerProtocol { + + @IBOutlet var urlTextField: NSTextField! + @IBOutlet var nameTextField: NSTextField! + @IBOutlet var addButton: NSButton! + @IBOutlet var folderPopupButton: NSPopUpButton! - // userEnteredURL will have already been validated and normalized. - func addFeedWindowController(_: AddFeedWindowController, userEnteredURL: URL, userEnteredTitle: String?, container: Container) - func addFeedWindowControllerUserDidCancel(_: AddFeedWindowController) + private var urlString: String? + private var initialName: String? + private weak var initialAccount: Account? + private var initialFolder: Folder? + private weak var delegate: AddFeedWindowControllerDelegate? + private var folderTreeController: TreeController! + + private var userEnteredTitle: String? { + var s = nameTextField.stringValue + s = s.collapsingWhitespace + if s.isEmpty { + return nil + } + return s + } + var hostWindow: NSWindow! + + convenience init(urlString: String?, name: String?, account: Account?, folder: Folder?, folderTreeController: TreeController, delegate: AddFeedWindowControllerDelegate?) { + self.init(windowNibName: NSNib.Name("AddFeedSheet")) + self.urlString = urlString + self.initialName = name + self.initialAccount = account + self.initialFolder = folder + self.delegate = delegate + self.folderTreeController = folderTreeController + } + + func runSheetOnWindow(_ hostWindow: NSWindow) { + hostWindow.beginSheet(window!) { (returnCode: NSApplication.ModalResponse) -> Void in + } + } + + override func windowDidLoad() { + if let urlString = urlString { + urlTextField.stringValue = urlString + } + if let initialName = initialName, !initialName.isEmpty { + nameTextField.stringValue = initialName + } + + folderPopupButton.menu = FolderTreeMenu.createFolderPopupMenu(with: folderTreeController.rootNode) + + if let account = initialAccount { + FolderTreeMenu.select(account: account, folder: initialFolder, in: folderPopupButton) + } else if let container = AddFeedDefaultContainer.defaultContainer { + if let folder = container as? Folder, let account = folder.account { + FolderTreeMenu.select(account: account, folder: folder, in: folderPopupButton) + } else { + if let account = container as? Account { + FolderTreeMenu.select(account: account, folder: nil, in: folderPopupButton) + } + } + } + + updateUI() + } + + // MARK: Actions + + @IBAction func cancel(_ sender: Any?) { + cancelSheet() + } + + @IBAction func addFeed(_ sender: Any?) { + let urlString = urlTextField.stringValue + let normalizedURLString = urlString.normalizedURL + + if normalizedURLString.isEmpty { + cancelSheet() + return; + } + guard let url = URL(unicodeString: normalizedURLString) else { + cancelSheet() + return + } + + guard let container = selectedContainer() else { return } + AddFeedDefaultContainer.saveDefaultContainer(container) + + delegate?.addFeedWindowController(self, userEnteredURL: url, userEnteredTitle: userEnteredTitle, container: container) + + } + + @IBAction func localShowFeedList(_ sender: Any?) { + NSApplication.shared.sendAction(NSSelectorFromString("showFeedList:"), to: nil, from: sender) + hostWindow.endSheet(window!, returnCode: NSApplication.ModalResponse.continue) + } + + // MARK: NSTextFieldDelegate + + @objc func controlTextDidEndEditing(_ obj: Notification) { + updateUI() + } + + @objc func controlTextDidChange(_ obj: Notification) { + updateUI() + } } -@MainActor protocol AddFeedWindowControllerProtocol { - - var window: NSWindow? { get } - func runSheetOnWindow(_ hostWindow: NSWindow) +private extension AddFeedWindowController { + private func updateUI() { + addButton.isEnabled = urlTextField.stringValue.mayBeURL && selectedContainer() != nil + } + + func cancelSheet() { + delegate?.addFeedWindowControllerUserDidCancel(self) + } + + func selectedContainer() -> Container? { + guard folderPopupButton.selectedItem?.isEnabled ?? false else { return nil } + return folderPopupButton.selectedItem?.representedObject as? Container + } } diff --git a/Mac/MainWindow/AddFeed/AddFeedWindowControllerDelegate.swift b/Mac/MainWindow/AddFeed/AddFeedWindowControllerDelegate.swift new file mode 100644 index 000000000..e02420aa6 --- /dev/null +++ b/Mac/MainWindow/AddFeed/AddFeedWindowControllerDelegate.swift @@ -0,0 +1,25 @@ +// +// AddFeedWindowControllerDelegate.swift +// NetNewsWire +// +// Created by Maurice Parker on 4/21/20. +// Copyright © 2020 Ranchero Software. All rights reserved. +// + +import Foundation +import Account + +@MainActor protocol AddFeedWindowControllerDelegate: AnyObject { + + // userEnteredURL will have already been validated and normalized. + func addFeedWindowController(_: AddFeedWindowController, userEnteredURL: URL, userEnteredTitle: String?, container: Container) + func addFeedWindowControllerUserDidCancel(_: AddFeedWindowController) + +} + +@MainActor protocol AddFeedWindowControllerProtocol { + + var window: NSWindow? { get } + func runSheetOnWindow(_ hostWindow: NSWindow) + +} diff --git a/Mac/Scriptability/WebFeed+Scriptability.swift b/Mac/Scriptability/Feed+Scriptability.swift similarity index 100% rename from Mac/Scriptability/WebFeed+Scriptability.swift rename to Mac/Scriptability/Feed+Scriptability.swift diff --git a/Mac/en-GB.lproj/AddWebFeedSheet.strings b/Mac/en-GB.lproj/AddFeedSheet.strings similarity index 100% rename from Mac/en-GB.lproj/AddWebFeedSheet.strings rename to Mac/en-GB.lproj/AddFeedSheet.strings diff --git a/Mac/zh-Hans.lproj/AddWebFeedSheet.strings b/Mac/zh-Hans.lproj/AddFeedSheet.strings similarity index 100% rename from Mac/zh-Hans.lproj/AddWebFeedSheet.strings rename to Mac/zh-Hans.lproj/AddFeedSheet.strings diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 3471dbdae..377ee898a 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -223,8 +223,8 @@ 519B8D332143397200FA689C /* SharingServiceDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 519B8D322143397200FA689C /* SharingServiceDelegate.swift */; }; 519CA8E525841DB700EB079A /* CrashReporter in Frameworks */ = {isa = PBXBuildFile; productRef = 519CA8E425841DB700EB079A /* CrashReporter */; }; 519E743D22C663F900A78E47 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 519E743422C663F900A78E47 /* SceneDelegate.swift */; }; - 51A052CE244FB9D7006C2024 /* AddFeedWIndowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A052CD244FB9D6006C2024 /* AddFeedWIndowController.swift */; }; - 51A052CF244FB9D7006C2024 /* AddFeedWIndowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A052CD244FB9D6006C2024 /* AddFeedWIndowController.swift */; }; + 51A052CE244FB9D7006C2024 /* AddFeedWindowControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A052CD244FB9D6006C2024 /* AddFeedWindowControllerDelegate.swift */; }; + 51A052CF244FB9D7006C2024 /* AddFeedWindowControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A052CD244FB9D6006C2024 /* AddFeedWindowControllerDelegate.swift */; }; 51A66685238075AE00CB272D /* AddFeedDefaultContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A66684238075AE00CB272D /* AddFeedDefaultContainer.swift */; }; 51A737AE24DB19730015FA66 /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 51A737AD24DB19730015FA66 /* RSCore */; }; 51A737AF24DB19730015FA66 /* RSCore in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51A737AD24DB19730015FA66 /* RSCore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; @@ -531,7 +531,7 @@ 65ED4027235DEF6C0081F399 /* UnreadIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97751ED9EC04007D329B /* UnreadIndicatorView.swift */; }; 65ED4028235DEF6C0081F399 /* ExtractedArticle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51FA73A62332BE880090D516 /* ExtractedArticle.swift */; }; 65ED4029235DEF6C0081F399 /* DeleteCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C9C1FAE83C600ECDEDB /* DeleteCommand.swift */; }; - 65ED402A235DEF6C0081F399 /* AddWebFeedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97521ED9EAC0007D329B /* AddWebFeedWindowController.swift */; }; + 65ED402A235DEF6C0081F399 /* AddFeedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97521ED9EAC0007D329B /* AddFeedWindowController.swift */; }; 65ED402B235DEF6C0081F399 /* ImportOPMLWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5144EA3E227A37EC00D19003 /* ImportOPMLWindowController.swift */; }; 65ED402C235DEF6C0081F399 /* TimelineTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A976A1ED9EBC8007D329B /* TimelineTableView.swift */; }; 65ED402D235DEF6C0081F399 /* DetailStatusBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D52E941FE588BB00D14F5B /* DetailStatusBarView.swift */; }; @@ -547,7 +547,7 @@ 65ED4037235DEF6C0081F399 /* FolderTreeControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97A11ED9F180007D329B /* FolderTreeControllerDelegate.swift */; }; 65ED4038235DEF6C0081F399 /* RSImage-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */; }; 65ED4039235DEF6C0081F399 /* SingleFaviconDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845A29081FC74B8E007B49E3 /* SingleFaviconDownloader.swift */; }; - 65ED403A235DEF6C0081F399 /* WebFeed+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB620074D6500B9E363 /* WebFeed+Scriptability.swift */; }; + 65ED403A235DEF6C0081F399 /* Feed+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB620074D6500B9E363 /* Feed+Scriptability.swift */; }; 65ED403B235DEF6C0081F399 /* AuthorAvatarDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E850851FCB60CE0072EA88 /* AuthorAvatarDownloader.swift */; }; 65ED403C235DEF6C0081F399 /* SingleLineTextFieldSizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E185B2203B74E500F69BFA /* SingleLineTextFieldSizer.swift */; }; 65ED403D235DEF6C0081F399 /* TimelineTableCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97741ED9EC04007D329B /* TimelineTableCellView.swift */; }; @@ -576,7 +576,7 @@ 65ED4068235DEF6C0081F399 /* MainWindow.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8483630C2262A3FE00DA1D35 /* MainWindow.storyboard */; }; 65ED406A235DEF6C0081F399 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; }; 65ED406C235DEF6C0081F399 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC8922629E8F00D921D6 /* Credits.rtf */; }; - 65ED406E235DEF6C0081F399 /* AddWebFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363002262A3BC00DA1D35 /* AddWebFeedSheet.xib */; }; + 65ED406E235DEF6C0081F399 /* AddFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363002262A3BC00DA1D35 /* AddFeedSheet.xib */; }; 65ED4092235DEF770081F399 /* SafariExtensionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6581C73920CED60100F4AD34 /* SafariExtensionViewController.swift */; }; 65ED4093235DEF770081F399 /* SafariExtensionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6581C73720CED60100F4AD34 /* SafariExtensionHandler.swift */; }; 65ED4096235DEF770081F399 /* ToolbarItemIcon.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6581C74120CED60100F4AD34 /* ToolbarItemIcon.pdf */; }; @@ -625,7 +625,7 @@ 847CD6CA232F4CBF00FAC46D /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847CD6C9232F4CBF00FAC46D /* IconView.swift */; }; 847E64A02262783000E00365 /* NSAppleEventDescriptor+UserRecordFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847E64942262782F00E00365 /* NSAppleEventDescriptor+UserRecordFields.swift */; }; 848362FF2262A30E00DA1D35 /* template.html in Resources */ = {isa = PBXBuildFile; fileRef = 848362FE2262A30E00DA1D35 /* template.html */; }; - 848363022262A3BD00DA1D35 /* AddWebFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363002262A3BC00DA1D35 /* AddWebFeedSheet.xib */; }; + 848363022262A3BD00DA1D35 /* AddFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363002262A3BC00DA1D35 /* AddFeedSheet.xib */; }; 848363052262A3CC00DA1D35 /* AddFolderSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363032262A3CC00DA1D35 /* AddFolderSheet.xib */; }; 848363082262A3DD00DA1D35 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 848363062262A3DD00DA1D35 /* Main.storyboard */; }; 8483630B2262A3F000DA1D35 /* RenameSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363092262A3F000DA1D35 /* RenameSheet.xib */; }; @@ -635,7 +635,7 @@ 848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */; }; 849A97431ED9EAA9007D329B /* AddFolderWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97421ED9EAA9007D329B /* AddFolderWindowController.swift */; }; 849A97531ED9EAC0007D329B /* AddFeedController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97511ED9EAC0007D329B /* AddFeedController.swift */; }; - 849A97541ED9EAC0007D329B /* AddWebFeedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97521ED9EAC0007D329B /* AddWebFeedWindowController.swift */; }; + 849A97541ED9EAC0007D329B /* AddFeedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97521ED9EAC0007D329B /* AddFeedWindowController.swift */; }; 849A975B1ED9EB0D007D329B /* ArticleUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97581ED9EB0D007D329B /* ArticleUtilities.swift */; }; 849A975C1ED9EB0D007D329B /* DefaultFeedsImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97591ED9EB0D007D329B /* DefaultFeedsImporter.swift */; }; 849A97641ED9EB96007D329B /* SidebarOutlineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97601ED9EB96007D329B /* SidebarOutlineView.swift */; }; @@ -753,7 +753,7 @@ D5E4CC54202C1361009B4FFC /* AppDelegate+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E4CC53202C1361009B4FFC /* AppDelegate+Scriptability.swift */; }; D5E4CC64202C1AC1009B4FFC /* MainWindowController+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E4CC63202C1AC1009B4FFC /* MainWindowController+Scriptability.swift */; }; D5F4EDB5200744A700B9E363 /* ScriptingObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB4200744A700B9E363 /* ScriptingObject.swift */; }; - D5F4EDB720074D6500B9E363 /* WebFeed+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB620074D6500B9E363 /* WebFeed+Scriptability.swift */; }; + D5F4EDB720074D6500B9E363 /* Feed+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB620074D6500B9E363 /* Feed+Scriptability.swift */; }; D5F4EDB920074D7C00B9E363 /* Folder+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB820074D7C00B9E363 /* Folder+Scriptability.swift */; }; DD82AB0A231003F6002269DF /* SharingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD82AB09231003F6002269DF /* SharingTests.swift */; }; DDF9E1D728EDF2FC000BC355 /* notificationSoundBlip.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = DDF9E1D628EDF2FC000BC355 /* notificationSoundBlip.mp3 */; }; @@ -1228,7 +1228,7 @@ 5195C1DB2720BD3000888867 /* MasterFeedRowIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterFeedRowIdentifier.swift; sourceTree = ""; }; 519B8D322143397200FA689C /* SharingServiceDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingServiceDelegate.swift; sourceTree = ""; }; 519E743422C663F900A78E47 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 51A052CD244FB9D6006C2024 /* AddFeedWIndowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AddFeedWIndowController.swift; path = AddFeed/AddFeedWIndowController.swift; sourceTree = ""; }; + 51A052CD244FB9D6006C2024 /* AddFeedWindowControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AddFeedWindowControllerDelegate.swift; path = AddFeed/AddFeedWindowControllerDelegate.swift; sourceTree = ""; }; 51A66684238075AE00CB272D /* AddFeedDefaultContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddFeedDefaultContainer.swift; sourceTree = ""; }; 51A9A5E32380C8870033AADF /* ShareFolderPickerAccountCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ShareFolderPickerAccountCell.xib; sourceTree = ""; }; 51A9A5E52380C8B20033AADF /* ShareFolderPickerFolderCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ShareFolderPickerFolderCell.xib; sourceTree = ""; }; @@ -1374,7 +1374,7 @@ 847CD6C9232F4CBF00FAC46D /* IconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconView.swift; sourceTree = ""; }; 847E64942262782F00E00365 /* NSAppleEventDescriptor+UserRecordFields.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSAppleEventDescriptor+UserRecordFields.swift"; sourceTree = ""; }; 848362FE2262A30E00DA1D35 /* template.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = template.html; sourceTree = ""; }; - 848363012262A3BC00DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Mac/Base.lproj/AddWebFeedSheet.xib; sourceTree = SOURCE_ROOT; }; + 848363012262A3BC00DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Mac/Base.lproj/AddFeedSheet.xib; sourceTree = SOURCE_ROOT; }; 848363042262A3CC00DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Mac/Base.lproj/AddFolderSheet.xib; sourceTree = SOURCE_ROOT; }; 848363072262A3DD00DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 8483630A2262A3F000DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Mac/Base.lproj/RenameSheet.xib; sourceTree = SOURCE_ROOT; }; @@ -1384,7 +1384,7 @@ 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaviconDownloader.swift; sourceTree = ""; }; 849A97421ED9EAA9007D329B /* AddFolderWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddFolderWindowController.swift; sourceTree = ""; }; 849A97511ED9EAC0007D329B /* AddFeedController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AddFeedController.swift; path = AddFeed/AddFeedController.swift; sourceTree = ""; }; - 849A97521ED9EAC0007D329B /* AddWebFeedWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AddWebFeedWindowController.swift; path = AddFeed/AddWebFeedWindowController.swift; sourceTree = ""; }; + 849A97521ED9EAC0007D329B /* AddFeedWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AddFeedWindowController.swift; path = AddFeed/AddFeedWindowController.swift; sourceTree = ""; }; 849A97581ED9EB0D007D329B /* ArticleUtilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArticleUtilities.swift; sourceTree = ""; }; 849A97591ED9EB0D007D329B /* DefaultFeedsImporter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultFeedsImporter.swift; sourceTree = ""; }; 849A97601ED9EB96007D329B /* SidebarOutlineView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SidebarOutlineView.swift; sourceTree = ""; }; @@ -1494,7 +1494,7 @@ C47370262A232A0100E77890 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; }; C47370272A232A0100E77890 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../zh-Hans.lproj/MainWindow.strings"; sourceTree = ""; }; C47370282A232A0100E77890 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../../../zh-Hans.lproj/RenameSheet.strings"; sourceTree = ""; }; - C473702A2A232A0200E77890 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../zh-Hans.lproj/AddWebFeedSheet.strings"; sourceTree = ""; }; + C473702A2A232A0200E77890 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../zh-Hans.lproj/AddFeedSheet.strings"; sourceTree = ""; }; C473702B2A232A0200E77890 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../../zh-Hans.lproj/AddFolderSheet.strings"; sourceTree = ""; }; C473702C2A232A0200E77890 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../zh-Hans.lproj/Preferences.strings"; sourceTree = ""; }; C473702D2A232A0200E77890 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/SafariExtensionViewController.strings"; sourceTree = ""; }; @@ -1552,7 +1552,7 @@ D5E4CC53202C1361009B4FFC /* AppDelegate+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+Scriptability.swift"; sourceTree = ""; }; D5E4CC63202C1AC1009B4FFC /* MainWindowController+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MainWindowController+Scriptability.swift"; sourceTree = ""; }; D5F4EDB4200744A700B9E363 /* ScriptingObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptingObject.swift; sourceTree = ""; }; - D5F4EDB620074D6500B9E363 /* WebFeed+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WebFeed+Scriptability.swift"; sourceTree = ""; }; + D5F4EDB620074D6500B9E363 /* Feed+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Feed+Scriptability.swift"; sourceTree = ""; }; D5F4EDB820074D7C00B9E363 /* Folder+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Folder+Scriptability.swift"; sourceTree = ""; }; DD82AB09231003F6002269DF /* SharingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharingTests.swift; sourceTree = ""; }; DDF9E1D628EDF2FC000BC355 /* notificationSoundBlip.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = notificationSoundBlip.mp3; sourceTree = ""; }; @@ -1623,7 +1623,7 @@ DFB616AE29653A0600A359AB /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/Main.strings"; sourceTree = ""; }; DFB616AF29653A0600A359AB /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "../en-GB.lproj/MainWindow.strings"; sourceTree = ""; }; DFB616B029653A0600A359AB /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "../../../en-GB.lproj/RenameSheet.strings"; sourceTree = ""; }; - DFB616B329653A0600A359AB /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "../en-GB.lproj/AddWebFeedSheet.strings"; sourceTree = ""; }; + DFB616B329653A0600A359AB /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "../en-GB.lproj/AddFeedSheet.strings"; sourceTree = ""; }; DFB616B429653A0600A359AB /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "../../en-GB.lproj/AddFolderSheet.strings"; sourceTree = ""; }; DFB616B529653A0600A359AB /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "../en-GB.lproj/Preferences.strings"; sourceTree = ""; }; DFB616B629653A0600A359AB /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/SafariExtensionViewController.strings"; sourceTree = ""; }; @@ -2374,10 +2374,10 @@ 849A97551ED9EAC3007D329B /* Add Feed */ = { isa = PBXGroup; children = ( + 848363002262A3BC00DA1D35 /* AddFeedSheet.xib */, 849A97511ED9EAC0007D329B /* AddFeedController.swift */, - 51A052CD244FB9D6006C2024 /* AddFeedWIndowController.swift */, - 848363002262A3BC00DA1D35 /* AddWebFeedSheet.xib */, - 849A97521ED9EAC0007D329B /* AddWebFeedWindowController.swift */, + 849A97521ED9EAC0007D329B /* AddFeedWindowController.swift */, + 51A052CD244FB9D6006C2024 /* AddFeedWindowControllerDelegate.swift */, 51EC114B2149FE3300B296E3 /* FolderTreeMenu.swift */, ); name = "Add Feed"; @@ -2862,7 +2862,7 @@ D5E4CC53202C1361009B4FFC /* AppDelegate+Scriptability.swift */, D553737C20186C1F006D8857 /* Article+Scriptability.swift */, D5A2678B20130ECF00A8D3C0 /* Author+Scriptability.swift */, - D5F4EDB620074D6500B9E363 /* WebFeed+Scriptability.swift */, + D5F4EDB620074D6500B9E363 /* Feed+Scriptability.swift */, D5F4EDB820074D7C00B9E363 /* Folder+Scriptability.swift */, D5E4CC63202C1AC1009B4FFC /* MainWindowController+Scriptability.swift */, D5907D7E2004AC00005947E5 /* NSApplication+Scriptability.swift */, @@ -3494,7 +3494,7 @@ 65ED406C235DEF6C0081F399 /* Credits.rtf in Resources */, DF5124CE2A230FC100BBAB1F /* Inspector.storyboard in Resources */, DFB616AD2965300400A359AB /* Localizable.strings in Resources */, - 65ED406E235DEF6C0081F399 /* AddWebFeedSheet.xib in Resources */, + 65ED406E235DEF6C0081F399 /* AddFeedSheet.xib in Resources */, 51077C5927A86D16000C71DB /* Hyperlegible.nnwtheme in Resources */, 51DEE81326FB9233006DAA56 /* Appanoose.nnwtheme in Resources */, B27EEBFA244D15F3000932E6 /* stylesheet.css in Resources */, @@ -3599,7 +3599,7 @@ 51DEE81226FB9233006DAA56 /* Appanoose.nnwtheme in Resources */, 84C9FC8E22629E8F00D921D6 /* Credits.rtf in Resources */, DF5124CD2A230FC100BBAB1F /* Inspector.storyboard in Resources */, - 848363022262A3BD00DA1D35 /* AddWebFeedSheet.xib in Resources */, + 848363022262A3BD00DA1D35 /* AddFeedSheet.xib in Resources */, DFCE4F9428EF278300405869 /* Thanks.md in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3937,7 +3937,7 @@ DFBB4EAD2951BC0200639228 /* NNWThemeDocument.swift in Sources */, 65ED3FD7235DEF6C0081F399 /* NSApplication+Scriptability.swift in Sources */, 65ED3FD8235DEF6C0081F399 /* NSView-Extensions.swift in Sources */, - 51A052CF244FB9D7006C2024 /* AddFeedWIndowController.swift in Sources */, + 51A052CF244FB9D7006C2024 /* AddFeedWindowControllerDelegate.swift in Sources */, 5103A9F824225E4C00410853 /* AccountsAddCloudKitWindowController.swift in Sources */, 65ED3FD9235DEF6C0081F399 /* SidebarCell.swift in Sources */, 65ED3FDA235DEF6C0081F399 /* ArticleStatusSyncTimer.swift in Sources */, @@ -4036,7 +4036,7 @@ 51A9A5F22380DE520033AADF /* AddFeedDefaultContainer.swift in Sources */, 65ED4028235DEF6C0081F399 /* ExtractedArticle.swift in Sources */, 65ED4029235DEF6C0081F399 /* DeleteCommand.swift in Sources */, - 65ED402A235DEF6C0081F399 /* AddWebFeedWindowController.swift in Sources */, + 65ED402A235DEF6C0081F399 /* AddFeedWindowController.swift in Sources */, 65ED402B235DEF6C0081F399 /* ImportOPMLWindowController.swift in Sources */, 65ED402C235DEF6C0081F399 /* TimelineTableView.swift in Sources */, 178A9F9E2549449F00AB7E9D /* AddAccountsView.swift in Sources */, @@ -4057,7 +4057,7 @@ 65ED4037235DEF6C0081F399 /* FolderTreeControllerDelegate.swift in Sources */, 65ED4038235DEF6C0081F399 /* RSImage-Extensions.swift in Sources */, 65ED4039235DEF6C0081F399 /* SingleFaviconDownloader.swift in Sources */, - 65ED403A235DEF6C0081F399 /* WebFeed+Scriptability.swift in Sources */, + 65ED403A235DEF6C0081F399 /* Feed+Scriptability.swift in Sources */, 65ED403B235DEF6C0081F399 /* AuthorAvatarDownloader.swift in Sources */, 65ED403C235DEF6C0081F399 /* SingleLineTextFieldSizer.swift in Sources */, 65ED403D235DEF6C0081F399 /* TimelineTableCellView.swift in Sources */, @@ -4402,7 +4402,7 @@ 849A977B1ED9EC04007D329B /* UnreadIndicatorView.swift in Sources */, 51FA73A72332BE880090D516 /* ExtractedArticle.swift in Sources */, 84B99C9D1FAE83C600ECDEDB /* DeleteCommand.swift in Sources */, - 849A97541ED9EAC0007D329B /* AddWebFeedWindowController.swift in Sources */, + 849A97541ED9EAC0007D329B /* AddFeedWindowController.swift in Sources */, DF3630EB2936183D00326FB8 /* OPMLDocument.swift in Sources */, 5144EA40227A37EC00D19003 /* ImportOPMLWindowController.swift in Sources */, DFEB034D2A273BFE00C7573A /* UTType.swift in Sources */, @@ -4411,7 +4411,7 @@ 849A976D1ED9EBC8007D329B /* TimelineTableView.swift in Sources */, 84D52E951FE588BB00D14F5B /* DetailStatusBarView.swift in Sources */, D5E4CC64202C1AC1009B4FFC /* MainWindowController+Scriptability.swift in Sources */, - 51A052CE244FB9D7006C2024 /* AddFeedWIndowController.swift in Sources */, + 51A052CE244FB9D7006C2024 /* AddFeedWindowControllerDelegate.swift in Sources */, 84C9FC7922629E1200D921D6 /* PreferencesWindowController.swift in Sources */, 84411E711FE5FBFA004B527F /* SmallIconProvider.swift in Sources */, 51FA73A42332BE110090D516 /* ArticleExtractor.swift in Sources */, @@ -4427,7 +4427,7 @@ 51126DA4225FDE2F00722696 /* RSImage-Extensions.swift in Sources */, 519279FE28E24CCA000AE856 /* MainWindowController.swift in Sources */, 845A29091FC74B8E007B49E3 /* SingleFaviconDownloader.swift in Sources */, - D5F4EDB720074D6500B9E363 /* WebFeed+Scriptability.swift in Sources */, + D5F4EDB720074D6500B9E363 /* Feed+Scriptability.swift in Sources */, 51927A0428E28D1C000AE856 /* MainWindow.swift in Sources */, 84E850861FCB60CE0072EA88 /* AuthorAvatarDownloader.swift in Sources */, 84E185B3203B74E500F69BFA /* SingleLineTextFieldSizer.swift in Sources */, @@ -4588,14 +4588,14 @@ name = SafariExtensionViewController.xib; sourceTree = ""; }; - 848363002262A3BC00DA1D35 /* AddWebFeedSheet.xib */ = { + 848363002262A3BC00DA1D35 /* AddFeedSheet.xib */ = { isa = PBXVariantGroup; children = ( 848363012262A3BC00DA1D35 /* Base */, DFB616B329653A0600A359AB /* en-GB */, C473702A2A232A0200E77890 /* zh-Hans */, ); - name = AddWebFeedSheet.xib; + name = AddFeedSheet.xib; sourceTree = ""; }; 848363032262A3CC00DA1D35 /* AddFolderSheet.xib */ = {