80 lines
2.0 KiB
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)
|
|
])
|
|
}
|
|
}
|
|
|
|
}
|