Skip to content

Commit

Permalink
fix: show language name in picker for product edit screen (#4149)
Browse files Browse the repository at this point in the history
  • Loading branch information
naivekook committed Aug 11, 2021
1 parent ecfcd5b commit 1717394
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 24 deletions.
Expand Up @@ -30,7 +30,6 @@ import androidx.core.net.toFile
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.canhub.cropper.CropImage
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar
import com.google.zxing.integration.android.IntentIntegrator
Expand Down Expand Up @@ -847,30 +846,11 @@ class EditOverviewFragment : ProductEditFragment() {
}

private fun selectProductLanguage() {
val localeValues = SupportedLanguages.codes()
val localeLabels = arrayOfNulls<String>(localeValues.size)
val finalLocalValues = mutableListOf<String>()
val finalLocalLabels = mutableListOf<String?>()
var selectedIndex = 0
localeValues.forEachIndexed { i, localeCode ->
if (localeCode == languageCode) {
selectedIndex = i
}
val current = LocaleUtils.parseLocale(localeCode)
localeLabels[i] = current.getDisplayName(current).replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.ROOT) else it.toString() }
finalLocalLabels += localeCode
finalLocalValues += localeCode
ProductLanguagePicker.showPicker(requireContext(), languageCode) { code ->
binding.name.text = null
(activity as? ProductEditActivity)?.setIngredients("set", null)
setProductLanguage(code)
}
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.preference_choose_language_dialog_title)
.setSingleChoiceItems(finalLocalLabels.toTypedArray(), selectedIndex) { _, which ->
binding.name.text = null

(activity as? ProductEditActivity)?.setIngredients("set", null)

setProductLanguage(finalLocalValues[which])
}
.show()
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
Expand Down
@@ -0,0 +1,26 @@
package openfoodfacts.github.scrachx.openfood.features.product.edit.overview

import android.content.Context
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import openfoodfacts.github.scrachx.openfood.R
import openfoodfacts.github.scrachx.openfood.utils.LocaleUtils
import openfoodfacts.github.scrachx.openfood.utils.SupportedLanguages

object ProductLanguagePicker {
fun showPicker(context: Context, currentLanguageCode: String?, onItemSelected: (String) -> Unit) {
val languageCodes = SupportedLanguages.codes()
val selectedIndex = languageCodes.indexOf(currentLanguageCode)
val languageItems = languageCodes.map { languageCode ->
val locale = LocaleUtils.parseLocale(languageCode)
val languageName = locale.getDisplayName(locale).replaceFirstChar { if (it.isLowerCase()) it.titlecase(locale) else it.toString() }
"$languageName [$languageCode]"
}
MaterialAlertDialogBuilder(context)
.setTitle(R.string.preference_choose_language_dialog_title)
.setSingleChoiceItems(languageItems.toTypedArray(), selectedIndex) { dialog, which ->
dialog.dismiss()
onItemSelected(languageCodes[which])
}
.show()
}
}

0 comments on commit 1717394

Please sign in to comment.