From b7909df86769406df896a99e6e127dc402cf123f Mon Sep 17 00:00:00 2001 From: Avior Date: Sat, 7 Jan 2023 23:05:22 +0100 Subject: [PATCH] misc: Cleanup adapters --- .../dzeio/openhealth/adapters/FoodAdapter.kt | 16 ++++++++++++++-- .../dzeio/openhealth/adapters/StepsAdapter.kt | 11 ++++++++++- .../dzeio/openhealth/adapters/WaterAdapter.kt | 18 +++++++++++++++--- .../dzeio/openhealth/adapters/WeightAdapter.kt | 11 ++++++++--- .../openhealth/ui/weight/EditWeightDialog.kt | 6 +++--- .../ui/weight/EditWeightDialogViewModel.kt | 4 ++-- .../java/com/dzeio/openhealth/units/Units.kt | 4 ++++ app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 2 ++ 9 files changed, 59 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/dzeio/openhealth/adapters/FoodAdapter.kt b/app/src/main/java/com/dzeio/openhealth/adapters/FoodAdapter.kt index 1d14d25..6452f47 100644 --- a/app/src/main/java/com/dzeio/openhealth/adapters/FoodAdapter.kt +++ b/app/src/main/java/com/dzeio/openhealth/adapters/FoodAdapter.kt @@ -2,6 +2,7 @@ package com.dzeio.openhealth.adapters import android.view.LayoutInflater import android.view.ViewGroup +import com.dzeio.openhealth.R import com.dzeio.openhealth.core.BaseAdapter import com.dzeio.openhealth.core.BaseViewHolder import com.dzeio.openhealth.data.food.Food @@ -22,9 +23,20 @@ class FoodAdapter : BaseAdapter() { item: Food, position: Int ) { + // Download remote picture DownloadImageTask(holder.binding.productImage).execute(item.image) - holder.binding.foodName.text = "${item.name}" - holder.binding.foodDescription.text = "${item.quantity.roundToInt()}${item.serving.replace(Regex("\\d+"), "")} (${(item.energy / 100 * item.quantity).roundToInt()} kcal)" + + // set the food name + holder.binding.foodName.text = item.name + + // set the food description + holder.binding.foodDescription.text = holder.itemView.context.getString( + R.string.food_description, + item.quantity.roundToInt().toString() + item.serving.replace(Regex("\\d+"), ""), + (item.energy / 100 * item.quantity) + ) + + // set the callback holder.binding.edit.setOnClickListener { onItemClick?.invoke(item) } diff --git a/app/src/main/java/com/dzeio/openhealth/adapters/StepsAdapter.kt b/app/src/main/java/com/dzeio/openhealth/adapters/StepsAdapter.kt index 4583da7..fea4570 100644 --- a/app/src/main/java/com/dzeio/openhealth/adapters/StepsAdapter.kt +++ b/app/src/main/java/com/dzeio/openhealth/adapters/StepsAdapter.kt @@ -2,6 +2,7 @@ package com.dzeio.openhealth.adapters import android.view.LayoutInflater import android.view.ViewGroup +import com.dzeio.openhealth.R import com.dzeio.openhealth.core.BaseAdapter import com.dzeio.openhealth.core.BaseViewHolder import com.dzeio.openhealth.data.step.Step @@ -19,8 +20,16 @@ class StepsAdapter() : BaseAdapter() { item: Step, position: Int ) { - holder.binding.value.text = "${item.value} steps" + // set the number of steps taken + holder.binding.value.text = holder.itemView.context.getString( + R.string.steps_count, + item.value + ) + + // set the datetime holder.binding.datetime.text = item.formatTimestamp() + + // set the callback holder.binding.edit.setOnClickListener { onItemClick?.invoke(item) } diff --git a/app/src/main/java/com/dzeio/openhealth/adapters/WaterAdapter.kt b/app/src/main/java/com/dzeio/openhealth/adapters/WaterAdapter.kt index e9a1ba8..ff869e1 100644 --- a/app/src/main/java/com/dzeio/openhealth/adapters/WaterAdapter.kt +++ b/app/src/main/java/com/dzeio/openhealth/adapters/WaterAdapter.kt @@ -6,8 +6,14 @@ import com.dzeio.openhealth.core.BaseAdapter import com.dzeio.openhealth.core.BaseViewHolder import com.dzeio.openhealth.data.water.Water import com.dzeio.openhealth.databinding.LayoutItemListBinding +import com.dzeio.openhealth.units.Units -class WaterAdapter() : BaseAdapter() { +class WaterAdapter : BaseAdapter() { + + /** + * The unit the adapter will be using + */ + var unit: Units.Volume = Units.Volume.MILLILITER override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> LayoutItemListBinding get() = LayoutItemListBinding::inflate @@ -19,8 +25,14 @@ class WaterAdapter() : BaseAdapter() { item: Water, position: Int ) { - holder.binding.value.text = "${item.value}ml" - holder.binding.datetime.text = "${item.formatTimestamp()}" + // set the wate intake text + holder.binding.value.text = + holder.itemView.context.getString(unit.unit, unit.formatToString(item.value)) + + // set the datetime + holder.binding.datetime.text = item.formatTimestamp() + + // set the callback holder.binding.edit.setOnClickListener { onItemClick?.invoke(item) } diff --git a/app/src/main/java/com/dzeio/openhealth/adapters/WeightAdapter.kt b/app/src/main/java/com/dzeio/openhealth/adapters/WeightAdapter.kt index b4f2da7..49fefa7 100644 --- a/app/src/main/java/com/dzeio/openhealth/adapters/WeightAdapter.kt +++ b/app/src/main/java/com/dzeio/openhealth/adapters/WeightAdapter.kt @@ -10,6 +10,9 @@ import com.dzeio.openhealth.units.Units class WeightAdapter : BaseAdapter() { + /** + * The unit the adapter will be using + */ var unit: Units.Mass = Units.Mass.KILOGRAM override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> LayoutItemListBinding @@ -22,12 +25,14 @@ class WeightAdapter : BaseAdapter() { item: Weight, position: Int ) { - - - + // set the weight text holder.binding.value.text = holder.itemView.context.getString(unit.unit, unit.formatToString(item.weight)) + + // set the datetime holder.binding.datetime.text = item.formatTimestamp() + + // set the callback holder.binding.edit.setOnClickListener { onItemClick?.invoke(item) } diff --git a/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialog.kt b/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialog.kt index 6967c9a..d3447fa 100644 --- a/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialog.kt +++ b/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialog.kt @@ -15,22 +15,22 @@ import com.dzeio.openhealth.R import com.dzeio.openhealth.core.BaseFullscreenDialog import com.dzeio.openhealth.data.weight.Weight import com.dzeio.openhealth.databinding.DialogEditWeightBinding -import com.dzeio.openhealth.ui.home.HomeViewModel import com.google.android.material.datepicker.MaterialDatePicker import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.timepicker.MaterialTimePicker import dagger.hilt.android.AndroidEntryPoint +import java.util.Date @AndroidEntryPoint class EditWeightDialog : - BaseFullscreenDialog(HomeViewModel::class.java) { + BaseFullscreenDialog(EditWeightDialogViewModel::class.java) { override val bindingInflater: (LayoutInflater) -> DialogEditWeightBinding = DialogEditWeightBinding::inflate override val isFullscreenLayout = true - val args: EditWeightDialogArgs by navArgs() + private val args: EditWeightDialogArgs by navArgs() lateinit var weight: Weight diff --git a/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialogViewModel.kt b/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialogViewModel.kt index 6e639ad..b2f1ac2 100644 --- a/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialogViewModel.kt +++ b/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialogViewModel.kt @@ -10,12 +10,12 @@ import com.dzeio.openhealth.data.weight.Weight import com.dzeio.openhealth.data.weight.WeightRepository import com.dzeio.openhealth.units.Units import com.dzeio.openhealth.utils.Configuration -import dagger.hilt.android.AndroidEntryPoint +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import javax.inject.Inject -@AndroidEntryPoint +@HiltViewModel class EditWeightDialogViewModel @Inject internal constructor( private val weightRepository: WeightRepository, config: Configuration diff --git a/app/src/main/java/com/dzeio/openhealth/units/Units.kt b/app/src/main/java/com/dzeio/openhealth/units/Units.kt index 36ea583..c2c1fa3 100644 --- a/app/src/main/java/com/dzeio/openhealth/units/Units.kt +++ b/app/src/main/java/com/dzeio/openhealth/units/Units.kt @@ -78,6 +78,10 @@ object Units { R.string.unit_volume_ounce_unit ); + fun formatToString(value: Int): String { + return String.format("%d", value * modifier) + } + companion object { fun find(value: String): Volume { return Volume.values().find { diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c69841d..2c729bb 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -53,5 +53,6 @@ Quitter Pas pris Erreur lors de la géneration d\'un rapport d\'erreur + %1$d pas diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7eab717..63d935d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -65,4 +65,6 @@ Quit Steps taken An error occurred while making the error report + %1$s (%2$.0f kcal) + %1$d steps