MonitorControl/MonitorControl/SliderHandler.swift
Markus Reiter 6e91c71353 Various Enhancements (#66)
* Update to Swift 5.0 and run `swiftformat`.

* Refactor `MediaKeyTap` start/restart.

* Remove useless comments.

* Reorder files.

* Add German translation.

* Switch to Carthage.

* Use `DDC.swift`.

* Add `NSScreen` extension.

* Simplify menu layout.

* Hide the display’s built-in OSD.

* Fix launch at login helper.

* Fix `quitClicked` connection.

* Refactor build phases.

* Use `os_log` instead of `print`.

* Use more specific check for `minReplyDelay`.

* Add whitelist.
2019-05-07 15:01:26 +02:00

29 lines
677 B
Swift

import Cocoa
import DDC
class SliderHandler {
var slider: NSSlider?
var display: Display
let cmd: DDC.Command
public init(display: Display, command: DDC.Command) {
self.display = display
self.cmd = command
}
@objc func valueChanged(slider: NSSlider) {
let snapInterval = 25
let snapThreshold = 3
var value = slider.integerValue
let closest = (value + snapInterval / 2) / snapInterval * snapInterval
if abs(closest - value) <= snapThreshold {
value = closest
slider.integerValue = value
}
_ = self.display.ddc?.write(command: self.cmd, value: UInt8(value))
self.display.saveValue(value, for: self.cmd)
}
}