Reconcile with 6.1.6-ios branch.

This commit is contained in:
Brent Simmons 2025-01-03 14:45:03 -08:00
parent 8a45b319f7
commit 0d70b9f4ad
9 changed files with 54 additions and 46 deletions

View File

@ -69,5 +69,4 @@ class CloudKitAccountViewController: UITableViewController {
vc.modalPresentationStyle = .pageSheet vc.modalPresentationStyle = .pageSheet
present(vc, animated: true) present(vc, animated: true)
} }
} }

View File

@ -46,7 +46,6 @@ class FeedbinAccountViewController: UITableViewController {
NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: passwordTextField) NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: passwordTextField)
tableView.register(ImageHeaderView.self, forHeaderFooterViewReuseIdentifier: "SectionHeader") tableView.register(ImageHeaderView.self, forHeaderFooterViewReuseIdentifier: "SectionHeader")
} }
private func setupFooter() { private func setupFooter() {
@ -71,7 +70,6 @@ class FeedbinAccountViewController: UITableViewController {
dismiss(animated: true, completion: nil) dismiss(animated: true, completion: nil)
} }
@IBAction func showHidePassword(_ sender: Any) { @IBAction func showHidePassword(_ sender: Any) {
if passwordTextField.isSecureTextEntry { if passwordTextField.isSecureTextEntry {
passwordTextField.isSecureTextEntry = false passwordTextField.isSecureTextEntry = false

View File

@ -45,6 +45,8 @@ class ArticleViewController: UIViewController {
weak var coordinator: SceneCoordinator! weak var coordinator: SceneCoordinator!
private let poppableDelegate = PoppableGestureRecognizerDelegate()
var article: Article? { var article: Article? {
didSet { didSet {
if let controller = currentWebViewController, controller.article != article { if let controller = currentWebViewController, controller.article != article {
@ -101,6 +103,11 @@ class ArticleViewController: UIViewController {
articleExtractorButton.addTarget(self, action: #selector(toggleArticleExtractor(_:)), for: .touchUpInside) articleExtractorButton.addTarget(self, action: #selector(toggleArticleExtractor(_:)), for: .touchUpInside)
toolbarItems?.insert(UIBarButtonItem(customView: articleExtractorButton), at: 6) toolbarItems?.insert(UIBarButtonItem(customView: articleExtractorButton), at: 6)
if let parentNavController = navigationController?.parent as? UINavigationController {
poppableDelegate.navigationController = parentNavController
parentNavController.interactivePopGestureRecognizer?.delegate = poppableDelegate
}
pageViewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: [:]) pageViewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: [:])
pageViewController.delegate = self pageViewController.delegate = self
pageViewController.dataSource = self pageViewController.dataSource = self
@ -155,12 +162,23 @@ class ArticleViewController: UIViewController {
updateUI() updateUI()
} }
override func viewWillAppear(_ animated: Bool) {
let hideToolbars = AppDefaults.shared.articleFullscreenEnabled
if hideToolbars {
currentWebViewController?.hideBars()
} else {
currentWebViewController?.showBars()
}
super.viewWillAppear(animated)
}
override func viewDidAppear(_ animated: Bool) { override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true) super.viewDidAppear(true)
coordinator.isArticleViewControllerPending = false coordinator.isArticleViewControllerPending = false
} }
override func viewWillDisappear(_ animated: Bool) { override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if searchBar != nil && !searchBar.isHidden { if searchBar != nil && !searchBar.isHidden {
endFind() endFind()
} }
@ -211,7 +229,6 @@ class ArticleViewController: UIViewController {
starBarButtonItem.image = AppAssets.starOpenImage starBarButtonItem.image = AppAssets.starOpenImage
starBarButtonItem.accLabelText = NSLocalizedString("Star Article", comment: "Star Article") starBarButtonItem.accLabelText = NSLocalizedString("Star Article", comment: "Star Article")
} }
} }
// MARK: Notifications // MARK: Notifications

View File

@ -19,29 +19,39 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
window = UIWindow(windowScene: scene as! UIWindowScene)
window!.tintColor = AppAssets.primaryAccentColor window!.tintColor = AppAssets.primaryAccentColor
updateUserInterfaceStyle() updateUserInterfaceStyle()
window!.rootViewController = coordinator.start(for: window!.frame.size) UINavigationBar.appearance().scrollEdgeAppearance = UINavigationBarAppearance()
let rootViewController = window!.rootViewController as! RootSplitViewController
rootViewController.presentsWithGesture = true
rootViewController.showsSecondaryOnlyButton = true
if AppDefaults.shared.isFirstRun {
// This ensures that the Feeds view shows on first-run.
rootViewController.preferredDisplayMode = .twoBesideSecondary
} else {
rootViewController.preferredDisplayMode = .oneBesideSecondary
}
coordinator = SceneCoordinator(rootSplitViewController: rootViewController)
rootViewController.coordinator = coordinator
rootViewController.delegate = coordinator
coordinator.restoreWindowState(session.stateRestorationActivity) coordinator.restoreWindowState(session.stateRestorationActivity)
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil)
if let _ = connectionOptions.urlContexts.first?.url { if let _ = connectionOptions.urlContexts.first?.url {
window?.makeKeyAndVisible()
self.scene(scene, openURLContexts: connectionOptions.urlContexts) self.scene(scene, openURLContexts: connectionOptions.urlContexts)
return return
} }
if let shortcutItem = connectionOptions.shortcutItem { if let shortcutItem = connectionOptions.shortcutItem {
window!.makeKeyAndVisible()
handleShortcutItem(shortcutItem) handleShortcutItem(shortcutItem)
return return
} }
if let notificationResponse = connectionOptions.notificationResponse { if let notificationResponse = connectionOptions.notificationResponse {
window!.makeKeyAndVisible()
coordinator.handle(notificationResponse) coordinator.handle(notificationResponse)
return return
} }
@ -50,7 +60,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
coordinator.handle(userActivity) coordinator.handle(userActivity)
} }
window!.makeKeyAndVisible()
} }
func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
@ -72,7 +81,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
func sceneWillEnterForeground(_ scene: UIScene) { func sceneWillEnterForeground(_ scene: UIScene) {
appDelegate.resumeDatabaseProcessingIfNecessary() appDelegate.resumeDatabaseProcessingIfNecessary()
appDelegate.prepareAccountsForForeground() appDelegate.prepareAccountsForForeground()
coordinator.configurePanelMode(for: window!.frame.size)
coordinator.resetFocus() coordinator.resetFocus()
} }

View File

@ -218,27 +218,12 @@ class SettingsViewController: UITableViewController {
openURL("https://netnewswire.com/help/ios/6.1/en/") openURL("https://netnewswire.com/help/ios/6.1/en/")
tableView.selectRow(at: nil, animated: true, scrollPosition: .none) tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
case 1: case 1:
openURL("https://netnewswire.com/")
tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
case 2:
openURL(URL.releaseNotes.absoluteString) openURL(URL.releaseNotes.absoluteString)
tableView.selectRow(at: nil, animated: true, scrollPosition: .none) tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
case 3: case 2:
openURL("https://github.com/brentsimmons/NetNewsWire/blob/main/Technotes/HowToSupportNetNewsWire.markdown")
tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
case 4:
openURL("https://github.com/brentsimmons/NetNewsWire")
tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
case 5:
openURL("https://github.com/brentsimmons/NetNewsWire/issues") openURL("https://github.com/brentsimmons/NetNewsWire/issues")
tableView.selectRow(at: nil, animated: true, scrollPosition: .none) tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
case 6: case 3:
openURL("https://github.com/brentsimmons/NetNewsWire/tree/main/Technotes")
tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
case 7:
openURL("https://netnewswire.com/slack")
tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
case 8:
let timeline = UIStoryboard.settings.instantiateController(ofType: AboutViewController.self) let timeline = UIStoryboard.settings.instantiateController(ofType: AboutViewController.self)
self.navigationController?.pushViewController(timeline, animated: true) self.navigationController?.pushViewController(timeline, animated: true)
default: default:

View File

@ -36,7 +36,7 @@ class TimelineCustomizerViewController: UIViewController {
} }
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
super.viewDidAppear(animated) super.viewWillAppear(animated)
updatePreviewBorder() updatePreviewBorder()
updatePreview() updatePreview()
} }

View File

@ -71,7 +71,7 @@ private extension TimelinePreviewTableViewController {
let iconImage = IconImage(AppAssets.faviconTemplateImage.withTintColor(AppAssets.secondaryAccentColor)) let iconImage = IconImage(AppAssets.faviconTemplateImage.withTintColor(AppAssets.secondaryAccentColor))
return MainTimelineCellData(article: prototypeArticle, showFeedName: .feed, feedName: "Feed Name", byline: nil, iconImage: iconImage, showIcon: true, featuredImage: nil, numberOfLines: AppDefaults.shared.timelineNumberOfLines, iconSize: AppDefaults.shared.timelineIconSize) return MainTimelineCellData(article: prototypeArticle, showFeedName: .feed, feedName: "Feed Name", byline: nil, iconImage: iconImage, showIcon: true, numberOfLines: AppDefaults.shared.timelineNumberOfLines, iconSize: AppDefaults.shared.timelineIconSize)
} }
} }

View File

@ -65,3 +65,4 @@ class InteractiveLabel: UILabel, UIEditMenuInteractionDelegate {
return UIMenu(title: "", children: [copyAction]) return UIMenu(title: "", children: [copyAction])
} }
} }