2 // AncherageRepairTimerViewController.swift
5 // Created by Hori,Masaki on 2016/12/29.
6 // Copyright © 2016年 Hori,Masaki. All rights reserved.
11 final class AncherageRepairTimerViewController: NSViewController {
13 static let regularHeight: CGFloat = 76
14 static let smallHeight: CGFloat = regularHeight - 32
16 private let anchorageRepairManager = AnchorageRepairManager.default
18 @IBOutlet private var screenshotButton: NSButton!
20 @objc dynamic var repairTime: NSNumber?
22 override var nibName: NSNib.Name {
24 return .nibName(instanceOf: self)
27 var controlSize: NSControl.ControlSize = .regular {
31 if controlSize == newValue {
36 var frame = view.frame
37 frame.size.height = (newValue == .regular ? type(of: self).regularHeight : type(of: self).smallHeight)
40 var buttonFrame = screenshotButton.frame
41 buttonFrame.size.width += newValue == .regular ? 32.0 : -32.0
42 screenshotButton.frame = buttonFrame
47 private var trackingArea: NSTrackingArea?
49 override func viewDidLoad() {
53 AppDelegate.shared.addCounterUpdate { [weak self] in
55 guard let `self` = self else {
60 self.repairTime = self.calcRepairTime()
64 override func mouseEntered(with event: NSEvent) {
66 screenshotButton.image = NSImage(named: NSImage.Name("Camera"))
69 override func mouseExited(with event: NSEvent) {
71 screenshotButton.image = NSImage(named: NSImage.Name("CameraDisabled"))
74 private func refleshTrackingArea() {
76 view.trackingAreas.forEach(view.removeTrackingArea)
77 trackingArea = NSTrackingArea(rect: screenshotButton.frame,
78 options: [.mouseEnteredAndExited, .activeInActiveApp],
81 if let trackingArea = trackingArea {
83 view.addTrackingArea(trackingArea)
87 private func calcRepairTime() -> NSNumber? {
89 let complete = anchorageRepairManager.repairTime.timeIntervalSince1970
90 let now = Date(timeIntervalSinceNow: 0.0).timeIntervalSince1970
91 let diff = complete - now
93 return NSNumber(value: diff + 20.0 * 60)