Rework add account scenes to look and work like standard iOS forms

This commit is contained in:
Maurice Parker 2019-10-21 20:28:50 -05:00
parent 19400a5a50
commit 7a644afc58
4 changed files with 196 additions and 196 deletions

View File

@ -9,18 +9,15 @@
import UIKit import UIKit
import Account import Account
class AddLocalAccountViewController: UIViewController { class AddLocalAccountViewController: UITableViewController {
@IBOutlet weak var cancelBarButtonItem: UIBarButtonItem!
@IBOutlet private weak var localAccountNameLabel: UILabel!
@IBOutlet weak var nameTextField: UITextField! @IBOutlet weak var nameTextField: UITextField!
weak var delegate: AddAccountDismissDelegate? weak var delegate: AddAccountDismissDelegate?
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
navigationItem.title = Account.defaultLocalAccountName
localAccountNameLabel.text = Account.defaultLocalAccountName
nameTextField.delegate = self nameTextField.delegate = self
} }
@ -29,7 +26,7 @@ class AddLocalAccountViewController: UIViewController {
delegate?.dismiss() delegate?.dismiss()
} }
@IBAction func addAccountTapped(_ sender: Any) { @IBAction func add(_ sender: Any) {
let account = AccountManager.shared.createAccount(type: .onMyMac) let account = AccountManager.shared.createAccount(type: .onMyMac)
account.name = nameTextField.text account.name = nameTextField.text
dismiss(animated: true, completion: nil) dismiss(animated: true, completion: nil)

View File

@ -97,6 +97,7 @@ private extension DetailAccountViewController {
let navController = UIStoryboard.settings.instantiateViewController(withIdentifier: "FeedbinAccountNavigationViewController") as! UINavigationController let navController = UIStoryboard.settings.instantiateViewController(withIdentifier: "FeedbinAccountNavigationViewController") as! UINavigationController
let addViewController = navController.topViewController as! FeedbinAccountViewController let addViewController = navController.topViewController as! FeedbinAccountViewController
addViewController.account = account addViewController.account = account
navController.modalPresentationStyle = .currentContext
present(navController, animated: true) present(navController, animated: true)
default: default:
break break

View File

@ -10,7 +10,7 @@ import UIKit
import Account import Account
import RSWeb import RSWeb
class FeedbinAccountViewController: UIViewController { class FeedbinAccountViewController: UITableViewController {
@IBOutlet weak var activityIndicator: UIActivityIndicatorView! @IBOutlet weak var activityIndicator: UIActivityIndicatorView!
@IBOutlet weak var cancelBarButtonItem: UIBarButtonItem! @IBOutlet weak var cancelBarButtonItem: UIBarButtonItem!
@ -19,8 +19,6 @@ class FeedbinAccountViewController: UIViewController {
@IBOutlet weak var showHideButton: UIButton! @IBOutlet weak var showHideButton: UIButton!
@IBOutlet weak var actionButton: UIButton! @IBOutlet weak var actionButton: UIButton!
@IBOutlet weak var errorMessageLabel: UILabel!
weak var account: Account? weak var account: Account?
weak var delegate: AddAccountDismissDelegate? weak var delegate: AddAccountDismissDelegate?
@ -56,10 +54,9 @@ class FeedbinAccountViewController: UIViewController {
} }
@IBAction func action(_ sender: Any) { @IBAction func action(_ sender: Any) {
self.errorMessageLabel.text = nil
guard let email = emailTextField.text, let password = passwordTextField.text else { guard let email = emailTextField.text, let password = passwordTextField.text else {
self.errorMessageLabel.text = NSLocalizedString("Username & password required.", comment: "Credentials Error") showError(NSLocalizedString("Username & password required.", comment: "Credentials Error"))
return return
} }
@ -104,18 +101,22 @@ class FeedbinAccountViewController: UIViewController {
self.dismiss(animated: true, completion: nil) self.dismiss(animated: true, completion: nil)
self.delegate?.dismiss() self.delegate?.dismiss()
} catch { } catch {
self.errorMessageLabel.text = NSLocalizedString("Keychain error while storing credentials.", comment: "Credentials Error") self.showError(NSLocalizedString("Keychain error while storing credentials.", comment: "Credentials Error"))
} }
} else { } else {
self.errorMessageLabel.text = NSLocalizedString("Invalid email/password combination.", comment: "Credentials Error") self.showError(NSLocalizedString("Invalid email/password combination.", comment: "Credentials Error"))
} }
case .failure: case .failure:
self.errorMessageLabel.text = NSLocalizedString("Network error. Try again later.", comment: "Credentials Error") self.showError(NSLocalizedString("Network error. Try again later.", comment: "Credentials Error"))
} }
} }
} }
private func showError(_ message: String) {
presentError(title: "Error", message: message)
}
private func enableNavigation() { private func enableNavigation() {
self.cancelBarButtonItem.isEnabled = true self.cancelBarButtonItem.isEnabled = true
self.actionButton.isEnabled = true self.actionButton.isEnabled = true

View File

@ -1,9 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="9cW-lu-HoC"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="9cW-lu-HoC">
<device id="retina6_1" orientation="portrait" appearance="dark"/> <device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15508"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15508"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<scenes> <scenes>
@ -422,7 +421,6 @@
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Credentials" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OKd-Ps-a1K"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Credentials" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OKd-Ps-a1K">
<rect key="frame" x="163.5" y="11.5" width="87" height="21"/> <rect key="frame" x="163.5" y="11.5" width="87" height="21"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
</subviews> </subviews>
@ -495,8 +493,8 @@
<rect key="frame" x="20" y="11.5" width="217" height="32"/> <rect key="frame" x="20" y="11.5" width="217" height="32"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accountLocal" translatesAutoresizingMaskIntoConstraints="NO" id="tb2-dO-AhR"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accountLocal" translatesAutoresizingMaskIntoConstraints="NO" id="tb2-dO-AhR">
<rect key="frame" x="0.0" y="0.0" width="32" height="32.000000000000028"/> <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
<color key="tintColor" cocoaTouchSystemColor="darkTextColor"/> <color key="tintColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="32" id="0GF-vU-aEc"/> <constraint firstAttribute="height" constant="32" id="0GF-vU-aEc"/>
<constraint firstAttribute="width" constant="32" id="xDy-t7-26A"/> <constraint firstAttribute="width" constant="32" id="xDy-t7-26A"/>
@ -529,7 +527,7 @@
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accountFeedbin" translatesAutoresizingMaskIntoConstraints="NO" id="wyu-mZ-3zz"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accountFeedbin" translatesAutoresizingMaskIntoConstraints="NO" id="wyu-mZ-3zz">
<rect key="frame" x="0.0" y="0.0" width="32" height="32"/> <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
<color key="tintColor" cocoaTouchSystemColor="darkTextColor"/> <color key="tintColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="32" id="LEr-1Z-N99"/> <constraint firstAttribute="height" constant="32" id="LEr-1Z-N99"/>
<constraint firstAttribute="width" constant="32" id="fZN-HH-heN"/> <constraint firstAttribute="width" constant="32" id="fZN-HH-heN"/>
@ -575,7 +573,7 @@
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</navigationBar> </navigationBar>
<connections> <connections>
<segue destination="lkT-rF-XV3" kind="relationship" relationship="rootViewController" id="LrS-Q9-xHZ"/> <segue destination="Tgu-u6-glx" kind="relationship" relationship="rootViewController" id="9Er-RJ-482"/>
</connections> </connections>
</navigationController> </navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="QPl-ba-rnZ" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="QPl-ba-rnZ" userLabel="First Responder" sceneMemberID="firstResponder"/>
@ -591,197 +589,201 @@
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</navigationBar> </navigationBar>
<connections> <connections>
<segue destination="byh-sg-6p5" kind="relationship" relationship="rootViewController" id="UOK-JY-Ded"/> <segue destination="PrL-bD-PFa" kind="relationship" relationship="rootViewController" id="ogw-KC-Hhv"/>
</connections> </connections>
</navigationController> </navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="huK-n1-D82" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="huK-n1-D82" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="3177" y="-528"/> <point key="canvasLocation" x="3177" y="-528"/>
</scene> </scene>
<!--Add Local Account View Controller--> <!--On My Device-->
<scene sceneID="3at-5H-MrI"> <scene sceneID="dGi-aD-nj5">
<objects> <objects>
<viewController storyboardIdentifier="AddLocalAccountViewController" id="lkT-rF-XV3" customClass="AddLocalAccountViewController" customModule="NetNewsWire" customModuleProvider="target" sceneMemberID="viewController"> <tableViewController id="Tgu-u6-glx" customClass="AddLocalAccountViewController" customModule="NetNewsWire" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="9rb-pV-gvI"> <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" id="cJd-4g-Rpu">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/> <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<stackView opaque="NO" contentMode="scaleToFill" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="7zF-66-uRq"> <sections>
<rect key="frame" x="79" y="128" width="256.5" height="41"/> <tableViewSection id="PBf-ky-CY1">
<subviews> <cells>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accountLocal" translatesAutoresizingMaskIntoConstraints="NO" id="74E-kl-vU9"> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="kzW-o5-enA">
<rect key="frame" x="0.0" y="4.5" width="32" height="32.000000000000028"/> <rect key="frame" x="0.0" y="18" width="414" height="43.5"/>
<color key="tintColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <autoresizingMask key="autoresizingMask"/>
<constraints> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="kzW-o5-enA" id="FWO-c1-4Th">
<constraint firstAttribute="width" constant="32" id="E7T-ps-KgX"/> <rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
<constraint firstAttribute="height" constant="32" id="hew-64-pi8"/> <autoresizingMask key="autoresizingMask"/>
</constraints> <subviews>
</imageView> <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Name" textAlignment="natural" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="QNQ-By-OsE">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="On My iPhone" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tdm-Ge-uc6"> <rect key="frame" x="20" y="11.5" width="374" height="21"/>
<rect key="frame" x="52" y="0.0" width="204.5" height="41"/> <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle0"/> <textInputTraits key="textInputTraits"/>
<nil key="textColor"/> </textField>
<nil key="highlightedColor"/> </subviews>
</label> <constraints>
</subviews> <constraint firstItem="QNQ-By-OsE" firstAttribute="leading" secondItem="FWO-c1-4Th" secondAttribute="leading" constant="20" id="9xk-2h-dGZ"/>
</stackView> <constraint firstAttribute="trailing" secondItem="QNQ-By-OsE" secondAttribute="trailing" constant="20" id="UmT-fG-gr0"/>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Name (Optional)" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="2dx-hK-hxL"> <constraint firstItem="QNQ-By-OsE" firstAttribute="centerY" secondItem="FWO-c1-4Th" secondAttribute="centerY" id="q37-vt-Joj"/>
<rect key="frame" x="0.0" y="189" width="414" height="48"/> </constraints>
<constraints> </tableViewCellContentView>
<constraint firstAttribute="height" constant="48" id="Z7w-B0-LuW"/> </tableViewCell>
</constraints> </cells>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> </tableViewSection>
<textInputTraits key="textInputTraits"/> <tableViewSection id="gBC-Kb-bFs">
</textField> <cells>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5AS-Zb-zHP"> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="B5Z-y9-YV6">
<rect key="frame" x="0.0" y="257" width="414" height="48"/> <rect key="frame" x="0.0" y="97.5" width="414" height="43.5"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <autoresizingMask key="autoresizingMask"/>
<constraints> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="B5Z-y9-YV6" id="UQF-7L-Vm4">
<constraint firstAttribute="height" constant="48" id="IFC-SI-vcP"/> <rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
</constraints> <autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> <subviews>
<state key="normal" title="Add Account"/> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Lu-KFz">
<connections> <rect key="frame" x="157.5" y="5.5" width="99" height="33"/>
<action selector="addAccountTapped:" destination="lkT-rF-XV3" eventType="touchUpInside" id="bmf-nA-fJU"/> <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
</connections> <state key="normal" title="Add Account"/>
</button> <connections>
</subviews> <action selector="add:" destination="Tgu-u6-glx" eventType="touchUpInside" id="zO2-qG-v34"/>
<color key="backgroundColor" red="0.93735349178314209" green="0.93682962656021118" blue="0.95681577920913696" alpha="1" colorSpace="custom" customColorSpace="displayP3"/> </connections>
<constraints> </button>
<constraint firstItem="5AS-Zb-zHP" firstAttribute="leading" secondItem="Z5L-XF-ZSa" secondAttribute="leading" id="3Ov-dx-JBu"/> </subviews>
<constraint firstItem="5AS-Zb-zHP" firstAttribute="top" secondItem="2dx-hK-hxL" secondAttribute="bottom" constant="20" id="CZD-h0-H7B"/> <constraints>
<constraint firstItem="5AS-Zb-zHP" firstAttribute="centerX" secondItem="2dx-hK-hxL" secondAttribute="centerX" id="Duk-ML-7hE"/> <constraint firstItem="vhl-Lu-KFz" firstAttribute="centerY" secondItem="UQF-7L-Vm4" secondAttribute="centerY" id="3M2-Os-MDM"/>
<constraint firstItem="7zF-66-uRq" firstAttribute="top" secondItem="Z5L-XF-ZSa" secondAttribute="top" constant="40" id="Meu-uI-vga"/> <constraint firstItem="vhl-Lu-KFz" firstAttribute="centerX" secondItem="UQF-7L-Vm4" secondAttribute="centerX" id="8wm-qm-KgD"/>
<constraint firstItem="2dx-hK-hxL" firstAttribute="leading" secondItem="Z5L-XF-ZSa" secondAttribute="leading" id="N9Z-mx-C4J"/> </constraints>
<constraint firstItem="2dx-hK-hxL" firstAttribute="centerX" secondItem="9rb-pV-gvI" secondAttribute="centerX" id="SCu-FD-r1u"/> </tableViewCellContentView>
<constraint firstItem="Z5L-XF-ZSa" firstAttribute="trailing" secondItem="2dx-hK-hxL" secondAttribute="trailing" id="SS2-gJ-f5W"/> </tableViewCell>
<constraint firstItem="Z5L-XF-ZSa" firstAttribute="trailing" secondItem="5AS-Zb-zHP" secondAttribute="trailing" id="gVj-9g-QQL"/> </cells>
<constraint firstItem="7zF-66-uRq" firstAttribute="centerX" secondItem="9rb-pV-gvI" secondAttribute="centerX" id="u9U-ks-gUh"/> </tableViewSection>
<constraint firstItem="2dx-hK-hxL" firstAttribute="top" secondItem="Tdm-Ge-uc6" secondAttribute="bottom" constant="20" id="wLk-OA-sWO"/> </sections>
</constraints> <connections>
<viewLayoutGuide key="safeArea" id="Z5L-XF-ZSa"/> <outlet property="dataSource" destination="Tgu-u6-glx" id="So7-EE-UYt"/>
</view> <outlet property="delegate" destination="Tgu-u6-glx" id="NNs-dU-Utx"/>
<navigationItem key="navigationItem" id="Otv-KQ-fsd"> </connections>
<barButtonItem key="leftBarButtonItem" systemItem="cancel" id="IRo-a7-Blk"> </tableView>
<navigationItem key="navigationItem" title="On My Device" id="gtG-qL-oLT">
<barButtonItem key="leftBarButtonItem" style="plain" systemItem="cancel" id="VjX-zk-Hs5">
<connections> <connections>
<action selector="cancel:" destination="lkT-rF-XV3" id="eiE-bJ-sJF"/> <action selector="cancel:" destination="Tgu-u6-glx" id="VnU-4c-3Pv"/>
</connections> </connections>
</barButtonItem> </barButtonItem>
</navigationItem> </navigationItem>
<connections> <connections>
<outlet property="cancelBarButtonItem" destination="IRo-a7-Blk" id="1oI-Uk-nfz"/> <outlet property="nameTextField" destination="QNQ-By-OsE" id="nof-rM-u3L"/>
<outlet property="localAccountNameLabel" destination="Tdm-Ge-uc6" id="48O-IT-xXw"/>
<outlet property="nameTextField" destination="2dx-hK-hxL" id="t5V-3x-3vu"/>
</connections> </connections>
</viewController> </tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="oPp-xq-kz9" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="nxT-ou-o5B" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2507" y="139"/> <point key="canvasLocation" x="2506" y="139"/>
</scene> </scene>
<!--Feedbin Account View Controller--> <!--Feedbin-->
<scene sceneID="sCm-Gd-byr"> <scene sceneID="sRU-qa-Yle">
<objects> <objects>
<viewController storyboardIdentifier="FeedbinAccountViewController" id="byh-sg-6p5" customClass="FeedbinAccountViewController" customModule="NetNewsWire" customModuleProvider="target" sceneMemberID="viewController"> <tableViewController id="PrL-bD-PFa" customClass="FeedbinAccountViewController" customModule="NetNewsWire" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="E6e-jd-9b6"> <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" id="cEY-3a-NK0">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/> <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<stackView opaque="NO" contentMode="scaleToFill" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="vFL-2i-eRz"> <sections>
<rect key="frame" x="122.5" y="128" width="169.5" height="41"/> <tableViewSection id="847-xm-Bb9">
<subviews> <cells>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accountFeedbin" translatesAutoresizingMaskIntoConstraints="NO" id="9ht-ce-lQp"> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="Glm-YE-HQo">
<rect key="frame" x="0.0" y="4.5" width="32" height="32"/> <rect key="frame" x="0.0" y="18" width="414" height="43.5"/>
<color key="tintColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <autoresizingMask key="autoresizingMask"/>
<constraints> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Glm-YE-HQo" id="v9A-EJ-Ygc">
<constraint firstAttribute="width" constant="32" id="2Qp-v5-g0U"/> <rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
<constraint firstAttribute="height" constant="32" id="aCm-eQ-zWU"/> <autoresizingMask key="autoresizingMask"/>
</constraints> <subviews>
</imageView> <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Email" textAlignment="natural" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="YX8-Za-AM8">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Feedbin" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hw9-yb-i0u"> <rect key="frame" x="20" y="11.5" width="374" height="21"/>
<rect key="frame" x="52" y="0.0" width="117.5" height="41"/> <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle0"/> <textInputTraits key="textInputTraits" spellCheckingType="no" keyboardType="emailAddress" textContentType="username"/>
<nil key="textColor"/> </textField>
<nil key="highlightedColor"/> </subviews>
</label> <constraints>
</subviews> <constraint firstAttribute="trailing" secondItem="YX8-Za-AM8" secondAttribute="trailing" constant="20" id="8Vn-o7-kBo"/>
</stackView> <constraint firstItem="YX8-Za-AM8" firstAttribute="centerY" secondItem="v9A-EJ-Ygc" secondAttribute="centerY" id="C6U-7U-bsw"/>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Email" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="UiV-th-dQb"> <constraint firstItem="YX8-Za-AM8" firstAttribute="leading" secondItem="v9A-EJ-Ygc" secondAttribute="leading" constant="20" id="rVM-ag-HfX"/>
<rect key="frame" x="0.0" y="189" width="414" height="48"/> </constraints>
<constraints> </tableViewCellContentView>
<constraint firstAttribute="height" constant="48" id="UjW-Pq-uNU"/> </tableViewCell>
</constraints> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="d2Q-VL-5PU">
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> <rect key="frame" x="0.0" y="61.5" width="414" height="43.5"/>
<textInputTraits key="textInputTraits" keyboardType="emailAddress" textContentType="username"/> <autoresizingMask key="autoresizingMask"/>
</textField> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="d2Q-VL-5PU" id="Tww-fm-N0d">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9QD-Wz-fqW"> <rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
<rect key="frame" x="207" y="381" width="0.0" height="0.0"/> <autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> <subviews>
<color key="textColor" name="systemRedColor" catalog="System" colorSpace="catalog"/> <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Password" textAlignment="natural" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="nEK-aP-FkT">
<nil key="highlightedColor"/> <rect key="frame" x="20" y="11.5" width="323" height="21"/>
</label> <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pv5-O6-P6Z"> <textInputTraits key="textInputTraits" secureTextEntry="YES" textContentType="password"/>
<rect key="frame" x="0.0" y="313" width="414" height="48"/> </textField>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="u2O-g9-7Fx">
<constraints> <rect key="frame" x="351" y="5.5" width="43" height="33"/>
<constraint firstAttribute="height" constant="48" id="8Vt-l1-eL1"/> <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
</constraints> <state key="normal" title="Show"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> <connections>
<state key="normal" title="Action"/> <action selector="showHidePassword:" destination="PrL-bD-PFa" eventType="touchUpInside" id="e9e-r8-KkY"/>
<connections> </connections>
<action selector="action:" destination="byh-sg-6p5" eventType="touchUpInside" id="ZQy-9g-TeU"/> </button>
</connections> </subviews>
</button> <constraints>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" textAlignment="natural" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="2CB-cQ-4G2"> <constraint firstAttribute="trailing" secondItem="u2O-g9-7Fx" secondAttribute="trailing" constant="20" id="5qO-md-J0E"/>
<rect key="frame" x="0.0" y="245" width="414" height="48"/> <constraint firstItem="nEK-aP-FkT" firstAttribute="centerY" secondItem="Tww-fm-N0d" secondAttribute="centerY" id="HY7-eK-kMl"/>
<constraints> <constraint firstItem="u2O-g9-7Fx" firstAttribute="centerY" secondItem="Tww-fm-N0d" secondAttribute="centerY" id="Sc3-xy-MPt"/>
<constraint firstAttribute="height" constant="48" id="zSB-P4-U6w"/> <constraint firstItem="nEK-aP-FkT" firstAttribute="leading" secondItem="Tww-fm-N0d" secondAttribute="leading" constant="20" id="rYW-Wq-pqZ"/>
</constraints> <constraint firstItem="u2O-g9-7Fx" firstAttribute="leading" secondItem="nEK-aP-FkT" secondAttribute="trailing" constant="8" symbolic="YES" id="tDr-WZ-SB1"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> </constraints>
<textInputTraits key="textInputTraits" secureTextEntry="YES"/> </tableViewCellContentView>
</textField> </tableViewCell>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8D1-Lz-Wsj"> </cells>
<rect key="frame" x="363" y="252.5" width="43" height="33"/> </tableViewSection>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> <tableViewSection id="oez-j7-Bnb">
<state key="normal" title="Show"/> <cells>
<connections> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="TdT-na-AmS">
<action selector="showHidePassword:" destination="byh-sg-6p5" eventType="touchUpInside" id="INE-vg-mxP"/> <rect key="frame" x="0.0" y="141" width="414" height="43.5"/>
</connections> <autoresizingMask key="autoresizingMask"/>
</button> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="TdT-na-AmS" id="LVF-fO-2pw">
</subviews> <rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
<color key="backgroundColor" red="0.93735349178314209" green="0.93682962656021118" blue="0.95681577920913696" alpha="1" colorSpace="custom" customColorSpace="displayP3"/> <autoresizingMask key="autoresizingMask"/>
<constraints> <subviews>
<constraint firstItem="2CB-cQ-4G2" firstAttribute="top" secondItem="UiV-th-dQb" secondAttribute="bottom" constant="8" id="0hZ-Nw-bIs"/> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ohs-Iz-tfT">
<constraint firstItem="UiV-th-dQb" firstAttribute="leading" secondItem="4Rm-PZ-VHc" secondAttribute="leading" id="1ok-W1-dkI"/> <rect key="frame" x="182.5" y="5.5" width="49" height="33"/>
<constraint firstItem="2CB-cQ-4G2" firstAttribute="leading" secondItem="4Rm-PZ-VHc" secondAttribute="leading" id="3yY-IH-A6W"/> <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<constraint firstItem="UiV-th-dQb" firstAttribute="top" secondItem="vFL-2i-eRz" secondAttribute="bottom" constant="20" id="BUG-5p-BDh"/> <state key="normal" title="Action"/>
<constraint firstItem="9QD-Wz-fqW" firstAttribute="top" secondItem="pv5-O6-P6Z" secondAttribute="bottom" constant="20" id="BxD-TQ-zRm"/> <connections>
<constraint firstItem="pv5-O6-P6Z" firstAttribute="trailing" secondItem="4Rm-PZ-VHc" secondAttribute="trailing" id="DkX-t4-GH3"/> <action selector="action:" destination="PrL-bD-PFa" eventType="touchUpInside" id="AmE-ou-ltA"/>
<constraint firstItem="pv5-O6-P6Z" firstAttribute="leading" secondItem="4Rm-PZ-VHc" secondAttribute="leading" id="Jhs-JE-qWd"/> </connections>
<constraint firstItem="9QD-Wz-fqW" firstAttribute="centerX" secondItem="E6e-jd-9b6" secondAttribute="centerX" id="Sgr-tG-nT2"/> </button>
<constraint firstItem="pv5-O6-P6Z" firstAttribute="top" secondItem="2CB-cQ-4G2" secondAttribute="bottom" constant="20" id="eRp-Xa-TiJ"/> </subviews>
<constraint firstItem="4Rm-PZ-VHc" firstAttribute="trailing" secondItem="UiV-th-dQb" secondAttribute="trailing" id="hfB-Ql-twm"/> <constraints>
<constraint firstItem="vFL-2i-eRz" firstAttribute="top" secondItem="4Rm-PZ-VHc" secondAttribute="top" constant="40" id="khS-vK-fL0"/> <constraint firstItem="Ohs-Iz-tfT" firstAttribute="centerX" secondItem="LVF-fO-2pw" secondAttribute="centerX" id="VJV-B8-xqa"/>
<constraint firstItem="8D1-Lz-Wsj" firstAttribute="centerY" secondItem="2CB-cQ-4G2" secondAttribute="centerY" id="n8e-vR-WRB"/> <constraint firstItem="Ohs-Iz-tfT" firstAttribute="centerY" secondItem="LVF-fO-2pw" secondAttribute="centerY" id="gex-aC-xc8"/>
<constraint firstItem="vFL-2i-eRz" firstAttribute="centerX" secondItem="E6e-jd-9b6" secondAttribute="centerX" id="qew-4G-xhG"/> </constraints>
<constraint firstItem="UiV-th-dQb" firstAttribute="centerX" secondItem="E6e-jd-9b6" secondAttribute="centerX" id="vLa-hN-GpR"/> </tableViewCellContentView>
<constraint firstItem="4Rm-PZ-VHc" firstAttribute="trailing" secondItem="2CB-cQ-4G2" secondAttribute="trailing" id="x8Z-aP-Acy"/> </tableViewCell>
<constraint firstItem="8D1-Lz-Wsj" firstAttribute="trailing" secondItem="2CB-cQ-4G2" secondAttribute="trailing" constant="-8" id="ys5-Ec-EHy"/> </cells>
</constraints> </tableViewSection>
<viewLayoutGuide key="safeArea" id="4Rm-PZ-VHc"/> </sections>
</view> <connections>
<navigationItem key="navigationItem" id="BFN-hJ-pWd"> <outlet property="dataSource" destination="PrL-bD-PFa" id="F0B-Mw-9r8"/>
<barButtonItem key="leftBarButtonItem" systemItem="cancel" id="xVt-VC-XFV"> <outlet property="delegate" destination="PrL-bD-PFa" id="ruw-7t-eup"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="Feedbin" id="Q6r-Nq-JFp">
<barButtonItem key="leftBarButtonItem" style="plain" systemItem="cancel" id="lUP-Wl-qhg">
<connections> <connections>
<action selector="cancel:" destination="byh-sg-6p5" id="WrS-lL-eth"/> <action selector="cancel:" destination="PrL-bD-PFa" id="suc-Rb-hTh"/>
</connections> </connections>
</barButtonItem> </barButtonItem>
<barButtonItem key="rightBarButtonItem" style="plain" id="L90-ti-E7I"> <barButtonItem key="rightBarButtonItem" style="plain" id="JZR-7Q-UPu">
<view key="customView" contentMode="scaleToFill" id="xpt-lr-f2h"> <view key="customView" contentMode="scaleToFill" id="3bt-bK-KgU">
<rect key="frame" x="374" y="12" width="20" height="20"/> <rect key="frame" x="374" y="12" width="20" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="Pl1-lc-sIl"> <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" style="medium" translatesAutoresizingMaskIntoConstraints="NO" id="sGW-T1-8tp">
<rect key="frame" x="0.0" y="0.0" width="20" height="20"/> <rect key="frame" x="36" y="6" width="20" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</activityIndicatorView> </activityIndicatorView>
</subviews> </subviews>
@ -790,18 +792,17 @@
</barButtonItem> </barButtonItem>
</navigationItem> </navigationItem>
<connections> <connections>
<outlet property="actionButton" destination="pv5-O6-P6Z" id="6Fm-3l-zj1"/> <outlet property="actionButton" destination="Ohs-Iz-tfT" id="Arx-dx-vNk"/>
<outlet property="activityIndicator" destination="Pl1-lc-sIl" id="hqg-mX-Yns"/> <outlet property="activityIndicator" destination="sGW-T1-8tp" id="BG9-GN-ojc"/>
<outlet property="cancelBarButtonItem" destination="xVt-VC-XFV" id="yBm-px-sgt"/> <outlet property="cancelBarButtonItem" destination="lUP-Wl-qhg" id="Bk7-OJ-aII"/>
<outlet property="emailTextField" destination="UiV-th-dQb" id="fCb-hg-AXa"/> <outlet property="emailTextField" destination="YX8-Za-AM8" id="hWc-LX-k9c"/>
<outlet property="errorMessageLabel" destination="9QD-Wz-fqW" id="Kjo-73-Pgh"/> <outlet property="passwordTextField" destination="nEK-aP-FkT" id="hxE-fQ-xea"/>
<outlet property="passwordTextField" destination="2CB-cQ-4G2" id="7LV-jP-KMw"/> <outlet property="showHideButton" destination="u2O-g9-7Fx" id="U5t-wB-sjT"/>
<outlet property="showHideButton" destination="8D1-Lz-Wsj" id="Uc5-xE-usi"/>
</connections> </connections>
</viewController> </tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="l5n-Op-NE2" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="FZU-tv-zhx" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="3176.811594202899" y="138.61607142857142"/> <point key="canvasLocation" x="3187" y="139"/>
</scene> </scene>
<!--Refresh Interval--> <!--Refresh Interval-->
<scene sceneID="5WY-bu-OPU"> <scene sceneID="5WY-bu-OPU">