[recipes] Added human_readability function to e.g. display 1 cup rather than 16 tablespoons
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes] Added human_readability function to e.g. display 1 cup rather than 16 tablespoons
- Date: Tue, 19 Sep 2017 12:37:19 +0000 (UTC)
commit 00d6f0d95ab6709ae27e438da4a4b4fb07feac37
Author: Paxana Amanda Xander <veganbikepunk gmail com>
Date: Mon Aug 28 14:28:46 2017 -0700
Added human_readability function to e.g. display 1 cup rather than 16 tablespoons
src/gr-convert-units.c | 103 +++++++++++++++++++++++++++++++++++++++++++
src/gr-convert-units.h | 2 +
src/gr-ingredients-viewer.c | 2 +
3 files changed, 107 insertions(+), 0 deletions(-)
---
diff --git a/src/gr-convert-units.c b/src/gr-convert-units.c
index 3174c34..d3ea057 100644
--- a/src/gr-convert-units.c
+++ b/src/gr-convert-units.c
@@ -316,3 +316,106 @@ gr_convert_weight (double *amount, GrUnit *unit, GrPreferredUnit user_weight_uni
*amount = amount1;
*unit = unit1;
}
+
+void
+gr_convert_human_readable (double *amount, GrUnit *unit)
+{
+ double amount1 = *amount;
+ GrUnit unit1 = *unit;
+ gboolean unit_changed = TRUE;
+
+ while (unit_changed) {
+ switch (unit1) {
+ case GR_UNIT_GRAM:
+ if (amount1 >= 1000) {
+ amount1 = (amount1 / 1000);
+ unit1 = GR_UNIT_KILOGRAM;
+ }
+ break;
+
+ case GR_UNIT_KILOGRAM:
+ if (amount1 < 1) {
+ amount1 = (amount1 * 1000);
+ unit1 = GR_UNIT_GRAM;
+ }
+ break;
+
+ case GR_UNIT_POUND:
+ if (amount1 < 1) {
+ amount1 = (amount1 * 16);
+ unit1 = GR_UNIT_OUNCE;
+ }
+ break;
+
+ case GR_UNIT_OUNCE:
+ if (amount1 >= 16) {
+ amount1 = (amount1 / 16);
+ unit1 = GR_UNIT_POUND;
+ }
+ break;
+
+ case GR_UNIT_TEASPOON:
+ if (amount1 >= 3) {
+ amount1 = (amount1 / 3);
+ unit1 = GR_UNIT_TABLESPOON;
+ }
+ break;
+
+ case GR_UNIT_TABLESPOON:
+ if (amount1 >= 16) {
+ amount1 = (amount1 / 16);
+ unit1 = GR_UNIT_CUP;
+ }
+ else if ((amount1 < 1) && (amount1 > 0)) {
+ amount1 = (amount1 * 3);
+ unit1 = GR_UNIT_TEASPOON;
+ }
+ break;
+
+ case GR_UNIT_CUP:
+ if (amount1 >= 4) {
+ amount1 = (amount1 / 4);
+ unit1 = GR_UNIT_QUART;
+ }
+ else if (amount1 < 1) {
+ amount1 = amount1 / 16;
+ unit1 = GR_UNIT_TABLESPOON;
+ }
+ break;
+
+ case GR_UNIT_MILLILITER:
+ if (amount1 >= 1000) {
+ amount1 = amount1 / 1000;
+ unit1 = GR_UNIT_LITER;
+ }
+ break;
+
+ case GR_UNIT_DECILITER:
+ if (amount1 < 1) {
+ amount1 = amount1 * 100;
+ unit1 = GR_UNIT_MILLILITER;
+ }
+ else if (amount1 >= 10) {
+ amount1 = amount1 / 10;
+ unit1 = GR_UNIT_LITER;
+ }
+ break;
+
+ case GR_UNIT_LITER:
+ if (amount1 < 1) {
+ amount1 = amount1 * 1000;
+ unit1 = GR_UNIT_MILLILITER;
+ }
+ break;
+
+ default: ;
+ }
+
+ if (*unit == unit1) {
+ unit_changed = FALSE;
+ }
+
+ *amount = amount1;
+ *unit = unit1;
+ }
+}
diff --git a/src/gr-convert-units.h b/src/gr-convert-units.h
index cb56a3e..f5553d7 100644
--- a/src/gr-convert-units.h
+++ b/src/gr-convert-units.h
@@ -46,5 +46,7 @@ GrPreferredUnit gr_convert_get_weight_unit (void);
void gr_convert_temp (int *num, int *unit, int user_unit);
void gr_convert_volume (double *amount, GrUnit *unit, GrPreferredUnit
user_volume_unit);
void gr_convert_weight (double *amount, GrUnit *unit, GrPreferredUnit
user_weight_unit);
+void gr_convert_human_readable (double *amount, GrUnit *unit);
+
G_END_DECLS
diff --git a/src/gr-ingredients-viewer.c b/src/gr-ingredients-viewer.c
index 31a6ed9..68d0f1e 100644
--- a/src/gr-ingredients-viewer.c
+++ b/src/gr-ingredients-viewer.c
@@ -340,6 +340,8 @@ gr_ingredients_viewer_set_ingredients (GrIngredientsViewer *viewer,
}
}
+ gr_convert_human_readable (&amount, &unit);
+
char *a_final = gr_number_format (amount);
const char *u_final = gr_unit_get_name (unit);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]