NetNewsWire/Mac/MainWindow/Timeline/TimelineTableRowView.swift

80 lines
2.0 KiB
Swift

//
// TimelineTableRowView.swift
// NetNewsWire
//
// Created by Brent Simmons on 8/31/15.
// Copyright © 2015 Ranchero Software, LLC. All rights reserved.
//
import AppKit
class TimelineTableRowView : NSTableRowView {
private var separator: NSView?
override var isOpaque: Bool {
return true
}
override var isEmphasized: Bool {
didSet {
cellView?.isEmphasized = isEmphasized
}
}
override var isSelected: Bool {
didSet {
cellView?.isSelected = isSelected
separator?.isHidden = isSelected
}
}
init() {
super.init(frame: NSRect.zero)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
private var cellView: TimelineTableCellView? {
for oneSubview in subviews {
if let foundView = oneSubview as? TimelineTableCellView {
return foundView
}
}
return nil
}
override func viewDidMoveToSuperview() {
if AppDefaults.shared.timelineShowsSeparators {
addSeparatorView()
}
}
private func addSeparatorView() {
guard let cellView = cellView, separator == nil else { return }
separator = NSView()
separator!.translatesAutoresizingMaskIntoConstraints = false
separator!.wantsLayer = true
separator!.layer?.backgroundColor = AppAssets.timelineSeparatorColor.cgColor
addSubview(separator!)
if #available(macOS 11.0, *) {
NSLayoutConstraint.activate([
separator!.leadingAnchor.constraint(equalTo: cellView.leadingAnchor, constant: 20),
separator!.trailingAnchor.constraint(equalTo: cellView.trailingAnchor, constant: -4),
separator!.heightAnchor.constraint(equalToConstant: 1),
separator!.bottomAnchor.constraint(equalTo: bottomAnchor, constant: 0)
])
} else {
NSLayoutConstraint.activate([
separator!.leadingAnchor.constraint(equalTo: cellView.leadingAnchor, constant: 34),
separator!.trailingAnchor.constraint(equalTo: cellView.trailingAnchor, constant: -28),
separator!.heightAnchor.constraint(equalToConstant: 1),
separator!.bottomAnchor.constraint(equalTo: bottomAnchor, constant: 0)
])
}
}
}