Default volume setting

main
Laurent 3 years ago
parent 1bfc8350a9
commit d81d951f43
  1. 2
      LeCountdown/Utils/Preferences.swift
  2. 2
      LeCountdown/Views/ContentView.swift
  3. 18
      LeCountdown/Views/Reusable/VolumeView.swift
  4. 16
      LeCountdown/Views/SettingsView.swift

@ -18,6 +18,7 @@ enum PreferenceKey: String {
case tips
case timerSiriTips
case cloudKitSchemaInitialized
case defaultVolume
}
class Preferences {
@ -30,6 +31,7 @@ class Preferences {
@UserDefault(PreferenceKey.playConfirmationSound.rawValue, defaultValue: true) static var playConfirmationSound: Bool
@UserDefault(PreferenceKey.playCancellationSound.rawValue, defaultValue: true) static var playCancellationSound: Bool
@UserDefault(PreferenceKey.cloudKitSchemaInitialized.rawValue, defaultValue: false) static var cloudKitSchemaInitialized: Bool
@UserDefault(PreferenceKey.defaultVolume.rawValue, defaultValue: 0.5) static var defaultVolume: Float
static var hideSilentModeAlerts: Bool {
return UserDefaults.standard.bool(forKey: PreferenceKey.showSilentModeAlert.rawValue)

@ -119,7 +119,7 @@ struct ContentView<T : AbstractTimer>: View {
})
.sheet(isPresented: self.$showSettingsSheet, content: {
SettingsView()
.presentationDetents([.height(150.0)])
.presentationDetents([.height(240.0)])
})
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {

@ -13,14 +13,30 @@ struct VolumeView: UIViewRepresentable {
func makeUIView(context: Context) -> MPVolumeView {
let volumeView = MPVolumeView(frame: .zero)
volumeView.showsLargeContentViewer = false
// volumeView.showsLargeContentViewer = false
// if let slider = volumeView.subviews.first(where: { $0 is UISlider }) as? UISlider {
// slider.setValue(0.15, animated: false)
// }
self._setVolume(volumeView: volumeView)
return volumeView
}
func updateUIView(_ view: MPVolumeView, context: Context) {
Logger.log("update volume view")
}
fileprivate func _setVolume(volumeView: MPVolumeView) {
if let slider = volumeView.subviews.first(where: { $0 is UISlider }) as? UISlider {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.01) {
slider.setValue(Preferences.defaultVolume, animated: false)
}
}
}
}
struct VolumeView_Previews: PreviewProvider {

@ -11,18 +11,30 @@ struct SettingsView: View {
@State var confirmationSound = Preferences.playConfirmationSound
@State var cancellationSound = Preferences.playCancellationSound
@State var defaultVolume: Float = Preferences.defaultVolume
@State var showMailView: Bool = false
var body: some View {
Form {
Toggle("Play confirmation sound", isOn: self.$confirmationSound).onChange(of: self.confirmationSound) { newValue in
Toggle("Play confirmation sound", isOn: self.$confirmationSound)
.onChange(of: self.confirmationSound) { newValue in
Preferences.playConfirmationSound = newValue
}
Toggle("Play cancellation sound", isOn: self.$cancellationSound).onChange(of: self.cancellationSound) { newValue in
Toggle("Play cancellation sound", isOn: self.$cancellationSound)
.onChange(of: self.cancellationSound) { newValue in
Preferences.playCancellationSound = newValue
}
HStack {
Text("Default Volume")
Spacer()
Slider(value: self.$defaultVolume)
.onChange(of: self.defaultVolume, perform: { newValue in
Preferences.defaultVolume = self.defaultVolume
})
.frame(width: 120.0)
}
Button {
self.showMailView = true
} label: {

Loading…
Cancel
Save