Moved GeoCoordinates utilities into their own class

This commit is contained in:
Paul Hawke 2025-07-02 16:07:24 -05:00
parent c25b5b0533
commit f1cf82ee34
7 changed files with 49 additions and 37 deletions

View file

@ -36,6 +36,7 @@ import fr.free.nrw.commons.BaseMarker;
import fr.free.nrw.commons.MapController; import fr.free.nrw.commons.MapController;
import fr.free.nrw.commons.Media; import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.utils.GeoCoordinates;
import fr.free.nrw.commons.utils.Utils; import fr.free.nrw.commons.utils.Utils;
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao; import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao;
import fr.free.nrw.commons.contributions.MainActivity; import fr.free.nrw.commons.contributions.MainActivity;
@ -639,7 +640,7 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment
*/ */
private void passInfoToSheet(final Place place) { private void passInfoToSheet(final Place place) {
binding.bottomSheetDetailsBinding.directionsButton.setOnClickListener( binding.bottomSheetDetailsBinding.directionsButton.setOnClickListener(
view -> Utils.handleGeoCoordinates(getActivity(), view -> GeoCoordinates.handleGeoCoordinates(getActivity(),
place.getLocation(), binding.mapView.getZoomLevelDouble())); place.getLocation(), binding.mapView.getZoomLevelDouble()));
binding.bottomSheetDetailsBinding.commonsButton.setVisibility( binding.bottomSheetDetailsBinding.commonsButton.setVisibility(

View file

@ -30,7 +30,6 @@ import fr.free.nrw.commons.CameraPosition
import fr.free.nrw.commons.CommonsApplication import fr.free.nrw.commons.CommonsApplication
import fr.free.nrw.commons.Media import fr.free.nrw.commons.Media
import fr.free.nrw.commons.R import fr.free.nrw.commons.R
import fr.free.nrw.commons.utils.Utils
import fr.free.nrw.commons.auth.SessionManager import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.auth.csrf.CsrfTokenClient import fr.free.nrw.commons.auth.csrf.CsrfTokenClient
import fr.free.nrw.commons.coordinates.CoordinateEditHelper import fr.free.nrw.commons.coordinates.CoordinateEditHelper
@ -44,6 +43,7 @@ import fr.free.nrw.commons.theme.BaseActivity
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.Companion.LAST_LOCATION import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.Companion.LAST_LOCATION
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.Companion.LAST_ZOOM import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.Companion.LAST_ZOOM
import fr.free.nrw.commons.utils.DialogUtil import fr.free.nrw.commons.utils.DialogUtil
import fr.free.nrw.commons.utils.GeoCoordinates
import fr.free.nrw.commons.utils.MapUtils.ZOOM_LEVEL import fr.free.nrw.commons.utils.MapUtils.ZOOM_LEVEL
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
@ -432,8 +432,8 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
position?.let { position?.let {
mapView?.zoomLevelDouble?.let { zoomLevel -> mapView?.zoomLevelDouble?.let { zoomLevel ->
Utils.handleGeoCoordinates(this, it, zoomLevel) GeoCoordinates.handleGeoCoordinates(this, it, zoomLevel)
} ?: Utils.handleGeoCoordinates(this, it) } ?: GeoCoordinates.handleGeoCoordinates(this, it)
} }
} }

View file

@ -112,6 +112,7 @@ import fr.free.nrw.commons.upload.depicts.DepictsFragment
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment
import fr.free.nrw.commons.utils.DateUtil.getDateStringWithSkeletonPattern import fr.free.nrw.commons.utils.DateUtil.getDateStringWithSkeletonPattern
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
import fr.free.nrw.commons.utils.GeoCoordinates
import fr.free.nrw.commons.utils.LangCodeUtils.getLocalizedResources import fr.free.nrw.commons.utils.LangCodeUtils.getLocalizedResources
import fr.free.nrw.commons.utils.PermissionUtils.PERMISSIONS_STORAGE import fr.free.nrw.commons.utils.PermissionUtils.PERMISSIONS_STORAGE
import fr.free.nrw.commons.utils.PermissionUtils.checkPermissionsAndPerformAction import fr.free.nrw.commons.utils.PermissionUtils.checkPermissionsAndPerformAction
@ -917,7 +918,7 @@ class MediaDetailFragment : CommonsDaggerSupportFragment(), CategoryEditHelper.C
private fun onMediaDetailCoordinatesClicked() { private fun onMediaDetailCoordinatesClicked() {
if (media!!.coordinates != null && activity != null) { if (media!!.coordinates != null && activity != null) {
Utils.handleGeoCoordinates(activity, media!!.coordinates) GeoCoordinates.handleGeoCoordinates(activity, media!!.coordinates)
} }
} }

View file

@ -16,6 +16,7 @@ import fr.free.nrw.commons.contributions.ContributionController
import fr.free.nrw.commons.kvstore.JsonKvStore import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.nearby.Place import fr.free.nrw.commons.nearby.Place
import fr.free.nrw.commons.utils.ActivityUtils import fr.free.nrw.commons.utils.ActivityUtils
import fr.free.nrw.commons.utils.GeoCoordinates
import fr.free.nrw.commons.wikidata.WikidataConstants import fr.free.nrw.commons.wikidata.WikidataConstants
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -104,7 +105,7 @@ class CommonPlaceClickActions
fun onDirectionsClicked(): (Place) -> Unit = fun onDirectionsClicked(): (Place) -> Unit =
{ {
Utils.handleGeoCoordinates(activity, it.getLocation()) GeoCoordinates.handleGeoCoordinates(activity, it.getLocation())
} }
private fun storeSharedPrefs(selectedPlace: Place) { private fun storeSharedPrefs(selectedPlace: Place) {

View file

@ -94,6 +94,7 @@ import fr.free.nrw.commons.nearby.presenter.NearbyParentFragmentPresenter
import fr.free.nrw.commons.upload.FileUtils import fr.free.nrw.commons.upload.FileUtils
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
import fr.free.nrw.commons.utils.ExecutorUtils.get import fr.free.nrw.commons.utils.ExecutorUtils.get
import fr.free.nrw.commons.utils.GeoCoordinates
import fr.free.nrw.commons.utils.LayoutUtils.getScreenWidth import fr.free.nrw.commons.utils.LayoutUtils.getScreenWidth
import fr.free.nrw.commons.utils.LayoutUtils.setLayoutHeightAlignedToWidth import fr.free.nrw.commons.utils.LayoutUtils.setLayoutHeightAlignedToWidth
import fr.free.nrw.commons.utils.MapUtils.defaultLatLng import fr.free.nrw.commons.utils.MapUtils.defaultLatLng
@ -2851,7 +2852,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
R.drawable.ic_directions_black_24dp -> { R.drawable.ic_directions_black_24dp -> {
selectedPlace?.let { selectedPlace?.let {
Utils.handleGeoCoordinates(this.context, it.getLocation()) GeoCoordinates.handleGeoCoordinates(this.context, it.getLocation())
binding?.map?.zoomLevelDouble ?: 0.0 binding?.map?.zoomLevelDouble ?: 0.0
} }
} }

View file

@ -0,0 +1,38 @@
package fr.free.nrw.commons.utils;
import android.content.Context;
import android.content.Intent;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.location.LatLng;
public final class GeoCoordinates {
/**
* Util function to handle geo coordinates. It no longer depends on google maps and any app
* capable of handling the map intent can handle it
*
* @param context The context for launching intent
* @param latLng The latitude and longitude of the location
*/
public static void handleGeoCoordinates(final Context context, final LatLng latLng) {
handleGeoCoordinates(context, latLng, 16);
}
/**
* Util function to handle geo coordinates with specified zoom level. It no longer depends on
* google maps and any app capable of handling the map intent can handle it
*
* @param context The context for launching intent
* @param latLng The latitude and longitude of the location
* @param zoomLevel The zoom level
*/
public static void handleGeoCoordinates(final Context context, final LatLng latLng,
final double zoomLevel) {
final Intent mapIntent = new Intent(Intent.ACTION_VIEW, latLng.getGmmIntentUri(zoomLevel));
if (mapIntent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(mapIntent);
} else {
ViewUtil.showShortToast(context, context.getString(R.string.map_application_missing));
}
}
}

View file

@ -22,7 +22,6 @@ import java.util.Date;
import java.util.Locale; import java.util.Locale;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import fr.free.nrw.commons.location.LatLng;
import timber.log.Timber; import timber.log.Timber;
public class Utils { public class Utils {
@ -79,35 +78,6 @@ public class Utils {
customTabsIntent.launchUrl(context, url); customTabsIntent.launchUrl(context, url);
} }
/**
* Util function to handle geo coordinates. It no longer depends on google maps and any app
* capable of handling the map intent can handle it
*
* @param context The context for launching intent
* @param latLng The latitude and longitude of the location
*/
public static void handleGeoCoordinates(final Context context, final LatLng latLng) {
handleGeoCoordinates(context, latLng, 16);
}
/**
* Util function to handle geo coordinates with specified zoom level. It no longer depends on
* google maps and any app capable of handling the map intent can handle it
*
* @param context The context for launching intent
* @param latLng The latitude and longitude of the location
* @param zoomLevel The zoom level
*/
public static void handleGeoCoordinates(final Context context, final LatLng latLng,
final double zoomLevel) {
final Intent mapIntent = new Intent(Intent.ACTION_VIEW, latLng.getGmmIntentUri(zoomLevel));
if (mapIntent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(mapIntent);
} else {
ViewUtil.showShortToast(context, context.getString(R.string.map_application_missing));
}
}
/** /**
* To take screenshot of the screen and return it in Bitmap format * To take screenshot of the screen and return it in Bitmap format
* *