Merge branch 'ios-release' of https://github.com/Ranchero-Software/NetNewsWire into ios-release

This commit is contained in:
Brent Simmons 2020-03-22 19:26:02 -07:00
commit a1c711fad4
5 changed files with 57 additions and 63 deletions

View File

@ -139,13 +139,19 @@ private extension KeyboardManager {
keys.append(KeyboardManager.createKeyCommand(title: goToStarredTitle, action: "goToStarred:", input: "3", modifiers: [.command])) keys.append(KeyboardManager.createKeyCommand(title: goToStarredTitle, action: "goToStarred:", input: "3", modifiers: [.command]))
let articleSearchTitle = NSLocalizedString("Article Search", comment: "Article Search") let articleSearchTitle = NSLocalizedString("Article Search", comment: "Article Search")
keys.append(KeyboardManager.createKeyCommand(title: articleSearchTitle, action: "articleSearch:", input: "f", modifiers: [.command, .shift])) keys.append(KeyboardManager.createKeyCommand(title: articleSearchTitle, action: "articleSearch:", input: "f", modifiers: [.command, .alternate]))
let markAllAsReadTitle = NSLocalizedString("Mark All as Read", comment: "Mark All as Read") let markAllAsReadTitle = NSLocalizedString("Mark All as Read", comment: "Mark All as Read")
keys.append(KeyboardManager.createKeyCommand(title: markAllAsReadTitle, action: "markAllAsRead:", input: "k", modifiers: [.command])) keys.append(KeyboardManager.createKeyCommand(title: markAllAsReadTitle, action: "markAllAsRead:", input: "k", modifiers: [.command]))
let cleanUp = NSLocalizedString("Clean Up", comment: "Clean Up") let cleanUp = NSLocalizedString("Clean Up", comment: "Clean Up")
keys.append(KeyboardManager.createKeyCommand(title: cleanUp, action: "cleanUp:", input: "h", modifiers: [.command, .shift])) keys.append(KeyboardManager.createKeyCommand(title: cleanUp, action: "cleanUp:", input: "'", modifiers: [.command]))
let toggleReadFeedsFilter = NSLocalizedString("Toggle Read Feeds Filter", comment: "Toggle Read Feeds Filter")
keys.append(KeyboardManager.createKeyCommand(title: toggleReadFeedsFilter, action: "toggleReadFeedsFilter:", input: "f", modifiers: [.command, .shift]))
let toggleReadArticlesFilter = NSLocalizedString("Toggle Read Articles Filter", comment: "Toggle Read Articles Filter")
keys.append(KeyboardManager.createKeyCommand(title: toggleReadArticlesFilter, action: "toggleReadArticlesFilter:", input: "h", modifiers: [.command, .shift]))
return keys return keys
} }

View File

@ -378,13 +378,7 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner {
} }
@IBAction func toggleFilter(_ sender: Any) { @IBAction func toggleFilter(_ sender: Any) {
if coordinator.isReadFeedsFiltered { coordinator.toggleReadFeedsFilter()
setFilterButtonToInactive()
coordinator.showAllFeeds()
} else {
setFilterButtonToActive()
coordinator.hideReadFeeds()
}
} }
@IBAction func add(_ sender: UIBarButtonItem) { @IBAction func add(_ sender: UIBarButtonItem) {
@ -509,6 +503,16 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner {
} }
} }
func updateUI() {
if coordinator.isReadFeedsFiltered {
setFilterButtonToActive()
} else {
setFilterButtonToInactive()
}
refreshProgressView?.updateRefreshLabel()
addNewItemButton?.isEnabled = !AccountManager.shared.activeAccounts.isEmpty
}
func focus() { func focus() {
becomeFirstResponder() becomeFirstResponder()
} }
@ -580,16 +584,6 @@ private extension MasterFeedViewController {
toolbarItems?.insert(refreshProgressItemButton, at: 2) toolbarItems?.insert(refreshProgressItemButton, at: 2)
} }
func updateUI() {
if coordinator.isReadFeedsFiltered {
setFilterButtonToActive()
} else {
setFilterButtonToInactive()
}
refreshProgressView?.updateRefreshLabel()
addNewItemButton?.isEnabled = !AccountManager.shared.activeAccounts.isEmpty
}
func setFilterButtonToActive() { func setFilterButtonToActive() {
filterButton?.image = AppAssets.filterActiveImage filterButton?.image = AppAssets.filterActiveImage
filterButton?.accLabelText = NSLocalizedString("Selected - Filter Read Feeds", comment: "Selected - Filter Read Feeds") filterButton?.accLabelText = NSLocalizedString("Selected - Filter Read Feeds", comment: "Selected - Filter Read Feeds")

View File

@ -111,13 +111,7 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
// MARK: Actions // MARK: Actions
@IBAction func toggleFilter(_ sender: Any) { @IBAction func toggleFilter(_ sender: Any) {
if coordinator.isReadArticlesFiltered { coordinator.toggleReadArticlesFilter()
setFilterButtonToInactive()
coordinator.showAllArticles()
} else {
setFilterButtonToActive()
coordinator.hideReadArticles()
}
} }
@IBAction func markAllAsRead(_ sender: Any) { @IBAction func markAllAsRead(_ sender: Any) {
@ -589,11 +583,13 @@ private extension MasterTimelineViewController {
} }
if coordinator.isReadArticlesFiltered { if coordinator.isReadArticlesFiltered {
setFilterButtonToActive() filterButton?.image = AppAssets.filterActiveImage
filterButton?.accLabelText = NSLocalizedString("Selected - Filter Read Articles", comment: "Selected - Filter Read Articles")
} else { } else {
setFilterButtonToInactive() filterButton?.image = AppAssets.filterInactiveImage
filterButton?.accLabelText = NSLocalizedString("Filter Read Articles", comment: "Filter Read Articles")
} }
tableView.selectRow(at: nil, animated: false, scrollPosition: .top) tableView.selectRow(at: nil, animated: false, scrollPosition: .top)
if resetScroll && dataSource.snapshot().itemIdentifiers(inSection: 0).count > 0 { if resetScroll && dataSource.snapshot().itemIdentifiers(inSection: 0).count > 0 {
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: false) tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: false)
@ -603,16 +599,6 @@ private extension MasterTimelineViewController {
} }
func setFilterButtonToActive() {
filterButton?.image = AppAssets.filterActiveImage
filterButton?.accLabelText = NSLocalizedString("Selected - Filter Read Articles", comment: "Selected - Filter Read Articles")
}
func setFilterButtonToInactive() {
filterButton?.image = AppAssets.filterInactiveImage
filterButton?.accLabelText = NSLocalizedString("Filter Read Articles", comment: "Filter Read Articles")
}
func updateToolbar() { func updateToolbar() {
markAllAsReadButton.isEnabled = coordinator.isTimelineUnreadAvailable markAllAsReadButton.isEnabled = coordinator.isTimelineUnreadAvailable
firstUnreadButton.isEnabled = coordinator.isTimelineUnreadAvailable firstUnreadButton.isEnabled = coordinator.isTimelineUnreadAvailable

View File

@ -94,6 +94,14 @@ class RootSplitViewController: UISplitViewController {
coordinator.cleanUp() coordinator.cleanUp()
} }
@objc func toggleReadFeedsFilter(_ sender: Any?) {
coordinator.toggleReadFeedsFilter()
}
@objc func toggleReadArticlesFilter(_ sender: Any?) {
coordinator.toggleReadArticlesFilter()
}
@objc func refresh(_ sender: Any?) { @objc func refresh(_ sender: Any?) {
appDelegate.manualRefresh(errorHandler: ErrorHandler.present(self)) appDelegate.manualRefresh(errorHandler: ErrorHandler.present(self))
} }

View File

@ -581,6 +581,30 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
} }
} }
func toggleReadFeedsFilter() {
if isReadFeedsFiltered {
treeControllerDelegate.isReadFiltered = false
} else {
treeControllerDelegate.isReadFiltered = true
}
rebuildBackingStores()
masterFeedViewController?.updateUI()
}
func toggleReadArticlesFilter() {
guard let feedID = timelineFeed?.feedID else {
return
}
if isReadArticlesFiltered {
readFilterEnabledTable[feedID] = false
} else {
readFilterEnabledTable[feedID] = true
}
refreshTimeline(resetScroll: false)
}
func shadowNodesFor(section: Int) -> [Node] { func shadowNodesFor(section: Int) -> [Node] {
return shadowTable[section] return shadowTable[section]
} }
@ -617,30 +641,6 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
} }
} }
func showAllFeeds() {
treeControllerDelegate.isReadFiltered = false
rebuildBackingStores()
}
func hideReadFeeds() {
treeControllerDelegate.isReadFiltered = true
rebuildBackingStores()
}
func showAllArticles() {
if let feedID = timelineFeed?.feedID {
readFilterEnabledTable[feedID] = false
}
refreshTimeline(resetScroll: false)
}
func hideReadArticles() {
if let feedID = timelineFeed?.feedID {
readFilterEnabledTable[feedID] = true
}
refreshTimeline(resetScroll: false)
}
func isExpanded(_ containerIdentifiable: ContainerIdentifiable) -> Bool { func isExpanded(_ containerIdentifiable: ContainerIdentifiable) -> Bool {
if let containerID = containerIdentifiable.containerID { if let containerID = containerIdentifiable.containerID {
return expandedTable.contains(containerID) return expandedTable.contains(containerID)