From adb63098726668fcb3c75fab8ad8e555c39f791d Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 27 Jul 2019 14:49:07 -0500 Subject: [PATCH] In Three Pane Mode only show the progress indicator on the Feeds controller --- NetNewsWire.xcodeproj/project.pbxproj | 6 +---- iOS/AppCoordinator.swift | 8 +++--- iOS/MasterFeed/MasterFeedViewController.swift | 10 +++++-- .../MasterTimelineViewController.swift | 14 +++++++++- .../ProgressTableViewController.swift | 27 ------------------- 5 files changed, 26 insertions(+), 39 deletions(-) delete mode 100644 iOS/Progress/ProgressTableViewController.swift diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index ea10a613e..d0a9e354b 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -40,7 +40,6 @@ 5183CCDA226E31A50010922C /* NonIntrinsicImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCD9226E31A50010922C /* NonIntrinsicImageView.swift */; }; 5183CCDD226F1F5C0010922C /* NavigationProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCDC226F1F5C0010922C /* NavigationProgressView.swift */; }; 5183CCDF226F1FCC0010922C /* UINavigationController+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCDE226F1FCC0010922C /* UINavigationController+Progress.swift */; }; - 5183CCE3226F314C0010922C /* ProgressTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE2226F314C0010922C /* ProgressTableViewController.swift */; }; 5183CCE5226F4DFA0010922C /* RefreshInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */; }; 5183CCE6226F4E110010922C /* RefreshInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */; }; 5183CCE8226F68D90010922C /* AccountRefreshTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE7226F68D90010922C /* AccountRefreshTimer.swift */; }; @@ -691,12 +690,11 @@ 515436872291D75D005E1CDF /* AddLocalAccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddLocalAccountViewController.swift; sourceTree = ""; }; 515436892291FED9005E1CDF /* FeedbinAccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinAccountViewController.swift; sourceTree = ""; }; 51554BFC228B6EB50055115A /* SyncDatabase.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SyncDatabase.xcodeproj; path = Frameworks/SyncDatabase/SyncDatabase.xcodeproj; sourceTree = SOURCE_ROOT; }; - 515ADE3F22E11FAE006B2460 /* SystemMessageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SystemMessageViewController.swift; path = SystemMessageViewController.swift; sourceTree = ""; }; + 515ADE3F22E11FAE006B2460 /* SystemMessageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemMessageViewController.swift; sourceTree = ""; }; 5183CCCF226E1E880010922C /* NonIntrinsicLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonIntrinsicLabel.swift; sourceTree = ""; }; 5183CCD9226E31A50010922C /* NonIntrinsicImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonIntrinsicImageView.swift; sourceTree = ""; }; 5183CCDC226F1F5C0010922C /* NavigationProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationProgressView.swift; sourceTree = ""; }; 5183CCDE226F1FCC0010922C /* UINavigationController+Progress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UINavigationController+Progress.swift"; sourceTree = ""; }; - 5183CCE2226F314C0010922C /* ProgressTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressTableViewController.swift; sourceTree = ""; }; 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshInterval.swift; sourceTree = ""; }; 5183CCE7226F68D90010922C /* AccountRefreshTimer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountRefreshTimer.swift; sourceTree = ""; }; 5183CCEC22711DCE0010922C /* Settings.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Settings.storyboard; sourceTree = ""; }; @@ -1050,7 +1048,6 @@ 5183CCDB226F1EEB0010922C /* Progress */ = { isa = PBXGroup; children = ( - 5183CCE2226F314C0010922C /* ProgressTableViewController.swift */, 5183CCDC226F1F5C0010922C /* NavigationProgressView.swift */, 5183CCDE226F1FCC0010922C /* UINavigationController+Progress.swift */, ); @@ -2415,7 +2412,6 @@ DF999FF722B5AEFA0064B687 /* SafariView.swift in Sources */, 51C4529B22650A1000C03939 /* FaviconDownloader.swift in Sources */, 84DEE56622C32CA4005FC42C /* SmartFeedDelegate.swift in Sources */, - 5183CCE3226F314C0010922C /* ProgressTableViewController.swift in Sources */, 512E09012268907400BDCFDD /* MasterFeedTableViewSectionHeader.swift in Sources */, 51C45268226508F600C03939 /* MasterFeedUnreadCountView.swift in Sources */, 5183CCD0226E1E880010922C /* NonIntrinsicLabel.swift in Sources */, diff --git a/iOS/AppCoordinator.swift b/iOS/AppCoordinator.swift index fa31901a2..1b35fe087 100644 --- a/iOS/AppCoordinator.swift +++ b/iOS/AppCoordinator.swift @@ -40,10 +40,6 @@ class AppCoordinator: NSObject, UndoableCommandRunner { return nil } - private var isThreePanelMode: Bool { - return !rootSplitViewController.isCollapsed && rootSplitViewController.displayMode == .allVisible - } - private let fetchAndMergeArticlesQueue = CoalescingQueue(name: "Fetch and Merge Articles", interval: 0.5) private var articleRowMap = [String: Int]() // articleID: rowIndex @@ -65,6 +61,10 @@ class AppCoordinator: NSObject, UndoableCommandRunner { return TreeController(delegate: treeControllerDelegate) }() + var isThreePanelMode: Bool { + return !rootSplitViewController.isCollapsed && rootSplitViewController.displayMode == .allVisible + } + var rootNode: Node { return treeController.rootNode } diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 987163f9f..fd49d3b90 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -13,7 +13,7 @@ import RSCore import RSTree import SwiftUI -class MasterFeedViewController: ProgressTableViewController, UndoableCommandRunner { +class MasterFeedViewController: UITableViewController, UndoableCommandRunner { @IBOutlet private weak var markAllAsReadButton: UIBarButtonItem! @IBOutlet private weak var addNewItemButton: UIBarButtonItem! @@ -44,7 +44,8 @@ class MasterFeedViewController: ProgressTableViewController, UndoableCommandRunn NotificationCenter.default.addObserver(self, selector: #selector(userDidAddFeed(_:)), name: .UserDidAddFeed, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(accountsDidChange(_:)), name: .AccountsDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(accountStateDidChange(_:)), name: .AccountStateDidChange, object: nil) - + NotificationCenter.default.addObserver(self, selector: #selector(progressDidChange(_:)), name: .AccountRefreshProgressDidChange, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(backingStoresDidRebuild(_:)), name: .BackingStoresDidRebuild, object: coordinator) NotificationCenter.default.addObserver(self, selector: #selector(masterSelectionDidChange(_:)), name: .MasterSelectionDidChange, object: coordinator) NotificationCenter.default.addObserver(self, selector: #selector(contentSizeCategoryDidChange), name: UIContentSizeCategory.didChangeNotification, object: nil) @@ -65,6 +66,7 @@ class MasterFeedViewController: ProgressTableViewController, UndoableCommandRunn override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) becomeFirstResponder() + navigationController?.updateAccountRefreshProgressIndicator() } override func viewWillDisappear(_ animated: Bool) { @@ -158,6 +160,10 @@ class MasterFeedViewController: ProgressTableViewController, UndoableCommandRunn updateUI() } + @objc func progressDidChange(_ note: Notification) { + navigationController?.updateAccountRefreshProgressIndicator() + } + @objc func masterSelectionDidChange(_ note: Notification) { if let indexPath = coordinator.currentMasterIndexPath { if tableView.indexPathForSelectedRow != indexPath { diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index ae4a07df5..2cc6bbd52 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -11,7 +11,7 @@ import RSCore import Account import Articles -class MasterTimelineViewController: ProgressTableViewController, UndoableCommandRunner { +class MasterTimelineViewController: UITableViewController, UndoableCommandRunner { private var numberOfTextLines = 0 @@ -36,6 +36,7 @@ class MasterTimelineViewController: ProgressTableViewController, UndoableCommand NotificationCenter.default.addObserver(self, selector: #selector(imageDidBecomeAvailable(_:)), name: .ImageDidBecomeAvailable, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(imageDidBecomeAvailable(_:)), name: .FaviconDidBecomeAvailable, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange(_:)), name: UserDefaults.didChangeNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(progressDidChange(_:)), name: .AccountRefreshProgressDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(articlesReinitialized(_:)), name: .ArticlesReinitialized, object: coordinator) NotificationCenter.default.addObserver(self, selector: #selector(articleDataDidChange(_:)), name: .ArticleDataDidChange, object: coordinator) @@ -56,6 +57,7 @@ class MasterTimelineViewController: ProgressTableViewController, UndoableCommand override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) becomeFirstResponder() + updateProgressIndicatorIfNeeded() } override func viewWillDisappear(_ animated: Bool) { @@ -274,6 +276,10 @@ class MasterTimelineViewController: ProgressTableViewController, UndoableCommand tableView.reloadData() } + @objc func progressDidChange(_ note: Notification) { + updateProgressIndicatorIfNeeded() + } + // MARK: Reloading @objc func reloadAllVisibleCells() { @@ -366,6 +372,12 @@ private extension MasterTimelineViewController { firstUnreadButton.isEnabled = coordinator.isTimelineUnreadAvailable } + func updateProgressIndicatorIfNeeded() { + if !coordinator.isThreePanelMode { + navigationController?.updateAccountRefreshProgressIndicator() + } + } + func configureTimelineCell(_ cell: MasterTimelineTableViewCell, article: Article) { let avatar = avatarFor(article) diff --git a/iOS/Progress/ProgressTableViewController.swift b/iOS/Progress/ProgressTableViewController.swift deleted file mode 100644 index 216f3f127..000000000 --- a/iOS/Progress/ProgressTableViewController.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// ProgressTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 4/23/19. -// Copyright © 2019 Ranchero Software. All rights reserved. -// - -import UIKit - -class ProgressTableViewController: UITableViewController { - - override func viewDidLoad() { - super.viewDidLoad() - NotificationCenter.default.addObserver(self, selector: #selector(progressDidChange(_:)), name: .AccountRefreshProgressDidChange, object: nil) - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - navigationController?.updateAccountRefreshProgressIndicator() - } - - @objc func progressDidChange(_ note: Notification) { - navigationController?.updateAccountRefreshProgressIndicator() - } - -}