From c83fde10b44fe8f85fb7dbd425cbda7d1b6fd378 Mon Sep 17 00:00:00 2001 From: Robert Bressi <3928269+robertbressi@users.noreply.github.com> Date: Sun, 18 Oct 2020 05:31:58 -0700 Subject: [PATCH] Show audio muted OSD image when audio volume value is 0 (#276) --- MonitorControl/Model/Display.swift | 48 ++++++++++++++++-------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/MonitorControl/Model/Display.swift b/MonitorControl/Model/Display.swift index ba449e4..c2f138d 100644 --- a/MonitorControl/Model/Display.swift +++ b/MonitorControl/Model/Display.swift @@ -10,6 +10,12 @@ import DDC import Foundation import os.log +private enum OSDImage: Int64 { + case brightness = 1 + case audioSpeaker = 3 + case audioSpeakerMuted = 4 +} + class Display { internal let identifier: CGDirectDisplayID internal let name: String @@ -48,37 +54,35 @@ class Display { return } - var osdImage: Int64! + var osdImage: OSDImage switch command { - case .brightness: - osdImage = 1 // Brightness Image case .audioSpeakerVolume: - osdImage = 3 // Speaker image + osdImage = value > 0 ? .audioSpeaker : .audioSpeakerMuted case .audioMuteScreenBlank: - osdImage = 4 // Mute image + osdImage = .audioSpeakerMuted default: - osdImage = 1 + osdImage = .brightness } + let filledChiclets: Int + let totalChiclets: Int + if roundChiclet { let osdChiclet = OSDUtils.chiclet(fromValue: Float(value), maxValue: Float(maxValue)) - let filledChiclets = round(osdChiclet) - - manager.showImage(osdImage, - onDisplayID: self.identifier, - priority: 0x1F4, - msecUntilFade: 1000, - filledChiclets: UInt32(filledChiclets), - totalChiclets: UInt32(16), - locked: false) + + filledChiclets = Int(round(osdChiclet)) + totalChiclets = 16 } else { - manager.showImage(osdImage, - onDisplayID: self.identifier, - priority: 0x1F4, - msecUntilFade: 1000, - filledChiclets: UInt32(value), - totalChiclets: UInt32(maxValue), - locked: false) + filledChiclets = value + totalChiclets = maxValue } + + manager.showImage(osdImage.rawValue, + onDisplayID: self.identifier, + priority: 0x1F4, + msecUntilFade: 1000, + filledChiclets: UInt32(filledChiclets), + totalChiclets: UInt32(totalChiclets), + locked: false) } }