diff --git a/LeCountdown/Conductor.swift b/LeCountdown/Conductor.swift index e81b195..23c021e 100644 --- a/LeCountdown/Conductor.swift +++ b/LeCountdown/Conductor.swift @@ -192,20 +192,24 @@ class Conductor: ObservableObject { } if let coolSound { - do { - let soundFile = try coolSound.soundFile() - let soundPlayer = SoundPlayer() - self.soundPlayer = soundPlayer - try soundPlayer.playSound(soundFile: soundFile, repeats: false) - } catch { - print("error = \(error)") - // TODO: manage error - } + self.playSound(coolSound) } else { print("No sound to play!") } } + func playSound(_ sound: Sound) { + do { + let soundFile = try sound.soundFile() + let soundPlayer = SoundPlayer() + self.soundPlayer = soundPlayer + try soundPlayer.playSound(soundFile: soundFile, repeats: false) + } catch { + print("error = \(error)") + // TODO: manage error + } + } + func stopSoundIfPossible() { self.soundPlayer?.stop() self.soundPlayer = nil diff --git a/LeCountdown/Views/Components/SoundSelectionView.swift b/LeCountdown/Views/Components/SoundSelectionView.swift index 3cc35f3..1b58a0c 100644 --- a/LeCountdown/Views/Components/SoundSelectionView.swift +++ b/LeCountdown/Views/Components/SoundSelectionView.swift @@ -95,6 +95,8 @@ struct PlaylistSectionView: View { ForEach(sounds) { sound in ToggleRow(item: sound, selected: self.model.binding(sound: sound)) { selected in self.model.selectSound(sound, selected: selected) + }.onTapGesture { + self._playSound(sound) } } } header: { @@ -105,6 +107,10 @@ struct PlaylistSectionView: View { } + fileprivate func _playSound(_ sound: Sound) { + Conductor.maestro.playSound(sound) + } + } struct ToggleRow: View {