|
|
@ -3,13 +3,34 @@ |
|
|
|
import Cocoa |
|
|
|
import Cocoa |
|
|
|
|
|
|
|
|
|
|
|
class HourMarkerViewItem: NSCollectionViewItem { |
|
|
|
class HourMarkerViewItem: NSCollectionViewItem { |
|
|
|
|
|
|
|
static let reuseIdentifier = NSUserInterfaceItemIdentifier("HourMarkerViewItem") |
|
|
|
|
|
|
|
|
|
|
|
@IBOutlet var hourLabel: NSTextField! |
|
|
|
@IBOutlet var hourLabel: NSTextField! |
|
|
|
|
|
|
|
|
|
|
|
func setup(with indexPath: IndexPath) { |
|
|
|
func setup(with hour: Int) { |
|
|
|
hourLabel.stringValue = "\(indexPath.item):00" |
|
|
|
var dateComponents = DateComponents() |
|
|
|
if indexPath.item == 2 { |
|
|
|
dateComponents.hour = hour |
|
|
|
highlightState = .forSelection |
|
|
|
|
|
|
|
isSelected = true |
|
|
|
if let newDate = Calendar.autoupdatingCurrent.date(byAdding: dateComponents, to: Date().nextHour) { |
|
|
|
|
|
|
|
let dateFormatter = DateFormatterManager.dateFormatterWithFormat(with: .none, |
|
|
|
|
|
|
|
format: "HH:mm", |
|
|
|
|
|
|
|
timezoneIdentifier: TimeZone.current.identifier, |
|
|
|
|
|
|
|
locale: Locale.autoupdatingCurrent) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hourLabel.stringValue = dateFormatter.string(from: newDate) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override var acceptsFirstResponder: Bool { |
|
|
|
|
|
|
|
return false |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extension Date { |
|
|
|
|
|
|
|
public var nextHour: Date { |
|
|
|
|
|
|
|
let calendar = Calendar.current |
|
|
|
|
|
|
|
let minutes = calendar.component(.minute, from: self) |
|
|
|
|
|
|
|
let components = DateComponents(hour: 1, minute: -minutes) |
|
|
|
|
|
|
|
return calendar.date(byAdding: components, to: self) ?? self |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|