Put unread articles button in the toolbar. Issue #2581

This commit is contained in:
Maurice Parker 2020-11-19 12:10:42 -06:00
parent 117f6ccf6f
commit 97bbb9d9d9
2 changed files with 39 additions and 9 deletions

View File

@ -95,11 +95,19 @@ struct AppAssets {
}()
static var filterActive: RSImage = {
if #available(macOS 11.0, *) {
return NSImage(systemSymbolName: "line.horizontal.3.decrease.circle.fill", accessibilityDescription: nil)!
} else {
return RSImage(named: "filterActive")!
}
}()
static var filterInactive: RSImage = {
if #available(macOS 11.0, *) {
return NSImage(systemSymbolName: "line.horizontal.3.decrease.circle", accessibilityDescription: nil)!
} else {
return RSImage(named: "filterInactive")!
}
}()
static var iconLightBackgroundColor: NSColor = {

View File

@ -716,6 +716,7 @@ extension NSToolbarItem.Identifier {
static let timelineTrackingSeparator = NSToolbarItem.Identifier("timelineTrackingSeparator")
static let search = NSToolbarItem.Identifier("search")
static let markAllAsRead = NSToolbarItem.Identifier("markAllAsRead")
static let toggleReadArticlesFilter = NSToolbarItem.Identifier("toggleReadArticlesFilter")
static let nextUnread = NSToolbarItem.Identifier("nextUnread")
static let markRead = NSToolbarItem.Identifier("markRead")
static let markStar = NSToolbarItem.Identifier("markStar")
@ -753,6 +754,10 @@ extension MainWindowController: NSToolbarDelegate {
let title = NSLocalizedString("Mark All as Read", comment: "Mark All as Read")
return buildToolbarButton(.markAllAsRead, title, AppAssets.markAllAsReadImage, "markAllAsRead:")
case .toggleReadArticlesFilter:
let title = NSLocalizedString("Read Articles Filter", comment: "Read Articles Filter")
return buildToolbarButton(.toggleReadArticlesFilter, title, AppAssets.filterInactive, "toggleReadArticlesFilter:")
case .timelineTrackingSeparator:
return NSTrackingSeparatorToolbarItem(identifier: .timelineTrackingSeparator, splitView: splitViewController!.splitView, dividerIndex: 1)
@ -815,6 +820,7 @@ extension MainWindowController: NSToolbarDelegate {
.newSidebarItemMenu,
.sidebarTrackingSeparator,
.markAllAsRead,
.toggleReadArticlesFilter,
.timelineTrackingSeparator,
.flexibleSpace,
.nextUnread,
@ -854,6 +860,7 @@ extension MainWindowController: NSToolbarDelegate {
.newSidebarItemMenu,
.sidebarTrackingSeparator,
.markAllAsRead,
.toggleReadArticlesFilter,
.timelineTrackingSeparator,
.markRead,
.markStar,
@ -1175,18 +1182,33 @@ private extension MainWindowController {
}
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 = showCommand
guard let isReadFiltered = timelineContainerViewController?.isReadFiltered else {
(item as? NSMenuItem)?.title = hideCommand
if #available(macOS 11.0, *), let toolbarItem = item as? NSToolbarItem, let button = toolbarItem.view as? NSButton {
toolbarItem.toolTip = hideCommand
button.image = AppAssets.filterInactive
}
return false
}
if isReadFiltered {
(item as? NSMenuItem)?.title = showCommand
if #available(macOS 11.0, *), let toolbarItem = item as? NSToolbarItem, let button = toolbarItem.view as? NSButton {
toolbarItem.toolTip = showCommand
button.image = AppAssets.filterActive
}
} else {
(item as? NSMenuItem)?.title = hideCommand
if #available(macOS 11.0, *), let toolbarItem = item as? NSToolbarItem, let button = toolbarItem.view as? NSButton {
toolbarItem.toolTip = hideCommand
button.image = AppAssets.filterInactive
}
}
return true
}
// MARK: - Misc.