mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-31 06:43:56 +01:00 
			
		
		
		
	Mostly implement search this area methods, not tested yet even once
This commit is contained in:
		
							parent
							
								
									9a50f54b4a
								
							
						
					
					
						commit
						e8ae344215
					
				
					 5 changed files with 96 additions and 16 deletions
				
			
		|  | @ -6,6 +6,7 @@ import android.os.Bundle; | |||
| import com.google.android.material.floatingactionbutton.FloatingActionButton; | ||||
| import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; | ||||
| import com.mapbox.mapboxsdk.maps.MapView; | ||||
| import com.mapbox.mapboxsdk.maps.MapboxMap; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
|  | @ -47,6 +48,7 @@ public interface NearbyMapContract { | |||
|         void updateMarker(boolean isBookmarked, Place place); | ||||
|         LatLng getCameraTarget(); | ||||
|         void viewsAreSet(NearbyParentFragmentContract.ViewsAreReadyCallback viewsAreReadyCallback); | ||||
|         void addOnCameraMoveListener(MapboxMap.OnCameraMoveListener onCameraMoveListener); | ||||
|     } | ||||
| 
 | ||||
|     interface UserActions extends NearbyElementContract.UserActions { | ||||
|  |  | |||
|  | @ -1,6 +1,10 @@ | |||
| package fr.free.nrw.commons.nearby.mvp.contract; | ||||
| 
 | ||||
| 
 | ||||
| import android.widget.Button; | ||||
| 
 | ||||
| import com.mapbox.mapboxsdk.maps.MapboxMap; | ||||
| 
 | ||||
| import fr.free.nrw.commons.location.LatLng; | ||||
| import fr.free.nrw.commons.location.LocationServiceManager; | ||||
| 
 | ||||
|  | @ -19,6 +23,9 @@ public interface NearbyParentFragmentContract { | |||
|         void listOptionMenuItemClicked(); | ||||
|         void  populatePlaces(LatLng curlatLng, LatLng searchLatLng); | ||||
|         boolean isBottomSheetExpanded(); | ||||
|         void addSearchThisAreaButtonAction(); | ||||
|         void setSearchThisAreaButtonVisibility(boolean isVisible); | ||||
|         void setSearchThisAreaProgressVisibility(boolean isVisible); | ||||
|     } | ||||
| 
 | ||||
|     interface UserActions { | ||||
|  | @ -32,7 +39,7 @@ public interface NearbyParentFragmentContract { | |||
| 
 | ||||
|         void lockNearby(boolean isNearbyLocked); | ||||
| 
 | ||||
|         void addMapMovementListeners(); | ||||
|         MapboxMap.OnCameraMoveListener onCameraMove(LatLng cameraTarget); | ||||
|     } | ||||
|      | ||||
|     interface ViewsAreReadyCallback { | ||||
|  |  | |||
|  | @ -409,6 +409,11 @@ public class NearbyMapFragment extends CommonsDaggerSupportFragment implements N | |||
|         this.viewsAreReadyCallback.nearbyFragmentAndMapViewReady(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void addOnCameraMoveListener(MapboxMap.OnCameraMoveListener onCameraMoveListener) { | ||||
|         mapboxMap.addOnCameraMoveListener(onCameraMoveListener); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void showPlaces() { | ||||
| 
 | ||||
|  |  | |||
|  | @ -119,12 +119,6 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment | |||
|         return view; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { | ||||
|         super.onViewCreated(view, savedInstanceState); | ||||
|         addSearchThisAreaButtonAction(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onResume() { | ||||
|         super.onResume(); | ||||
|  | @ -142,15 +136,28 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment | |||
|         Timber.d("Child fragment attached"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void addSearchThisAreaButtonAction() { | ||||
|         searchThisAreaButton.setOnClickListener(view -> { | ||||
|             // Lock map operations during search this area operation | ||||
|             nearbyParentFragmentPresenter.lockNearby(true); | ||||
|             searchThisAreaButtonProgressBar.setVisibility(View.VISIBLE); | ||||
|         searchThisAreaButton.setOnClickListener(nearbyParentFragmentPresenter.onSearchThisAreaClicked()); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void setSearchThisAreaButtonVisibility(boolean isVisible) { | ||||
|         if (isVisible) { | ||||
|             searchThisAreaButton.setVisibility(View.VISIBLE); | ||||
|         } else { | ||||
|             searchThisAreaButton.setVisibility(View.GONE); | ||||
|             nearbyParentFragmentPresenter.updateMapAndList(SEARCH_CUSTOM_AREA, | ||||
|                     NearbyParentFragment.this.nearbyParentFragmentPresenter.getCameraTarget()); | ||||
|         }); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @Override | ||||
|     public void setSearchThisAreaProgressVisibility(boolean isVisible) { | ||||
|         if (isVisible) { | ||||
|             searchThisAreaButtonProgressBar.setVisibility(View.VISIBLE); | ||||
|         } else { | ||||
|             searchThisAreaButtonProgressBar.setVisibility(View.GONE); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  |  | |||
|  | @ -2,7 +2,11 @@ package fr.free.nrw.commons.nearby.mvp.presenter; | |||
| 
 | ||||
| import android.util.Log; | ||||
| import android.view.View; | ||||
| import android.widget.Button; | ||||
| 
 | ||||
| import com.mapbox.mapboxsdk.maps.MapboxMap; | ||||
| 
 | ||||
| import ch.qos.logback.core.util.LocationUtil; | ||||
| import fr.free.nrw.commons.R; | ||||
| import fr.free.nrw.commons.location.LatLng; | ||||
| import fr.free.nrw.commons.location.LocationServiceManager; | ||||
|  | @ -10,6 +14,8 @@ import fr.free.nrw.commons.location.LocationUpdateListener; | |||
| import fr.free.nrw.commons.nearby.NearbyController; | ||||
| import fr.free.nrw.commons.nearby.mvp.contract.NearbyMapContract; | ||||
| import fr.free.nrw.commons.nearby.mvp.contract.NearbyParentFragmentContract; | ||||
| import fr.free.nrw.commons.utils.LocationUtils; | ||||
| import fr.free.nrw.commons.utils.NetworkUtils; | ||||
| import fr.free.nrw.commons.wikidata.WikidataEditListener; | ||||
| import io.reactivex.Observable; | ||||
| import io.reactivex.android.schedulers.AndroidSchedulers; | ||||
|  | @ -35,6 +41,7 @@ public class NearbyParentFragmentPresenter | |||
| 
 | ||||
|     boolean nearbyViewsAreReady; | ||||
|     boolean onTabSelected; | ||||
|     boolean searchingThisArea; | ||||
| 
 | ||||
|     private LocationServiceManager locationServiceManager; | ||||
| 
 | ||||
|  | @ -45,6 +52,10 @@ public class NearbyParentFragmentPresenter | |||
|         this.nearbyMapFragmentView = nearbyMapFragmentView; | ||||
|         this.nearbyMapFragmentView.viewsAreSet(this); | ||||
|         this.locationServiceManager = locationServiceManager; | ||||
| 
 | ||||
|         // Add on map camera moved listener after making sure presenter is ready | ||||
|         this.nearbyParentFragmentView.addSearchThisAreaButtonAction(); | ||||
|         this.nearbyMapFragmentView.addOnCameraMoveListener(onCameraMove(getCameraTarget())); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -131,8 +142,55 @@ public class NearbyParentFragmentPresenter | |||
|      * this area button to search nearby places for other locations | ||||
|      */ | ||||
|     @Override | ||||
|     public void addMapMovementListeners() { | ||||
|          | ||||
|     public MapboxMap.OnCameraMoveListener onCameraMove(LatLng cameraTarget) { | ||||
|         return new MapboxMap.OnCameraMoveListener() { | ||||
|             @Override | ||||
|             public void onCameraMove() { | ||||
|                 // If our nearby markers are calculated at least once | ||||
|                 if (NearbyController.currentLocation != null) { | ||||
|                     if (nearbyParentFragmentView.isNetworkConnectionEstablished()) { | ||||
|                         nearbyParentFragmentView.setSearchThisAreaButtonVisibility(true); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     public View.OnClickListener onSearchThisAreaClicked() { | ||||
|         return new View.OnClickListener() { | ||||
|             @Override | ||||
|             public void onClick(View v) { | ||||
|                 // Lock map operations during search this area operation | ||||
|                 lockNearby(true); | ||||
|                 nearbyParentFragmentView.setSearchThisAreaProgressVisibility(true); | ||||
|                 // TODO: make this invisible at somewhere | ||||
|                 nearbyParentFragmentView.setSearchThisAreaButtonVisibility(false); | ||||
| 
 | ||||
|                 if (searchCloseToCurrentLocation()){ | ||||
|                     updateMapAndList(LOCATION_SIGNIFICANTLY_CHANGED, | ||||
|                             null); | ||||
|                 } else { | ||||
|                     updateMapAndList(SEARCH_CUSTOM_AREA, | ||||
|                             getCameraTarget()); | ||||
|                 } | ||||
|             } | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns true if search this area button is used around our current location, so that | ||||
|      * we can continue following our current location again | ||||
|      * @return Returns true if search this area button is used around our current location | ||||
|      */ | ||||
|     public boolean searchCloseToCurrentLocation() { | ||||
|         double distance = LocationUtils.commonsLatLngToMapBoxLatLng(getCameraTarget()) | ||||
|                 .distanceTo(new com.mapbox.mapboxsdk.geometry.LatLng(NearbyController.currentLocation.getLatitude() | ||||
|                         , NearbyController.currentLocation.getLongitude())); | ||||
|         if (distance > NearbyController.searchedRadius*1000*3/4) { | ||||
|             return false; | ||||
|         } else { | ||||
|             return true; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -180,6 +238,7 @@ public class NearbyParentFragmentPresenter | |||
| 
 | ||||
|         } else if (locationChangeType.equals(SEARCH_CUSTOM_AREA)) { | ||||
|             nearbyParentFragmentView.populatePlaces(lastLocation, cameraTarget); | ||||
|             searchingThisArea = false; | ||||
|         } | ||||
| 
 | ||||
|         else { // Means location changed slightly, ie user is walking or driving. | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 neslihanturan
						neslihanturan