Skip to content

Commit 9c19241

Browse files
authored
Merge pull request #252 from mapbox/rl/fix_attribution_button_color
Fix attribution button color
2 parents 8bbd28a + c374bee commit 9c19241

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/mapping/AttributionMappings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ fun AttributionSettingsInterface.applyFromFLT(settings: FLTSettings.AttributionS
1616
}
1717

1818
fun AttributionSettingsInterface.toFLT() = FLTSettings.AttributionSettings.Builder().let { settings ->
19-
settings.setIconColor(iconColor.toLong())
19+
settings.setIconColor(iconColor.toUInt().toLong())
2020
settings.setPosition(position.toOrnamentPosition())
2121
settings.setMarginLeft(marginLeft.toDouble())
2222
settings.setMarginTop(marginTop.toDouble())

example/integration_test/attribution_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ void main() {
2626
await attribution.updateSettings(settings);
2727
var updatedSettings = await attribution.getSettings();
2828
expect(updatedSettings.position, OrnamentPosition.TOP_RIGHT);
29+
expect(updatedSettings.iconColor, Colors.blue.value);
2930
if (Platform.isIOS) {
31+
// on iOS margins for the current position are preserved
3032
expect(updatedSettings.marginTop, 2);
3133
expect(updatedSettings.marginRight, 3);
3234
} else {
33-
// FIXME colors are decoded incorrectly for some reason
34-
// expect(updatedSettings.iconColor, Colors.blue.value);
3535
expect(updatedSettings.marginLeft, 1);
3636
expect(updatedSettings.marginTop, 2);
3737
expect(updatedSettings.marginRight, 3);

ios/Classes/AttributionController.swift

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,35 @@ import UIKit
44
class AttributionController: NSObject, FLT_SETTINGSAttributionSettingsInterface {
55

66
func updateSettingsSettings(_ settings: FLT_SETTINGSAttributionSettings, error: AutoreleasingUnsafeMutablePointer<FlutterError?>) {
7+
var options = mapView.ornaments.options
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+
options.attributionButton.position = .bottomLeading
11+
options.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+
options.attributionButton.position = .bottomTrailing
14+
options.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+
options.attributionButton.position = .topLeading
17+
options.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+
options.attributionButton.position = .topTrailing
20+
options.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 = options
24+
if let iconColor = settings.iconColor?.intValue {
25+
mapView.ornaments.attributionButton.tintColor = uiColorFromHex(rgbValue: iconColor)
2026
}
2127
}
2228

2329
func getSettingsWithError(_ error: AutoreleasingUnsafeMutablePointer<FlutterError?>) -> FLT_SETTINGSAttributionSettings? {
2430
let options = mapView.ornaments.options.attributionButton
2531
let position = getFLT_SETTINGSOrnamentPosition(position: options.position)
32+
let iconColor = mapView.ornaments.attributionButton.tintColor.rgb()
2633

2734
let settings = FLT_SETTINGSAttributionSettings.make(
28-
withIconColor: nil,
35+
withIconColor: NSNumber(value: iconColor),
2936
position: .init(value: position),
3037
marginLeft: NSNumber(value: options.margins.x * UIScreen.main.scale),
3138
marginTop: NSNumber(value: options.margins.y * UIScreen.main.scale),

0 commit comments

Comments
 (0)