From e05fdc99ddd9bfbbf339f3e5de9f7c1171b01d59 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sun, 24 Nov 2019 04:29:15 -0600 Subject: [PATCH] Change to use show/hide verbiage in menu items instead of check marks --- Mac/MainWindow/MainWindowController.swift | 33 +++++++++++++++---- .../TimelineContainerViewController.swift | 3 +- .../Timeline/TimelineViewController.swift | 5 +-- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/Mac/MainWindow/MainWindowController.swift b/Mac/MainWindow/MainWindowController.swift index 39b56f8d3..f77524c1c 100644 --- a/Mac/MainWindow/MainWindowController.swift +++ b/Mac/MainWindow/MainWindowController.swift @@ -238,16 +238,11 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { } if item.action == #selector(toggleReadFeedsFilter(_:)) { - (item as! NSMenuItem).state = sidebarViewController?.isReadFiltered ?? false ? .on : .off + return validateToggleReadFeeds(item) } if item.action == #selector(toggleReadArticlesFilter(_:)) { - if let timelineContainer = timelineContainerViewController { - (item as! NSMenuItem).isEnabled = true - (item as! NSMenuItem).state = timelineContainer.isReadFiltered ? .on : .off - } else { - (item as! NSMenuItem).isEnabled = false - } + return validateToggleReadArticles(item) } if item.action == #selector(toggleSidebar(_:)) { @@ -832,6 +827,30 @@ private extension MainWindowController { return result } + + func validateToggleReadFeeds(_ item: NSValidatedUserInterfaceItem) -> Bool { + guard let menuItem = item as? NSMenuItem else { return false } + + let showCommand = NSLocalizedString("Show Read Feeds", comment: "Command") + let hideCommand = NSLocalizedString("Hide Read Feeds", comment: "Command") + menuItem.title = sidebarViewController?.isReadFiltered ?? false ? showCommand : hideCommand + return true + } + + func validateToggleReadArticles(_ item: NSValidatedUserInterfaceItem) -> Bool { + guard let menuItem = item as? NSMenuItem else { return false } + + let showCommand = NSLocalizedString("Show Read Articles", comment: "Command") + let hideCommand = NSLocalizedString("Hide Read Articles", comment: "Command") + + if let isReadFiltered = timelineContainerViewController?.isReadFiltered { + menuItem.title = isReadFiltered ? showCommand : hideCommand + return true + } else { + menuItem.title = hideCommand + return false + } + } // MARK: - Misc. diff --git a/Mac/MainWindow/Timeline/TimelineContainerViewController.swift b/Mac/MainWindow/Timeline/TimelineContainerViewController.swift index cdeaec45d..0130fc535 100644 --- a/Mac/MainWindow/Timeline/TimelineContainerViewController.swift +++ b/Mac/MainWindow/Timeline/TimelineContainerViewController.swift @@ -30,7 +30,8 @@ final class TimelineContainerViewController: NSViewController { weak var delegate: TimelineContainerViewControllerDelegate? - var isReadFiltered: Bool { + var isReadFiltered: Bool? { + guard let currentTimelineViewController = currentTimelineViewController, mode(for: currentTimelineViewController) == .regular else { return nil } return regularTimelineViewController.isReadFiltered } diff --git a/Mac/MainWindow/Timeline/TimelineViewController.swift b/Mac/MainWindow/Timeline/TimelineViewController.swift index 60f558dec..a6f88080d 100644 --- a/Mac/MainWindow/Timeline/TimelineViewController.swift +++ b/Mac/MainWindow/Timeline/TimelineViewController.swift @@ -21,8 +21,9 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner, Unr @IBOutlet var tableView: TimelineTableView! private var articleReadFilterType: ReadFilterType? - var isReadFiltered: Bool { - return articleReadFilterType ?? .read != .none + var isReadFiltered: Bool? { + guard let articleReadFilterType = articleReadFilterType, articleReadFilterType != .alwaysRead else { return nil} + return articleReadFilterType != .none } var representedObjects: [AnyObject]? {