Skip to content

Commit

Permalink
play sound only when starting/enabling/disabling
Browse files Browse the repository at this point in the history
  • Loading branch information
toy committed Mar 30, 2020
1 parent a7b0632 commit af08c3d
Showing 1 changed file with 11 additions and 25 deletions.
36 changes: 11 additions & 25 deletions PushToTalk/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -42,7 +40,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
apDown = loadPlayer("sounds/down")

updateToggleTitle()
updateMic(wait:false)
updateMic()

statusItem.image = muteIcon
statusItem.menu = statusMenu
Expand All @@ -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) {
Expand All @@ -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? {
Expand All @@ -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
}
}

Expand Down

0 comments on commit af08c3d

Please sign in to comment.