OSDN Git Service

UAをVersion/10.0.3 Safari/602.4.8に変更
[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 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     dynamic var repairTime: NSNumber?
21     override var nibName: String! {
22         return "AncherageRepairTimerViewController"
23     }
24     var controlSize: NSControlSize = .regular {
25         willSet {
26             if controlSize == newValue { return }
27             var frame = view.frame
28             frame.size.height = (newValue == .regular ? type(of: self).regularHeight : type(of: self).smallHeight)
29             view.frame = frame
30             
31             var buttonFrame = screenshotButton.frame
32             buttonFrame.size.width += newValue == .regular ? 32.0 : -32.0
33             screenshotButton.frame = buttonFrame
34             
35             refleshTrackingArea()
36         }
37     }
38     private var trackingArea: NSTrackingArea?
39     
40     override func viewDidLoad() {
41         super.viewDidLoad()
42         
43         AppDelegate.shared.addCounterUpdate { [weak self] _ in
44             guard let `self` = self else { return }
45             self.repairTime = self.calcRepairTime()
46         }
47     }
48     override func mouseEntered(with event: NSEvent) {
49         screenshotButton.image = NSImage(named: "Camera")
50     }
51     override func mouseExited(with event: NSEvent) {
52         screenshotButton.image = NSImage(named: "CameraDisabled")
53     }
54     
55     private func refleshTrackingArea() {
56         view.trackingAreas
57             .forEach { view.removeTrackingArea($0) }
58         trackingArea = NSTrackingArea(rect: screenshotButton.frame,
59                                       options: [.mouseEnteredAndExited, .activeInActiveApp],
60                                       owner: self,
61                                       userInfo: nil)
62         if let trackingArea = trackingArea {
63             view.addTrackingArea(trackingArea)
64         }
65     }
66     
67     private func calcRepairTime() -> NSNumber? {
68         let complete = anchorageRepairManager.repairTime.timeIntervalSince1970
69         let now = Date(timeIntervalSinceNow: 0.0).timeIntervalSince1970
70         let diff = complete - now
71         return NSNumber(value: diff + 20.0 * 60)
72     }
73 }