From af08c3d40a1677907cef7f129f4221250a4e848e Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 31 Mar 2020 00:25:37 +0200 Subject: [PATCH] play sound only when starting/enabling/disabling --- PushToTalk/AppDelegate.swift | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/PushToTalk/AppDelegate.swift b/PushToTalk/AppDelegate.swift index e4f12b8..3d8d5e4 100644 --- a/PushToTalk/AppDelegate.swift +++ b/PushToTalk/AppDelegate.swift @@ -31,8 +31,6 @@ class AppDelegate: NSObject, NSApplicationDelegate { var previousTimestamp:Double = 0 - var deferred:DispatchWorkItem? - func applicationDidFinishLaunching(_ aNotification: Notification) { talkIcon = NSImage(named: "talk") muteIcon = NSImage(named: "mute") @@ -42,7 +40,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { apDown = loadPlayer("sounds/down") updateToggleTitle() - updateMic(wait:false) + updateMic() statusItem.image = muteIcon statusItem.menu = statusMenu @@ -60,7 +58,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { @IBAction func toggleAction(_ sender: NSMenuItem) { enabled = !enabled updateToggleTitle() - updateMic(wait:false) + updateMic() } @IBAction func menuItemQuitAction(_ sender: NSMenuItem) { @@ -70,6 +68,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { func updateToggleTitle() { menuItemToggle.title = enabled ? "Disable / push-to-mute" : "Enable / push-to-talk" + (enabled ? apDown : apUp)?.play() } func loadPlayer(_ name:String) -> AVAudioPlayer? { @@ -95,34 +94,21 @@ class AppDelegate: NSObject, NSApplicationDelegate { enabled = !enabled updateToggleTitle() - - updateMic(wait: false) } else { previousTimestamp = timestamp - - updateMic(wait: true) } - } else { - updateMic(wait: false) } - } - func updateMic(wait:Bool) { - deferred?.cancel() - - if wait { - deferred = DispatchWorkItem { self.updateMic(wait: false) } + updateMic() + } - DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: deferred!) - } else { - let mute = pushed != enabled - if muted != mute { - muted = mute + func updateMic() { + let mute = pushed != enabled + if muted != mute { + muted = mute - toggleMute(mute) - statusItem.image = mute ? muteIcon : talkIcon - (mute ? apDown : apUp)?.play() - } + toggleMute(mute) + statusItem.image = mute ? muteIcon : talkIcon } }