1
0
mirror of https://github.com/dzeiocom/OpenHealth.git synced 2025-04-23 03:12:14 +00:00

misc: Cleanup adapters

This commit is contained in:
Florian Bouillon 2023-01-07 23:05:22 +01:00
parent 1f4ecc06ad
commit b7909df867
Signed by: Florian Bouillon
GPG Key ID: BEEAF3722D0EBF64
9 changed files with 59 additions and 14 deletions

View File

@ -2,6 +2,7 @@ package com.dzeio.openhealth.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import com.dzeio.openhealth.R
import com.dzeio.openhealth.core.BaseAdapter import com.dzeio.openhealth.core.BaseAdapter
import com.dzeio.openhealth.core.BaseViewHolder import com.dzeio.openhealth.core.BaseViewHolder
import com.dzeio.openhealth.data.food.Food import com.dzeio.openhealth.data.food.Food
@ -22,9 +23,20 @@ class FoodAdapter : BaseAdapter<Food, ItemFoodBinding>() {
item: Food, item: Food,
position: Int position: Int
) { ) {
// Download remote picture
DownloadImageTask(holder.binding.productImage).execute(item.image) 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 { holder.binding.edit.setOnClickListener {
onItemClick?.invoke(item) onItemClick?.invoke(item)
} }

View File

@ -2,6 +2,7 @@ package com.dzeio.openhealth.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import com.dzeio.openhealth.R
import com.dzeio.openhealth.core.BaseAdapter import com.dzeio.openhealth.core.BaseAdapter
import com.dzeio.openhealth.core.BaseViewHolder import com.dzeio.openhealth.core.BaseViewHolder
import com.dzeio.openhealth.data.step.Step import com.dzeio.openhealth.data.step.Step
@ -19,8 +20,16 @@ class StepsAdapter() : BaseAdapter<Step, LayoutItemListBinding>() {
item: Step, item: Step,
position: Int 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() holder.binding.datetime.text = item.formatTimestamp()
// set the callback
holder.binding.edit.setOnClickListener { holder.binding.edit.setOnClickListener {
onItemClick?.invoke(item) onItemClick?.invoke(item)
} }

View File

@ -6,8 +6,14 @@ import com.dzeio.openhealth.core.BaseAdapter
import com.dzeio.openhealth.core.BaseViewHolder import com.dzeio.openhealth.core.BaseViewHolder
import com.dzeio.openhealth.data.water.Water import com.dzeio.openhealth.data.water.Water
import com.dzeio.openhealth.databinding.LayoutItemListBinding import com.dzeio.openhealth.databinding.LayoutItemListBinding
import com.dzeio.openhealth.units.Units
class WaterAdapter() : BaseAdapter<Water, LayoutItemListBinding>() { class WaterAdapter : BaseAdapter<Water, LayoutItemListBinding>() {
/**
* The unit the adapter will be using
*/
var unit: Units.Volume = Units.Volume.MILLILITER
override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> LayoutItemListBinding override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> LayoutItemListBinding
get() = LayoutItemListBinding::inflate get() = LayoutItemListBinding::inflate
@ -19,8 +25,14 @@ class WaterAdapter() : BaseAdapter<Water, LayoutItemListBinding>() {
item: Water, item: Water,
position: Int position: Int
) { ) {
holder.binding.value.text = "${item.value}ml" // set the wate intake text
holder.binding.datetime.text = "${item.formatTimestamp()}" 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 { holder.binding.edit.setOnClickListener {
onItemClick?.invoke(item) onItemClick?.invoke(item)
} }

View File

@ -10,6 +10,9 @@ import com.dzeio.openhealth.units.Units
class WeightAdapter : BaseAdapter<Weight, LayoutItemListBinding>() { class WeightAdapter : BaseAdapter<Weight, LayoutItemListBinding>() {
/**
* The unit the adapter will be using
*/
var unit: Units.Mass = Units.Mass.KILOGRAM var unit: Units.Mass = Units.Mass.KILOGRAM
override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> LayoutItemListBinding override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> LayoutItemListBinding
@ -22,12 +25,14 @@ class WeightAdapter : BaseAdapter<Weight, LayoutItemListBinding>() {
item: Weight, item: Weight,
position: Int position: Int
) { ) {
// set the weight text
holder.binding.value.text = holder.binding.value.text =
holder.itemView.context.getString(unit.unit, unit.formatToString(item.weight)) holder.itemView.context.getString(unit.unit, unit.formatToString(item.weight))
// set the datetime
holder.binding.datetime.text = item.formatTimestamp() holder.binding.datetime.text = item.formatTimestamp()
// set the callback
holder.binding.edit.setOnClickListener { holder.binding.edit.setOnClickListener {
onItemClick?.invoke(item) onItemClick?.invoke(item)
} }

View File

@ -15,22 +15,22 @@ import com.dzeio.openhealth.R
import com.dzeio.openhealth.core.BaseFullscreenDialog import com.dzeio.openhealth.core.BaseFullscreenDialog
import com.dzeio.openhealth.data.weight.Weight import com.dzeio.openhealth.data.weight.Weight
import com.dzeio.openhealth.databinding.DialogEditWeightBinding 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.datepicker.MaterialDatePicker
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.timepicker.MaterialTimePicker import com.google.android.material.timepicker.MaterialTimePicker
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import java.util.Date
@AndroidEntryPoint @AndroidEntryPoint
class EditWeightDialog : class EditWeightDialog :
BaseFullscreenDialog<EditWeightDialogViewModel, DialogEditWeightBinding>(HomeViewModel::class.java) { BaseFullscreenDialog<EditWeightDialogViewModel, DialogEditWeightBinding>(EditWeightDialogViewModel::class.java) {
override val bindingInflater: (LayoutInflater) -> DialogEditWeightBinding = override val bindingInflater: (LayoutInflater) -> DialogEditWeightBinding =
DialogEditWeightBinding::inflate DialogEditWeightBinding::inflate
override val isFullscreenLayout = true override val isFullscreenLayout = true
val args: EditWeightDialogArgs by navArgs() private val args: EditWeightDialogArgs by navArgs()
lateinit var weight: Weight lateinit var weight: Weight

View File

@ -10,12 +10,12 @@ import com.dzeio.openhealth.data.weight.Weight
import com.dzeio.openhealth.data.weight.WeightRepository import com.dzeio.openhealth.data.weight.WeightRepository
import com.dzeio.openhealth.units.Units import com.dzeio.openhealth.units.Units
import com.dzeio.openhealth.utils.Configuration 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.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @HiltViewModel
class EditWeightDialogViewModel @Inject internal constructor( class EditWeightDialogViewModel @Inject internal constructor(
private val weightRepository: WeightRepository, private val weightRepository: WeightRepository,
config: Configuration config: Configuration

View File

@ -78,6 +78,10 @@ object Units {
R.string.unit_volume_ounce_unit R.string.unit_volume_ounce_unit
); );
fun formatToString(value: Int): String {
return String.format("%d", value * modifier)
}
companion object { companion object {
fun find(value: String): Volume { fun find(value: String): Volume {
return Volume.values().find { return Volume.values().find {

View File

@ -53,5 +53,6 @@
<string name="quit">Quitter</string> <string name="quit">Quitter</string>
<string name="steps_taken">Pas pris</string> <string name="steps_taken">Pas pris</string>
<string name="error_reporter_crash">Erreur lors de la géneration d\'un rapport d\'erreur</string> <string name="error_reporter_crash">Erreur lors de la géneration d\'un rapport d\'erreur</string>
<string name="steps_count">%1$d pas</string>
</resources> </resources>

View File

@ -65,4 +65,6 @@
<string name="quit">Quit</string> <string name="quit">Quit</string>
<string name="steps_taken">Steps taken</string> <string name="steps_taken">Steps taken</string>
<string name="error_reporter_crash">An error occurred while making the error report</string> <string name="error_reporter_crash">An error occurred while making the error report</string>
<string name="food_description" translatable="false">%1$s (%2$.0f kcal)</string>
<string name="steps_count">%1$d steps</string>
</resources> </resources>