Skip to content

Commit

Permalink
fix: bug with spinner for vitamin_a in ProductEditNutritionFactsFragm…
Browse files Browse the repository at this point in the history
…ent (#3821)

* Fix bug with spinner for vitamin_a in ProductEditNutritionFactsFragment

* Add more vitamins to measure condition

* fix
  • Loading branch information
naivekook committed Feb 17, 2021
1 parent 8665bc6 commit c0c11ce
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 37 deletions.
Expand Up @@ -10,5 +10,5 @@ object AnalyticsService {

fun setTag(key: String, value: String) = Sentry.setTag(key, value)

fun record(exception: Exception) = Sentry.captureException(exception)
}
fun record(exception: Throwable) = Sentry.captureException(exception)
}
Expand Up @@ -15,8 +15,6 @@
*/
package openfoodfacts.github.scrachx.openfood.features.product.edit

import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.Editable
Expand All @@ -32,10 +30,12 @@ import android.widget.*
import android.widget.AdapterView.OnItemSelectedListener
import androidx.core.widget.doAfterTextChanged
import com.afollestad.materialdialogs.MaterialDialog
import com.google.android.material.textfield.TextInputLayout
import com.squareup.picasso.Callback
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.rxkotlin.addTo
import openfoodfacts.github.scrachx.openfood.R
import openfoodfacts.github.scrachx.openfood.app.AnalyticsService
import openfoodfacts.github.scrachx.openfood.databinding.FragmentAddProductNutritionFactsBinding
import openfoodfacts.github.scrachx.openfood.features.shared.views.CustomValidatingEditTextView
import openfoodfacts.github.scrachx.openfood.images.ProductImage
Expand Down Expand Up @@ -71,7 +71,6 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {
private var _binding: FragmentAddProductNutritionFactsBinding? = null
private val binding get() = _binding!!
private var photoReceiverHandler: PhotoReceiverHandler? = null
private var activity: Activity? = null
private var photoFile: File? = null
private var productCode: String? = null
private var mOfflineSavedProduct: OfflineSavedProduct? = null
Expand All @@ -87,7 +86,7 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {


override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
_binding = FragmentAddProductNutritionFactsBinding.inflate(inflater)
_binding = FragmentAddProductNutritionFactsBinding.inflate(inflater, container, false)
return binding.root
}

Expand Down Expand Up @@ -146,8 +145,7 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {
binding.radioGroup.jumpDrawablesToCurrentState()
}
} else {
Toast.makeText(activity, R.string.error_adding_nutrition_facts, Toast.LENGTH_SHORT).show()
requireActivity().finish()
closeScreenWithAlert()
}
binding.alcohol.imeOptions = EditorInfo.IME_ACTION_DONE
binding.energyKcal.requestFocus()
Expand All @@ -156,8 +154,8 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {
it.addValidListener()
it.checkValue()
}
if (getActivity() is ProductEditActivity && (getActivity() as ProductEditActivity?)!!.initialValues != null) {
addAllFieldsToMap((getActivity() as ProductEditActivity?)!!.initialValues!!)
(activity as? ProductEditActivity)?.initialValues?.let { values ->
addAllFieldsToMap(values)
}
}

Expand Down Expand Up @@ -378,11 +376,6 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {
private fun getPositionInServingUnitArray(unit: String) =
SERVING_UNITS.indexOfFirst { it.equals(unit, ignoreCase = true) }.coerceAtLeast(0)

override fun onAttach(context: Context) {
super.onAttach(context)
activity = getActivity()
}

private fun addNutritionFactsImage() {
val path = imagePath
if (path == null) {
Expand Down Expand Up @@ -646,16 +639,18 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {
}

private fun displayAddNutrientDialog() {
val origNutrients = resources.getStringArray(R.array.nutrients_array).toMutableList()
usedNutrientsIndexes.forEach { origNutrients.removeAt(it) }
origNutrients.sortWith(Collator.getInstance(Locale.getDefault()))
val nutrients = resources.getStringArray(R.array.nutrients_array)
.mapIndexedNotNull { index, nutrient ->
if (usedNutrientsIndexes.contains(index)) null else nutrient
}
.sortedWith(Collator.getInstance(Locale.getDefault()))

MaterialDialog.Builder(requireActivity())
.title(R.string.choose_nutrient)
.items(origNutrients)
.items(nutrients)
.itemsCallback { _, _, _, text ->
usedNutrientsIndexes.add(origNutrients.indexOf(text))
val textView = addNutrientRow(origNutrients.indexOf(text), text.toString())
usedNutrientsIndexes.add(nutrients.indexOf(text))
val textView = addNutrientRow(nutrients.indexOf(text), text.toString())
allEditViews.add(textView)
textView.addValidListener()
}
Expand All @@ -682,7 +677,8 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {
val nutrientCompleteName = PARAMS_OTHER_NUTRIENTS[index]
val rowView = layoutInflater.inflate(R.layout.nutrition_facts_table_row, binding.tableLayout, false) as TableRow
val editText: CustomValidatingEditTextView = rowView.findViewById(R.id.value)
editText.hint = hint
val til: TextInputLayout = rowView.findViewById(R.id.value_til)
til.hint = hint
val nutrientShortName = getShortName(nutrientCompleteName)
editText.entryName = nutrientShortName
editText.keyListener = keyListener
Expand All @@ -698,22 +694,41 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {
// Setup unit spinner
val unitSpinner = rowView.findViewById<Spinner>(R.id.spinner_unit)
val modSpinner = rowView.findViewById<Spinner>(R.id.spinner_mod)
if (Nutriments.PH == nutrientShortName) {
unitSpinner.visibility = View.INVISIBLE
} else if (Nutriments.STARCH == nutrientShortName) {
val arrayAdapter = ArrayAdapter(requireActivity(), android.R.layout.simple_spinner_item, requireActivity().resources.getStringArray(R.array.weights_array))
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
unitSpinner.adapter = arrayAdapter
starchEditText = editText
when (nutrientShortName) {
Nutriments.PH -> {
unitSpinner.visibility = View.INVISIBLE
}
Nutriments.STARCH -> {
val arrayAdapter = ArrayAdapter(requireActivity(), android.R.layout.simple_spinner_item, requireActivity().resources.getStringArray(R.array.weights_array))
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
unitSpinner.adapter = arrayAdapter
starchEditText = editText
}
Nutriments.VITAMIN_A, Nutriments.VITAMIN_D, Nutriments.VITAMIN_E -> {
val arrayAdapter = ArrayAdapter(requireActivity(), android.R.layout.simple_spinner_item, requireActivity().resources.getStringArray(R.array.weight_all_units))
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
unitSpinner.adapter = arrayAdapter
}
}
if (preFillValues) {
unitSpinner.setSelection(unitSelectedIndex)
modSpinner.setSelection(modSelectedIndex)
try {
if (preFillValues) {
unitSpinner.setSelection(unitSelectedIndex)
modSpinner.setSelection(modSelectedIndex)
}
} catch (t: Throwable) {
AnalyticsService.record(IllegalStateException("Can't find weight units for nutriment: $nutrientShortName", t))
closeScreenWithAlert()
}

binding.tableLayout.addView(rowView)
return editText
}

private fun closeScreenWithAlert() {
Toast.makeText(requireContext(), R.string.error_adding_nutrition_facts, Toast.LENGTH_SHORT).show()
requireActivity().finish()
}

/**
* Converts a given quantity's unit to grams.
*
Expand Down Expand Up @@ -891,4 +906,4 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() {
private val NUTRIENTS_UNITS = listOf(UNIT_GRAM, UNIT_MILLIGRAM, UNIT_MICROGRAM, UNIT_DV, UNIT_IU)
private val SERVING_UNITS = listOf(UNIT_GRAM, UNIT_MILLIGRAM, UNIT_MICROGRAM, UNIT_LITER, UNIT_MILLILITRE)
}
}
}
Expand Up @@ -843,13 +843,11 @@
app:layout_constraintStart_toStartOf="@+id/spinner_sodium_unit"
app:layout_constraintTop_toTopOf="@id/alcohol_til" />

<TableLayout
<LinearLayout
android:id="@+id/table_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:shrinkColumns="0"
android:stretchColumns="0"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/alcohol_til" />
Expand Down

0 comments on commit c0c11ce

Please sign in to comment.