mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Make progress on swapping timeline views.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user