From f8f0a94500d4261cfe94a2e3913789f2b28769ec Mon Sep 17 00:00:00 2001 From: Paul Hawke Date: Wed, 2 Jul 2025 20:56:02 -0500 Subject: [PATCH] Convert handleGeoCoordinates to kotlin --- .../explore/map/ExploreMapFragment.java | 4 +- .../locationpicker/LocationPickerActivity.kt | 6 +-- .../nrw/commons/media/MediaDetailFragment.kt | 5 +-- .../fragments/CommonPlaceClickActions.kt | 4 +- .../nearby/fragments/NearbyParentFragment.kt | 4 +- .../nrw/commons/utils/GeoCoordinates.java | 38 ------------------- .../free/nrw/commons/utils/GeoCoordinates.kt | 27 +++++++++++++ 7 files changed, 38 insertions(+), 50 deletions(-) delete mode 100644 app/src/main/java/fr/free/nrw/commons/utils/GeoCoordinates.java create mode 100644 app/src/main/java/fr/free/nrw/commons/utils/GeoCoordinates.kt diff --git a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java index 0791066c4..26d915f0f 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java @@ -2,6 +2,7 @@ package fr.free.nrw.commons.explore.map; import static fr.free.nrw.commons.location.LocationServiceManager.LocationChangeType.LOCATION_SIGNIFICANTLY_CHANGED; import static fr.free.nrw.commons.location.LocationServiceManager.LocationChangeType.LOCATION_SLIGHTLY_CHANGED; +import static fr.free.nrw.commons.utils.GeoCoordinatesKt.handleGeoCoordinates; import static fr.free.nrw.commons.utils.MapUtils.ZOOM_LEVEL; import android.Manifest.permission; @@ -36,7 +37,6 @@ import fr.free.nrw.commons.BaseMarker; import fr.free.nrw.commons.MapController; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.utils.GeoCoordinates; import fr.free.nrw.commons.utils.UrlUtils; import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao; import fr.free.nrw.commons.contributions.MainActivity; @@ -640,7 +640,7 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment */ private void passInfoToSheet(final Place place) { binding.bottomSheetDetailsBinding.directionsButton.setOnClickListener( - view -> GeoCoordinates.handleGeoCoordinates(getActivity(), + view -> handleGeoCoordinates(requireActivity(), place.getLocation(), binding.mapView.getZoomLevelDouble())); binding.bottomSheetDetailsBinding.commonsButton.setVisibility( diff --git a/app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt b/app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt index 732b4a06c..a8b6ddf26 100644 --- a/app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt @@ -43,8 +43,8 @@ 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_ZOOM 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.handleGeoCoordinates import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import org.osmdroid.tileprovider.tilesource.TileSourceFactory @@ -432,8 +432,8 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback { position?.let { mapView?.zoomLevelDouble?.let { zoomLevel -> - GeoCoordinates.handleGeoCoordinates(this, it, zoomLevel) - } ?: GeoCoordinates.handleGeoCoordinates(this, it) + handleGeoCoordinates(this, it, zoomLevel) + } ?: handleGeoCoordinates(this, it) } } diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.kt b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.kt index 23c5aef26..a7a25932c 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.kt @@ -110,10 +110,8 @@ import fr.free.nrw.commons.upload.UploadMediaDetail import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment import fr.free.nrw.commons.upload.depicts.DepictsFragment import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment -import fr.free.nrw.commons.utils.ClipboardUtils import fr.free.nrw.commons.utils.DateUtil.getDateStringWithSkeletonPattern 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.PermissionUtils.PERMISSIONS_STORAGE import fr.free.nrw.commons.utils.PermissionUtils.checkPermissionsAndPerformAction @@ -123,6 +121,7 @@ import fr.free.nrw.commons.utils.ViewUtil import fr.free.nrw.commons.utils.ViewUtil.showShortToast import fr.free.nrw.commons.utils.ViewUtilWrapper import fr.free.nrw.commons.utils.copyToClipboard +import fr.free.nrw.commons.utils.handleGeoCoordinates import fr.free.nrw.commons.utils.setUnderlinedText import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage.Revision import io.reactivex.Observable @@ -921,7 +920,7 @@ class MediaDetailFragment : CommonsDaggerSupportFragment(), CategoryEditHelper.C private fun onMediaDetailCoordinatesClicked() { if (media!!.coordinates != null && activity != null) { - GeoCoordinates.handleGeoCoordinates(activity, media!!.coordinates) + handleGeoCoordinates(requireContext(), media!!.coordinates!!) } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/CommonPlaceClickActions.kt b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/CommonPlaceClickActions.kt index f0ae7f8e0..613df8a98 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/CommonPlaceClickActions.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/CommonPlaceClickActions.kt @@ -15,8 +15,8 @@ import fr.free.nrw.commons.contributions.ContributionController import fr.free.nrw.commons.kvstore.JsonKvStore import fr.free.nrw.commons.nearby.Place import fr.free.nrw.commons.utils.ActivityUtils -import fr.free.nrw.commons.utils.GeoCoordinates import fr.free.nrw.commons.utils.UrlUtils +import fr.free.nrw.commons.utils.handleGeoCoordinates import fr.free.nrw.commons.wikidata.WikidataConstants import timber.log.Timber import javax.inject.Inject @@ -105,7 +105,7 @@ class CommonPlaceClickActions fun onDirectionsClicked(): (Place) -> Unit = { - GeoCoordinates.handleGeoCoordinates(activity, it.getLocation()) + handleGeoCoordinates(activity, it.getLocation()) } private fun storeSharedPrefs(selectedPlace: Place) { diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt index 6df4e4d55..13f498334 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt @@ -94,7 +94,6 @@ import fr.free.nrw.commons.upload.FileUtils import fr.free.nrw.commons.utils.ClipboardUtils import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog 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.setLayoutHeightAlignedToWidth import fr.free.nrw.commons.utils.MapUtils.defaultLatLng @@ -107,6 +106,7 @@ import fr.free.nrw.commons.utils.SystemThemeUtils import fr.free.nrw.commons.utils.UrlUtils import fr.free.nrw.commons.utils.ViewUtil.showLongToast import fr.free.nrw.commons.utils.copyToClipboard +import fr.free.nrw.commons.utils.handleGeoCoordinates import fr.free.nrw.commons.wikidata.WikidataConstants import fr.free.nrw.commons.wikidata.WikidataEditListener import fr.free.nrw.commons.wikidata.WikidataEditListener.WikidataP18EditListener @@ -2854,7 +2854,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), R.drawable.ic_directions_black_24dp -> { selectedPlace?.let { - GeoCoordinates.handleGeoCoordinates(this.context, it.getLocation()) + handleGeoCoordinates(requireContext(), it.getLocation()) binding?.map?.zoomLevelDouble ?: 0.0 } } diff --git a/app/src/main/java/fr/free/nrw/commons/utils/GeoCoordinates.java b/app/src/main/java/fr/free/nrw/commons/utils/GeoCoordinates.java deleted file mode 100644 index 683236baa..000000000 --- a/app/src/main/java/fr/free/nrw/commons/utils/GeoCoordinates.java +++ /dev/null @@ -1,38 +0,0 @@ -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)); - } - } -} diff --git a/app/src/main/java/fr/free/nrw/commons/utils/GeoCoordinates.kt b/app/src/main/java/fr/free/nrw/commons/utils/GeoCoordinates.kt new file mode 100644 index 000000000..513e36f10 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/GeoCoordinates.kt @@ -0,0 +1,27 @@ +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 +import fr.free.nrw.commons.utils.ViewUtil.showShortToast + +/** + * 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 + */ +fun handleGeoCoordinates( + context: Context, latLng: LatLng, + zoomLevel: Double = 16.0 +) { + val mapIntent = Intent(Intent.ACTION_VIEW, latLng.getGmmIntentUri(zoomLevel)) + if (mapIntent.resolveActivity(context.packageManager) != null) { + context.startActivity(mapIntent) + } else { + showShortToast(context, context.getString(R.string.map_application_missing)) + } +}