mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
Converted license name and url lookup to kotlin
This commit is contained in:
parent
78c27f9b48
commit
88203561e3
5 changed files with 45 additions and 64 deletions
|
|
@ -20,8 +20,9 @@ import fr.free.nrw.commons.databinding.FragmentMediaLicenseBinding
|
||||||
import fr.free.nrw.commons.upload.UploadActivity
|
import fr.free.nrw.commons.upload.UploadActivity
|
||||||
import fr.free.nrw.commons.upload.UploadBaseFragment
|
import fr.free.nrw.commons.upload.UploadBaseFragment
|
||||||
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
||||||
import fr.free.nrw.commons.utils.Licenses
|
|
||||||
import fr.free.nrw.commons.utils.UrlUtils
|
import fr.free.nrw.commons.utils.UrlUtils
|
||||||
|
import fr.free.nrw.commons.utils.toLicenseName
|
||||||
|
import fr.free.nrw.commons.utils.toLicenseUrl
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
@ -127,20 +128,20 @@ class MediaLicenseFragment : UploadBaseFragment(), MediaLicenseContract.View {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setSelectedLicense(license: String?) {
|
override fun setSelectedLicense(license: String?) {
|
||||||
var position = licenses!!.indexOf(getString(Licenses.licenseNameFor(license)))
|
var position = license?.let { licenses!!.indexOf(getString(it.toLicenseName())) } ?: -1
|
||||||
// Check if position is valid
|
// Check if position is valid
|
||||||
if (position < 0) {
|
if (position < 0) {
|
||||||
Timber.d("Invalid position: %d. Using default licenses", position)
|
Timber.d("Invalid position: %d. Using default licenses", position)
|
||||||
position = licenses!!.size - 1
|
position = licenses!!.size - 1
|
||||||
} else {
|
|
||||||
Timber.d("Position: %d %s", position, getString(Licenses.licenseNameFor(license)))
|
|
||||||
}
|
}
|
||||||
binding.spinnerLicenseList.setSelection(position)
|
binding.spinnerLicenseList.setSelection(position)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun updateLicenseSummary(selectedLicense: String?, numberOfItems: Int) {
|
override fun updateLicenseSummary(selectedLicense: String?, numberOfItems: Int) {
|
||||||
val licenseHyperLink = "<a href='" + Licenses.licenseUrlFor(selectedLicense) + "'>" +
|
if (selectedLicense == null) return
|
||||||
getString(Licenses.licenseNameFor(selectedLicense)) + "</a><br>"
|
|
||||||
|
val licenseHyperLink = "<a href='" + selectedLicense.toLicenseUrl() + "'>" +
|
||||||
|
getString(selectedLicense.toLicenseName()) + "</a><br>"
|
||||||
|
|
||||||
setTextViewHTML(
|
setTextViewHTML(
|
||||||
binding.tvShareLicenseSummary, resources
|
binding.tvShareLicenseSummary, resources
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package fr.free.nrw.commons.upload.license
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
import fr.free.nrw.commons.repository.UploadRepository
|
import fr.free.nrw.commons.repository.UploadRepository
|
||||||
import fr.free.nrw.commons.settings.Prefs
|
import fr.free.nrw.commons.settings.Prefs
|
||||||
import fr.free.nrw.commons.utils.Licenses
|
import fr.free.nrw.commons.utils.toLicenseName
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
import java.lang.reflect.Proxy
|
import java.lang.reflect.Proxy
|
||||||
|
|
@ -34,12 +34,14 @@ class MediaLicensePresenter @Inject constructor(
|
||||||
val licenses = repository.getLicenses()
|
val licenses = repository.getLicenses()
|
||||||
view.setLicenses(licenses)
|
view.setLicenses(licenses)
|
||||||
|
|
||||||
var selectedLicense = defaultKVStore.getString(
|
//CC_BY_SA_4 is the default one used by the commons web app
|
||||||
|
var selectedLicense: String = defaultKVStore.getString(
|
||||||
Prefs.DEFAULT_LICENSE,
|
Prefs.DEFAULT_LICENSE,
|
||||||
Prefs.Licenses.CC_BY_SA_4
|
Prefs.Licenses.CC_BY_SA_4
|
||||||
) //CC_BY_SA_4 is the default one used by the commons web app
|
) ?: Prefs.Licenses.CC_BY_SA_4
|
||||||
|
|
||||||
try { //I have to make sure that the stored default license was not one of the deprecated one's
|
try { //I have to make sure that the stored default license was not one of the deprecated one's
|
||||||
Licenses.licenseNameFor(selectedLicense)
|
selectedLicense.toLicenseName()
|
||||||
} catch (exception: IllegalStateException) {
|
} catch (exception: IllegalStateException) {
|
||||||
Timber.e(exception)
|
Timber.e(exception)
|
||||||
selectedLicense = Prefs.Licenses.CC_BY_SA_4
|
selectedLicense = Prefs.Licenses.CC_BY_SA_4
|
||||||
|
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
package fr.free.nrw.commons.utils;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import fr.free.nrw.commons.R;
|
|
||||||
import fr.free.nrw.commons.settings.Prefs;
|
|
||||||
|
|
||||||
public final class Licenses {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates licence name with given ID
|
|
||||||
* @param license License ID
|
|
||||||
* @return Name of license
|
|
||||||
*/
|
|
||||||
public static int licenseNameFor(String license) {
|
|
||||||
switch (license) {
|
|
||||||
case Prefs.Licenses.CC_BY_3:
|
|
||||||
return R.string.license_name_cc_by;
|
|
||||||
case Prefs.Licenses.CC_BY_4:
|
|
||||||
return R.string.license_name_cc_by_four;
|
|
||||||
case Prefs.Licenses.CC_BY_SA_3:
|
|
||||||
return R.string.license_name_cc_by_sa;
|
|
||||||
case Prefs.Licenses.CC_BY_SA_4:
|
|
||||||
return R.string.license_name_cc_by_sa_four;
|
|
||||||
case Prefs.Licenses.CC0:
|
|
||||||
return R.string.license_name_cc0;
|
|
||||||
}
|
|
||||||
throw new IllegalStateException("Unrecognized license value: " + license);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates license url with given ID
|
|
||||||
* @param license License ID
|
|
||||||
* @return Url of license
|
|
||||||
*/
|
|
||||||
@NonNull
|
|
||||||
public static String licenseUrlFor(String license) {
|
|
||||||
switch (license) {
|
|
||||||
case Prefs.Licenses.CC_BY_3:
|
|
||||||
return "https://creativecommons.org/licenses/by/3.0/";
|
|
||||||
case Prefs.Licenses.CC_BY_4:
|
|
||||||
return "https://creativecommons.org/licenses/by/4.0/";
|
|
||||||
case Prefs.Licenses.CC_BY_SA_3:
|
|
||||||
return "https://creativecommons.org/licenses/by-sa/3.0/";
|
|
||||||
case Prefs.Licenses.CC_BY_SA_4:
|
|
||||||
return "https://creativecommons.org/licenses/by-sa/4.0/";
|
|
||||||
case Prefs.Licenses.CC0:
|
|
||||||
return "https://creativecommons.org/publicdomain/zero/1.0/";
|
|
||||||
default:
|
|
||||||
throw new IllegalStateException("Unrecognized license value: " + license);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
31
app/src/main/java/fr/free/nrw/commons/utils/Licenses.kt
Normal file
31
app/src/main/java/fr/free/nrw/commons/utils/Licenses.kt
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
package fr.free.nrw.commons.utils
|
||||||
|
|
||||||
|
import fr.free.nrw.commons.R
|
||||||
|
import fr.free.nrw.commons.settings.Prefs
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates licence name with given ID
|
||||||
|
* @return Name of license
|
||||||
|
*/
|
||||||
|
fun String.toLicenseName(): Int = when (this) {
|
||||||
|
Prefs.Licenses.CC_BY_3 -> R.string.license_name_cc_by
|
||||||
|
Prefs.Licenses.CC_BY_4 -> R.string.license_name_cc_by_four
|
||||||
|
Prefs.Licenses.CC_BY_SA_3 -> R.string.license_name_cc_by_sa
|
||||||
|
Prefs.Licenses.CC_BY_SA_4 -> R.string.license_name_cc_by_sa_four
|
||||||
|
Prefs.Licenses.CC0 -> R.string.license_name_cc0
|
||||||
|
else -> throw IllegalStateException("Unrecognized license value: $this")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates license url with given ID
|
||||||
|
* @return Url of license
|
||||||
|
*/
|
||||||
|
fun String.toLicenseUrl(): String = when (this) {
|
||||||
|
Prefs.Licenses.CC_BY_3 -> "https://creativecommons.org/licenses/by/3.0/"
|
||||||
|
Prefs.Licenses.CC_BY_4 -> "https://creativecommons.org/licenses/by/4.0/"
|
||||||
|
Prefs.Licenses.CC_BY_SA_3 -> "https://creativecommons.org/licenses/by-sa/3.0/"
|
||||||
|
Prefs.Licenses.CC_BY_SA_4 -> "https://creativecommons.org/licenses/by-sa/4.0/"
|
||||||
|
Prefs.Licenses.CC0 -> "https://creativecommons.org/publicdomain/zero/1.0/"
|
||||||
|
else -> throw IllegalStateException("Unrecognized license value: $this")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -6,7 +6,7 @@ import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
import fr.free.nrw.commons.repository.UploadRepository
|
import fr.free.nrw.commons.repository.UploadRepository
|
||||||
import fr.free.nrw.commons.upload.license.MediaLicenseContract
|
import fr.free.nrw.commons.upload.license.MediaLicenseContract
|
||||||
import fr.free.nrw.commons.upload.license.MediaLicensePresenter
|
import fr.free.nrw.commons.upload.license.MediaLicensePresenter
|
||||||
import fr.free.nrw.commons.utils.Licenses
|
import fr.free.nrw.commons.utils.toLicenseName
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
@ -51,7 +51,6 @@ class MediaLicensePresenterTest {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
mediaLicensePresenter.onAttachView(view)
|
mediaLicensePresenter.onAttachView(view)
|
||||||
mockedUtil = Mockito.mockStatic(UnderlineUtils::class.java)
|
mockedUtil = Mockito.mockStatic(UnderlineUtils::class.java)
|
||||||
`when`(Licenses.licenseNameFor(ArgumentMatchers.anyString())).thenReturn(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue