X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Flib%2Felc_fileselector_entry.c;h=7c78e2aea8053f3251ef3e626ccaddc5e5fdcb93;hb=207aaa411ece9ffa2aef12e807a4c74fa3b8bc22;hp=653ee490c392c88aa12a543d97b08290fb63db38;hpb=17c8f89c9f83e8174ffac8ac4eb21398d0c5552b;p=framework%2Fuifw%2Felementary.git diff --git a/src/lib/elc_fileselector_entry.c b/src/lib/elc_fileselector_entry.c index 653ee49..7c78e2a 100644 --- a/src/lib/elc_fileselector_entry.c +++ b/src/lib/elc_fileselector_entry.c @@ -8,6 +8,7 @@ struct _Widget_Data Evas_Object *edje; Evas_Object *button; Evas_Object *entry; + char *path; }; static const char *widtype = NULL; @@ -62,6 +63,8 @@ SIG_FWD(SELECTION_CUT) SIG_FWD(UNPRESSED) #undef SIG_FWD +static void _del_pre_hook(Evas_Object *obj); +static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl); static void @@ -69,7 +72,12 @@ _FILE_CHOSEN_fwd(void *data, Evas_Object *obj __UNUSED__, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); const char *file = event_info; - elm_entry_entry_set(wd->entry, file); + char *s; + + s = elm_entry_utf8_to_markup(file); + if (!s) return; + elm_object_text_set(wd->entry, s); + free(s); evas_object_smart_callback_call(data, SIG_FILE_CHOSEN, event_info); } @@ -77,15 +85,27 @@ static void _ACTIVATED_fwd(void *data, Evas_Object *obj __UNUSED__, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); - const char *file = elm_entry_entry_get(wd->entry); + const char *file = elm_object_text_get(wd->entry); elm_fileselector_button_path_set(wd->button, file); evas_object_smart_callback_call(data, SIG_ACTIVATED, event_info); } static void +_del_pre_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + evas_object_event_callback_del_full + (wd->button, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); + evas_object_event_callback_del_full + (wd->entry, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); +} + +static void _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->path) free(wd->path); free(wd); } @@ -220,6 +240,36 @@ _elm_fileselector_entry_button_label_get(const Evas_Object *obj, const char *ite return elm_object_text_get(wd->button); } +static void +_content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (part && strcmp(part, "button icon")) return; + elm_object_part_content_set(wd->button, NULL, content); +} + +static Evas_Object * +_content_get_hook(const Evas_Object *obj, const char *part) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + if (part && strcmp(part, "button icon")) return NULL; + return elm_object_part_content_get(wd->button, NULL); +} + +static Evas_Object * +_content_unset_hook(Evas_Object *obj, const char *part) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + if (part && strcmp(part, "button icon")) return NULL; + return elm_object_part_content_unset(wd->button, NULL); +} + EAPI Evas_Object * elm_fileselector_entry_add(Evas_Object *parent) { @@ -233,6 +283,7 @@ elm_fileselector_entry_add(Evas_Object *parent) elm_widget_type_set(obj, "fileselector_entry"); elm_widget_sub_object_add(parent, obj); elm_widget_data_set(obj, wd); + elm_widget_del_pre_hook_set(obj, _del_pre_hook); elm_widget_del_hook_set(obj, _del_hook); elm_widget_disable_hook_set(obj, _disable_hook); elm_widget_focus_next_hook_set(obj, _elm_fileselector_entry_focus_next_hook); @@ -240,6 +291,9 @@ elm_fileselector_entry_add(Evas_Object *parent) elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_text_set_hook_set(obj, _elm_fileselector_entry_button_label_set); elm_widget_text_get_hook_set(obj, _elm_fileselector_entry_button_label_get); + elm_widget_content_set_hook_set(obj, _content_set_hook); + elm_widget_content_get_hook_set(obj, _content_get_hook); + elm_widget_content_unset_hook_set(obj, _content_unset_hook); wd->edje = edje_object_add(e); _elm_theme_object_set(obj, wd->edje, "fileselector_entry", "base", "default"); @@ -299,18 +353,6 @@ elm_fileselector_entry_add(Evas_Object *parent) } EAPI void -elm_fileselector_entry_button_label_set(Evas_Object *obj, const char *label) -{ - _elm_fileselector_entry_button_label_set(obj, NULL, label); -} - -EAPI const char * -elm_fileselector_entry_button_label_get(const Evas_Object *obj) -{ - return _elm_fileselector_entry_button_label_get(obj, NULL); -} - -EAPI void elm_fileselector_entry_selected_set(Evas_Object *obj, const char *path) { ELM_CHECK_WIDTYPE(obj, widtype); @@ -369,9 +411,16 @@ elm_fileselector_entry_path_set(Evas_Object *obj, const char *path) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); + char *s; + if (!wd) return; elm_fileselector_button_path_set(wd->button, path); - elm_entry_entry_set(wd->entry, path); + s = elm_entry_utf8_to_markup(path); + if (s) + { + elm_object_text_set(wd->entry, s); + free(s); + } } EAPI const char * @@ -379,8 +428,11 @@ elm_fileselector_entry_path_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; - return elm_entry_entry_get(wd->entry); + if (wd->path) free(wd->path); + wd->path = elm_entry_markup_to_utf8(elm_object_text_get(wd->entry)); + return wd->path; } EAPI void @@ -454,30 +506,3 @@ elm_fileselector_entry_inwin_mode_get(const Evas_Object *obj) if (!wd) return EINA_FALSE; return elm_fileselector_button_inwin_mode_get(wd->button); } - -EAPI void -elm_fileselector_entry_button_icon_set(Evas_Object *obj, Evas_Object *icon) -{ - ELM_CHECK_WIDTYPE(obj, widtype); - Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; - elm_fileselector_button_icon_set(wd->button, icon); -} - -EAPI Evas_Object * -elm_fileselector_entry_button_icon_get(const Evas_Object *obj) -{ - ELM_CHECK_WIDTYPE(obj, widtype) NULL; - Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return NULL; - return elm_fileselector_button_icon_get(wd->button); -} - -EAPI Evas_Object * -elm_fileselector_entry_button_icon_unset(Evas_Object *obj) -{ - ELM_CHECK_WIDTYPE(obj, widtype) NULL; - Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return NULL; - return elm_fileselector_button_icon_unset(wd->button); -}