edc_parser: Append different string to each candidate list.

This commit is contained in:
Jaehyun Cho 2016-11-23 20:46:17 +09:00
parent c4d60f326a
commit 18bb73f161
3 changed files with 55 additions and 2 deletions

View File

@ -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);

View File

@ -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);

View File

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