OSDN Git Service

処理を簡素化
[kcd/KCD.git] / KCD / AncherageRepairTimerViewController.swift
1 //
2 //  AncherageRepairTimerViewController.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2016/12/29.
6 //  Copyright © 2016年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 final class AncherageRepairTimerViewController: NSViewController {
12     
13     static let regularHeight: CGFloat = 76
14     static let smallHeight: CGFloat = regularHeight - 32
15     
16     private let anchorageRepairManager = AnchorageRepairManager.default
17     
18     @IBOutlet var screenshotButton: NSButton!
19     
20     @objc dynamic var repairTime: NSNumber?
21     
22     override var nibName: NSNib.Name {
23         
24         return .nibName(instanceOf: self)
25     }
26     
27     var controlSize: NSControl.ControlSize = .regular {
28         
29         willSet {
30             if controlSize == newValue { return }
31             var frame = view.frame
32             frame.size.height = (newValue == .regular ? type(of: self).regularHeight : type(of: self).smallHeight)
33             view.frame = frame
34             
35             var buttonFrame = screenshotButton.frame
36             buttonFrame.size.width += newValue == .regular ? 32.0 : -32.0
37             screenshotButton.frame = buttonFrame
38             
39             refleshTrackingArea()
40         }
41     }
42     private var trackingArea: NSTrackingArea?
43     
44     override func viewDidLoad() {
45         
46         super.viewDidLoad()
47         
48         AppDelegate.shared.addCounterUpdate { [weak self] in
49             
50             guard let `self` = self else { return }
51             
52             self.repairTime = self.calcRepairTime()
53         }
54     }
55     
56     override func mouseEntered(with event: NSEvent) {
57         
58         screenshotButton.image = NSImage(named: NSImage.Name("Camera"))
59     }
60     
61     override func mouseExited(with event: NSEvent) {
62         
63         screenshotButton.image = NSImage(named: NSImage.Name("CameraDisabled"))
64     }
65     
66     private func refleshTrackingArea() {
67         
68         view.trackingAreas.forEach(view.removeTrackingArea)
69         trackingArea = NSTrackingArea(rect: screenshotButton.frame,
70                                       options: [.mouseEnteredAndExited, .activeInActiveApp],
71                                       owner: self,
72                                       userInfo: nil)
73         if let trackingArea = trackingArea {
74             
75             view.addTrackingArea(trackingArea)
76         }
77     }
78     
79     private func calcRepairTime() -> NSNumber? {
80         
81         let complete = anchorageRepairManager.repairTime.timeIntervalSince1970
82         let now = Date(timeIntervalSinceNow: 0.0).timeIntervalSince1970
83         let diff = complete - now
84         
85         return NSNumber(value: diff + 20.0 * 60)
86     }
87 }