Issue #5996 - Fix Android Studio warnings in LocationPickerActivity.kt (#6026)

* Replace deprecated zoomLevel with zoomLevelDouble

* Replace deprecated Html.fromHtml call

* LocationPickerActivity: Replace deprecated methods with androidx

* LocationPickerActivity: Reformatted overlong lines

* Renamed package LocationPicker to locationpicker

---------

Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
This commit is contained in:
Tanmay Gupta 2024-12-13 19:19:40 +05:30 committed by GitHub
parent 8a55b5e613
commit cb007608d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 78 additions and 39 deletions

View file

@ -18,7 +18,7 @@ import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.rule.ActivityTestRule
import androidx.test.rule.GrantPermissionRule
import androidx.test.uiautomator.UiDevice
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
import fr.free.nrw.commons.locationpicker.LocationPickerActivity
import fr.free.nrw.commons.UITestHelper.Companion.childAtPosition
import fr.free.nrw.commons.auth.LoginActivity
import org.hamcrest.CoreMatchers

View file

@ -171,7 +171,7 @@
android:name=".review.ReviewActivity"
android:label="@string/title_activity_review" />
<activity
android:name=".LocationPicker.LocationPickerActivity"
android:name=".locationpicker.LocationPickerActivity"
android:label="Location Picker" />
<service

View file

@ -3,7 +3,7 @@ package fr.free.nrw.commons.di
import dagger.Module
import dagger.android.ContributesAndroidInjector
import fr.free.nrw.commons.AboutActivity
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
import fr.free.nrw.commons.locationpicker.LocationPickerActivity
import fr.free.nrw.commons.WelcomeActivity
import fr.free.nrw.commons.auth.LoginActivity
import fr.free.nrw.commons.auth.SignupActivity

View file

@ -1,4 +1,4 @@
package fr.free.nrw.commons.LocationPicker
package fr.free.nrw.commons.locationpicker
import android.app.Activity
import android.content.Intent
@ -32,7 +32,7 @@ object LocationPicker {
/**
* Gets and puts location in intent
* @param position CameraPosition
* @return LocationPicker.IntentBuilder
* @return locationpicker.IntentBuilder
*/
fun defaultLocation(position: CameraPosition): IntentBuilder {
intent.putExtra(LocationPickerConstants.MAP_CAMERA_POSITION, position)
@ -42,7 +42,7 @@ object LocationPicker {
/**
* Gets and puts activity name in intent
* @param activity activity key
* @return LocationPicker.IntentBuilder
* @return locationpicker.IntentBuilder
*/
fun activityKey(activity: String): IntentBuilder {
intent.putExtra(LocationPickerConstants.ACTIVITY_KEY, activity)
@ -52,7 +52,7 @@ object LocationPicker {
/**
* Gets and puts media in intent
* @param media Media
* @return LocationPicker.IntentBuilder
* @return locationpicker.IntentBuilder
*/
fun media(media: Media): IntentBuilder {
intent.putExtra(LocationPickerConstants.MEDIA, media)

View file

@ -1,4 +1,4 @@
package fr.free.nrw.commons.LocationPicker
package fr.free.nrw.commons.locationpicker
import android.Manifest.permission
import android.annotation.SuppressLint
@ -8,8 +8,7 @@ import android.graphics.Color
import android.graphics.Paint
import android.location.LocationManager
import android.os.Bundle
import android.preference.PreferenceManager
import android.text.Html
import androidx.preference.PreferenceManager
import android.text.method.LinkMovementMethod
import android.view.MotionEvent
import android.view.View
@ -23,6 +22,9 @@ import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.content.IntentCompat
import androidx.core.os.BundleCompat
import androidx.core.text.HtmlCompat
import com.google.android.material.floatingactionbutton.FloatingActionButton
import fr.free.nrw.commons.CameraPosition
import fr.free.nrw.commons.CommonsApplication
@ -181,13 +183,25 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
setContentView(R.layout.activity_location_picker)
if (savedInstanceState == null) {
cameraPosition = intent.getParcelableExtra(LocationPickerConstants.MAP_CAMERA_POSITION)
cameraPosition = IntentCompat.getParcelableExtra(
intent,
LocationPickerConstants.MAP_CAMERA_POSITION,
CameraPosition::class.java
)
activity = intent.getStringExtra(LocationPickerConstants.ACTIVITY_KEY)
media = intent.getParcelableExtra(LocationPickerConstants.MEDIA)
media = IntentCompat.getParcelableExtra(
intent,
LocationPickerConstants.MEDIA,
Media::class.java
)
} else {
cameraPosition = savedInstanceState.getParcelable(CAMERA_POS)
cameraPosition = BundleCompat.getParcelable(
savedInstanceState,
CAMERA_POS,
CameraPosition::class.java
)
activity = savedInstanceState.getString(ACTIVITY)
media = savedInstanceState.getParcelable("sMedia")
media = BundleCompat.getParcelable(savedInstanceState, "sMedia", Media::class.java)
}
bindViews()
@ -270,7 +284,10 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
* For showing credits
*/
private fun addCredits() {
tvAttribution.text = Html.fromHtml(getString(R.string.map_attribution))
tvAttribution.text = HtmlCompat.fromHtml(
getString(R.string.map_attribution),
HtmlCompat.FROM_HTML_MODE_LEGACY
)
tvAttribution.movementMethod = LinkMovementMethod.getInstance()
}
@ -396,7 +413,11 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
val position = when {
//location metadata is available
activity == "UploadActivity" && cameraPosition != null -> {
fr.free.nrw.commons.location.LatLng(cameraPosition!!.latitude, cameraPosition!!.longitude, 0.0f)
fr.free.nrw.commons.location.LatLng(
cameraPosition!!.latitude,
cameraPosition!!.longitude,
0.0f
)
}
//location metadata is not available
mapView != null -> {
@ -447,14 +468,18 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
LAST_LOCATION,
"${mapView?.mapCenter?.latitude},${mapView?.mapCenter?.longitude}"
)
applicationKvStore.putString(LAST_ZOOM, mapView?.zoomLevel?.toString()!!)
applicationKvStore.putString(LAST_ZOOM, mapView?.zoomLevelDouble?.toString()!!)
}
if (media == null) {
val intent = Intent().apply {
putExtra(
LocationPickerConstants.MAP_CAMERA_POSITION,
CameraPosition(mapView?.mapCenter?.latitude!!, mapView?.mapCenter?.longitude!!, 14.0)
CameraPosition(
mapView?.mapCenter?.latitude!!,
mapView?.mapCenter?.longitude!!,
14.0
)
)
}
setResult(RESULT_OK, intent)
@ -556,8 +581,15 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
if (requestCode == Constants.RequestCodes.LOCATION && grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
if (requestCode == Constants.RequestCodes.LOCATION &&
grantResults.isNotEmpty() &&
grantResults[0] == PackageManager.PERMISSION_GRANTED
) {
onLocationPermissionGranted()
} else {
onLocationPermissionDenied(getString(R.string.upload_map_location_access))
@ -577,12 +609,18 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
override fun onLocationPermissionDenied(toastMessage: String) {
val isDeniedBefore = store.getBoolean("isPermissionDenied", false)
val showRationale = ActivityCompat.shouldShowRequestPermissionRationale(this, permission.ACCESS_FINE_LOCATION)
val showRationale = ActivityCompat.shouldShowRequestPermissionRationale(
this,
permission.ACCESS_FINE_LOCATION
)
if (!showRationale) {
if (!locationPermissionsHelper.checkLocationPermission(this)) {
if (isDeniedBefore) {
locationPermissionsHelper.showAppSettingsDialog(this, R.string.upload_map_location_access)
locationPermissionsHelper.showAppSettingsDialog(
this,
R.string.upload_map_location_access
)
} else {
Toast.makeText(this, toastMessage, Toast.LENGTH_LONG).show()
}
@ -601,7 +639,10 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
addMarkerAtGPSLocation()
} else {
addMarkerAtGPSLocation()
locationPermissionsHelper.showLocationOffDialog(this, R.string.ask_to_turn_location_on_text)
locationPermissionsHelper.showLocationOffDialog(
this,
R.string.ask_to_turn_location_on_text
)
}
}
}
@ -652,7 +693,10 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
Marker.ANCHOR_CENTER,
Marker.ANCHOR_BOTTOM
)
icon = ContextCompat.getDrawable(this@LocationPickerActivity, R.drawable.current_location_marker)
icon = ContextCompat.getDrawable(
this@LocationPickerActivity,
R.drawable.current_location_marker
)
title = "Your Location"
textLabelFontSize = 24
}

View file

@ -1,4 +1,4 @@
package fr.free.nrw.commons.LocationPicker
package fr.free.nrw.commons.locationpicker
/**
* Constants need for location picking

View file

@ -1,4 +1,4 @@
package fr.free.nrw.commons.LocationPicker
package fr.free.nrw.commons.locationpicker
import android.app.Application
import androidx.lifecycle.AndroidViewModel

View file

@ -74,7 +74,7 @@ import fr.free.nrw.commons.BuildConfig
import fr.free.nrw.commons.CameraPosition
import fr.free.nrw.commons.CommonsApplication
import fr.free.nrw.commons.CommonsApplication.Companion.instance
import fr.free.nrw.commons.LocationPicker.LocationPicker
import fr.free.nrw.commons.locationpicker.LocationPicker
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.MediaDataExtractor
import fr.free.nrw.commons.R

View file

@ -25,7 +25,7 @@ import androidx.annotation.Nullable;
import androidx.exifinterface.media.ExifInterface;
import androidx.recyclerview.widget.LinearLayoutManager;
import fr.free.nrw.commons.CameraPosition;
import fr.free.nrw.commons.LocationPicker.LocationPicker;
import fr.free.nrw.commons.locationpicker.LocationPicker;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.contributions.MainActivity;
import fr.free.nrw.commons.databinding.FragmentUploadMediaDetailFragmentBinding;

View file

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LocationPicker.LocationPickerActivity">
tools:context=".locationpicker.LocationPickerActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/location_picker_app_bar_layout"

View file

@ -11,7 +11,6 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import fr.free.nrw.commons.CameraPosition
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.LAST_LOCATION
@ -165,13 +164,13 @@ class LocationPickerActivityUnitTests {
"placeSelected",
)
`when`(mapView.mapCenter).thenReturn(position)
`when`(mapView.zoomLevel).thenReturn(15)
`when`(mapView.zoomLevelDouble).thenReturn(15.0)
method.isAccessible = true
method.invoke(activity)
verify(applicationKvStore, times(1)).putString(
LAST_LOCATION,
position.latitude.toString() + "," + position.longitude.toString(),
)
verify(applicationKvStore, times(1)).putString(LAST_ZOOM, mapView.zoomLevel.toString())
verify(applicationKvStore, times(1)).putString(LAST_ZOOM, mapView.zoomLevelDouble.toString())
}
}

View file

@ -7,7 +7,6 @@ import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.CameraPosition
import fr.free.nrw.commons.LocationPicker.LocationPickerViewModel
import org.junit.Before
import org.junit.Test
import org.mockito.Mock

View file

@ -1,6 +1,5 @@
package fr.free.nrw.commons.media
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
@ -19,7 +18,6 @@ import android.widget.ProgressBar
import android.widget.ScrollView
import android.widget.Spinner
import android.widget.TextView
import androidx.activity.result.ActivityResult
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.test.core.app.ApplicationProvider
@ -27,10 +25,9 @@ import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.drawee.generic.GenericDraweeHierarchy
import com.facebook.drawee.view.SimpleDraweeView
import com.facebook.soloader.SoLoader
import com.nhaarman.mockitokotlin2.anyOrNull
import com.nhaarman.mockitokotlin2.doReturn
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
import fr.free.nrw.commons.locationpicker.LocationPickerActivity
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication

View file

@ -21,8 +21,8 @@ import androidx.test.core.app.ApplicationProvider
import com.github.chrisbanes.photoview.PhotoView
import com.nhaarman.mockitokotlin2.mock
import fr.free.nrw.commons.CameraPosition
import fr.free.nrw.commons.LocationPicker.LocationPicker
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
import fr.free.nrw.commons.locationpicker.LocationPicker
import fr.free.nrw.commons.locationpicker.LocationPickerActivity
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestCommonsApplication