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; }; --