jaehyun pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=18bb73f1614f97bc754f762e69b71f755e9b79dd

commit 18bb73f1614f97bc754f762e69b71f755e9b79dd
Author: Jaehyun Cho <jae_hyun....@samsung.com>
Date:   Wed Nov 23 20:46:17 2016 +0900

    edc_parser: Append different string to each candidate list.
---
 src/lib/ctxpopup.c         | 36 +++++++++++++++++++++++++++++++++++-
 src/lib/edc_parser.c       | 19 ++++++++++++++++++-
 src/lib/enventor_private.h |  2 ++
 3 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/src/lib/ctxpopup.c b/src/lib/ctxpopup.c
index 44a7aeb..a95d9e6 100644
--- a/src/lib/ctxpopup.c
+++ b/src/lib/ctxpopup.c
@@ -91,15 +91,49 @@ update_preset_colors(Eina_Bool update)
      }
 }
 
+static int
+array_data_idx(const Eina_Array *array, void *data)
+{
+   Eina_Stringshare *array_data;
+   Eina_Array_Iterator itr;
+   int idx;
+
+   if (!array) return -1;
+
+   EINA_ARRAY_ITER_NEXT(array, idx, array_data, itr)
+     {
+        if (array_data == data)
+          return idx;
+     }
+
+   return -1;
+}
+
 static void
 ctxpopup_it_cb(void *data, Evas_Object *obj, void *event_info)
 {
    ctxpopup_data *ctxdata = data;
    Elm_Object_Item *it = event_info;
    const char *text = elm_object_item_text_get(it);
+   const Eina_Stringshare *append_str = NULL;
 
+   //Append different string to each candidate list.
+   if (ctxdata->attr->use_append_str_array)
+     {
+        int idx = array_data_idx(ctxdata->attr->strs, (void *)text);
+        if (idx != -1)
+          {
+             append_str = (const Eina_Stringshare *)
+                eina_array_data_get(ctxdata->attr->append_str_array, idx);
+          }
+     }
+   //Append same string to all candidate lists.
+   else
+     {
+        append_str = ctxdata->attr->append_str;
+     }
    snprintf(ctxdata->candidate, sizeof(ctxdata->candidate), "%s %s%s",
-            ctxdata->attr->prepend_str, text, ctxdata->attr->append_str);
+            ctxdata->attr->prepend_str, text, append_str);
 
    ctxdata->changed_cb(ctxdata->data, obj, ctxdata->candidate);
    elm_ctxpopup_dismiss(obj);
diff --git a/src/lib/edc_parser.c b/src/lib/edc_parser.c
index 23b234e..975ed7a 100644
--- a/src/lib/edc_parser.c
+++ b/src/lib/edc_parser.c
@@ -9,6 +9,9 @@ const char ATTR_PREPEND_COLON[] = ":";
 const char ATTR_PREPEND_NONE[] = "";
 const char ATTR_APPEND_SEMICOLON[] = ";";
 const char ATTR_APPEND_TRANSITION_TIME[] = " 1.0;";
+const char ATTR_APPEND_TRANSITION_TIME_FACTOR[] = " 1.0 0.0;";
+const char ATTR_APPEND_TRANSITION_TIME_FACTOR2[] = " 1.0 0.0 0.0;";
+const char ATTR_APPEND_TRANSITION_TIME_FACTOR4[] = " 1.0 0.0 0.0 0.0 0.0;";
 
 typedef struct parser_attr_s
 {
@@ -560,12 +563,26 @@ type_init_thread_blocking(void *data, Ecore_Thread 
*thread EINA_UNUSED)
    eina_array_push(trans, eina_stringshare_add("SPRING"));
    eina_array_push(trans, eina_stringshare_add("CUBIC_BEZIER"));
 
+   Eina_Array *trans_append_str = eina_array_new(11);
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME_FACTOR));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME_FACTOR));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME_FACTOR));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME_FACTOR2));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME_FACTOR2));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME_FACTOR2));
+   eina_array_push(trans_append_str, 
eina_stringshare_add(ATTR_APPEND_TRANSITION_TIME_FACTOR4));
+
    memset(&attr, 0x00, sizeof(parser_attr));
    attr.keyword = eina_stringshare_add("transition");
    attr.value.strs = trans;
    attr.value.type = ATTR_VALUE_CONSTANT;
    attr.value.prepend_str = ATTR_PREPEND_COLON;
-   attr.value.append_str = ATTR_APPEND_TRANSITION_TIME;
+   attr.value.append_str_array = trans_append_str;
+   attr.value.use_append_str_array = EINA_TRUE;
    eina_inarray_push(td->attrs, &attr);
 
    Eina_Array *aspect_mode = eina_array_new(5);
diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h
index dbce81c..00b4c64 100644
--- a/src/lib/enventor_private.h
+++ b/src/lib/enventor_private.h
@@ -69,6 +69,8 @@ struct attr_value_s
    attr_value_type type;
    const char *prepend_str;
    const char *append_str;
+   Eina_Array *append_str_array;
+   Eina_Bool use_append_str_array : 1;
    Eina_Bool program : 1;
 };
 

-- 


Reply via email to