Make progress on swapping timeline views.

This commit is contained in:
Brent Simmons
2019-02-16 22:14:06 -08:00
parent 8d79827346
commit 3408a4c725
6 changed files with 91 additions and 82 deletions

View File

@@ -48,7 +48,7 @@ final class DetailViewController: NSViewController, WKUIDelegate {
// MARK: - API
func showState(_ state: DetailState, mode: TimelineSourceMode) {
func setState(_ state: DetailState, mode: TimelineSourceMode) {
// TODO: also to-do is caller
}

View File

@@ -10,11 +10,7 @@ import AppKit
final class TimelineContainerView: NSView {
override var isOpaque: Bool {
return true
}
var contentViewConstraints: [NSLayoutConstraint]?
private var contentViewConstraints: [NSLayoutConstraint]?
var contentView: NSView? {
didSet {
@@ -38,8 +34,13 @@ final class TimelineContainerView: NSView {
}
}
override var isOpaque: Bool {
return true
}
override func draw(_ dirtyRect: NSRect) {
NSColor.textBackgroundColor.setFill()
dirtyRect.fill()
}
}

View File

@@ -8,11 +8,56 @@
import Cocoa
class TimelineContainerViewController: NSViewController {
enum TimelineState {
case empty
case representedObjects([AnyObject])
}
final class TimelineContainerViewController: NSViewController {
@IBOutlet var containerView: TimelineContainerView!
private var states: [TimelineSourceMode: TimelineState] = [.regular: .empty, .search: .empty]
private lazy var regularTimelineViewController = {
return TimelineViewController(delegate: self)
}()
private lazy var searchTimelineViewController = {
return TimelineViewController(delegate: self)
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
setState(.empty, mode: .regular)
showTimeline(for: .regular)
}
// MARK: - API
func setState(_ state: TimelineState, mode: TimelineSourceMode) {
timelineViewController(for: mode).state = state
}
func showTimeline(for mode: TimelineSourceMode) {
containerView.contentView = timelineViewController(for: mode).view
}
}
extension TimelineContainerViewController: TimelineDelegate {
func selectionDidChange(in: TimelineViewController) {
// TODO: notify MainWindowController
}
}
private extension TimelineContainerViewController {
func timelineViewController(for mode: TimelineSourceMode) -> TimelineViewController {
switch mode {
case .regular:
return regularTimelineViewController
case .search:
return searchTimelineViewController
}
}
}

View File

@@ -40,6 +40,9 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
</tableColumn>
</tableColumns>
<connections>
<outlet property="menu" destination="zCu-LD-kHw" id="nNl-iz-nVl"/>
</connections>
</tableView>
</subviews>
</clipView>
@@ -52,5 +55,21 @@
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<menu id="zCu-LD-kHw">
<items>
<menuItem title="Item 1" id="AJc-Qw-NnP">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Item 2" id="YKj-q3-QDG">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Item 3" id="IJ0-IS-a6R">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
</items>
<connections>
<outlet property="delegate" destination="opA-RM-DKR" id="QpK-G8-xCm"/>
</connections>
</menu>
</objects>
</document>

View File

@@ -12,13 +12,20 @@ import Articles
import Account
protocol TimelineDelegate: class {
func selectionDidChange(in: TimelineViewController, mode: TimelineSourceMode)
func selectionDidChange(in: TimelineViewController)
}
class TimelineViewController: NSViewController, UndoableCommandRunner {
final class TimelineViewController: NSViewController, UndoableCommandRunner {
@IBOutlet var tableView: TimelineTableView!
var state: TimelineState = .empty {
didSet {
// TODO
}
}
private weak var delegate: TimelineDelegate?
var sharingServiceDelegate: NSSharingServiceDelegate?
var selectedArticles: [Article] {
@@ -117,6 +124,11 @@ class TimelineViewController: NSViewController, UndoableCommandRunner {
return selectedArticles.count == 1 ? selectedArticles.first : nil
}
convenience init(delegate: TimelineDelegate) {
self.init(nibName: "TimelineTableView", bundle: nil)
self.delegate = delegate
}
override func viewDidLoad() {
cellAppearance = TimelineCellAppearance(theme: appDelegate.currentTheme, showAvatar: false, fontSize: fontSize)