You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.4 KiB
60 lines
1.4 KiB
//
|
|
// VolumeView.swift
|
|
// LeCountdown
|
|
//
|
|
// Created by Laurent Morvillier on 08/03/2023.
|
|
//
|
|
|
|
import SwiftUI
|
|
import MediaPlayer
|
|
import UIKit
|
|
|
|
struct VolumeView: UIViewRepresentable {
|
|
|
|
var changeVolume: Bool
|
|
|
|
init(changeVolume: Bool = false) {
|
|
self.changeVolume = changeVolume
|
|
}
|
|
|
|
func makeUIView(context: Context) -> MPVolumeView {
|
|
let volumeView = MPVolumeView(frame: .zero)
|
|
// volumeView.isHidden = self.changeVolume
|
|
|
|
if self.changeVolume {
|
|
self._setVolume(volumeView: volumeView)
|
|
}
|
|
|
|
return volumeView
|
|
}
|
|
|
|
func updateUIView(_ view: MPVolumeView, context: Context) {
|
|
// Logger.log("update volume view")
|
|
if self.changeVolume {
|
|
self._setVolume(volumeView: view)
|
|
}
|
|
}
|
|
|
|
fileprivate func _setVolume(volumeView: MPVolumeView) {
|
|
|
|
guard Preferences.raiseSoundOnLaunch else {
|
|
return
|
|
}
|
|
|
|
if let slider = volumeView.subviews.first(where: { $0 is UISlider }) as? UISlider {
|
|
|
|
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.1) {
|
|
Logger.log("update volume view to \(Preferences.defaultVolume)")
|
|
|
|
slider.setValue(Preferences.defaultVolume, animated: false)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
struct VolumeView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
VolumeView()
|
|
}
|
|
}
|
|
|