mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Merge pull request #1034 from misaochan/fix-description-bug
Fix issue with Nearby item descriptions
This commit is contained in:
commit
a8bc53d1a7
5 changed files with 31 additions and 27 deletions
|
|
@ -109,7 +109,7 @@ public class NearbyInfoDialog extends OverlayDialog {
|
|||
NearbyInfoDialog mDialog = new NearbyInfoDialog();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(ARG_TITLE, place.name);
|
||||
bundle.putString(ARG_DESC, place.getDescription().getText());
|
||||
bundle.putString(ARG_DESC, place.getLongDescription());
|
||||
bundle.putDouble(ARG_LATITUDE, place.location.getLatitude());
|
||||
bundle.putDouble(ARG_LONGITUDE, place.location.getLongitude());
|
||||
bundle.putParcelable(ARG_SITE_LINK, place.siteLinks);
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ public class NearbyPlaces {
|
|||
|
||||
places.add(new Place(
|
||||
name,
|
||||
Place.Description.fromText(type), // list
|
||||
Place.Label.fromText(type), // list
|
||||
type, // details
|
||||
Uri.parse(icon),
|
||||
new LatLng(latitude, longitude, 0),
|
||||
|
|
@ -188,7 +188,7 @@ public class NearbyPlaces {
|
|||
|
||||
places.add(new Place(
|
||||
name,
|
||||
Place.Description.fromText(type), // list
|
||||
Place.Label.fromText(type), // list
|
||||
type, // details
|
||||
null,
|
||||
new LatLng(latitude, longitude, 0),
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import fr.free.nrw.commons.location.LatLng;
|
|||
public class Place {
|
||||
|
||||
public final String name;
|
||||
private final Description description;
|
||||
private final Label label;
|
||||
private final String longDescription;
|
||||
private final Uri secondaryImageUrl;
|
||||
public final LatLng location;
|
||||
|
|
@ -24,18 +24,22 @@ public class Place {
|
|||
public final Sitelinks siteLinks;
|
||||
|
||||
|
||||
public Place(String name, Description description, String longDescription,
|
||||
public Place(String name, Label label, String longDescription,
|
||||
Uri secondaryImageUrl, LatLng location, Sitelinks siteLinks) {
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.label = label;
|
||||
this.longDescription = longDescription;
|
||||
this.secondaryImageUrl = secondaryImageUrl;
|
||||
this.location = location;
|
||||
this.siteLinks = siteLinks;
|
||||
}
|
||||
|
||||
public Description getDescription() {
|
||||
return description;
|
||||
public Label getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public String getLongDescription() {
|
||||
return longDescription;
|
||||
}
|
||||
|
||||
public void setDistance(String distance) {
|
||||
|
|
@ -67,10 +71,8 @@ public class Place {
|
|||
* Most common types of desc: building, house, cottage, farmhouse,
|
||||
* village, civil parish, church, railway station,
|
||||
* gatehouse, milestone, inn, secondary school, hotel
|
||||
*
|
||||
* TODO Give a more accurate class name (see issue #742).
|
||||
*/
|
||||
public enum Description {
|
||||
public enum Label {
|
||||
|
||||
BUILDING("building", R.drawable.round_icon_generic_building),
|
||||
HOUSE("house", R.drawable.round_icon_house),
|
||||
|
|
@ -95,19 +97,19 @@ public class Place {
|
|||
WATERFALL("waterfall", R.drawable.round_icon_waterfall),
|
||||
UNKNOWN("?", R.drawable.round_icon_unknown);
|
||||
|
||||
private static final Map<String, Description> TEXT_TO_DESCRIPTION
|
||||
= new HashMap<>(Description.values().length);
|
||||
private static final Map<String, Label> TEXT_TO_DESCRIPTION
|
||||
= new HashMap<>(Label.values().length);
|
||||
|
||||
static {
|
||||
for (Description description : values()) {
|
||||
TEXT_TO_DESCRIPTION.put(description.text, description);
|
||||
for (Label label : values()) {
|
||||
TEXT_TO_DESCRIPTION.put(label.text, label);
|
||||
}
|
||||
}
|
||||
|
||||
private final String text;
|
||||
@DrawableRes private final int icon;
|
||||
|
||||
Description(String text, @DrawableRes int icon) {
|
||||
Label(String text, @DrawableRes int icon) {
|
||||
this.text = text;
|
||||
this.icon = icon;
|
||||
}
|
||||
|
|
@ -121,9 +123,9 @@ public class Place {
|
|||
return icon;
|
||||
}
|
||||
|
||||
public static Description fromText(String text) {
|
||||
Description description = TEXT_TO_DESCRIPTION.get(text);
|
||||
return description == null ? UNKNOWN : description;
|
||||
public static Label fromText(String text) {
|
||||
Label label = TEXT_TO_DESCRIPTION.get(text);
|
||||
return label == null ? UNKNOWN : label;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,13 +43,13 @@ class PlaceRenderer extends Renderer<Place> {
|
|||
public void render() {
|
||||
Place place = getContent();
|
||||
tvName.setText(place.name);
|
||||
String descriptionText = place.getDescription().getText();
|
||||
String descriptionText = place.getLongDescription();
|
||||
if (descriptionText.equals("?")) {
|
||||
descriptionText = getContext().getString(R.string.no_description_found);
|
||||
}
|
||||
tvDesc.setText(descriptionText);
|
||||
distance.setText(place.distance);
|
||||
icon.setImageResource(place.getDescription().getIcon());
|
||||
icon.setImageResource(place.getLabel().getIcon());
|
||||
}
|
||||
|
||||
interface PlaceClickedListener {
|
||||
|
|
|
|||
|
|
@ -30,10 +30,11 @@ import static org.junit.Assert.assertNotNull;
|
|||
@Config(constants = BuildConfig.class, sdk = 21, application = TestCommonsApplication.class)
|
||||
public class NearbyAdapterFactoryTest {
|
||||
|
||||
private static final Place PLACE = new Place("name", Place.Description.AIRPORT,
|
||||
private static final Place PLACE = new Place("name", Place.Label.AIRPORT,
|
||||
"desc", null, new LatLng(38.6270, -90.1994, 0), null);
|
||||
private static final Place UNKNOWN_PLACE = new Place("name", Place.Description.UNKNOWN,
|
||||
"desc", null, new LatLng(39.7392, -104.9903, 0), null);
|
||||
private static final Place UNKNOWN_PLACE = new Place("name", Place.Label.UNKNOWN,
|
||||
"?", null, new LatLng(39.7392, -104.9903, 0), null);
|
||||
// ^ "?" is a special value for unknown class names from Wikidata query results
|
||||
private Place clickedPlace;
|
||||
|
||||
@Test
|
||||
|
|
@ -68,12 +69,13 @@ public class NearbyAdapterFactoryTest {
|
|||
|
||||
RendererViewHolder viewHolder = renderComponent(result);
|
||||
|
||||
// test that the values we gave are actually rendered
|
||||
assertNotNull(viewHolder.itemView.findViewById(R.id.tvName));
|
||||
assertEquals("name",
|
||||
assertEquals(PLACE.name,
|
||||
((TextView) viewHolder.itemView.findViewById(R.id.tvName)).getText().toString());
|
||||
|
||||
assertNotNull(viewHolder.itemView.findViewById(R.id.tvDesc));
|
||||
assertEquals("airport",
|
||||
assertEquals(PLACE.getLongDescription(),
|
||||
((TextView) viewHolder.itemView.findViewById(R.id.tvDesc)).getText().toString());
|
||||
|
||||
assertNotNull(viewHolder.itemView.findViewById(R.id.distance));
|
||||
|
|
@ -94,7 +96,7 @@ public class NearbyAdapterFactoryTest {
|
|||
RendererViewHolder viewHolder = renderComponent(result);
|
||||
|
||||
assertNotNull(viewHolder.itemView.findViewById(R.id.tvDesc));
|
||||
assertEquals("no description found",
|
||||
assertEquals(RuntimeEnvironment.application.getString(R.string.no_description_found),
|
||||
((TextView) viewHolder.itemView.findViewById(R.id.tvDesc)).getText().toString());
|
||||
|
||||
assertNotNull(viewHolder.itemView.findViewById(R.id.icon));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue