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
parent 92e20b4cee
commit c65614ead5
2 changed files with 69 additions and 125 deletions

View file

@ -125,25 +125,21 @@ 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) -> {
if (keyCode == KeyEvent.KEYCODE_BACK) {
@Override if(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior
public boolean onKey( View v, int keyCode, KeyEvent event) { .STATE_EXPANDED) {
if (keyCode == KeyEvent.KEYCODE_BACK) { bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
if(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior return true;
.STATE_EXPANDED) { }
bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); else if (bottomSheetDetailsBehavior.getState() == BottomSheetBehavior
return true; .STATE_COLLAPSED) {
} bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
else if (bottomSheetDetailsBehavior.getState() == BottomSheetBehavior return true;
.STATE_COLLAPSED) {
bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
return true;
}
} }
return false;
} }
} ); return false;
});
} }
private void initViews() { private void initViews() {
@ -182,22 +178,14 @@ 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 if(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) {
public void onClick(View view) { bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
if(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) { }
bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); else{
} bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
else{
bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
} }
}); });
@ -368,48 +356,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 wikidataButton.setEnabled(place.hasWikidataLink());
public void onClick(View view) { wikidataButton.setOnClickListener(view -> openWebView(place.siteLinks.getWikidataLink()));
openWebView(place.siteLinks.getWikipediaLink());
directionsButton.setOnClickListener(view -> {
//Open map app at given position
Intent mapIntent = new Intent(Intent.ACTION_VIEW, place.location.getGmmIntentUri());
if (mapIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivity(mapIntent);
} }
}); });
wikidataButton.setEnabled( commonsButton.setEnabled(place.hasCommonsLink());
!(place.siteLinks == null || Uri.EMPTY.equals(place.siteLinks.getWikidataLink()))); commonsButton.setOnClickListener(view -> openWebView(place.siteLinks.getCommonsLink()));
wikidataButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openWebView(place.siteLinks.getWikidataLink());
}
});
directionsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LatLng location = new LatLng(place.location.getLatitude()
, place.location.getLongitude(), 0);
//Open map app at given position
Uri gmmIntentUri = Uri.parse(
"geo:0,0?q=" + location.getLatitude() + "," + location.getLongitude());
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
if (mapIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivity(mapIntent);
}
}
});
commonsButton.setEnabled(
!(place.siteLinks == null || Uri.EMPTY.equals(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,30 +61,24 @@ 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 Log.d("Renderer", "clicked");
public void onClick(View view) { TransitionManager.beginDelayedTransition(buttonLayout);
Log.d("Renderer", "clicked");
TransitionManager.beginDelayedTransition(buttonLayout);
if(buttonLayout.isShown()){
closeLayout(buttonLayout);
}else {
openLayout(buttonLayout);
}
if(buttonLayout.isShown()){
closeLayout(buttonLayout);
}else {
openLayout(buttonLayout);
} }
}; };
view.setOnClickListener(listener); view.setOnClickListener(listener);
view.requestFocus(); view.requestFocus();
view.setOnFocusChangeListener(new View.OnFocusChangeListener() { view.setOnFocusChangeListener((view1, hasFocus) -> {
@Override if (!hasFocus && buttonLayout.isShown()) {
public void onFocusChange(View view, boolean hasFocus) { closeLayout(buttonLayout);
if(!hasFocus && buttonLayout.isShown()){ } else if (hasFocus && !buttonLayout.isShown()) {
closeLayout(buttonLayout); listener.onClick(view1);
}else if(hasFocus && !buttonLayout.isShown()) {
listener.onClick(view);
}
} }
}); });
@ -110,19 +104,11 @@ class PlaceRenderer extends Renderer<Place> {
distance.setText(place.distance); distance.setText(place.distance);
icon.setImageResource(place.getDescription().getIcon()); icon.setImageResource(place.getDescription().getIcon());
directionsButton.setOnClickListener(new View.OnClickListener() { directionsButton.setOnClickListener(view -> {
@Override //Open map app at given position
public void onClick(View view) { Intent mapIntent = new Intent(Intent.ACTION_VIEW, place.location.getGmmIntentUri());
LatLng location = new LatLng(place.location.getLatitude() if (mapIntent.resolveActivity(view.getContext().getPackageManager()) != null) {
, place.location.getLongitude(), 0); view.getContext().startActivity(mapIntent);
//Open map app at given position
Uri gmmIntentUri = Uri.parse(
"geo:0,0?q=" + location.getLatitude() + "," + location.getLongitude());
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
if (mapIntent.resolveActivity(view.getContext().getPackageManager()) != null) {
view.getContext().startActivity(mapIntent);
}
} }
}); });
@ -141,28 +127,25 @@ 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 switch (item.getItemId()) {
public boolean onMenuItemClick(MenuItem item) { case R.id.nearby_info_menu_commons_article:
switch (item.getItemId()) { openWebView(place.siteLinks.getCommonsLink());
case R.id.nearby_info_menu_commons_article: return true;
openWebView(place.siteLinks.getCommonsLink()); case R.id.nearby_info_menu_wikidata_article:
return true; openWebView(place.siteLinks.getWikidataLink());
case R.id.nearby_info_menu_wikidata_article: return true;
openWebView(place.siteLinks.getWikidataLink()); case R.id.nearby_info_menu_wikipedia_article:
return true; openWebView(place.siteLinks.getWikipediaLink());
case R.id.nearby_info_menu_wikipedia_article: return true;
openWebView(place.siteLinks.getWikipediaLink()); default:
return true; break;
default:
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);
} }
} }