Skip to content

Commit

Permalink
Temporarily Disable Editing Nearby Distance on tvOS (#749)
Browse files Browse the repository at this point in the history
- .popover and Slider are not available on tvOS.
- Perhaps try .contextMenu???
  • Loading branch information
bolsinga committed Dec 4, 2023
1 parent 2fc8a96 commit f81a5f4
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 43 deletions.
12 changes: 7 additions & 5 deletions Sources/Site/Music/UI/NearbyDistanceThresholdModifier.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ struct NearbyDistanceThresholdModifier: ViewModifier {
Image(systemName: "gear")
}
}
.popover(isPresented: $presentDistanceSliderPopover) {
NearbyDistanceThresholdView(distanceThreshold: $model.distanceThreshold) {
labelText
#if !os(tvOS)
.popover(isPresented: $presentDistanceSliderPopover) {
NearbyDistanceThresholdView(distanceThreshold: $model.distanceThreshold) {
labelText
}
.presentationCompactAdaptation(.popover)
}
.presentationCompactAdaptation(.popover)
}
#endif
}
}
.task {
Expand Down
78 changes: 40 additions & 38 deletions Sources/Site/Music/UI/NearbyDistanceThresholdView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,50 +8,52 @@
import CoreLocation
import SwiftUI

struct NearbyDistanceThresholdView: View {
@Binding var distanceThreshold: CLLocationDistance
@ViewBuilder var text: () -> Text
#if !os(tvOS)
struct NearbyDistanceThresholdView: View {
@Binding var distanceThreshold: CLLocationDistance
@ViewBuilder var text: () -> Text

private var distanceThresholdMeasurementString: String {
nearbyDistanceThresholdFormatter.string(
from: Measurement(value: distanceThreshold, unit: UnitLength.meters))
}
private var distanceThresholdMeasurementString: String {
nearbyDistanceThresholdFormatter.string(
from: Measurement(value: distanceThreshold, unit: UnitLength.meters))
}

private func distanceValueString(_ distance: CLLocationDistance) -> String {
nearbyDistanceValueFormatter.string(
from: Measurement(value: distance, unit: UnitLength.meters))
}
private func distanceValueString(_ distance: CLLocationDistance) -> String {
nearbyDistanceValueFormatter.string(
from: Measurement(value: distance, unit: UnitLength.meters))
}

var body: some View {
VStack {
Slider(
value: $distanceThreshold, in: minimumNearbyDistance...maximumNearbyDistance,
step: nearbyDistanceStep
) {
text()
} minimumValueLabel: {
Label {
Text(distanceValueString(minimumNearbyDistance))
} icon: {
Image(systemName: "minus.circle")
}
} maximumValueLabel: {
Label {
Text(distanceValueString(maximumNearbyDistance))
} icon: {
Image(systemName: "plus.circle")
var body: some View {
VStack {
Slider(
value: $distanceThreshold, in: minimumNearbyDistance...maximumNearbyDistance,
step: nearbyDistanceStep
) {
text()
} minimumValueLabel: {
Label {
Text(distanceValueString(minimumNearbyDistance))
} icon: {
Image(systemName: "minus.circle")
}
} maximumValueLabel: {
Label {
Text(distanceValueString(maximumNearbyDistance))
} icon: {
Image(systemName: "plus.circle")
}
}
Text(distanceThresholdMeasurementString)
}
Text(distanceThresholdMeasurementString)
.frame(width: 300)
.padding([.leading, .trailing], 10)
}
.frame(width: 300)
.padding([.leading, .trailing], 10)
}
}

#Preview {
NearbyDistanceThresholdView(distanceThreshold: .constant(100.0)) {
let v = "Nearby Distance"
Text(v)
#Preview {
NearbyDistanceThresholdView(distanceThreshold: .constant(100.0)) {
let v = "Nearby Distance"
Text(v)
}
}
}
#endif

0 comments on commit f81a5f4

Please sign in to comment.