diff --git a/Evergreen/Inspector/FeedInspectorViewController.swift b/Evergreen/Inspector/FeedInspectorViewController.swift index 2822728a5..de5ebe612 100644 --- a/Evergreen/Inspector/FeedInspectorViewController.swift +++ b/Evergreen/Inspector/FeedInspectorViewController.swift @@ -62,6 +62,13 @@ final class FeedInspectorViewController: NSViewController, Inspector { extension FeedInspectorViewController: NSTextFieldDelegate { + override func controlTextDidChange(_ note: Notification) { + + guard let feed = feed, let nameTextField = nameTextField else { + return + } + feed.editedName = nameTextField.stringValue + } } private extension FeedInspectorViewController { diff --git a/Evergreen/Inspector/Inspector.storyboard b/Evergreen/Inspector/Inspector.storyboard index 43ddead44..9704efc13 100644 --- a/Evergreen/Inspector/Inspector.storyboard +++ b/Evergreen/Inspector/Inspector.storyboard @@ -195,7 +195,7 @@ Field - + @@ -228,20 +228,37 @@ Field - - + + + + + + + + + + - + + + + + + + + + + diff --git a/Evergreen/Inspector/NothingInspectorViewController.swift b/Evergreen/Inspector/NothingInspectorViewController.swift index be22ffbf2..6885d00a0 100644 --- a/Evergreen/Inspector/NothingInspectorViewController.swift +++ b/Evergreen/Inspector/NothingInspectorViewController.swift @@ -10,15 +10,38 @@ import AppKit final class NothingInspectorViewController: NSViewController, Inspector { + @IBOutlet var nothingTextField: NSTextField? + @IBOutlet var multipleTextField: NSTextField? + let isFallbackInspector = true - var objects: [Any]? + var objects: [Any]? { + didSet { + updateTextFields() + } + } func canInspect(_ objects: [Any]) -> Bool { return true } - func willEndInspectingObjects() { + override func viewDidLoad() { + updateTextFields() + } +} + +private extension NothingInspectorViewController { + + func updateTextFields() { + + if let objects = objects, objects.count > 1 { + nothingTextField?.isHidden = true + multipleTextField?.isHidden = false + } + else { + nothingTextField?.isHidden = false + multipleTextField?.isHidden = true + } } } diff --git a/Frameworks/Account/Account.swift b/Frameworks/Account/Account.swift index badef1d21..b5abd4bf1 100644 --- a/Frameworks/Account/Account.swift +++ b/Frameworks/Account/Account.swift @@ -129,12 +129,11 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container, self.database = Database(databaseFilePath: databaseFilePath, accountID: accountID) NotificationCenter.default.addObserver(self, selector: #selector(downloadProgressDidChange(_:)), name: .DownloadProgressDidChange, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil) - - NotificationCenter.default.addObserver(self, selector: #selector(batchUpdateDidPerform(_:)), name: .BatchUpdateDidPerform, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(batchUpdateDidPerform(_:)), name: .BatchUpdateDidPerform, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(feedSettingDidChange(_:)), name: .FeedSettingDidChange, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(displayNameDidChange(_:)), name: .DisplayNameDidChange, object: nil) pullObjectsFromDisk() @@ -438,6 +437,16 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container, } } + @objc func displayNameDidChange(_ note: Notification) { + + if let feed = note.object as? Feed, let feedAccount = feed.account, feedAccount === self { + dirty = true + } + if let folder = note.object as? Folder, let folderAccount = folder.account, folderAccount === self { + dirty = true + } + } + // MARK: - Equatable public class func ==(lhs: Account, rhs: Account) -> Bool { diff --git a/Frameworks/Account/Folder.swift b/Frameworks/Account/Folder.swift index b507dbdf9..f454eb2e9 100644 --- a/Frameworks/Account/Folder.swift +++ b/Frameworks/Account/Folder.swift @@ -17,7 +17,6 @@ public final class Folder: DisplayNameProvider, Container, UnreadCountProvider, public var name: String? { didSet { - account?.dirty = true postDisplayNameDidChangeNotification() } } diff --git a/Frameworks/Data/Feed.swift b/Frameworks/Data/Feed.swift index 750d01c6a..c634537e3 100644 --- a/Frameworks/Data/Feed.swift +++ b/Frameworks/Data/Feed.swift @@ -20,7 +20,13 @@ public final class Feed: DisplayNameProvider, UnreadCountProvider, Hashable { public var faviconURL: String? public var name: String? public var authors: Set? - public var editedName: String? + + public var editedName: String? { + didSet { + postDisplayNameDidChangeNotification() + } + } + public var conditionalGetInfo: HTTPConditionalGetInfo? public var contentHash: String? public let hashValue: Int @@ -29,7 +35,13 @@ public final class Feed: DisplayNameProvider, UnreadCountProvider, Hashable { public var nameForDisplay: String { get { - return (editedName ?? name) ?? NSLocalizedString("Untitled", comment: "Feed name") + if let s = editedName, !s.isEmpty { + return s + } + if let s = name, !s.isEmpty { + return s + } + return NSLocalizedString("Untitled", comment: "Feed name") } }