From 076df956f921408cb6c7bfe6e2871f69ed548afa Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 17 Feb 2019 22:00:04 -0800 Subject: [PATCH] Continue rewiring progress. --- NetNewsWire/MainWindow/MainWindowController.swift | 13 ++++--------- .../MainWindow/Timeline/TimelineTableView.swift | 4 ++-- .../Timeline/TimelineViewController.swift | 8 +++++++- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/NetNewsWire/MainWindow/MainWindowController.swift b/NetNewsWire/MainWindow/MainWindowController.swift index 1402c8779..b2a885573 100644 --- a/NetNewsWire/MainWindow/MainWindowController.swift +++ b/NetNewsWire/MainWindow/MainWindowController.swift @@ -38,6 +38,7 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { private static var detailViewMinimumThickness = 384 private var sidebarViewController: SidebarViewController! private var timelineContainerViewController: TimelineContainerViewController! + private var detailViewController: DetailViewController! // MARK: - NSWindowController @@ -72,6 +73,8 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { timelineContainerViewController = splitViewController?.splitViewItems[1].viewController as? TimelineContainerViewController timelineContainerViewController.delegate = self + detailViewController = splitViewController?.splitViewItems[2].viewController as? DetailViewController + NotificationCenter.default.addObserver(self, selector: #selector(applicationWillTerminate(_:)), name: NSApplication.willTerminateNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(refreshProgressDidChange(_:)), name: .AccountRefreshDidBegin, object: nil) @@ -208,13 +211,9 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { @IBAction func scrollOrGoToNextUnread(_ sender: Any?) { - guard let detailViewController = detailViewController else { - return - } - detailViewController.canScrollDown { (canScroll) in NSCursor.setHiddenUntilMouseMoves(true) - canScroll ? detailViewController.scrollPageDown(sender) : self.nextUnread(sender) + canScroll ? self.detailViewController.scrollPageDown(sender) : self.nextUnread(sender) } } @@ -439,10 +438,6 @@ private extension MainWindowController { return splitViewController?.splitViewItems[2] } - var detailViewController: DetailViewController? { - return splitViewController?.splitViewItems[2].viewController as? DetailViewController - } - var selectedArticles: [Article]? { return timelineViewController?.selectedArticles } diff --git a/NetNewsWire/MainWindow/Timeline/TimelineTableView.swift b/NetNewsWire/MainWindow/Timeline/TimelineTableView.swift index c08f2e51a..bc2f4451f 100644 --- a/NetNewsWire/MainWindow/Timeline/TimelineTableView.swift +++ b/NetNewsWire/MainWindow/Timeline/TimelineTableView.swift @@ -10,12 +10,12 @@ import AppKit class TimelineTableView: NSTableView { - @IBOutlet var keyboardDelegate: KeyboardDelegate! + weak var keyboardDelegate: KeyboardDelegate? // MARK: - NSResponder override func keyDown(with event: NSEvent) { - if keyboardDelegate.keydown(event, in: self) { + if keyboardDelegate?.keydown(event, in: self) ?? false { return } super.keyDown(with: event) diff --git a/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift b/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift index 4d277a7fc..9feadf570 100644 --- a/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift +++ b/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift @@ -117,6 +117,8 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner { return selectedArticles.count == 1 ? selectedArticles.first : nil } + private let keyboardDelegate = TimelineKeyboardDelegate() + convenience init(delegate: TimelineDelegate) { self.init(nibName: "TimelineTableView", bundle: nil) self.delegate = delegate @@ -132,7 +134,8 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner { tableView.target = self tableView.doubleAction = #selector(openArticleInBrowser(_:)) tableView.setDraggingSourceOperationMask(.copy, forLocal: false) - + tableView.keyboardDelegate = keyboardDelegate + if !didRegisterForNotifications { NotificationCenter.default.addObserver(self, selector: #selector(statusesDidChange(_:)), name: .StatusesDidChange, object: nil) @@ -628,6 +631,8 @@ extension TimelineViewController: NSTableViewDelegate { private func postTimelineSelectionDidChangeNotification(_ selectedArticles: ArticleArray?) { + delegate?.timelineSelectionDidChange(self, selectedArticles: selectedArticles) + var userInfo = UserInfoDictionary() if let selectedArticles = selectedArticles { userInfo[UserInfoKey.articles] = selectedArticles @@ -635,6 +640,7 @@ extension TimelineViewController: NSTableViewDelegate { userInfo[UserInfoKey.view] = tableView NotificationCenter.default.post(name: .TimelineSelectionDidChange, object: self, userInfo: userInfo) + } private func configureTimelineCell(_ cell: TimelineTableCellView, article: Article) {