Now that Place and LatLng can handle their own status and rendering (respectively) go through and cleanup usages to reduce feature envy. Converted anonymous inner classes to lambdas.

This commit is contained in:
Paul Hawke 2017-12-29 08:34:25 -06:00 committed by maskara
parent 4f4587fd4d
commit a38c302b72
2 changed files with 69 additions and 125 deletions

View file

@ -125,10 +125,7 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
this.getView().setFocusableInTouchMode(true); this.getView().setFocusableInTouchMode(true);
this.getView().requestFocus(); this.getView().requestFocus();
this.getView().setOnKeyListener( new View.OnKeyListener() { this.getView().setOnKeyListener((v, keyCode, event) -> {
@Override
public boolean onKey( View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) { if (keyCode == KeyEvent.KEYCODE_BACK) {
if(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior if(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior
.STATE_EXPANDED) { .STATE_EXPANDED) {
@ -142,7 +139,6 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment {
} }
} }
return false; return false;
}
}); });
} }
@ -182,23 +178,15 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment {
} }
private void setListeners() { private void setListeners() {
fabPlus.setOnClickListener(new View.OnClickListener() { fabPlus.setOnClickListener(view -> animateFAB(isFabOpen));
@Override
public void onClick(View view) {
animateFAB(isFabOpen);
}
});
bottomSheetDetails.setOnClickListener(new View.OnClickListener() { bottomSheetDetails.setOnClickListener(view -> {
@Override
public void onClick(View view) {
if(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) { if(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) {
bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
} }
else{ else{
bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
} }
}
}); });
bottomSheetDetailsBehavior.setBottomSheetCallback(new BottomSheetBehavior bottomSheetDetailsBehavior.setBottomSheetCallback(new BottomSheetBehavior
@ -370,48 +358,22 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment {
private void passInfoToSheet(Place place) { private void passInfoToSheet(Place place) {
this.place = place; this.place = place;
wikipediaButton.setEnabled( wikipediaButton.setEnabled(place.hasWikipediaLink());
!(place.siteLinks == null || Uri.EMPTY.equals(place.siteLinks.getWikipediaLink()))); wikipediaButton.setOnClickListener(view -> openWebView(place.siteLinks.getWikipediaLink()));
wikipediaButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openWebView(place.siteLinks.getWikipediaLink());
}
});
wikidataButton.setEnabled( wikidataButton.setEnabled(place.hasWikidataLink());
!(place.siteLinks == null || Uri.EMPTY.equals(place.siteLinks.getWikidataLink()))); wikidataButton.setOnClickListener(view -> openWebView(place.siteLinks.getWikidataLink()));
wikidataButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openWebView(place.siteLinks.getWikidataLink());
}
});
directionsButton.setOnClickListener(new View.OnClickListener() { directionsButton.setOnClickListener(view -> {
@Override
public void onClick(View view) {
LatLng location = new LatLng(place.location.getLatitude()
, place.location.getLongitude(), 0);
//Open map app at given position //Open map app at given position
Uri gmmIntentUri = Uri.parse( Intent mapIntent = new Intent(Intent.ACTION_VIEW, place.location.getGmmIntentUri());
"geo:0,0?q=" + location.getLatitude() + "," + location.getLongitude());
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
if (mapIntent.resolveActivity(getActivity().getPackageManager()) != null) { if (mapIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivity(mapIntent); startActivity(mapIntent);
} }
}
}); });
commonsButton.setEnabled( commonsButton.setEnabled(place.hasCommonsLink());
!(place.siteLinks == null || Uri.EMPTY.equals(place.siteLinks.getCommonsLink()))); commonsButton.setOnClickListener(view -> openWebView(place.siteLinks.getCommonsLink()));
commonsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openWebView(place.siteLinks.getCommonsLink());
}
});
icon.setImageResource(place.getDescription().getIcon()); icon.setImageResource(place.getDescription().getIcon());
description.setText(place.getDescription().getText()); description.setText(place.getDescription().getText());

View file

@ -61,9 +61,7 @@ class PlaceRenderer extends Renderer<Place> {
@Override @Override
protected void hookListeners(View view) { protected void hookListeners(View view) {
final View.OnClickListener listener = new View.OnClickListener() { final View.OnClickListener listener = view12 -> {
@Override
public void onClick(View view) {
Log.d("Renderer", "clicked"); Log.d("Renderer", "clicked");
TransitionManager.beginDelayedTransition(buttonLayout); TransitionManager.beginDelayedTransition(buttonLayout);
@ -73,18 +71,14 @@ class PlaceRenderer extends Renderer<Place> {
openLayout(buttonLayout); openLayout(buttonLayout);
} }
}
}; };
view.setOnClickListener(listener); view.setOnClickListener(listener);
view.requestFocus(); view.requestFocus();
view.setOnFocusChangeListener(new View.OnFocusChangeListener() { view.setOnFocusChangeListener((view1, hasFocus) -> {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if (!hasFocus && buttonLayout.isShown()) { if (!hasFocus && buttonLayout.isShown()) {
closeLayout(buttonLayout); closeLayout(buttonLayout);
} else if (hasFocus && !buttonLayout.isShown()) { } else if (hasFocus && !buttonLayout.isShown()) {
listener.onClick(view); listener.onClick(view1);
}
} }
}); });
@ -110,20 +104,12 @@ class PlaceRenderer extends Renderer<Place> {
distance.setText(place.distance); distance.setText(place.distance);
icon.setImageResource(place.getLabel().getIcon()); icon.setImageResource(place.getLabel().getIcon());
directionsButton.setOnClickListener(new View.OnClickListener() { directionsButton.setOnClickListener(view -> {
@Override
public void onClick(View view) {
LatLng location = new LatLng(place.location.getLatitude()
, place.location.getLongitude(), 0);
//Open map app at given position //Open map app at given position
Uri gmmIntentUri = Uri.parse( Intent mapIntent = new Intent(Intent.ACTION_VIEW, place.location.getGmmIntentUri());
"geo:0,0?q=" + location.getLatitude() + "," + location.getLongitude());
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
if (mapIntent.resolveActivity(view.getContext().getPackageManager()) != null) { if (mapIntent.resolveActivity(view.getContext().getPackageManager()) != null) {
view.getContext().startActivity(mapIntent); view.getContext().startActivity(mapIntent);
} }
}
}); });
iconOverflow.setVisibility(showMenu() ? View.VISIBLE : View.GONE); iconOverflow.setVisibility(showMenu() ? View.VISIBLE : View.GONE);
@ -141,13 +127,11 @@ class PlaceRenderer extends Renderer<Place> {
MenuItem wikipediaArticle = popupMenu.getMenu() MenuItem wikipediaArticle = popupMenu.getMenu()
.findItem(R.id.nearby_info_menu_wikipedia_article); .findItem(R.id.nearby_info_menu_wikipedia_article);
commonsArticle.setEnabled(!place.siteLinks.getCommonsLink().equals(Uri.EMPTY)); commonsArticle.setEnabled(place.hasCommonsLink());
wikiDataArticle.setEnabled(!place.siteLinks.getWikidataLink().equals(Uri.EMPTY)); wikiDataArticle.setEnabled(place.hasWikidataLink());
wikipediaArticle.setEnabled(!place.siteLinks.getWikipediaLink().equals(Uri.EMPTY)); wikipediaArticle.setEnabled(place.hasWikipediaLink());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { popupMenu.setOnMenuItemClickListener(item -> {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.nearby_info_menu_commons_article: case R.id.nearby_info_menu_commons_article:
openWebView(place.siteLinks.getCommonsLink()); openWebView(place.siteLinks.getCommonsLink());
@ -162,7 +146,6 @@ class PlaceRenderer extends Renderer<Place> {
break; break;
} }
return false; return false;
}
}); });
popupMenu.show(); popupMenu.show();
} }
@ -173,8 +156,7 @@ class PlaceRenderer extends Renderer<Place> {
} }
private boolean showMenu() { private boolean showMenu() {
return !place.siteLinks.getCommonsLink().equals(Uri.EMPTY) return place.hasCommonsLink() || place.hasWikidataLink();
|| !place.siteLinks.getWikidataLink().equals(Uri.EMPTY);
} }
} }