rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=40a667110c4423e268868cc6e55fa4076de6e882
commit 40a667110c4423e268868cc6e55fa4076de6e882 Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Fri Jul 15 12:12:08 2016 +0300 property_group: ability to set Tone/Sample Name into program --- src/bin/ui/property/property_group.c | 130 +++++++++++++++++++++++++++++++++ src/bin/ui/property/property_private.h | 2 + 2 files changed, 132 insertions(+) diff --git a/src/bin/ui/property/property_group.c b/src/bin/ui/property/property_group.c index 3e855e5..df1d080 100644 --- a/src/bin/ui/property/property_group.c +++ b/src/bin/ui/property/property_group.c @@ -623,6 +623,8 @@ _subitems_get(Property_Attribute *pa) APPEND(PROPERTY_GROUP_ITEM_PROGRAM_FILTER_STATE); APPEND(PROPERTY_GROUP_ITEM_PROGRAM_ACTION_TITLE); APPEND(PROPERTY_GROUP_ITEM_PROGRAM_ACTION_TARGET); + APPEND(PROPERTY_GROUP_ITEM_PROGRAM_SAMPLE_NAME); + APPEND(PROPERTY_GROUP_ITEM_PROGRAM_TONE_NAME); APPEND(PROPERTY_GROUP_ITEM_PROGRAM_CHANNEL); APPEND(PROPERTY_GROUP_ITEM_PROGRAM_TONE_DURATION); APPEND(PROPERTY_GROUP_ITEM_PROGRAM_SAMPLE_SPEED); @@ -877,6 +879,8 @@ _init_cb(Property_Attribute *pa, Property_Action *action) case ATTRIBUTE_PROGRAM_EMIT_SOURCE: case ATTRIBUTE_PROGRAM_STATE: case ATTRIBUTE_PROGRAM_TRANSITION_FROM_CURRENT: + case ATTRIBUTE_PROGRAM_SAMPLE_NAME: + case ATTRIBUTE_PROGRAM_TONE_NAME: case ATTRIBUTE_STATE_MAP_PERSPECTIVE: case ATTRIBUTE_STATE_MAP_LIGHT: case ATTRIBUTE_STATE_MAP_ON: @@ -1145,6 +1149,84 @@ _groups_combobox_fill(Evas_Object *combo, const char *selected, Eina_Bool with_n } static void +_sample_combobox_fill(Evas_Object *combo, const char *selected, Eina_Bool with_none) +{ + Eina_List *l; + Combobox_Item *combobox_item; + Elm_Genlist_Item_Class *itc; + unsigned int i = 0; + Resource *sample; + + assert(with_none || selected != NULL); + + itc = evas_object_data_get(combo, "COMMON_ITC"); + + if (strcmp(selected, "")) + elm_object_text_set(combo, selected); + else + elm_object_text_set(combo, STR_NONE); + + if (with_none) + { + combobox_item = mem_malloc(sizeof(Combobox_Item)); + combobox_item->index = i++; + combobox_item->data = eina_stringshare_add(STR_NONE); + elm_genlist_item_append(combo, itc, + combobox_item, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + } + + EINA_LIST_FOREACH(ap.project->sounds, l, sample) + { + combobox_item = mem_malloc(sizeof(Combobox_Item)); + combobox_item->index = i++; + combobox_item->data = eina_stringshare_add(sample->name); + elm_genlist_item_append(combo, itc, + combobox_item, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + } +} + +static void +_tone_combobox_fill(Evas_Object *combo, const char *selected, Eina_Bool with_none) +{ + Eina_List *l; + Combobox_Item *combobox_item; + Elm_Genlist_Item_Class *itc; + unsigned int i = 0; + Resource *tone; + + assert(with_none || selected != NULL); + + itc = evas_object_data_get(combo, "COMMON_ITC"); + + if (strcmp(selected, "")) + elm_object_text_set(combo, selected); + else + elm_object_text_set(combo, STR_NONE); + + if (with_none) + { + combobox_item = mem_malloc(sizeof(Combobox_Item)); + combobox_item->index = i++; + combobox_item->data = eina_stringshare_add(STR_NONE); + elm_genlist_item_append(combo, itc, + combobox_item, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + } + + EINA_LIST_FOREACH(ap.project->tones, l, tone) + { + combobox_item = mem_malloc(sizeof(Combobox_Item)); + combobox_item->index = i++; + combobox_item->data = eina_stringshare_add(tone->name); + elm_genlist_item_append(combo, itc, + combobox_item, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + } +} + +static void _parts_combobox_fill(Evas_Object *combo, const char *selected, int allowed_types_mask) { Eina_List *l; @@ -2303,6 +2385,18 @@ _update_cb(Property_Attribute *pa, Property_Action *action) double_val1 = edje_edit_program_tone_duration_get(EDIT_OBJ, PROGRAM_ARGS); elm_spinner_value_set(action->control, double_val1); return editor_program_tone_duration_default_is(EDIT_OBJ, PROGRAM_ARGS); + case ATTRIBUTE_PROGRAM_SAMPLE_NAME: + elm_genlist_clear(action->control); + str_val1 = edje_edit_program_sample_name_get(EDIT_OBJ, PROGRAM_ARGS); + _sample_combobox_fill(action->control, str_val1, 1); + edje_edit_string_free(str_val1); + return editor_program_sample_name_default_is(EDIT_OBJ, PROGRAM_ARGS); + case ATTRIBUTE_PROGRAM_TONE_NAME: + elm_genlist_clear(action->control); + str_val1 = edje_edit_program_tone_name_get(EDIT_OBJ, PROGRAM_ARGS); + _tone_combobox_fill(action->control, str_val1, 1); + edje_edit_string_free(str_val1); + return editor_program_tone_name_default_is(EDIT_OBJ, PROGRAM_ARGS); case ATTRIBUTE_PROGRAM_CHANNEL: elm_object_text_set(action->control, edje_channel[(int) edje_edit_program_channel_get(EDIT_OBJ, PROGRAM_ARGS)]); return editor_program_channel_default_is(EDIT_OBJ, PROGRAM_ARGS); @@ -2964,6 +3058,14 @@ _start_cb(Property_Attribute *pa, Property_Action *action) group_pd.history.format = _("program's tone duration changed from %.2f to %.2f"); VAL(double_val1) = edje_edit_program_tone_duration_get(EDIT_OBJ, PROGRAM_ARGS); break; + case ATTRIBUTE_PROGRAM_SAMPLE_NAME: + group_pd.history.format = _("program's sample changed from \"%s\" to \"%s\""); + STR_VAL(str_val1, edje_edit_program_sample_name_get(EDIT_OBJ, PROGRAM_ARGS)); + break; + case ATTRIBUTE_PROGRAM_TONE_NAME: + group_pd.history.format = _("program's tone changed from \"%s\" to \"%s\""); + STR_VAL(str_val1, edje_edit_program_tone_name_get(EDIT_OBJ, PROGRAM_ARGS)); + break; case ATTRIBUTE_PROGRAM_CHANNEL: group_pd.history.format = _("program's channel changed from \"%s\" to \"%s\""); STR_VAL(str_val1, edje_channel[edje_edit_program_channel_get(EDIT_OBJ, PROGRAM_ARGS)]); @@ -3890,6 +3992,20 @@ _change_cb(Property_Attribute *pa, Property_Action *action) CRIT_ON_FAIL(editor_program_tone_duration_set(EDIT_OBJ, CHANGE_MERGE, PROGRAM_ARGS, double_val1)); group_pd.history.new.double_val1 = edje_edit_program_tone_duration_get(EDIT_OBJ, PROGRAM_ARGS); break; + case ATTRIBUTE_PROGRAM_SAMPLE_NAME: + assert(cb_item_combo != NULL); + str_val1 = (cb_item_combo->index != 0) ? eina_stringshare_add(cb_item_combo->data) : ""; + CRIT_ON_FAIL(editor_program_sample_name_set(EDIT_OBJ, CHANGE_NO_MERGE, PROGRAM_ARGS, str_val1)); + eina_stringshare_del(group_pd.history.new.str_val1); + group_pd.history.new.str_val1 = str_val1; + break; + case ATTRIBUTE_PROGRAM_TONE_NAME: + assert(cb_item_combo != NULL); + str_val1 = (cb_item_combo->index != 0) ? eina_stringshare_add(cb_item_combo->data) : ""; + CRIT_ON_FAIL(editor_program_tone_name_set(EDIT_OBJ, CHANGE_NO_MERGE, PROGRAM_ARGS, str_val1)); + eina_stringshare_del(group_pd.history.new.str_val1); + group_pd.history.new.str_val1 = str_val1; + break; case ATTRIBUTE_PROGRAM_CHANNEL: assert(cb_item_combo != NULL); str_val1 = eina_stringshare_add(cb_item_combo->data); @@ -4254,6 +4370,8 @@ _stop_cb(Property_Attribute *pa, Property_Action *action) case ATTRIBUTE_PROGRAM_FILTER_STATE: case ATTRIBUTE_PROGRAM_TRANSITION_TYPE: case ATTRIBUTE_PROGRAM_CHANNEL: + case ATTRIBUTE_PROGRAM_SAMPLE_NAME: + case ATTRIBUTE_PROGRAM_TONE_NAME: CHECK_VAL(str_val1); msg = eina_stringshare_printf(group_pd.history.format, (group_pd.history.old.str_val1) ? group_pd.history.old.str_val1 : STR_NONE, @@ -5694,6 +5812,18 @@ _init_items() ACTION_SIGNAL_EMIT | ACTION_DRAG_VAL_SET | ACTION_DRAG_VAL_STEP | ACTION_DRAG_VAL_PAGE; break; + case PROPERTY_GROUP_ITEM_PROGRAM_SAMPLE_NAME: + IT.name = "Sample"; + _action1(&IT, NULL, NULL, PROPERTY_CONTROL_COMBOBOX, ATTRIBUTE_PROGRAM_SAMPLE_NAME, + _("Name of sample to be played")); + IT.filter_data.action_types = ACTION_SOUND_SAMPLE; + break; + case PROPERTY_GROUP_ITEM_PROGRAM_TONE_NAME: + IT.name = "Tone"; + _action1(&IT, NULL, NULL, PROPERTY_CONTROL_COMBOBOX, ATTRIBUTE_PROGRAM_TONE_NAME, + _("Name of tone to be played")); + IT.filter_data.action_types = ACTION_SOUND_TONE; + break; case PROPERTY_GROUP_ITEM_PROGRAM_CHANNEL: IT.name = "Channel"; _action1(&IT, NULL, NULL, PROPERTY_CONTROL_COMBOBOX, ATTRIBUTE_PROGRAM_CHANNEL, diff --git a/src/bin/ui/property/property_private.h b/src/bin/ui/property/property_private.h index 4c7880c..9693478 100644 --- a/src/bin/ui/property/property_private.h +++ b/src/bin/ui/property/property_private.h @@ -359,6 +359,8 @@ typedef enum { PROPERTY_GROUP_ITEM_PROGRAM_CHANNEL, PROPERTY_GROUP_ITEM_PROGRAM_TONE_DURATION, PROPERTY_GROUP_ITEM_PROGRAM_SAMPLE_SPEED, + PROPERTY_GROUP_ITEM_PROGRAM_SAMPLE_NAME, + PROPERTY_GROUP_ITEM_PROGRAM_TONE_NAME, PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE, PROPERTY_GROUP_ITEM_GROUP_DATA_NAME, --