forked from I2P_Developers/i2p.i2p
63 lines
1.7 KiB
Swift
63 lines
1.7 KiB
Swift
![]() |
//
|
||
|
// StatusIndicator.swift
|
||
|
// I2PLauncher
|
||
|
//
|
||
|
// Created by Mikal Villa on 09/04/2019.
|
||
|
// Copyright © 2019 The I2P Project. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import Cocoa
|
||
|
|
||
|
class StatusIndicator: NSView {
|
||
|
var checkmarkIcon = CheckmarkIcon()
|
||
|
var crossIcon = CrossIcon()
|
||
|
|
||
|
var status: ServiceStatus = .started {
|
||
|
didSet {
|
||
|
checkmarkIcon.isHidden = status > .stopped
|
||
|
crossIcon.isHidden = status <= .stopped
|
||
|
|
||
|
switch status {
|
||
|
case .undetermined: crossIcon.color = StatusColor.gray
|
||
|
case .waiting: checkmarkIcon.color = StatusColor.gray
|
||
|
case .started: checkmarkIcon.color = StatusColor.green
|
||
|
case .notice: checkmarkIcon.color = StatusColor.green
|
||
|
case .killed: checkmarkIcon.color = StatusColor.red
|
||
|
case .crashed: checkmarkIcon.color = StatusColor.red
|
||
|
case .stopped: crossIcon.color = StatusColor.blue
|
||
|
case .restarting: crossIcon.color = StatusColor.orange
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
init() {
|
||
|
super.init(frame: NSRect.zero)
|
||
|
commonInit()
|
||
|
}
|
||
|
|
||
|
required init?(coder: NSCoder) {
|
||
|
super.init(coder: coder)
|
||
|
commonInit()
|
||
|
}
|
||
|
|
||
|
private func commonInit() {
|
||
|
addSubview(checkmarkIcon)
|
||
|
addSubview(crossIcon)
|
||
|
}
|
||
|
|
||
|
override func setFrameSize(_ newSize: NSSize) {
|
||
|
super.setFrameSize(newSize)
|
||
|
|
||
|
checkmarkIcon.frame = bounds
|
||
|
crossIcon.frame = bounds
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class StatusColor {
|
||
|
static var green = NSColor(calibratedRed: 0.36, green: 0.68, blue: 0.46, alpha: 1)
|
||
|
static var blue = NSColor(calibratedRed: 0.24, green: 0.54, blue: 1, alpha: 0.8)
|
||
|
static var orange = NSColor.orange
|
||
|
static var red = NSColor(calibratedRed: 0.9, green: 0.4, blue: 0.23, alpha: 1)
|
||
|
static var gray = NSColor.tertiaryLabelColor
|
||
|
}
|