From 6e72f549cfde95b496a4023426c181af9123f36a Mon Sep 17 00:00:00 2001 From: Reimar Date: Wed, 14 May 2025 08:40:36 +0200 Subject: [PATCH] Add buttons for incrementing/decrementing portion size, fix decimal numbers --- .../easyeat/ui/dishes/DishDetailsActivity.kt | 29 ++++++++++++++----- .../ui/shopping_list/ShoppingListFragment.kt | 2 +- .../res/drawable/ic_arrow_drop_down_24px.xml | 10 +++++++ .../res/drawable/ic_arrow_drop_up_24px.xml | 10 +++++++ .../main/res/layout/activity_dish_details.xml | 28 +++++++++++++++++- .../src/main/res/layout/activity_register.xml | 2 +- app/app/src/main/res/values/strings.xml | 2 ++ 7 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 app/app/src/main/res/drawable/ic_arrow_drop_down_24px.xml create mode 100644 app/app/src/main/res/drawable/ic_arrow_drop_up_24px.xml diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishDetailsActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishDetailsActivity.kt index 518d6ab..e25238e 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishDetailsActivity.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishDetailsActivity.kt @@ -17,6 +17,7 @@ import tech.mercantec.easyeat.helpers.RecipeDetailsResponse import tech.mercantec.easyeat.helpers.getRecipeDetails import kotlin.concurrent.thread import android.widget.EditText +import android.widget.ImageButton import android.widget.TextView import androidx.core.widget.doAfterTextChanged import tech.mercantec.easyeat.helpers.AddRecipeToShoppingList @@ -28,7 +29,7 @@ class DishDetailsActivity : AppCompatActivity() { setContentView(R.layout.activity_dish_details) val ingredientsContainer = findViewById(R.id.ingredients) - val multiplierEditText = findViewById(R.id.ingredientMultiplier) + val multiplierEditText = findViewById(R.id.ingredient_multiplier) val dishId = intent.getIntExtra("dish_id", -1) if (dishId == -1) { @@ -37,8 +38,6 @@ class DishDetailsActivity : AppCompatActivity() { return } - - thread { val recipe: RecipeDetailsResponse try { @@ -74,7 +73,9 @@ class DishDetailsActivity : AppCompatActivity() { for (ingredient in ingredients) { val row = TextView(this) val amount = (ingredient.amount ?: 0.0) * multiplier - row.text = Html.fromHtml("• ${ingredient.name}: ${"%.2f".format(amount)} ${ingredient.unit ?: ""}", Html.FROM_HTML_MODE_LEGACY) + val amountStr = amount.toBigDecimal().stripTrailingZeros().toPlainString() + + row.text = Html.fromHtml("• ${ingredient.name}: $amountStr ${ingredient.unit ?: ""}", Html.FROM_HTML_MODE_LEGACY) row.textSize = 18f row.setPadding(0, 8, 0, 8) container.addView(row) @@ -100,19 +101,33 @@ class DishDetailsActivity : AppCompatActivity() { displayIngredients(recipe.ingredients, multiplier, ingredientsContainer) } + findViewById(R.id.increment_multiplier).setOnClickListener { + multiplier++ + multiplierEditText.setText(multiplier.toString(), TextView.BufferType.EDITABLE) + + displayIngredients(recipe.ingredients, multiplier, ingredientsContainer) + } + + findViewById(R.id.decrement_multiplier).setOnClickListener { + if (multiplier <= 1) return@setOnClickListener + + multiplier-- + multiplierEditText.setText(multiplier.toString(), TextView.BufferType.EDITABLE) + + displayIngredients(recipe.ingredients, multiplier, ingredientsContainer) + } + // You can do the same for directions if needed } val saveButton: Button = findViewById(R.id.addDishToShoppingList) saveButton.setOnClickListener { - - val progressDialog = ProgressDialog(this) progressDialog.setMessage("Loading...") progressDialog.show() thread { try { - val multiplierEditText = findViewById(R.id.ingredientMultiplier) + val multiplierEditText = findViewById(R.id.ingredient_multiplier) val multiplierText = multiplierEditText.text.toString() AddRecipeToShoppingList(this, dishId, multiplierText.toIntOrNull() ?: 1) } catch (e: ApiRequestException) { diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt index 2523ed8..1ece23e 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt @@ -222,7 +222,7 @@ class ShoppingListFragment : Fragment() { // Pre-fill dialog inputs with current item if applicable item?.let { item -> - view.findViewById(R.id.amount).setText(item.amount?.toBigDecimal()?.stripTrailingZeros().toString(), TextView.BufferType.EDITABLE) + view.findViewById(R.id.amount).setText(item.amount?.toBigDecimal()?.stripTrailingZeros()?.toPlainString(), TextView.BufferType.EDITABLE) view.findViewById(R.id.unit_selector).setSelection(adapter.getPosition(item.unit)) view.findViewById(R.id.name).setText(item.name, TextView.BufferType.EDITABLE) diff --git a/app/app/src/main/res/drawable/ic_arrow_drop_down_24px.xml b/app/app/src/main/res/drawable/ic_arrow_drop_down_24px.xml new file mode 100644 index 0000000..dfea22c --- /dev/null +++ b/app/app/src/main/res/drawable/ic_arrow_drop_down_24px.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/app/src/main/res/drawable/ic_arrow_drop_up_24px.xml b/app/app/src/main/res/drawable/ic_arrow_drop_up_24px.xml new file mode 100644 index 0000000..05735c6 --- /dev/null +++ b/app/app/src/main/res/drawable/ic_arrow_drop_up_24px.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/app/src/main/res/layout/activity_dish_details.xml b/app/app/src/main/res/layout/activity_dish_details.xml index e50eb50..a2b134b 100644 --- a/app/app/src/main/res/layout/activity_dish_details.xml +++ b/app/app/src/main/res/layout/activity_dish_details.xml @@ -39,15 +39,41 @@ android:layout_height="match_parent" android:textSize="16sp" android:paddingTop="8dp" + android:labelFor="@id/ingredient_multiplier" android:text="@string/portions_label" /> + + + + + diff --git a/app/app/src/main/res/layout/activity_register.xml b/app/app/src/main/res/layout/activity_register.xml index 54e8968..5b3daf1 100644 --- a/app/app/src/main/res/layout/activity_register.xml +++ b/app/app/src/main/res/layout/activity_register.xml @@ -52,7 +52,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/password_label" - /> + /> Generate recipe using AI Portions Instructions + Increment portion count + Decrement portion size g