diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 333186b23..75846af92 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -234,6 +234,7 @@ 51B62E68233186730085F949 /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B62E67233186730085F949 /* IconView.swift */; }; 51BB7C272335A8E5008E8144 /* ArticleActivityItemSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51BB7C262335A8E5008E8144 /* ArticleActivityItemSource.swift */; }; 51BB7C312335ACDE008E8144 /* page.html in Resources */ = {isa = PBXBuildFile; fileRef = 51BB7C302335ACDE008E8144 /* page.html */; }; + 51BEB22D2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */; }; 51C266EA238C334800F53014 /* ContextMenuPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C266E9238C334800F53014 /* ContextMenuPreviewViewController.swift */; }; 51C451A9226377C200C03939 /* ArticlesDatabase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407167F2262A61100344432 /* ArticlesDatabase.framework */; }; 51C451AA226377C200C03939 /* ArticlesDatabase.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8407167F2262A61100344432 /* ArticlesDatabase.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -1526,6 +1527,7 @@ 51B62E67233186730085F949 /* IconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconView.swift; sourceTree = ""; }; 51BB7C262335A8E5008E8144 /* ArticleActivityItemSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleActivityItemSource.swift; sourceTree = ""; }; 51BB7C302335ACDE008E8144 /* page.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = page.html; sourceTree = ""; }; + 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterEnterDetailTableViewController.swift; sourceTree = ""; }; 51C266E9238C334800F53014 /* ContextMenuPreviewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuPreviewViewController.swift; sourceTree = ""; }; 51C4524E226506F400C03939 /* UIStoryboard-Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIStoryboard-Extensions.swift"; sourceTree = ""; }; 51C45250226506F400C03939 /* String-Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String-Extensions.swift"; sourceTree = ""; }; @@ -1941,6 +1943,7 @@ 510289CF2451BA3A00426DDF /* TwitterAdd.storyboard */, 510289D12451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift */, 510289D52451DDD100426DDF /* TwitterSelectAccountTableViewController.swift */, + 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */, ); path = Twitter; sourceTree = ""; @@ -4401,6 +4404,7 @@ 510289D62451DDD100426DDF /* TwitterSelectAccountTableViewController.swift in Sources */, 51C4528D2265095F00C03939 /* AddFolderViewController.swift in Sources */, 51DC37072402153E0095D371 /* UpdateSelectionOperation.swift in Sources */, + 51BEB22D2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift in Sources */, 51C452782265091600C03939 /* MasterTimelineCellData.swift in Sources */, 5148F4552336DB7000F8CD8B /* MasterTimelineTitleView.swift in Sources */, 515A517C243E90260089E588 /* ExtensionPointManager.swift in Sources */, diff --git a/iOS/Add/Twitter/TwitterAdd.storyboard b/iOS/Add/Twitter/TwitterAdd.storyboard index f10c39a96..abaf17e2d 100644 --- a/iOS/Add/Twitter/TwitterAdd.storyboard +++ b/iOS/Add/Twitter/TwitterAdd.storyboard @@ -137,5 +137,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift b/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift new file mode 100644 index 000000000..8259edb3e --- /dev/null +++ b/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift @@ -0,0 +1,70 @@ +// +// TwitterEnterDetailTableViewController.swift +// NetNewsWire-iOS +// +// Created by Maurice Parker on 4/23/20. +// Copyright © 2020 Ranchero Software. All rights reserved. +// + +import UIKit +import Account + +class TwitterEnterDetailTableViewController: UITableViewController, SelectURLBuilder { + + @IBOutlet weak var detailTextField: UITextField! + + var doneBarButtonItem = UIBarButtonItem() + var twitterFeedType: TwitterFeedType? + weak var delegate: SelectURLBuilderDelegate? + + override func viewDidLoad() { + super.viewDidLoad() + + doneBarButtonItem.title = NSLocalizedString("Done", comment: "Done") + doneBarButtonItem.style = .done + doneBarButtonItem.target = self + doneBarButtonItem.action = #selector(done) + navigationItem.rightBarButtonItem = doneBarButtonItem + + if case .screenName = twitterFeedType { + navigationItem.title = NSLocalizedString("Enter Name", comment: "Enter Name") + detailTextField.placeholder = NSLocalizedString("Screen Name", comment: "Screen Name") + } else { + navigationItem.title = NSLocalizedString("Enter Search", comment: "Enter Search") + detailTextField.placeholder = NSLocalizedString("Search Term", comment: "Search Term") + } + + NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: detailTextField) + + updateUI() + } + + @objc func done() { + guard let twitterFeedType = twitterFeedType else { return } + + if twitterFeedType == .screenName { + if let url = TwitterFeedProvider.buildURL(twitterFeedType, username: nil, screenName: detailTextField.text, searchField: nil) { + delegate?.selectURLBuilderDidBuildURL(url) + } + } else { + if let url = TwitterFeedProvider.buildURL(twitterFeedType, username: nil, screenName: nil, searchField: detailTextField.text) { + delegate?.selectURLBuilderDidBuildURL(url) + } + } + + dismiss(animated: true) + } + + @objc func textDidChange(_ note: Notification) { + updateUI() + } + +} + +private extension TwitterEnterDetailTableViewController { + + func updateUI() { + doneBarButtonItem.isEnabled = !(detailTextField.text?.isEmpty ?? false) + } + +} diff --git a/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift b/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift index b401f9643..0c81c27f0 100644 --- a/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift +++ b/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift @@ -58,6 +58,16 @@ class TwitterSelectTypeTableViewController: UITableViewController, SelectURLBuil selectAccount.delegate = delegate navigationController?.pushViewController(selectAccount, animated: true) } + case 2: + let enterDetail = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterEnterDetailTableViewController.self) + enterDetail.twitterFeedType = .screenName + enterDetail.delegate = delegate + navigationController?.pushViewController(enterDetail, animated: true) + case 3: + let enterDetail = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterEnterDetailTableViewController.self) + enterDetail.twitterFeedType = .search + enterDetail.delegate = delegate + navigationController?.pushViewController(enterDetail, animated: true) default: fatalError() }