[android] - replace hardcode telemetry settings string by resources string

This commit is contained in:
Tobrun
2018-08-22 07:20:59 +02:00
committed by Tobrun
parent 1662be7ea5
commit 520df7f020
3 changed files with 48 additions and 6 deletions

View File

@@ -1,10 +1,13 @@
package com.mapbox.mapboxsdk.attribution;
import android.content.Context;
import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.URLSpan;
import com.mapbox.mapboxsdk.R;
import java.lang.ref.WeakReference;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -17,6 +20,7 @@ import java.util.Set;
*/
public class AttributionParser {
private final WeakReference<Context> context;
private final Set<Attribution> attributions = new LinkedHashSet<>();
private final String attributionData;
private final boolean withImproveMap;
@@ -24,8 +28,9 @@ public class AttributionParser {
private final boolean withTelemetryAttribution;
private final boolean withMapboxAttribution;
AttributionParser(String attributionData, boolean withImproveMap, boolean withCopyrightSign,
boolean withTelemetryAttribution, boolean withMapboxAttribution) {
AttributionParser(WeakReference<Context> context, String attributionData, boolean withImproveMap,
boolean withCopyrightSign, boolean withTelemetryAttribution, boolean withMapboxAttribution) {
this.context = context;
this.attributionData = attributionData;
this.withImproveMap = withImproveMap;
this.withCopyrightSign = withCopyrightSign;
@@ -167,7 +172,13 @@ public class AttributionParser {
*/
private void addAdditionalAttributions() {
if (withTelemetryAttribution) {
attributions.add(new Attribution(Attribution.TELEMETRY, Attribution.TELEMETRY_URL));
Context context = this.context.get();
attributions.add(
new Attribution(
context != null ? context.getString(R.string.mapbox_telemetrySettings) : Attribution.TELEMETRY,
Attribution.TELEMETRY_URL
)
);
}
}
@@ -196,6 +207,7 @@ public class AttributionParser {
* </p>
*/
public static class Options {
private WeakReference<Context> context;
private boolean withImproveMap = true;
private boolean withCopyrightSign = true;
private boolean withTelemetryAttribution = false;
@@ -227,6 +239,11 @@ public class AttributionParser {
return this;
}
public Options withContext(Context context) {
this.context = new WeakReference<>(context);
return this;
}
public AttributionParser build() {
if (attributionDataStringArray == null) {
throw new IllegalStateException("Using builder without providing attribution data");
@@ -234,6 +251,7 @@ public class AttributionParser {
String fullAttributionString = parseAttribution(attributionDataStringArray);
AttributionParser attributionParser = new AttributionParser(
context,
fullAttributionString,
withImproveMap,
withCopyrightSign,

View File

@@ -17,10 +17,12 @@ import com.mapbox.mapboxsdk.attribution.AttributionParser;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.style.sources.Source;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.Locale;
/**
* Responsible for managing attribution interactions on the map.
@@ -47,7 +49,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
// Called when someone presses the attribution icon on the map
@Override
public void onClick(View view) {
attributionSet = new AttributionBuilder(mapboxMap).build();
attributionSet = new AttributionBuilder(mapboxMap, view.getContext()).build();
boolean isActivityFinishing = false;
if (context instanceof Activity) {
@@ -148,12 +150,19 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
private static class AttributionBuilder {
private final MapboxMap mapboxMap;
private final WeakReference<Context> context;
AttributionBuilder(MapboxMap mapboxMap) {
AttributionBuilder(MapboxMap mapboxMap, Context context) {
this.mapboxMap = mapboxMap;
this.context = new WeakReference<>(context);
}
private Set<Attribution> build() {
Context context = this.context.get();
if (context == null) {
return Collections.emptySet();
}
List<String> attributions = new ArrayList<>();
for (Source source : mapboxMap.getSources()) {
attributions.add(source.getAttribution());
@@ -162,6 +171,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
return new AttributionParser.Options()
.withCopyrightSign(true)
.withImproveMap(true)
.withContext(context)
.withTelemetryAttribution(true)
.withAttributionData(attributions.toArray(new String[attributions.size()]))
.build().getAttributions();

View File

@@ -4,6 +4,7 @@ import com.mapbox.mapboxsdk.BuildConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import java.util.Set;
@@ -21,6 +22,7 @@ public class AttributionParseTest {
public void testParseAttributionStringSatellite() throws Exception {
AttributionParser attributionParser = new AttributionParser.Options()
.withAttributionData(SATELLITE_ATTRIBUTION)
.withContext(RuntimeEnvironment.application)
.build();
Set<Attribution> attributionList = attributionParser.getAttributions();
@@ -54,6 +56,7 @@ public class AttributionParseTest {
public void testParseAttributionStringStreets() throws Exception {
AttributionParser attributionParser = new AttributionParser.Options()
.withAttributionData(STREETS_ATTRIBUTION)
.withContext(RuntimeEnvironment.application)
.build();
Set<Attribution> attributionList = attributionParser.getAttributions();
@@ -84,6 +87,7 @@ public class AttributionParseTest {
AttributionParser attributionParser = new AttributionParser.Options()
.withAttributionData(STREETS_ATTRIBUTION)
.withMapboxAttribution(false)
.withContext(RuntimeEnvironment.application)
.build();
Set<Attribution> attributionList = attributionParser.getAttributions();
@@ -109,6 +113,7 @@ public class AttributionParseTest {
public void testParseAttributionArrayString() throws Exception {
AttributionParser attributionParser = new AttributionParser.Options()
.withAttributionData(new String[] {STREETS_ATTRIBUTION, "", SATELLITE_ATTRIBUTION})
.withContext(RuntimeEnvironment.application)
.build();
Set<Attribution> attributionList = attributionParser.getAttributions();
assertEquals("Size of list should match", 4, attributionList.size());
@@ -142,6 +147,7 @@ public class AttributionParseTest {
AttributionParser attributionParser = new AttributionParser.Options()
.withAttributionData(SATELLITE_ATTRIBUTION)
.withImproveMap(false)
.withContext(RuntimeEnvironment.application)
.build();
Set<Attribution> attributionList = attributionParser.getAttributions();
assertEquals("Size of list should match", 3, attributionList.size());
@@ -171,6 +177,7 @@ public class AttributionParseTest {
AttributionParser attributionParser = new AttributionParser.Options()
.withAttributionData(STREETS_ATTRIBUTION, "", SATELLITE_ATTRIBUTION)
.withCopyrightSign(false)
.withContext(RuntimeEnvironment.application)
.build();
Set<Attribution> attributionList = attributionParser.getAttributions();
assertEquals("Size of list should match", 4, attributionList.size());
@@ -205,6 +212,7 @@ public class AttributionParseTest {
.withAttributionData(STREETS_ATTRIBUTION)
.withCopyrightSign(false)
.withImproveMap(false)
.withContext(RuntimeEnvironment.application)
.build();
assertEquals(
@@ -220,6 +228,7 @@ public class AttributionParseTest {
AttributionParser attributionParser = new AttributionParser.Options()
.withAttributionData(STREETS_ATTRIBUTION)
.withImproveMap(false)
.withContext(RuntimeEnvironment.application)
.build();
assertEquals(
@@ -236,6 +245,7 @@ public class AttributionParseTest {
.withCopyrightSign(false)
.withImproveMap(false)
.withMapboxAttribution(false)
.withContext(RuntimeEnvironment.application)
.build();
assertEquals(
@@ -251,6 +261,7 @@ public class AttributionParseTest {
.withAttributionData(STREETS_ATTRIBUTION)
.withImproveMap(false)
.withMapboxAttribution(false)
.withContext(RuntimeEnvironment.application)
.build();
assertEquals(
@@ -267,6 +278,7 @@ public class AttributionParseTest {
.withImproveMap(false)
.withCopyrightSign(false)
.withMapboxAttribution(false)
.withContext(RuntimeEnvironment.application)
.build();
assertEquals(
@@ -283,6 +295,7 @@ public class AttributionParseTest {
.withImproveMap(false)
.withCopyrightSign(false)
.withMapboxAttribution(false)
.withContext(RuntimeEnvironment.application)
.build();
assertEquals(
@@ -298,6 +311,7 @@ public class AttributionParseTest {
.withAttributionData(STREETS_ATTRIBUTION, SATELLITE_ATTRIBUTION, "blabla", "")
.withImproveMap(false)
.withCopyrightSign(false)
.withContext(RuntimeEnvironment.application)
.build();
assertEquals(