Skip to content

Commit 0e86379

Browse files
authored
Add CustomStringConvertibles (#92)
- Just take the `CustomStringConvertible` changes from #83
1 parent 5bc0284 commit 0e86379

File tree

9 files changed

+50
-20
lines changed

9 files changed

+50
-20
lines changed

Sources/MapLibreSwiftUI/MapView.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,20 @@ import MapLibreSwiftDSL
44
import SwiftUI
55

66
/// Identifies the activity this ``MapView`` is being used for. Useful for debugging purposes.
7-
public enum MapActivity: Int {
7+
public enum MapActivity: Int, CustomStringConvertible {
88
/// Navigation in a standard window. Default.
99
case standard = 0
1010
/// Navigation in a CarPlay template.
1111
case carplay = 2025
12+
13+
public var description: String {
14+
switch self {
15+
case .standard:
16+
"standard"
17+
case .carplay:
18+
"carplay"
19+
}
20+
}
1221
}
1322

1423
public struct MapView<T: MapViewHostViewController>: UIViewControllerRepresentable {

Sources/MapLibreSwiftUI/MapViewCoordinator.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,27 @@ import Foundation
22
import MapLibre
33
import MapLibreSwiftDSL
44

5+
extension MLNCameraChangeReason: @retroactive CustomStringConvertible {
6+
private static let descriptions: [(Self, String)] = [
7+
(.programmatic, "programmatic"),
8+
(.resetNorth, "resetNorth"),
9+
(.gesturePan, "gesturePan"),
10+
(.gesturePinch, "gesturePinch"),
11+
(.gestureRotate, "gestureRotate"),
12+
(.gestureZoomIn, "gestureZoomIn"),
13+
(.gestureZoomOut, "gestureZoomOut"),
14+
(.gestureOneFingerZoom, "gestureOneFingerZoom"),
15+
(.gestureTilt, "gestureTilt"),
16+
(.transitionCancelled, "transitionCancelled"),
17+
]
18+
19+
public var description: String {
20+
var names = Self.descriptions.filter { contains($0.0) }.map(\.1)
21+
if names.isEmpty { names = ["none"] }
22+
return names.joined(separator: ",")
23+
}
24+
}
25+
526
public class MapViewCoordinator<T: MapViewHostViewController>: NSObject, @preconcurrency
627
MLNMapViewDelegate {
728
// This must be weak, the UIViewRepresentable owns the MLNMapView.

Sources/MapLibreSwiftUI/Models/MapCamera/MapViewCamera.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import MapLibre
55
/// The SwiftUI MapViewCamera.
66
///
77
/// This manages the camera state within the MapView.
8-
public struct MapViewCamera: Hashable, Equatable, Sendable {
8+
public struct MapViewCamera: Hashable, Equatable, Sendable, CustomStringConvertible {
99
public enum Defaults {
1010
public static let coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 0)
1111
public static let zoom: Double = 10
@@ -139,4 +139,8 @@ public struct MapViewCamera: Hashable, Equatable, Sendable {
139139
MapViewCamera(state: .rect(boundingBox: box, edgePadding: edgePadding),
140140
lastReasonForChange: .programmatic)
141141
}
142+
143+
public var description: String {
144+
"State: \(state) last: \((lastReasonForChange != nil) ? "\(lastReasonForChange!)" : "nil")"
145+
}
142146
}

Tests/MapLibreSwiftUITests/Models/Gesture/MapGestureTests.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ final class MapGestureTests: XCTestCase {
55
func testTapGestureDefaults() {
66
let gesture = MapGesture(method: .tap(),
77
onChange: .context { _ in
8-
98
})
109

1110
XCTAssertEqual(gesture.method, .tap())
@@ -15,7 +14,6 @@ final class MapGestureTests: XCTestCase {
1514
func testTapGesture() {
1615
let gesture = MapGesture(method: .tap(numberOfTaps: 3),
1716
onChange: .context { _ in
18-
1917
})
2018

2119
XCTAssertEqual(gesture.method, .tap(numberOfTaps: 3))
@@ -25,7 +23,6 @@ final class MapGestureTests: XCTestCase {
2523
func testLongPressGestureDefaults() {
2624
let gesture = MapGesture(method: .longPress(),
2725
onChange: .context { _ in
28-
2926
})
3027

3128
XCTAssertEqual(gesture.method, .longPress())
@@ -35,7 +32,6 @@ final class MapGestureTests: XCTestCase {
3532
func testLongPressGesture() {
3633
let gesture = MapGesture(method: .longPress(minimumDuration: 3),
3734
onChange: .context { _ in
38-
3935
})
4036

4137
XCTAssertEqual(gesture.method, .longPress(minimumDuration: 3))

Tests/MapLibreSwiftUITests/Models/MapCamera/__Snapshots__/MapViewCameraTests/testBoundingBox.1.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
▿ MapViewCamera
2-
▿ lastReasonForChange: Optional<CameraChangeReason>
3-
- some: CameraChangeReason.programmatic
1+
▿ State: CameraState.rect(northeast: CLLocationCoordinate2D(latitude: 24.6993808, longitude: 46.7709285), southwest: CLLocationCoordinate2D(latitude: 24.6056011, longitude: 46.67369842529297), edgePadding: UIEdgeInsets(top: 20.0, left: 20.0, bottom: 20.0, right: 20.0)) last: programmatic
42
▿ state: CameraState
53
▿ rect: (2 elements)
64
▿ boundingBox: MLNCoordinateBounds
@@ -15,3 +13,5 @@
1513
- left: 20.0
1614
- right: 20.0
1715
- top: 20.0
16+
▿ lastReasonForChange: Optional<CameraChangeReason>
17+
- some: CameraChangeReason.programmatic
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
▿ MapViewCamera
2-
- lastReasonForChange: Optional<CameraChangeReason>.none
1+
▿ State: CameraState.centered(onCoordinate: CLLocationCoordinate2D(latitude: 12.3, longitude: 23.4), zoom: 5.0, pitch: 12.0, pitchRange: free, direction: 23.0) last: nil
32
▿ state: CameraState
43
▿ centered: (5 elements)
54
▿ onCoordinate: CLLocationCoordinate2D
@@ -9,3 +8,4 @@
98
- pitch: 12.0
109
- pitchRange: CameraPitchRange.free
1110
- direction: 23.0
11+
- lastReasonForChange: Optional<CameraChangeReason>.none
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
▿ MapViewCamera
2-
▿ lastReasonForChange: Optional<CameraChangeReason>
3-
- some: CameraChangeReason.programmatic
1+
▿ State: CameraState.trackingUserLocationWithCourse(zoom: (18.0, 0.0, MapLibreSwiftUI.CameraPitchRange.freeWithinRange(minimum: 12.0, maximum: 34.0))) last: programmatic
42
▿ state: CameraState
53
▿ trackingUserLocationWithCourse: (3 elements)
64
- zoom: 18.0
@@ -9,3 +7,5 @@
97
▿ freeWithinRange: (2 elements)
108
- minimum: 12.0
119
- maximum: 34.0
10+
▿ lastReasonForChange: Optional<CameraChangeReason>
11+
- some: CameraChangeReason.programmatic
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
▿ MapViewCamera
2-
▿ lastReasonForChange: Optional<CameraChangeReason>
3-
- some: CameraChangeReason.programmatic
1+
▿ State: CameraState.trackingUserLocationWithHeading(zoom: (10.0, 0.0, MapLibreSwiftUI.CameraPitchRange.free)) last: programmatic
42
▿ state: CameraState
53
▿ trackingUserLocationWithHeading: (3 elements)
64
- zoom: 10.0
75
- pitch: 0.0
86
- pitchRange: CameraPitchRange.free
7+
▿ lastReasonForChange: Optional<CameraChangeReason>
8+
- some: CameraChangeReason.programmatic
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
▿ MapViewCamera
2-
▿ lastReasonForChange: Optional<CameraChangeReason>
3-
- some: CameraChangeReason.programmatic
1+
▿ State: CameraState.trackingUserLocation(zoom: (10.0, 0.0, MapLibreSwiftUI.CameraPitchRange.freeWithinRange(minimum: 12.0, maximum: 34.0), 0.0)) last: programmatic
42
▿ state: CameraState
53
▿ trackingUserLocation: (4 elements)
64
- zoom: 10.0
@@ -10,3 +8,5 @@
108
- minimum: 12.0
119
- maximum: 34.0
1210
- direction: 0.0
11+
▿ lastReasonForChange: Optional<CameraChangeReason>
12+
- some: CameraChangeReason.programmatic

0 commit comments

Comments
 (0)