static char *gendialNewTextGetCb(void *data, Evas_Object *obj, const char *part);
static void _gl_Gendial_del(void *data, Evas_Object *obj);
-static Evas_Object *__add_entry_padding(GenGroupItemData *item_data,
- Evas_Object *parent);
-
#define DEFINE_ITC1(style, name) \
const Elm_Genlist_Item_Class name = { \
.version = 0, \
return ret.empty() ? nullptr : strdup(ret.c_str());
}
-static Evas_Object *__add_check_invisible(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
- retv_if(!item_data || !parent, NULL);
-
- Evas_Object *check = elm_check_add(parent);
-
- elm_check_state_set(check, item_data->chk_status);
- evas_object_propagate_events_set(check, 0);
- evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
-
- evas_object_pass_events_set(check, 1);
-
- item_data->eo_check = check;
-
- if (item_data->chk_change_cb) {
- evas_object_smart_callback_add(check, "changed",
- item_data->chk_change_cb, item_data);
- } else {
- evas_object_smart_callback_add(check, "changed", __chk_changed,
- item_data);
- }
- evas_object_show(check);
-
- return check;
-}
-
static Evas_Object *__add_check(GenGroupItemData *item_data,
Evas_Object *parent)
{
return check;
}
-static Evas_Object *__add_dot_toggle(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
- return NULL;
-}
-
-static Evas_Object *__add_radio(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
- retv_if(!item_data || !parent, NULL);
- if (!item_data->rgd) { /* exceptional handling */
- item_data->rgd = elm_radio_add(parent);
- elm_radio_state_value_set(item_data->rgd, -1);
- }
-
- Evas_Object *radio = elm_radio_add(parent);
-
- evas_object_propagate_events_set(radio, EINA_FALSE);
- evas_object_repeat_events_set(radio, EINA_TRUE);
- elm_radio_state_value_set(radio, item_data->chk_status);
- elm_radio_group_add(radio, item_data->rgd);
- evas_object_show(radio);
- item_data->eo_check = radio;
- if (item_data->chk_change_cb) {
- evas_object_smart_callback_add(radio, "changed",
- item_data->chk_change_cb, item_data);
- } else {
- evas_object_smart_callback_add(radio, "changed",
- __radio_changed, item_data);
- }
-
- return radio;
-}
-
-/**
- * this code is as same as __add_radio_right, in exception of
- * evas_object_propagate_events_set(... FALSE)
- */
-static Evas_Object *__add_radio_right_propagate_events_set(
- GenGroupItemData *item_data, Evas_Object *parent)
-{
-
- retv_if(!item_data || !parent, NULL);
- if (!item_data->rgd) {
- item_data->rgd = elm_radio_add(parent);
- elm_radio_state_value_set(item_data->rgd, -1);
- }
-
- Evas_Object *radio = elm_radio_add(parent);
-
- evas_object_propagate_events_set(radio, EINA_FALSE);
- elm_radio_state_value_set(radio, item_data->chk_status);
- elm_radio_group_add(radio, item_data->rgd);
- evas_object_show(radio);
- item_data->eo_check = radio;
- if (item_data->chk_change_cb) {
- evas_object_smart_callback_add(radio, "changed",
- item_data->chk_change_cb, item_data);
- } else {
- evas_object_smart_callback_add(radio, "changed",
- __radio_changed, item_data);
- }
- return radio;
-}
-
-static Evas_Object *__add_radio_right(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
- retv_if(!item_data || !parent, NULL);
- if (!item_data->rgd) {
- item_data->rgd = elm_radio_add(parent);
- elm_radio_state_value_set(item_data->rgd, -1);
- }
- Evas_Object *radio = elm_radio_add(parent);
-
- elm_radio_state_value_set(radio, item_data->chk_status);
- elm_radio_group_add(radio, item_data->rgd);
- item_data->eo_check = radio;
- if (item_data->chk_change_cb) {
- evas_object_smart_callback_add(radio, "changed",
- item_data->chk_change_cb, item_data);
- } else {
- evas_object_smart_callback_add(radio, "changed",
- __radio_changed, item_data);
- }
- elm_object_signal_emit(radio, "elm,event,pass,enabled", "elm");
-
- return radio;
-}
-
static Evas_Object *__add_radio_text(GenGroupItemData *item_data,
Evas_Object *parent)
{
return radio;
}
-static Evas_Object *__add_button(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
- retv_if(!item_data || !parent, NULL);
- Evas_Object *btn = elm_button_add(parent);
- elm_object_text_set(btn, _("IDS_ST_BODY_EDIT"));
- evas_object_show(btn);
- if (!item_data->r_swallow_path.empty())
- elm_object_style_set(btn, item_data->r_swallow_path.c_str());
-
- if (!item_data->keyStr.empty() && item_data->swallow_type != SwallowType::RADIO_1BTN) {
- elm_object_text_set(btn, _(item_data->keyStr.c_str()));
- }
- evas_object_propagate_events_set(btn, EINA_FALSE);
-
- if (item_data->chk_change_cb) { /* for other types */
- evas_object_smart_callback_add(btn, "clicked", item_data->chk_change_cb, item_data);
- }
- return btn;
-}
-
-static Evas_Object *__add_gif(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
- return NULL;
-}
-
-static Evas_Object *__add_5step_slider(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
-
-
- retv_if(!item_data || !parent, NULL);
- Evas_Object *li_slider = setting_create_5step_slider(
- parent,
- item_data->evas,
- item_data->l_swallow_path.c_str(),
- item_data->r_swallow_path.c_str(),
- item_data->chk_status,
- false,
- 0.0,
- 0.0,
- item_data->chk_change_cb,
- NULL,
- NULL,
- item_data);
- evas_object_pass_events_set(li_slider, 1);
- evas_object_propagate_events_set(li_slider, 0);
- item_data->eo_check = li_slider;
- return li_slider;
-}
-
-static Evas_Object *__add_slider(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
- retv_if(!item_data || !parent, NULL);
- Evas_Object *li_slider = setting_create_slider(parent, item_data);
- evas_object_pass_events_set(li_slider, 1);
- evas_object_propagate_events_set(li_slider, 0);
- item_data->eo_check = li_slider;
- return li_slider;
-}
-
static Evas_Object *__add_left_default(GenGroupItemData *item_data,
Evas_Object *parent)
{
if (item_data->l_swallow_path.empty())
return NULL;
- if (SwallowType::ICON_DOTTOOGLE == item_data->swallow_type
- || SwallowType::ICON_IMAGE
- == item_data->swallow_type) {
+ if (SwallowType::ICON_IMAGE == item_data->swallow_type) {
Evas_Object *icon = elm_icon_add(parent);
setting_decorate_image_RGBA(icon, 15, 41, 73, 255);
elm_image_file_set(icon, item_data->l_swallow_path.c_str(), NULL);
evas_object_size_hint_aspect_set(icon,
EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
return icon;
- } else if (SwallowType::ICON_SMALL_ICON == item_data->swallow_type) {
-
- Evas_Object *c = elm_image_add(parent);
- elm_image_file_set(c, item_data->l_swallow_path.c_str(), NULL);
- evas_object_size_hint_align_set(c, EVAS_HINT_FILL,
- EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(c, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- return c;
- } else if (SwallowType::CHECK_RIGHT_INVISIBLE
- == item_data->swallow_type) {
- Evas_Object *icon = elm_icon_add(parent);
- elm_image_file_set(icon, item_data->l_swallow_path.c_str(), NULL);
- evas_object_size_hint_aspect_set(icon,
- EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
- evas_object_size_hint_min_set(icon, 117, 117);
- return icon;
} else {
Evas_Object * c = elm_image_add(parent);
static ContentDrawer cd_left[static_cast<int>(SwallowType::MAX)] = {
/*base objects */
{ SwallowType::CHECK, __add_check },
- /* setting-network, security-sim-setting */
- { SwallowType::TOGGLE, __add_toggle },
- { SwallowType::RADIO, __add_radio }, /* many */
- { SwallowType::RADIO_1BTN, __add_radio },
- { SwallowType::BUTTON, __add_button },
- { SwallowType::GIF, __add_gif },
-
- /*base objects in an layout */
- { SwallowType::LAYOUT_SLIDER, __add_slider },
- { SwallowType::LAYOUT_5STEP_SLIDER, __add_5step_slider },
/*other compelx objects */
/* setting-network */
{ SwallowType::RADIO_1TEXT, __add_radio_text },
-
- /*left part object of the type */
- { SwallowType::ICON_SMALL_ICON, __add_left_default },
};
static ContentDrawer cd_right[static_cast<int>(SwallowType::MAX)] = {
/*right part object of the type */
- { SwallowType::CHECK_RIGHT, __add_check },
{ SwallowType::ICON_RADIO, __add_toggle },
- { SwallowType::ICON_DOTTOOGLE, __add_dot_toggle },
- { SwallowType::RADIO_RIGHT_PROPAGATE_EVENTS_SET, __add_radio_right_propagate_events_set },
- { SwallowType::RADIO_RIGHT, __add_radio_right },
- { SwallowType::CHECK_RIGHT_INVISIBLE, __add_check_invisible },
};
fp = __add_left_default; /*hold default drawer */
cd_list = cd_left;
- } else if (!safeStrCmp(part, "elm.icon.entry")) {
- if (item_data->swallow_type != SwallowType::LAYOUT_DATEFIELD)
- fp = __add_entry_padding;
-
} else if (!safeStrCmp(part, "elm.icon.eraser")) {
/*fp = __add_button_eraser; */
Evas_Object *btn = elm_button_add(obj);
return item_data;
}
-/* Unfocused callback will show guidetext and hide X marked button. */
-static void __entry_without_layout_unfocused_cb(void *data, Evas_Object *obj,
- void *event_info)
-{
- GenGroupItemData *id = (GenGroupItemData *)data;
-
-
- setting_retm_if(data == NULL, "invalid parameter: data is NULL");
- setting_retm_if(id->item == NULL, "item is NULL");
-
- elm_object_item_signal_emit(id->item, "elm,state,eraser,hide", "");
- elm_object_item_signal_emit(id->item, "elm,state,rename,show", "");
-
-
-}
-
-/* Focused callback will show X marked button and hide guidetext. */
-static void __entry_without_layout_focused_cb(void *data, Evas_Object *obj,
- void *ei)
-{
- Evas_Object *acc = NULL;
- const char *txt = NULL;
- Eina_Stringshare *str = NULL;
-
-
- GenGroupItemData *id = (GenGroupItemData *)data;
- if (!elm_entry_is_empty(obj)) {
- elm_object_item_signal_emit(id->item, "elm,state,eraser,show",
- "");
- }
- elm_object_item_signal_emit(id->item, "elm,state,rename,hide", "");
-
- /* accessibiliy */
- acc = elm_object_item_access_object_get(id->item);
- if (!acc)
- return;
-
- txt = elm_entry_entry_get(obj);
- if (!txt || 0 == strlen(txt))
- txt = elm_object_part_text_get(obj, "elm.guide");
-
- /* Say entry focused */
- str = eina_stringshare_printf("%s, Edit Field, Keyboard opened", txt);
- elm_access_say((char *)str);
- eina_stringshare_del(str);
-
-}
-
-static void __entry_keydown(void *data, Evas *e, Evas_Object *obj,
- void *event_info)
-{
- Evas_Event_Key_Down *ev = NULL;
-
- retm_if(data == NULL, "Data parameter is NULL");
- retm_if(event_info == NULL, "event_info is NULL");
-
- ev = (Evas_Event_Key_Down *)event_info;
- /*it is for Japanese keyboard to fix N_SE-10719 */
- /*to disable the 'Enter' orginal function */
- if (safeStrCmp(ev->key, "KP_Enter") == 0
- || safeStrCmp(ev->key, "Return") == 0) {
- SETTING_TRACE("ENTER %s ev->key:%s", __FUNCTION__, ev->key);
- /*hide the eraser button */
- /*format like:xx<br/> */
- auto entry_str = remove_first_substring(
- elm_entry_entry_get(obj), "<br/>");
- elm_entry_entry_set(obj, entry_str);
- FREE(entry_str);
- elm_entry_cursor_end_set(obj);
-
- setting_hide_input_pannel_cb(obj);
- }
-}
-
-static void __entry_changed(void *data, Evas_Object *obj, void *event_info)
-{
- GenGroupItemData *list_item = NULL;
- Evas_Object *entry_container = NULL;
- retm_if(data == NULL, "Data parameter is NULL");
-
-
- list_item = (GenGroupItemData *)data;
- auto str = elm_entry_entry_get(obj);
- list_item->sub_desc = str ? str : std::string{};
- entry_container = elm_object_parent_widget_get(obj);
-
- if (entry_container) {
- if (elm_entry_is_empty(obj)) {
- elm_object_signal_emit(entry_container,
- "elm,state,guidetext,show", "elm");
- elm_object_signal_emit(entry_container,
- "elm,state,eraser,hide", "elm");
- } else {
- elm_object_signal_emit(entry_container,
- "elm,state,guidetext,hide", "elm");
- /*only do when entry is focused */
- if (elm_object_focus_get(obj)) {
- elm_object_signal_emit(entry_container,
- "elm,state,eraser,show", "elm");
- }
- }
- }
-}
-
-static Evas_Object *__add_entry_without_layout(
- GenGroupItemData *item_data, Evas_Object *parent)
-{
-
- Evas_Object *entry = NULL;
-
- /* resolve abnormal height issue */
- elm_genlist_mode_set(parent, ELM_LIST_COMPRESS);
-
- item_data->eo_check = entry = elm_entry_add(parent);
- elm_entry_single_line_set(entry, EINA_FALSE);
-
- evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- elm_entry_input_panel_layout_set(entry, item_data->input_type);
- elm_entry_prediction_allow_set(entry, FALSE);
- elm_entry_input_panel_return_key_type_set(entry,
- item_data->return_key_type);
- if (item_data->disable_auto_cap) {
- elm_entry_autocapital_type_set(entry,
- ELM_AUTOCAPITAL_TYPE_NONE);
- }
-
- evas_object_smart_callback_add(entry, "unfocused", __entry_without_layout_unfocused_cb, item_data);
-
- if (!item_data->sub_desc.empty()) {
- elm_entry_entry_set(entry, item_data->sub_desc.c_str());
- } else {
- elm_object_part_text_set(entry, "elm.guide", _("IDS_ST_BODY_TAP_TO_INSERT"));
- }
-
- /* for Setting App, All the entrys's context popup shouldn't be able */
- /* to insert images, text is the only one can be inserted. */
- elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
-
- if (item_data->chk_change_cb) {
- evas_object_smart_callback_add(entry, "changed",
- item_data->chk_change_cb, item_data);
- evas_object_smart_callback_add(entry, "preedit,changed",
- item_data->chk_change_cb, item_data);
- } else {
- /*default handle */
- evas_object_smart_callback_add(entry, "changed",
- __entry_changed, item_data);
- }
-
- evas_object_smart_callback_add(entry, "focused", __entry_without_layout_focused_cb, item_data);
-
- evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN, __entry_keydown, item_data);
-
- if (item_data->input_panel_disable_flag)
- elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
-
- return entry;
-}
-
-static Evas_Object *__add_entry_padding(GenGroupItemData *item_data,
- Evas_Object *parent)
-{
- Evas_Object *layout = NULL;
- Evas_Object *entry = NULL;
-
-
- retv_if(!item_data || !parent, NULL);
- layout = elm_layout_add(parent);
- elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "entry_layout");
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
- setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
-
- entry = __add_entry_without_layout(item_data, parent);
- elm_object_part_content_set(layout, "elm.swallow.content", entry);
- return layout;
-}
-
/**
* Create common style item with menu icon
*
#include <efl_extension.h>
#include <app.h>
-/**
- * Hide the input pannel
- *
- * @param[in] entry
- */
-void setting_hide_input_pannel_cb(Evas_Object *entry)
-{
- ret_if(entry == NULL);
- Ecore_IMF_Context *imf_context =
- (Ecore_IMF_Context *)elm_entry_imf_context_get(entry);
- if (imf_context)
- ecore_imf_context_input_panel_hide(imf_context);
-
- elm_object_focus_set(entry, EINA_FALSE);
- Evas_Object *entry_container = elm_object_parent_widget_get(entry);
- if (entry_container) {
- if (elm_entry_is_empty(entry))
- elm_object_signal_emit(entry_container,
- "elm,state,guidetext,show", "elm");
- elm_object_signal_emit(entry_container,
- "elm,state,eraser,hide", "elm");
- }
-}
-
Evas_Object *setting_create_button(
Evas_Object *parent,
const char *btn_str,
return button;
}
-static double _step_size_calculate(Evas_Object *obj, double min, double max)
-{
- double step = 0.0;
- int steps = 0;
-
- steps = max - min;
- if (steps)
- step = (1.0 / steps);
-
- return step;
-}
-
-/**
- * To create slider object of a genlist item
- *
- *@return a slider container object
- */
-Evas_Object *setting_create_5step_slider(
- Evas_Object *parent,
- Evas *evas,
- const char *l_swallow_path,
- const char *r_swallow_path,
- double value,
- bool indicator,
- double slider_min,
- double slider_max,
- SettingCallback slider_change_cb,
- SettingCallback slider_start_change_cb,
- SettingCallback slider_stop_change_cb,
- void *cb_data)
-{
- char path_str[PATH_MAX] = {'\0',};
- Evas_Object *layout = elm_layout_add(parent);
- char *app_res_path = app_get_resource_path();
-
- snprintf(path_str, PATH_MAX, "%sedje/font-slider.edj", app_res_path);
- free(app_res_path);
-
- int r = elm_layout_file_set(layout, path_str,
- "elm/slider/horizontal/music/soundalive");
-
- if (!r) {
- SETTING_TRACE_ERROR("elm_layout_add failed : %s",
- "elm/slider/horizontal/music/soundalive");
- evas_object_del(layout);
- return NULL;
- }
-
- /* "elm/slider/horizontal/default" */
- Evas_Object *slider = elm_slider_add(layout);
- retv_if(slider == NULL, NULL);
- elm_object_style_set(slider, "music/soundalive");
-
- elm_slider_indicator_format_set(slider, "%1.0f");
- elm_slider_indicator_show_set(slider, 5);
-
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
-
- double step = _step_size_calculate(slider, slider_min, slider_max);
- elm_slider_step_set(slider, step);
-
- SETTING_TRACE("slider_change_cb:%p", slider_change_cb);
-
- if (slider_change_cb) evas_object_smart_callback_add(
- slider, "changed", slider_change_cb, cb_data);
- if (slider_stop_change_cb) evas_object_smart_callback_add(
- slider, "slider,drag,stop", slider_stop_change_cb,
- cb_data);
- if (slider_start_change_cb) evas_object_smart_callback_add(
- slider, "slider,drag,start", slider_start_change_cb,
- cb_data);
-
- if (l_swallow_path) {
- Evas_Object *icon1 = elm_icon_add(slider);
- elm_image_file_set(icon1, l_swallow_path, NULL);
- evas_object_size_hint_aspect_set(
- icon1, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_object_content_set(slider, icon1);
- }
-
- if (r_swallow_path) {
- Evas_Object *icon2 = elm_icon_add(slider);
- elm_image_file_set(icon2, r_swallow_path, NULL);
- evas_object_size_hint_aspect_set(
- icon2, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_object_part_content_set(slider, "end", icon2);
- }
-
- elm_slider_min_max_set(slider, slider_min, slider_max);
- elm_slider_value_set(slider, value);
- return slider;
-}
-
-/**
- * To create slider object of a genlist item
- *
- *@return a slider container object
- */
-Evas_Object *setting_create_slider(
- Evas_Object *parent,
- GenGroupItemData *item_data)
-{
- /* "elm/slider/horizontal/default" */
- Evas_Object *slider = elm_slider_add(parent);
- retv_if(slider == NULL, NULL);
-
- /* for brightness slider */
- elm_slider_indicator_show_set(slider, EINA_FALSE);
-
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
-
- SETTING_TRACE("slider_change_cb:%p", item_data->chk_change_cb);
- if (item_data->chk_change_cb)
- evas_object_smart_callback_add(
- slider, "changed", item_data->chk_change_cb,
- item_data);
-
- if (!item_data->l_swallow_path.empty()) {
- Evas_Object *icon1 = elm_icon_add(slider);
- elm_image_file_set(icon1, item_data->l_swallow_path.c_str(), NULL);
- evas_object_size_hint_aspect_set(
- icon1, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_object_content_set(slider, icon1);
- }
-
- if (!item_data->r_swallow_path.empty()) {
- Evas_Object *icon2 = elm_icon_add(slider);
- elm_image_file_set(icon2, item_data->r_swallow_path.c_str(), NULL);
- evas_object_size_hint_aspect_set(
- icon2, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_object_part_content_set(slider, "end", icon2);
- }
-
- elm_slider_value_set(slider, item_data->chk_status);
- return slider;
-}
-
#define DEMO_STEP 0.8
typedef struct _setting_gif_data {
Ecore_Timer *update_timer;