visionOS: use native toggles in menus

This commit is contained in:
Jesús A. Álvarez 2024-02-17 14:59:37 +01:00
parent 2ccef4e3a6
commit fcb71f79ff
1 changed files with 19 additions and 31 deletions

View File

@ -66,15 +66,13 @@ struct SpeedButton: View {
let label: LocalizedStringKey let label: LocalizedStringKey
let speed: EmulatorSpeed let speed: EmulatorSpeed
var body: some View { var body: some View {
if currentSpeed == speed { Toggle(label, isOn: Binding(get: {
Button(label, systemImage: "checkmark") {} currentSpeed == speed
} else { }, set: { enable in
Button { if enable {
currentSpeed = speed currentSpeed = speed
} label: {
Text(label)
} }
} }))
} }
} }
@ -94,22 +92,16 @@ struct MachineButton: View {
@AppStorage("machine") var currentMachine: String = "Plus4M" @AppStorage("machine") var currentMachine: String = "Plus4M"
var bundle: Bundle var bundle: Bundle
var body: some View { var body: some View {
if currentMachine == bundle.name { Toggle(isOn: Binding(get: {
Label { currentMachine == bundle.name
Text("\(bundle.displayName ?? bundle.name)\n\(bundle.getInfoString ?? "")") }, set: { enable in
} icon: { if enable && !AppDelegate.emulator.anyDiskInserted {
Image(systemName: "checkmark") currentMachine = bundle.name
AppDelegate.shared.loadAndStartEmulator()
} }
} else { }), label: {
Button { Text("\(bundle.displayName ?? bundle.name)\n\(bundle.getInfoString ?? "")")
if !AppDelegate.emulator.anyDiskInserted { })
currentMachine = bundle.name
AppDelegate.shared.loadAndStartEmulator()
}
} label: {
Text("\(bundle.displayName ?? bundle.name)\n\(bundle.getInfoString ?? "")")
}
}
} }
} }
@ -129,17 +121,13 @@ struct DisplayScalingMenu: View {
var body: some View { var body: some View {
Menu("Display Scaling", systemImage: "rectangle.and.text.magnifyingglass") { Menu("Display Scaling", systemImage: "rectangle.and.text.magnifyingglass") {
ForEach(DisplayScalingMenu.filters, id: \.filter) { filter in ForEach(DisplayScalingMenu.filters, id: \.filter) { filter in
if scalingFilter == filter.filter { Toggle(filter.name, isOn: Binding(get: {
Label { scalingFilter == filter.filter
Text(filter.name) }, set: { enable in
} icon: { if enable {
Image(systemName: "checkmark")
}
} else {
Button(filter.name) {
scalingFilter = filter.filter scalingFilter = filter.filter
} }
} }))
} }
}.menuOrder(.fixed) }.menuOrder(.fixed)
} }