Skip to content

Commit 2a10ad0

Browse files
committed
Batch ornaments settings on iOS
1 parent 8bbd28a commit 2a10ad0

File tree

4 files changed

+52
-46
lines changed

4 files changed

+52
-46
lines changed

ios/Classes/AttributionController.swift

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,26 @@ import UIKit
44
class AttributionController: NSObject, FLT_SETTINGSAttributionSettingsInterface {
55

66
func updateSettingsSettings(_ settings: FLT_SETTINGSAttributionSettings, error: AutoreleasingUnsafeMutablePointer<FlutterError?>) {
7+
var attributionButton = mapView.ornaments.options.attributionButton
78
switch settings.position?.value {
89
case .BOTTOM_LEFT:
9-
mapView.ornaments.options.attributionButton.position = .bottomLeading
10-
mapView.ornaments.options.attributionButton.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
10+
attributionButton.position = .bottomLeading
11+
attributionButton.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
1112
case .BOTTOM_RIGHT, .none:
12-
mapView.ornaments.options.attributionButton.position = .bottomTrailing
13-
mapView.ornaments.options.attributionButton.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
13+
attributionButton.position = .bottomTrailing
14+
attributionButton.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
1415
case .TOP_LEFT:
15-
mapView.ornaments.options.attributionButton.position = .topLeading
16-
mapView.ornaments.options.attributionButton.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
16+
attributionButton.position = .topLeading
17+
attributionButton.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
1718
case .TOP_RIGHT:
18-
mapView.ornaments.options.attributionButton.position = .topTrailing
19-
mapView.ornaments.options.attributionButton.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
19+
attributionButton.position = .topTrailing
20+
attributionButton.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
21+
}
22+
23+
mapView.ornaments.options.attributionButton = attributionButton
24+
25+
if let iconColor = settings.iconColor?.intValue {
26+
mapView.ornaments.attributionButton.tintColor = uiColorFromHex(rgbValue: iconColor)
2027
}
2128
}
2229

ios/Classes/CompassController.swift

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,33 @@ import UIKit
44
class CompassController: NSObject, FLT_SETTINGSCompassSettingsInterface {
55

66
func updateSettingsSettings(_ settings: FLT_SETTINGSCompassSettings, error: AutoreleasingUnsafeMutablePointer<FlutterError?>) {
7+
var compass = mapView.ornaments.options.compass
78
switch settings.position?.value {
89
case .BOTTOM_LEFT:
9-
mapView.ornaments.options.compass.position = .bottomLeading
10-
mapView.ornaments.options.compass.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
10+
compass.position = .bottomLeading
11+
compass.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
1112
case .BOTTOM_RIGHT:
12-
mapView.ornaments.options.compass.position = .bottomTrailing
13-
mapView.ornaments.options.compass.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
13+
compass.position = .bottomTrailing
14+
compass.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
1415
case .TOP_LEFT:
15-
mapView.ornaments.options.compass.position = .topLeading
16-
mapView.ornaments.options.compass.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
16+
compass.position = .topLeading
17+
compass.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
1718
case .TOP_RIGHT, .none:
18-
mapView.ornaments.options.compass.position = .topTrailing
19-
mapView.ornaments.options.compass.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
19+
compass.position = .topTrailing
20+
compass.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
2021
}
2122

2223
if let data = settings.image?.data {
23-
mapView.ornaments.options.compass.image = UIImage(data: data, scale: UIScreen.main.scale)
24+
compass.image = UIImage(data: data, scale: UIScreen.main.scale)
2425
}
2526

2627
if let visible = settings.enabled {
2728
if !visible.boolValue {
28-
mapView.ornaments.options.compass.visibility = OrnamentVisibility.hidden
29-
} else {
30-
if settings.fadeWhenFacingNorth?.boolValue ?? true {
31-
mapView.ornaments.options.compass.visibility = OrnamentVisibility.adaptive
32-
} else {
33-
mapView.ornaments.options.compass.visibility = OrnamentVisibility.visible
34-
}
29+
compass.visibility = visible.boolValue ? .adaptive : .hidden
3530
}
3631
}
32+
33+
mapView.ornaments.options.compass = compass
3734
}
3835

3936
func getSettingsWithError(_ error: AutoreleasingUnsafeMutablePointer<FlutterError?>) -> FLT_SETTINGSCompassSettings? {

ios/Classes/LogoController.swift

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,23 @@ import Foundation
33
import UIKit
44
class LogoController: NSObject, FLT_SETTINGSLogoSettingsInterface {
55
func updateSettingsSettings(_ settings: FLT_SETTINGSLogoSettings, error: AutoreleasingUnsafeMutablePointer<FlutterError?>) {
6+
var logo = mapView.ornaments.options.logo
67
switch settings.position?.value {
78
case .BOTTOM_LEFT, .none:
8-
mapView.ornaments.options.logo.position = .bottomLeading
9-
mapView.ornaments.options.logo.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
9+
logo.position = .bottomLeading
10+
logo.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
1011
case .BOTTOM_RIGHT:
11-
mapView.ornaments.options.logo.position = .bottomTrailing
12-
mapView.ornaments.options.logo.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
12+
logo.position = .bottomTrailing
13+
logo.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
1314
case .TOP_LEFT:
14-
mapView.ornaments.options.logo.position = .topLeading
15-
mapView.ornaments.options.logo.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
15+
logo.position = .topLeading
16+
logo.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
1617
case .TOP_RIGHT:
17-
mapView.ornaments.options.logo.position = .topTrailing
18-
mapView.ornaments.options.logo.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
18+
logo.position = .topTrailing
19+
logo.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
1920
}
21+
22+
mapView.ornaments.options.logo = logo
2023
}
2124

2225
func getSettingsWithError(_ error: AutoreleasingUnsafeMutablePointer<FlutterError?>) -> FLT_SETTINGSLogoSettings? {

ios/Classes/ScalebarController.swift

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,29 @@ import UIKit
44
class ScaleBarController: NSObject, FLT_SETTINGSScaleBarSettingsInterface {
55

66
func updateSettingsSettings(_ settings: FLT_SETTINGSScaleBarSettings, error: AutoreleasingUnsafeMutablePointer<FlutterError?>) {
7+
var scaleBar = mapView.ornaments.options.scaleBar
78
switch settings.position?.value {
89
case .BOTTOM_LEFT:
9-
mapView.ornaments.options.scaleBar.position = .bottomLeading
10-
mapView.ornaments.options.scaleBar.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
10+
scaleBar.position = .bottomLeading
11+
scaleBar.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
1112
case .BOTTOM_RIGHT:
12-
mapView.ornaments.options.scaleBar.position = .bottomTrailing
13-
mapView.ornaments.options.scaleBar.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
13+
scaleBar.position = .bottomTrailing
14+
scaleBar.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginBottom?.CGFloat ?? 0.0)/UIScreen.main.scale)
1415
case .TOP_LEFT, .none:
15-
mapView.ornaments.options.scaleBar.position = .topLeading
16-
mapView.ornaments.options.scaleBar.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
16+
scaleBar.position = .topLeading
17+
scaleBar.margins = CGPoint(x: (settings.marginLeft?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
1718
case .TOP_RIGHT:
18-
mapView.ornaments.options.scaleBar.position = .topTrailing
19-
mapView.ornaments.options.scaleBar.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
19+
scaleBar.position = .topTrailing
20+
scaleBar.margins = CGPoint(x: (settings.marginRight?.CGFloat ?? 0.0)/UIScreen.main.scale, y: (settings.marginTop?.CGFloat ?? 0.0)/UIScreen.main.scale)
2021
}
2122
if let isMetric = settings.isMetricUnits?.boolValue {
22-
mapView.ornaments.options.scaleBar.useMetricUnits = isMetric
23+
scaleBar.useMetricUnits = isMetric
2324
}
2425
if let visible = settings.enabled {
25-
if !visible.boolValue {
26-
mapView.ornaments.options.scaleBar.visibility = OrnamentVisibility.hidden
27-
} else {
28-
mapView.ornaments.options.scaleBar.visibility = OrnamentVisibility.adaptive
29-
}
26+
scaleBar.visibility = visible.boolValue ? .adaptive : .hidden
3027
}
28+
29+
mapView.ornaments.options.scaleBar = scaleBar
3130
}
3231

3332
func getSettingsWithError(_ error: AutoreleasingUnsafeMutablePointer<FlutterError?>) -> FLT_SETTINGSScaleBarSettings? {

0 commit comments

Comments
 (0)