Go back to using storyboard for Feed Directory.

This commit is contained in:
Brent Simmons 2017-12-28 16:37:30 -08:00
parent 7ae2345073
commit 99f2c01a04
10 changed files with 393 additions and 385 deletions

View File

@ -38,7 +38,6 @@
846E77411F6EF6A100A165E2 /* Database.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 846E77211F6EF5D100A165E2 /* Database.framework */; };
846E77421F6EF6A100A165E2 /* Database.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 846E77211F6EF5D100A165E2 /* Database.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
84702AA41FA27AC0006B8943 /* MarkReadOrUnreadCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84702AA31FA27AC0006B8943 /* MarkReadOrUnreadCommand.swift */; };
847C4C9C1FF44F790090D517 /* FeedListSplitViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847C4C9B1FF44F790090D517 /* FeedListSplitViewDelegate.swift */; };
848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */; };
849A97431ED9EAA9007D329B /* AddFolderWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97421ED9EAA9007D329B /* AddFolderWindowController.swift */; };
849A97531ED9EAC0007D329B /* AddFeedController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97511ED9EAC0007D329B /* AddFeedController.swift */; };
@ -99,13 +98,13 @@
84B06FFE1ED3818D00F0B54B /* RSTree.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84B06FFA1ED3818000F0B54B /* RSTree.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
84B0700A1ED3822600F0B54B /* RSTextDrawing.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84B070071ED3821900F0B54B /* RSTextDrawing.framework */; };
84B0700B1ED3822600F0B54B /* RSTextDrawing.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84B070071ED3821900F0B54B /* RSTextDrawing.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
84B2FAA41FF47BAC009C4878 /* FeedListWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84B2FAA31FF47BAC009C4878 /* FeedListWindow.xib */; };
84B99C671FAE35E600ECDEDB /* FeedListTreeControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C661FAE35E600ECDEDB /* FeedListTreeControllerDelegate.swift */; };
84B99C691FAE36B800ECDEDB /* FeedListFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C681FAE36B800ECDEDB /* FeedListFolder.swift */; };
84B99C6B1FAE370B00ECDEDB /* FeedListFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C6A1FAE370B00ECDEDB /* FeedListFeed.swift */; };
84B99C9D1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C9C1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift */; };
84BB4B771F11753300858766 /* Data.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84BB4B681F1174D400858766 /* Data.framework */; };
84BB4B781F11753300858766 /* Data.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84BB4B681F1174D400858766 /* Data.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
84C12A151FF5B0080009A267 /* FeedList.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84C12A141FF5B0080009A267 /* FeedList.storyboard */; };
84CC88181FE59CBF00644329 /* SmartFeedsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84CC88171FE59CBF00644329 /* SmartFeedsController.swift */; };
84D52E951FE588BB00D14F5B /* DetailStatusBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D52E941FE588BB00D14F5B /* DetailStatusBarView.swift */; };
84DAEE301F86CAFE0058304B /* OPMLImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84DAEE2F1F86CAFE0058304B /* OPMLImporter.swift */; };
@ -444,7 +443,6 @@
846E77161F6EF5D000A165E2 /* Database.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Database.xcodeproj; path = Frameworks/Database/Database.xcodeproj; sourceTree = "<group>"; };
846E77301F6EF5D600A165E2 /* Account.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Account.xcodeproj; path = Frameworks/Account/Account.xcodeproj; sourceTree = "<group>"; };
84702AA31FA27AC0006B8943 /* MarkReadOrUnreadCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkReadOrUnreadCommand.swift; sourceTree = "<group>"; };
847C4C9B1FF44F790090D517 /* FeedListSplitViewDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListSplitViewDelegate.swift; sourceTree = "<group>"; };
848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaviconDownloader.swift; sourceTree = "<group>"; };
849A97421ED9EAA9007D329B /* AddFolderWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddFolderWindowController.swift; sourceTree = "<group>"; };
849A97511ED9EAC0007D329B /* AddFeedController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AddFeedController.swift; path = AddFeed/AddFeedController.swift; sourceTree = "<group>"; };
@ -503,12 +501,12 @@
84B06FE01ED3803200F0B54B /* RSFeedFinder.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSFeedFinder.xcodeproj; path = Frameworks/RSFeedFinder/RSFeedFinder.xcodeproj; sourceTree = "<group>"; };
84B06FF41ED3818000F0B54B /* RSTree.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSTree.xcodeproj; path = Frameworks/RSTree/RSTree.xcodeproj; sourceTree = "<group>"; };
84B070011ED3821800F0B54B /* RSTextDrawing.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSTextDrawing.xcodeproj; path = Frameworks/RSTextDrawing/RSTextDrawing.xcodeproj; sourceTree = "<group>"; };
84B2FAA31FF47BAC009C4878 /* FeedListWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FeedListWindow.xib; sourceTree = "<group>"; };
84B99C661FAE35E600ECDEDB /* FeedListTreeControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListTreeControllerDelegate.swift; sourceTree = "<group>"; };
84B99C681FAE36B800ECDEDB /* FeedListFolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListFolder.swift; sourceTree = "<group>"; };
84B99C6A1FAE370B00ECDEDB /* FeedListFeed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListFeed.swift; sourceTree = "<group>"; };
84B99C9C1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteFromSidebarCommand.swift; sourceTree = "<group>"; };
84BB4B611F1174D400858766 /* Data.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Data.xcodeproj; path = Frameworks/Data/Data.xcodeproj; sourceTree = "<group>"; };
84C12A141FF5B0080009A267 /* FeedList.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = FeedList.storyboard; sourceTree = "<group>"; };
84CBDDAE1FD3674C005A61AA /* Technotes */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Technotes; sourceTree = "<group>"; };
84CC88171FE59CBF00644329 /* SmartFeedsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeedsController.swift; sourceTree = "<group>"; };
84D52E941FE588BB00D14F5B /* DetailStatusBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailStatusBarView.swift; sourceTree = "<group>"; };
@ -789,9 +787,8 @@
849A978B1ED9EE4D007D329B /* Feed List */ = {
isa = PBXGroup;
children = (
84B2FAA31FF47BAC009C4878 /* FeedListWindow.xib */,
84C12A141FF5B0080009A267 /* FeedList.storyboard */,
849A978C1ED9EE4D007D329B /* FeedListWindowController.swift */,
847C4C9B1FF44F790090D517 /* FeedListSplitViewDelegate.swift */,
84F204CD1FAACB660076E152 /* FeedListViewController.swift */,
84F204DD1FAACB8B0076E152 /* FeedListTimelineViewController.swift */,
84513F8F1FAA63950023A1A9 /* FeedListControlsView.swift */,
@ -1366,7 +1363,7 @@
842E45E71ED8C747000A8B52 /* DB5.plist in Resources */,
844B5B691FEA20DF00C7C76A /* SidebarKeyboardShortcuts.plist in Resources */,
849A97AC1ED9F9BC007D329B /* AddFolderSheet.xib in Resources */,
84B2FAA41FF47BAC009C4878 /* FeedListWindow.xib in Resources */,
84C12A151FF5B0080009A267 /* FeedList.storyboard in Resources */,
84E95CF71FABB3C800552D99 /* FeedList.plist in Resources */,
849C64681ED37A5D003D8FC0 /* Assets.xcassets in Resources */,
849C646B1ED37A5D003D8FC0 /* Main.storyboard in Resources */,
@ -1444,7 +1441,6 @@
84B99C6B1FAE370B00ECDEDB /* FeedListFeed.swift in Sources */,
842611A01FCB72600086A189 /* FeaturedImageDownloader.swift in Sources */,
849A97781ED9EC04007D329B /* TimelineCellLayout.swift in Sources */,
847C4C9C1FF44F790090D517 /* FeedListSplitViewDelegate.swift in Sources */,
849A976C1ED9EBC8007D329B /* TimelineTableRowView.swift in Sources */,
849A977B1ED9EC04007D329B /* UnreadIndicatorView.swift in Sources */,
84B99C9D1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift in Sources */,

View File

@ -267,7 +267,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations,
@IBAction func showFeedList(_ sender: AnyObject) {
if feedListWindowController == nil {
feedListWindowController = FeedListWindowController()
feedListWindowController = windowControllerWithName("FeedList")
}
feedListWindowController!.showWindow(self)
}

View File

@ -215,7 +215,7 @@
</windowController>
<customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-520" y="38"/>
<point key="canvasLocation" x="-666" y="-124"/>
</scene>
<!--Split View Controller-->
<scene sceneID="vhK-r2-b3N">

View File

@ -0,0 +1,370 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="z5E-aV-xMb">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Window Controller-->
<scene sceneID="joN-Oe-nep">
<objects>
<windowController showSeguePresentationStyle="single" id="z5E-aV-xMb" sceneMemberID="viewController">
<window key="window" identifier="feedDirectoryWindow" title="Feed Directory" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="FeedDirectoryWindow" animationBehavior="default" id="Ty3-Oi-cUp">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="425" y="461" width="480" height="600"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<value key="minSize" type="size" width="480" height="480"/>
<value key="maxSize" type="size" width="768" height="2048"/>
<contentBorderThickness minY="32"/>
<connections>
<outlet property="delegate" destination="z5E-aV-xMb" id="lfa-LR-PLf"/>
</connections>
</window>
<connections>
<segue destination="ju5-jM-WKk" kind="relationship" relationship="window.shadowedContentViewController" id="vHc-9b-sEw"/>
</connections>
</windowController>
<customObject id="l74-pi-xxL" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-828" y="-22"/>
</scene>
<!--View Controller-->
<scene sceneID="b5P-LI-56y">
<objects>
<viewController id="ju5-jM-WKk" sceneMemberID="viewController">
<view key="view" id="46a-ok-dQm">
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<containerView translatesAutoresizingMaskIntoConstraints="NO" id="YFk-Bu-Nnc">
<rect key="frame" x="0.0" y="32" width="480" height="238"/>
<connections>
<segue destination="d1q-Ba-ygg" kind="embed" id="07r-H9-ueY"/>
</connections>
</containerView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="xKq-9P-ibo" customClass="FeedListControlsView" customModule="Evergreen" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="480" height="32"/>
<subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Bv8-Eq-0cT">
<rect key="frame" x="20" y="3" width="120" height="25"/>
<buttonCell key="cell" type="roundTextured" title="Add to Feeds" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="0gj-Cw-KCE">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ohy-a3-XkT">
<rect key="frame" x="148" y="3" width="120" height="25"/>
<buttonCell key="cell" type="roundTextured" title="Open Home Page" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="hom-If-fbd">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
</subviews>
<constraints>
<constraint firstItem="Ohy-a3-XkT" firstAttribute="width" secondItem="Bv8-Eq-0cT" secondAttribute="width" id="1Kl-sg-GHU"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Ohy-a3-XkT" secondAttribute="trailing" constant="20" symbolic="YES" id="2Py-y7-lRy"/>
<constraint firstItem="Ohy-a3-XkT" firstAttribute="leading" secondItem="Bv8-Eq-0cT" secondAttribute="trailing" constant="8" symbolic="YES" id="5Og-09-12P"/>
<constraint firstItem="Ohy-a3-XkT" firstAttribute="centerY" secondItem="xKq-9P-ibo" secondAttribute="centerY" id="7Yu-Ab-dfe"/>
<constraint firstItem="Bv8-Eq-0cT" firstAttribute="leading" secondItem="xKq-9P-ibo" secondAttribute="leading" constant="20" symbolic="YES" id="Iph-MK-E6k"/>
<constraint firstAttribute="height" constant="32" id="dH4-pR-OmT"/>
<constraint firstItem="Bv8-Eq-0cT" firstAttribute="centerY" secondItem="xKq-9P-ibo" secondAttribute="centerY" id="qgr-sL-IFQ"/>
</constraints>
</customView>
</subviews>
<constraints>
<constraint firstItem="YFk-Bu-Nnc" firstAttribute="top" secondItem="46a-ok-dQm" secondAttribute="top" id="71x-bl-RZk"/>
<constraint firstItem="YFk-Bu-Nnc" firstAttribute="leading" secondItem="46a-ok-dQm" secondAttribute="leading" id="7lT-YG-EN5"/>
<constraint firstAttribute="trailing" secondItem="YFk-Bu-Nnc" secondAttribute="trailing" id="LZY-8D-poG"/>
<constraint firstAttribute="trailing" secondItem="xKq-9P-ibo" secondAttribute="trailing" id="cYk-h2-Zcf"/>
<constraint firstAttribute="bottom" secondItem="xKq-9P-ibo" secondAttribute="bottom" id="uIU-wj-1Wk"/>
<constraint firstItem="xKq-9P-ibo" firstAttribute="leading" secondItem="46a-ok-dQm" secondAttribute="leading" id="vhS-uE-V8H"/>
<constraint firstItem="xKq-9P-ibo" firstAttribute="top" secondItem="YFk-Bu-Nnc" secondAttribute="bottom" id="yB2-aB-byH"/>
</constraints>
</view>
</viewController>
<customObject id="ANr-fb-gv3" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-989" y="535"/>
</scene>
<!--Split View Controller-->
<scene sceneID="E8t-Vq-sKF">
<objects>
<splitViewController identifier="FeedListSplitViewRestorationID" storyboardIdentifier="FeedListSplitViewStoryboardID" showSeguePresentationStyle="single" id="d1q-Ba-ygg" sceneMemberID="viewController">
<splitViewItems>
<splitViewItem canCollapse="YES" holdingPriority="260" behavior="sidebar" id="ae2-iY-wHE"/>
<splitViewItem holdingPriority="255" behavior="contentList" id="GY8-gt-RfC"/>
</splitViewItems>
<splitView key="splitView" identifier="feedListSplitViewIdentifier" autosaveName="FeedListSplitViewAutosave" dividerStyle="thin" vertical="YES" id="hA6-5F-1ud">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
<connections>
<outlet property="delegate" destination="d1q-Ba-ygg" id="sZG-eZ-Txl"/>
</connections>
</splitView>
<connections>
<outlet property="splitView" destination="hA6-5F-1ud" id="Arf-Fq-2x6"/>
<segue destination="QX3-Wg-cdZ" kind="relationship" relationship="splitItems" id="zwC-8l-e4m"/>
<segue destination="5oM-Nv-I7I" kind="relationship" relationship="splitItems" id="d9f-34-ExA"/>
</connections>
</splitViewController>
<customObject id="RVJ-c8-HXT" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-974" y="962"/>
</scene>
<!--Feed List View Controller-->
<scene sceneID="TKm-CD-zMs">
<objects>
<viewController id="QX3-Wg-cdZ" customClass="FeedListViewController" customModule="Evergreen" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" id="vp3-VV-Mzw">
<rect key="frame" x="0.0" y="0.0" width="285" height="300"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<visualEffectView appearanceType="vibrantLight" blendingMode="behindWindow" material="appearanceBased" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="W6S-45-U7K">
<rect key="frame" x="0.0" y="252" width="285" height="48"/>
<subviews>
<searchField wantsLayer="YES" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gqz-ML-j9e">
<rect key="frame" x="20" y="13" width="245" height="22"/>
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" usesSingleLineMode="YES" bezelStyle="round" id="Xlk-3c-BJ7">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</searchFieldCell>
</searchField>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="48" id="9cZ-Tx-Yyw"/>
<constraint firstItem="gqz-ML-j9e" firstAttribute="leading" secondItem="W6S-45-U7K" secondAttribute="leading" constant="20" symbolic="YES" id="AE3-2F-KB1"/>
<constraint firstItem="gqz-ML-j9e" firstAttribute="centerY" secondItem="W6S-45-U7K" secondAttribute="centerY" id="bVb-ZW-mMc"/>
<constraint firstAttribute="trailing" secondItem="gqz-ML-j9e" secondAttribute="trailing" constant="20" symbolic="YES" id="v25-Qt-e3h"/>
</constraints>
</visualEffectView>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rir-se-YCO">
<rect key="frame" x="0.0" y="0.0" width="285" height="252"/>
<clipView key="contentView" drawsBackground="NO" id="vli-sv-HLg">
<rect key="frame" x="0.0" y="0.0" width="285" height="252"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" columnReordering="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="medium" viewBased="YES" floatsGroupRows="NO" indentationPerLevel="16" outlineTableColumn="Ytm-dS-0WJ" id="Hxu-8i-6rp">
<rect key="frame" x="0.0" y="0.0" width="285" height="252"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="_sourceListBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn identifier="" width="282" minWidth="16" maxWidth="1000" id="Ytm-dS-0WJ">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="LEs-TM-piu">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView identifier="HeaderCell" id="Do1-0K-GCV">
<rect key="frame" x="1" y="1" width="282" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vm6-1A-a5G">
<rect key="frame" x="0.0" y="1" width="282" height="14"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="HEADER CELL" id="eL0-h5-mFm">
<font key="font" metaFont="smallSystemBold"/>
<color key="textColor" name="headerColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="vm6-1A-a5G" id="Ygp-YV-bUa"/>
</connections>
</tableCellView>
<tableCellView identifier="FeedListCell" id="M2x-Bb-n1x" customClass="SidebarCell" customModule="Evergreen" customModuleProvider="target">
<rect key="frame" x="1" y="20" width="282" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iAS-DV-SKL">
<rect key="frame" x="3" y="0.0" width="17" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" imageScaling="proportionallyDown" image="NSActionTemplate" id="dnh-HM-20u"/>
</imageView>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vtx-H2-Xjb">
<rect key="frame" x="25" y="0.0" width="257" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="zzF-cw-IyN">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="imageView" destination="iAS-DV-SKL" id="xfn-3B-xMs"/>
<outlet property="textField" destination="vtx-H2-Xjb" id="web-Eh-wce"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="QX3-Wg-cdZ" id="EYM-N6-z2Q"/>
<outlet property="delegate" destination="QX3-Wg-cdZ" id="J2x-xC-J0G"/>
</connections>
</outlineView>
</subviews>
<nil key="backgroundColor"/>
</clipView>
<constraints>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="512" id="9NC-nE-xTp"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="240" id="ldQ-7U-jou"/>
</constraints>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="X3r-hu-K2f">
<rect key="frame" x="-100" y="-100" width="285" height="16"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="Qg7-sg-Bly">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="rir-se-YCO" secondAttribute="trailing" id="7WI-u5-sU6"/>
<constraint firstAttribute="bottom" secondItem="rir-se-YCO" secondAttribute="bottom" id="B0Q-Ma-ojH"/>
<constraint firstItem="W6S-45-U7K" firstAttribute="top" secondItem="vp3-VV-Mzw" secondAttribute="top" id="RcQ-DY-ExG"/>
<constraint firstAttribute="trailing" secondItem="W6S-45-U7K" secondAttribute="trailing" id="Tqw-ES-fcL"/>
<constraint firstItem="rir-se-YCO" firstAttribute="top" secondItem="W6S-45-U7K" secondAttribute="bottom" id="Xd3-qo-Ubs"/>
<constraint firstItem="rir-se-YCO" firstAttribute="leading" secondItem="vp3-VV-Mzw" secondAttribute="leading" id="bGY-bf-MdA"/>
<constraint firstItem="W6S-45-U7K" firstAttribute="leading" secondItem="vp3-VV-Mzw" secondAttribute="leading" id="qIe-ch-aAN"/>
</constraints>
</view>
<connections>
<outlet property="outlineView" destination="Hxu-8i-6rp" id="Hm2-on-0JP"/>
</connections>
</viewController>
<customObject id="MKk-xD-0Fh" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-967" y="1488"/>
</scene>
<!--Feed List Timeline View Controller-->
<scene sceneID="hOx-Zn-uli">
<objects>
<viewController id="5oM-Nv-I7I" customClass="FeedListTimelineViewController" customModule="Evergreen" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" id="Ayc-tI-OzD">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eGF-yH-oea">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<clipView key="contentView" id="QTo-1K-1u2">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowSizeStyle="automatic" viewBased="YES" floatsGroupRows="NO" id="D1H-xQ-37M">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn identifier="" width="116" minWidth="40" maxWidth="1000" id="qm9-Co-lJr">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="hUD-7s-U2u">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="hg5-83-a5Z">
<rect key="frame" x="1" y="1" width="116" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cDm-zV-x6N">
<rect key="frame" x="0.0" y="0.0" width="116" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ZY6-YU-rrU">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="cDm-zV-x6N" id="nDu-d9-1w9"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
<tableColumn identifier="" width="328" minWidth="40" maxWidth="1000" id="N5b-a8-DDG">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="UtV-Rc-YFH">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="e21-hS-OeE">
<rect key="frame" x="120" y="1" width="328" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MRY-sV-Us9">
<rect key="frame" x="0.0" y="0.0" width="328" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="EXc-CI-HAS">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="MRY-sV-Us9" id="6SL-WX-tp5"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
</tableView>
</subviews>
</clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="pOU-wV-ftq">
<rect key="frame" x="1" y="119" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="zCx-Fz-yEd">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="eGF-yH-oea" secondAttribute="bottom" id="L2H-cP-qWd"/>
<constraint firstAttribute="trailing" secondItem="eGF-yH-oea" secondAttribute="trailing" id="WAK-gU-jrD"/>
<constraint firstItem="eGF-yH-oea" firstAttribute="top" secondItem="Ayc-tI-OzD" secondAttribute="top" id="mBn-j8-wXF"/>
<constraint firstItem="eGF-yH-oea" firstAttribute="leading" secondItem="Ayc-tI-OzD" secondAttribute="leading" id="xE0-7D-thL"/>
</constraints>
</view>
</viewController>
<customObject id="Xw8-6t-9F9" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-261" y="1477"/>
</scene>
</scenes>
<resources>
<image name="NSActionTemplate" width="14" height="14"/>
</resources>
</document>

View File

@ -1,145 +0,0 @@
//
// FeedListSplitViewDelegate.swift
// Evergreen
//
// Created by Brent Simmons on 12/27/17.
// Copyright © 2017 Ranchero Software. All rights reserved.
//
import Cocoa
import DB5
import RSCore
final class FeedListSplitViewDelegate: NSObject, NSSplitViewDelegate {
@IBOutlet weak var sidebarView: NSView?
@IBOutlet weak var timelineView: NSView?
@IBOutlet weak var splitView: NSSplitView?
let sidebarMinimumThickness: CGFloat
let sidebarMaximumThickness: CGFloat
let sidebarBestWidth: CGFloat
let timelineMinimumThickness: CGFloat
override init() {
sidebarMinimumThickness = appDelegate.currentTheme.float(forKey: "FeedDirectory.sidebar.minimumThickness")
sidebarMaximumThickness = appDelegate.currentTheme.float(forKey: "FeedDirectory.sidebar.maximumThickness")
sidebarBestWidth = appDelegate.currentTheme.float(forKey: "FeedDirectory.sidebar.bestWidth")
timelineMinimumThickness = appDelegate.currentTheme.float(forKey: "FeedDirectory.timeline.minimumThickness")
super.init()
}
// override func awakeFromNib() {
//
// let highestAllowedPriority = NSLayoutConstraint.Priority(rawValue: NSLayoutConstraint.Priority.dragThatCannotResizeWindow.rawValue - 1)
// splitView?.setHoldingPriority(highestAllowedPriority, forSubviewAt: 0)
// splitView?.setHoldingPriority(.defaultLow, forSubviewAt: 1)
// }
// MARK: - NSSplitViewDelegate
func splitView(_ splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool {
return false
}
func splitView(_ splitView: NSSplitView, shouldCollapseSubview subview: NSView, forDoubleClickOnDividerAt dividerIndex: Int) -> Bool {
return false
}
func splitView(_ splitView: NSSplitView, shouldHideDividerAt dividerIndex: Int) -> Bool {
return false
}
func splitView(_ splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
return sidebarMinimumThickness
}
func splitView(_ splitView: NSSplitView, constrainMaxCoordinate proposedMaximumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
return sidebarMaximumThickness
}
func splitView(_ splitView: NSSplitView, constrainSplitPosition proposedPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
if proposedPosition < sidebarMinimumThickness {
return sidebarMinimumThickness
}
// If proposedPosition makes timeline too small, then adjust.
let proposedTimelineWidth = proposedTimelineThickness(splitView, proposedPosition)
if proposedTimelineWidth < timelineMinimumThickness {
return min(sidebarMaximumThickness, proposedPosition - (timelineMinimumThickness - proposedTimelineWidth))
}
if proposedPosition > sidebarMaximumThickness {
return sidebarMaximumThickness
}
return proposedPosition
}
// func splitView(_ splitView: NSSplitView, shouldAdjustSizeOfSubview view: NSView) -> Bool {
//
// guard let sidebarView = sidebarView, let timelineView = timelineView else {
// assertionFailure("Expected sidebarView and timelineView as non-nil, but at least one is nil.")
// return true
// }
//
// if view === sidebarView {
// if timelineView.frame.width <= timelineMinimumThickness {
// return true
// }
// return false
// }
//
// return true
// }
func splitView(_ splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize) {
guard let sidebarView = sidebarView, let timelineView = timelineView else {
assertionFailure("Expected sidebarView and timelineView as non-nil, but at least one is nil.")
return
}
let splitViewFrame = splitView.frame
let splitViewWidth = splitViewFrame.width
let dividerThickness = splitView.dividerThickness
var sidebarViewFrame = sidebarView.frame
sidebarViewFrame.size.height = splitViewFrame.height
var timelineViewFrame = timelineView.frame
timelineViewFrame.size.height = splitViewFrame.height
sidebarViewFrame.size.width = max(sidebarViewFrame.width, sidebarMinimumThickness)
sidebarViewFrame.size.width = ceil(min(sidebarViewFrame.width, sidebarMaximumThickness))
timelineViewFrame.size.width = floor(min(timelineViewFrame.width, timelineMinimumThickness))
let totalProposedWidth = sidebarViewFrame.width + dividerThickness + timelineViewFrame.width
let difference = splitViewWidth - totalProposedWidth
if difference < 0 {
timelineViewFrame.size.width += difference
if timelineViewFrame.width < 0 {
timelineViewFrame.size.width = 0
sidebarViewFrame.size.width += difference
}
}
sidebarView.rs_setFrameIfNotEqual(sidebarViewFrame)
timelineView.rs_setFrameIfNotEqual(timelineViewFrame)
}
}
private extension FeedListSplitViewDelegate {
func proposedTimelineThickness(_ splitView: NSSplitView, _ proposedPosition: CGFloat) -> CGFloat {
return (splitView.frame.width - splitView.dividerThickness) - proposedPosition
}
}

View File

@ -6,4 +6,12 @@
// Copyright © 2017 Ranchero Software. All rights reserved.
//
import Foundation
import Cocoa
final class FeedListTimelineViewController: NSViewController {
override func viewDidLoad() {
view.translatesAutoresizingMaskIntoConstraints = false
}
}

View File

@ -23,6 +23,8 @@ final class FeedListViewController: NSViewController {
override func viewDidLoad() {
view.translatesAutoresizingMaskIntoConstraints = false
sidebarCellAppearance = SidebarCellAppearance(theme: appDelegate.currentTheme, fontSize: AppDefaults.shared.sidebarFontSize)
NotificationCenter.default.addObserver(self, selector: #selector(faviconDidBecomeAvailable(_:)), name: .FaviconDidBecomeAvailable, object: nil)
outlineView.needsLayout = true
@ -71,7 +73,7 @@ extension FeedListViewController: NSOutlineViewDelegate {
func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? {
let cell = outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "FeedListCell"), owner: self) as! SidebarCell
cell.translatesAutoresizingMaskIntoConstraints = false
let node = item as! Node
configure(cell, node)

View File

@ -1,225 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="FeedListWindowController" customModule="Evergreen" customModuleProvider="target">
<connections>
<outlet property="window" destination="QvC-M9-y7g" id="bzG-LL-nKW"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Feed Directory" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="FeedListWindow" animationBehavior="default" tabbingIdentifier="feedListWindow" id="QvC-M9-y7g">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="480" height="320"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<value key="minSize" type="size" width="480" height="320"/>
<value key="maxSize" type="size" width="1024" height="2048"/>
<view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
<rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<splitView identifier="feedListSplitView" arrangesAllSubviews="NO" autosaveName="FeedListSplitView" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LmW-op-ndf">
<rect key="frame" x="0.0" y="32" width="480" height="288"/>
<subviews>
<visualEffectView appearanceType="vibrantLight" blendingMode="behindWindow" material="appearanceBased" state="followsWindowActiveState" id="fSs-xC-S8k">
<rect key="frame" x="0.0" y="0.0" width="128" height="288"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Sxr-eg-boM">
<rect key="frame" x="0.0" y="240" width="128" height="48"/>
<subviews>
<searchField wantsLayer="YES" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="791-YX-E38">
<rect key="frame" x="20" y="13" width="88" height="22"/>
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" allowsUndo="NO" borderStyle="bezel" placeholderString="Filter" usesSingleLineMode="YES" bezelStyle="round" sendsSearchStringImmediately="YES" sendsWholeSearchString="YES" id="R5K-If-i2f">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</searchFieldCell>
</searchField>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="48" id="62f-Ja-njN"/>
<constraint firstItem="791-YX-E38" firstAttribute="centerY" secondItem="Sxr-eg-boM" secondAttribute="centerY" id="Z9W-jw-zkI"/>
<constraint firstItem="791-YX-E38" firstAttribute="leading" secondItem="Sxr-eg-boM" secondAttribute="leading" constant="20" symbolic="YES" id="d50-xe-TO4"/>
<constraint firstAttribute="trailing" secondItem="791-YX-E38" secondAttribute="trailing" constant="20" symbolic="YES" id="i0h-PY-4SC"/>
</constraints>
</customView>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="OF2-9S-uq1">
<rect key="frame" x="0.0" y="0.0" width="128" height="240"/>
<clipView key="contentView" drawsBackground="NO" id="tIe-rZ-QVh">
<rect key="frame" x="0.0" y="0.0" width="128" height="240"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" columnReordering="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="medium" viewBased="YES" floatsGroupRows="NO" indentationPerLevel="16" outlineTableColumn="DDG-fw-BOq" id="QFz-zl-L9q">
<rect key="frame" x="0.0" y="0.0" width="128" height="240"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="_sourceListBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn identifier="" width="125" minWidth="16" maxWidth="1000" id="DDG-fw-BOq">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="U2H-cs-jde">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView identifier="HeaderCell" id="rPF-Th-5l6">
<rect key="frame" x="1" y="1" width="125" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fp1-HX-EM4">
<rect key="frame" x="0.0" y="1" width="125" height="14"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="HEADER CELL" id="1Rz-3S-1vv">
<font key="font" metaFont="smallSystemBold"/>
<color key="textColor" name="headerColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="Fp1-HX-EM4" id="UQs-tV-3wl"/>
</connections>
</tableCellView>
<tableCellView identifier="FeedListCell" id="oo8-3R-9Qa" customClass="SidebarCell" customModule="Evergreen" customModuleProvider="target">
<rect key="frame" x="1" y="20" width="125" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ddF-Kr-ft0">
<rect key="frame" x="3" y="0.0" width="17" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" imageScaling="proportionallyDown" image="NSActionTemplate" id="HgG-Pt-2z7"/>
</imageView>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Flq-o4-dtm">
<rect key="frame" x="25" y="0.0" width="100" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="Wuw-uU-GVp">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="imageView" destination="ddF-Kr-ft0" id="0e4-pZ-hDr"/>
<outlet property="textField" destination="Flq-o4-dtm" id="P96-eF-dBi"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="PaK-f7-LwO" id="rCV-PC-qeS"/>
<outlet property="delegate" destination="PaK-f7-LwO" id="1bE-cF-kNW"/>
</connections>
</outlineView>
</subviews>
<nil key="backgroundColor"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="Hnz-Cp-z1k">
<rect key="frame" x="-100" y="-100" width="238" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="3bs-fU-WVz">
<rect key="frame" x="-16" y="0.0" width="16" height="0.0"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
</subviews>
<constraints>
<constraint firstItem="Sxr-eg-boM" firstAttribute="top" secondItem="fSs-xC-S8k" secondAttribute="top" id="JY1-JZ-cuJ"/>
<constraint firstAttribute="trailing" secondItem="Sxr-eg-boM" secondAttribute="trailing" id="JxU-8e-12v"/>
<constraint firstAttribute="bottom" secondItem="OF2-9S-uq1" secondAttribute="bottom" id="aqg-cT-TaC"/>
<constraint firstItem="OF2-9S-uq1" firstAttribute="leading" secondItem="fSs-xC-S8k" secondAttribute="leading" id="c5o-Kb-QD5"/>
<constraint firstAttribute="trailing" secondItem="OF2-9S-uq1" secondAttribute="trailing" id="gtT-Vf-xJy"/>
<constraint firstItem="Sxr-eg-boM" firstAttribute="leading" secondItem="fSs-xC-S8k" secondAttribute="leading" id="rb4-70-MGe"/>
<constraint firstItem="OF2-9S-uq1" firstAttribute="top" secondItem="Sxr-eg-boM" secondAttribute="bottom" id="vSF-na-noD"/>
</constraints>
</visualEffectView>
<customView fixedFrame="YES" id="asI-cc-kYO">
<rect key="frame" x="129" y="0.0" width="351" height="288"/>
<autoresizingMask key="autoresizingMask"/>
</customView>
</subviews>
<holdingPriorities>
<real value="489"/>
<real value="251"/>
</holdingPriorities>
<connections>
<outlet property="delegate" destination="foD-R8-nCX" id="8ds-kY-h3r"/>
</connections>
</splitView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="6se-0m-JxY" customClass="FeedListControlsView" customModule="Evergreen" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="480" height="32"/>
<subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="U53-Bq-HP2">
<rect key="frame" x="20" y="3" width="120" height="25"/>
<buttonCell key="cell" type="roundTextured" title="Add to Feeds" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="7OU-tA-nCD">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="X7c-Nn-Xph">
<rect key="frame" x="148" y="3" width="120" height="25"/>
<buttonCell key="cell" type="roundTextured" title="Open Home Page" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="yrU-QH-vPM">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
</subviews>
<constraints>
<constraint firstItem="X7c-Nn-Xph" firstAttribute="leading" secondItem="U53-Bq-HP2" secondAttribute="trailing" constant="8" symbolic="YES" id="0Qa-VX-hdR"/>
<constraint firstItem="U53-Bq-HP2" firstAttribute="leading" secondItem="6se-0m-JxY" secondAttribute="leading" constant="20" symbolic="YES" id="0Sc-2H-DfU"/>
<constraint firstItem="U53-Bq-HP2" firstAttribute="centerY" secondItem="6se-0m-JxY" secondAttribute="centerY" id="9rb-e2-33Q"/>
<constraint firstAttribute="height" constant="32" id="AbU-G5-j4T"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="X7c-Nn-Xph" secondAttribute="trailing" constant="20" symbolic="YES" id="Cjz-4A-F90"/>
<constraint firstItem="X7c-Nn-Xph" firstAttribute="baseline" secondItem="U53-Bq-HP2" secondAttribute="baseline" id="mGj-Qh-qO0"/>
<constraint firstItem="X7c-Nn-Xph" firstAttribute="width" secondItem="U53-Bq-HP2" secondAttribute="width" id="yoX-G2-pWj"/>
</constraints>
</customView>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="6se-0m-JxY" secondAttribute="trailing" id="HKu-uJ-efY"/>
<constraint firstAttribute="trailing" secondItem="LmW-op-ndf" secondAttribute="trailing" id="LJD-YC-Lsl"/>
<constraint firstItem="LmW-op-ndf" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" id="T9a-cw-EEU"/>
<constraint firstItem="6se-0m-JxY" firstAttribute="top" secondItem="LmW-op-ndf" secondAttribute="bottom" id="Vk9-ar-osD"/>
<constraint firstItem="LmW-op-ndf" firstAttribute="top" secondItem="EiT-Mj-1SZ" secondAttribute="top" id="aXq-dQ-TUw"/>
<constraint firstAttribute="bottom" secondItem="6se-0m-JxY" secondAttribute="bottom" id="lip-QF-tl7"/>
<constraint firstItem="6se-0m-JxY" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" id="omW-wJ-Mxf"/>
</constraints>
</view>
<contentBorderThickness minY="32"/>
<connections>
<outlet property="initialFirstResponder" destination="791-YX-E38" id="COm-7H-yRn"/>
</connections>
</window>
<viewController id="PaK-f7-LwO" customClass="FeedListViewController" customModule="Evergreen" customModuleProvider="target">
<connections>
<outlet property="outlineView" destination="QFz-zl-L9q" id="kXs-PQ-ozV"/>
<outlet property="view" destination="OF2-9S-uq1" id="yfP-zX-T6z"/>
</connections>
</viewController>
<customObject id="foD-R8-nCX" customClass="FeedListSplitViewDelegate" customModule="Evergreen" customModuleProvider="target">
<connections>
<outlet property="sidebarView" destination="fSs-xC-S8k" id="EPm-FO-BI3"/>
<outlet property="splitView" destination="LmW-op-ndf" id="X2z-RD-rkV"/>
<outlet property="timelineView" destination="asI-cc-kYO" id="sw2-Qf-oMo"/>
</connections>
</customObject>
</objects>
<resources>
<image name="NSActionTemplate" width="14" height="14"/>
</resources>
</document>

View File

@ -11,11 +11,11 @@ import Cocoa
class FeedListWindowController : NSWindowController {
public convenience init() {
override func windowDidLoad() {
self.init(windowNibName: NSNib.Name(rawValue: "FeedListWindow"))
window!.contentView?.translatesAutoresizingMaskIntoConstraints = false
}
@IBAction func addToFeeds(_ sender: AnyObject) {
}

View File

@ -83,6 +83,8 @@ class SidebarCell : NSTableCellView {
private func commonInit() {
unreadCountView.translatesAutoresizingMaskIntoConstraints = false
imageView?.translatesAutoresizingMaskIntoConstraints = false
textField?.translatesAutoresizingMaskIntoConstraints = false
addSubview(unreadCountView)
}