[recipes] More work toward better handling of translated ingredients



commit f3dce2305b86a49c5c1675d16465420dd3043725
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Dec 31 17:01:56 2016 -0500

    More work toward better handling of translated ingredients
    
    Use the ingredient ID when creating search terms, but use
    the translated ingredient name when filtering in the UI.

 src/gr-ingredient-row.c |   18 +++++++++++++++---
 src/gr-ingredient-row.h |    1 +
 src/gr-query-editor.c   |    2 +-
 3 files changed, 17 insertions(+), 4 deletions(-)
---
diff --git a/src/gr-ingredient-row.c b/src/gr-ingredient-row.c
index 8d509c7..03a81d9 100644
--- a/src/gr-ingredient-row.c
+++ b/src/gr-ingredient-row.c
@@ -34,6 +34,7 @@ struct _GrIngredientRow
         GtkWidget *label;
         GtkWidget *image;
 
+        char *id;
         char *ingredient;
         char *cf_ingredient;
 
@@ -60,6 +61,7 @@ gr_ingredient_row_finalize (GObject *object)
         GrIngredientRow *self = (GrIngredientRow *)object;
 
         g_clear_object (&self->tag);
+        g_free (self->id);
         g_free (self->ingredient);
         g_free (self->cf_ingredient);
 
@@ -176,11 +178,15 @@ gr_ingredient_row_set_property (GObject      *object,
 
                         g_free (self->ingredient);
                         self->ingredient = g_value_dup_string (value);
+
                         term = gr_ingredient_get_id (self->ingredient);
                         if (!term)
                                 term = self->ingredient;
+                        g_free (self->id);
+                        self->id = g_strdup (term);
+
                         g_free (self->cf_ingredient);
-                        self->cf_ingredient = g_utf8_casefold (term, -1);
+                        self->cf_ingredient = g_utf8_casefold (self->ingredient, -1);
                   }
                   break;
           case PROP_INCLUDE:
@@ -255,10 +261,10 @@ char *
 gr_ingredient_row_get_search_term (GrIngredientRow *row)
 {
         if (row->include) {
-                return g_strconcat ("i+:", row->cf_ingredient, NULL);
+                return g_strconcat ("i+:", row->id, NULL);
         }
         else if (row->exclude) {
-                return g_strconcat ("i-:", row->cf_ingredient, NULL);
+                return g_strconcat ("i-:", row->id, NULL);
         }
         else
                 return NULL;
@@ -287,3 +293,9 @@ gr_ingredient_row_get_ingredient (GrIngredientRow *row)
 {
         return row->ingredient;
 }
+
+const char *
+gr_ingredient_row_get_id (GrIngredientRow *row)
+{
+        return row->id;
+}
diff --git a/src/gr-ingredient-row.h b/src/gr-ingredient-row.h
index c405816..854c481 100644
--- a/src/gr-ingredient-row.h
+++ b/src/gr-ingredient-row.h
@@ -37,6 +37,7 @@ void             gr_ingredient_row_set_entry (GrIngredientRow *row,
 char *           gr_ingredient_row_get_search_term (GrIngredientRow *row);
 char *           gr_ingredient_row_get_label (GrIngredientRow *row);
 const char *     gr_ingredient_row_get_ingredient (GrIngredientRow *row);
+const char *     gr_ingredient_row_get_id (GrIngredientRow *row);
 const char *     gr_ingredient_row_get_filter_term (GrIngredientRow *row);
 
 G_END_DECLS
diff --git a/src/gr-query-editor.c b/src/gr-query-editor.c
index c278384..6d4412e 100644
--- a/src/gr-query-editor.c
+++ b/src/gr-query-editor.c
@@ -835,7 +835,7 @@ set_ingredient_tag (GrQueryEditor *editor,
                 GtkWidget *row = l->data;
                 if (!GR_IS_INGREDIENT_ROW (row))
                         continue;
-                if (strcmp (ingredient, gr_ingredient_row_get_ingredient (GR_INGREDIENT_ROW (row))) == 0) {
+                if (strcmp (ingredient, gr_ingredient_row_get_id (GR_INGREDIENT_ROW (row))) == 0) {
                         g_object_set (row, "include", include, "exclude", exclude, NULL);
                         break;
                 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]