Add @objc for the two delegate methods implemented. This fixes a bug where the Add button wasn’t enabled after your typing.

This commit is contained in:
Brent Simmons 2019-01-27 21:09:25 -08:00
parent fdefaef66e
commit 75199d2546

View File

@ -30,8 +30,8 @@ class AddFeedWindowController : NSWindowController {
private var urlString: String? private var urlString: String?
private var initialName: String? private var initialName: String?
private var initialFolder: Folder? private var initialFolder: Folder?
fileprivate weak var delegate: AddFeedWindowControllerDelegate? private weak var delegate: AddFeedWindowControllerDelegate?
fileprivate var folderTreeController: TreeController! private var folderTreeController: TreeController!
private var userEnteredTitle: String? { private var userEnteredTitle: String? {
var s = nameTextField.stringValue var s = nameTextField.stringValue
@ -45,7 +45,6 @@ class AddFeedWindowController : NSWindowController {
var hostWindow: NSWindow! var hostWindow: NSWindow!
convenience init(urlString: String?, name: String?, folder: Folder?, folderTreeController: TreeController, delegate: AddFeedWindowControllerDelegate?) { convenience init(urlString: String?, name: String?, folder: Folder?, folderTreeController: TreeController, delegate: AddFeedWindowControllerDelegate?) {
self.init(windowNibName: NSNib.Name("AddFeedSheet")) self.init(windowNibName: NSNib.Name("AddFeedSheet"))
self.urlString = urlString self.urlString = urlString
self.initialName = name self.initialName = name
@ -54,15 +53,12 @@ class AddFeedWindowController : NSWindowController {
self.folderTreeController = folderTreeController self.folderTreeController = folderTreeController
} }
func runSheetOnWindow(_ w: NSWindow) { func runSheetOnWindow(_ hostWindow: NSWindow) {
hostWindow.beginSheet(window!) { (returnCode: NSApplication.ModalResponse) -> Void in
hostWindow = w
hostWindow.beginSheet(window!) { (returnCode: NSApplication.ModalResponse) -> Void in
} }
} }
override func windowDidLoad() { override func windowDidLoad() {
if let urlString = urlString { if let urlString = urlString {
urlTextField.stringValue = urlString urlTextField.stringValue = urlString
} }
@ -78,26 +74,13 @@ class AddFeedWindowController : NSWindowController {
updateUI() updateUI()
} }
private func updateUI() {
var addButtonEnabled = false
let urlString = urlTextField.stringValue
if urlString.rs_stringMayBeURL() {
addButtonEnabled = true
}
addButton.isEnabled = addButtonEnabled
}
// MARK: Actions // MARK: Actions
@IBAction func cancel(_ sender: Any?) { @IBAction func cancel(_ sender: Any?) {
cancelSheet() cancelSheet()
} }
@IBAction func addFeed(_ sender: Any?) { @IBAction func addFeed(_ sender: Any?) {
let urlString = urlTextField.stringValue let urlString = urlTextField.stringValue
let normalizedURLString = (urlString as NSString).rs_normalizedURL() let normalizedURLString = (urlString as NSString).rs_normalizedURL()
@ -114,35 +97,32 @@ class AddFeedWindowController : NSWindowController {
} }
@IBAction func localShowFeedList(_ sender: Any?) { @IBAction func localShowFeedList(_ sender: Any?) {
NSApplication.shared.sendAction(NSSelectorFromString("showFeedList:"), to: nil, from: sender) NSApplication.shared.sendAction(NSSelectorFromString("showFeedList:"), to: nil, from: sender)
hostWindow.endSheet(window!, returnCode: NSApplication.ModalResponse.continue) hostWindow.endSheet(window!, returnCode: NSApplication.ModalResponse.continue)
} }
// MARK: NSTextFieldDelegate // MARK: NSTextFieldDelegate
func controlTextDidEndEditing(_ obj: Notification) { @objc func controlTextDidEndEditing(_ obj: Notification) {
updateUI() updateUI()
} }
func controlTextDidChange(_ obj: Notification) { @objc func controlTextDidChange(_ obj: Notification) {
updateUI() updateUI()
} }
} }
private extension AddFeedWindowController { private extension AddFeedWindowController {
func cancelSheet() { private func updateUI() {
addButton.isEnabled = urlTextField.stringValue.rs_stringMayBeURL()
}
func cancelSheet() {
delegate?.addFeedWindowControllerUserDidCancel(self) delegate?.addFeedWindowControllerUserDidCancel(self)
} }
func selectedContainer() -> Container? { func selectedContainer() -> Container? {
return folderPopupButton.selectedItem?.representedObject as? Container return folderPopupButton.selectedItem?.representedObject as? Container
} }
} }