// // Disk.swift // Stats // // Created by Serhiy Mytrovtsiy on 01.06.2019. // Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. // import Cocoa class Disk: Module { let name: String = "Disk" let shortName: String = "SSD" var view: NSView = NSView() var menu: NSMenuItem = NSMenuItem() let defaults = UserDefaults.standard var widgetType: WidgetType var active: Observable var available: Observable var reader: Reader = DiskReader() @IBOutlet weak var value: NSTextField! init() { self.available = Observable(true) self.active = Observable(defaults.object(forKey: name) != nil ? defaults.bool(forKey: name) : true) self.widgetType = defaults.object(forKey: "\(name)_widget") != nil ? defaults.float(forKey: "\(name)_widget") : Widgets.Mini self.initMenu() let widget = Mini(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT)) widget.label = self.shortName self.view = widget } func initMenu() { menu = NSMenuItem(title: name, action: #selector(toggle), keyEquivalent: "") if defaults.object(forKey: name) != nil { menu.state = defaults.bool(forKey: name) ? NSControl.StateValue.on : NSControl.StateValue.off } else { menu.state = NSControl.StateValue.on } menu.target = self menu.isEnabled = true } @objc func toggle(_ sender: NSMenuItem) { let state = sender.state != NSControl.StateValue.on sender.state = sender.state == NSControl.StateValue.on ? NSControl.StateValue.off : NSControl.StateValue.on self.defaults.set(state, forKey: name) self.active << state if !state { self.stop() } else { self.start() } } }