mirror of
https://github.com/MonitorControl/MonitorControl.git
synced 2026-05-16 14:15:55 -06:00
* 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.
29 lines
677 B
Swift
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)
|
|
}
|
|
}
|