forked from enlightenment/efl
From: Minseok Kim <minseok3.kim@samsung.com>
Subject: [E-devel] [E-deve] [Patch] Add new apis for editable set/get in multibuttonentry Typically multibuttonentry is used as a composer. But sometimes, Multibuttonentry can be used as a viewer. Currently there is no way to use multibuttonentry as non-editable viewer. So I added new APIs which are elm_multibuttonentry_editable_set/get(). If editable is true, entry in multibuttonentry is activated and user can compose item by pressing the return key. If not, entry is hidden and muttibuttonentry works as a non-editable viewer. SVN revision: 73223
This commit is contained in:
parent
55e3f1df07
commit
06be3e5ab6
|
@ -60,3 +60,4 @@ Davide Andreoli (davemds) <dave@gurumeditation.it>
|
||||||
Michal Pakula vel Rutka <m.pakula@samsung.com>
|
Michal Pakula vel Rutka <m.pakula@samsung.com>
|
||||||
Thiep Ha <thiep.ha@samsung.com>
|
Thiep Ha <thiep.ha@samsung.com>
|
||||||
Artem Popov <artem.popov@samsung.com>
|
Artem Popov <artem.popov@samsung.com>
|
||||||
|
Minseok Kim <minseok3.kim@samsung.com>
|
||||||
|
|
|
@ -259,3 +259,9 @@
|
||||||
2012-07-3 Cedric Bail
|
2012-07-3 Cedric Bail
|
||||||
|
|
||||||
* Initialize Emotion when necessary.
|
* Initialize Emotion when necessary.
|
||||||
|
|
||||||
|
2012-07-3 Minseok Kim
|
||||||
|
|
||||||
|
* Add elm_multibuttonentry_editable_set() and
|
||||||
|
elm_multibuttonentry_editable_get()
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,8 @@ struct _Widget_Data
|
||||||
Eina_Bool last_btn_select: 1;
|
Eina_Bool last_btn_select: 1;
|
||||||
Elm_Multibuttonentry_Item_Filter_Cb add_callback;
|
Elm_Multibuttonentry_Item_Filter_Cb add_callback;
|
||||||
void *add_callback_data;
|
void *add_callback_data;
|
||||||
|
|
||||||
|
Eina_Bool editable;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void _del_hook(Evas_Object *obj);
|
static void _del_hook(Evas_Object *obj);
|
||||||
|
@ -204,15 +206,18 @@ _on_focus_hook(void *data __UNUSED__, Evas_Object *obj)
|
||||||
|
|
||||||
if (elm_widget_focus_get(obj))
|
if (elm_widget_focus_get(obj))
|
||||||
{
|
{
|
||||||
if ((wd->selected_it))
|
if (wd->editable)
|
||||||
{
|
{
|
||||||
elm_entry_input_panel_show(wd->entry);
|
if ((wd->selected_it))
|
||||||
}
|
{
|
||||||
else if (((!wd->selected_it) || (!eina_list_count(wd->items))))
|
elm_entry_input_panel_show(wd->entry);
|
||||||
{
|
}
|
||||||
if (wd->entry) elm_entry_cursor_end_set(wd->entry);
|
else if (((!wd->selected_it) || (!eina_list_count(wd->items))))
|
||||||
_view_update(obj);
|
{
|
||||||
elm_entry_input_panel_show(wd->entry);
|
if (wd->entry) elm_entry_cursor_end_set(wd->entry);
|
||||||
|
_view_update(obj);
|
||||||
|
elm_entry_input_panel_show(wd->entry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
wd->focused = EINA_TRUE;
|
wd->focused = EINA_TRUE;
|
||||||
evas_object_smart_callback_call(obj, SIG_FOCUSED, NULL);
|
evas_object_smart_callback_call(obj, SIG_FOCUSED, NULL);
|
||||||
|
@ -269,8 +274,11 @@ _signal_mouse_clicked(void *data, Evas_Object *obj __UNUSED__, const char *emiss
|
||||||
wd->focused = EINA_TRUE;
|
wd->focused = EINA_TRUE;
|
||||||
_view_update(data);
|
_view_update(data);
|
||||||
|
|
||||||
elm_entry_input_panel_show(wd->entry);
|
if (wd->editable)
|
||||||
elm_object_focus_set(wd->entry, EINA_TRUE);
|
{
|
||||||
|
elm_entry_input_panel_show(wd->entry);
|
||||||
|
elm_object_focus_set(wd->entry, EINA_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
|
evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
|
||||||
}
|
}
|
||||||
|
@ -358,11 +366,17 @@ _set_vis_guidetext(Evas_Object *obj)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
evas_object_hide(wd->guidetext);
|
evas_object_hide(wd->guidetext);
|
||||||
elm_box_pack_end(wd->box, wd->entry);
|
|
||||||
evas_object_show(wd->entry);
|
if (wd->editable)
|
||||||
if (elm_widget_focus_get(obj) || wd->focused)
|
{
|
||||||
if (!wd->selected_it)
|
elm_box_pack_end(wd->box, wd->entry);
|
||||||
elm_object_focus_set(wd->entry, EINA_TRUE);
|
evas_object_show(wd->entry);
|
||||||
|
if (elm_widget_focus_get(obj) || wd->focused)
|
||||||
|
{
|
||||||
|
if (!wd->selected_it)
|
||||||
|
elm_object_focus_set(wd->entry, EINA_TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
wd->view_state = MULTIBUTTONENTRY_VIEW_ENTRY;
|
wd->view_state = MULTIBUTTONENTRY_VIEW_ENTRY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -776,7 +790,7 @@ _select_button(Evas_Object *obj, Evas_Object *btn)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
|
_change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
|
||||||
if (elm_widget_focus_get(obj))
|
if (elm_widget_focus_get(obj) && wd->editable)
|
||||||
elm_object_focus_set(wd->entry, EINA_TRUE);
|
elm_object_focus_set(wd->entry, EINA_TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -908,7 +922,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
|
||||||
{
|
{
|
||||||
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
|
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
|
||||||
_set_vis_guidetext(obj);
|
_set_vis_guidetext(obj);
|
||||||
if (wd->entry)
|
if (wd->entry && wd->editable)
|
||||||
elm_box_pack_before(wd->box, btn, wd->entry);
|
elm_box_pack_before(wd->box, btn, wd->entry);
|
||||||
else
|
else
|
||||||
elm_box_pack_end(wd->box, btn);
|
elm_box_pack_end(wd->box, btn);
|
||||||
|
@ -933,7 +947,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
|
||||||
{
|
{
|
||||||
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
|
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
|
||||||
_set_vis_guidetext(obj);
|
_set_vis_guidetext(obj);
|
||||||
if (wd->entry)
|
if (wd->entry && wd->editable)
|
||||||
elm_box_pack_before(wd->box, btn, wd->entry);
|
elm_box_pack_before(wd->box, btn, wd->entry);
|
||||||
else
|
else
|
||||||
elm_box_pack_end(wd->box, btn);
|
elm_box_pack_end(wd->box, btn);
|
||||||
|
@ -958,7 +972,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
|
||||||
{
|
{
|
||||||
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
|
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
|
||||||
_set_vis_guidetext(obj);
|
_set_vis_guidetext(obj);
|
||||||
if (wd->entry)
|
if (wd->entry && wd->editable)
|
||||||
elm_box_pack_before(wd->box, btn, wd->entry);
|
elm_box_pack_before(wd->box, btn, wd->entry);
|
||||||
else
|
else
|
||||||
elm_box_pack_end(wd->box, btn);
|
elm_box_pack_end(wd->box, btn);
|
||||||
|
@ -1011,7 +1025,7 @@ _evas_mbe_key_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
|
||||||
(strcmp(ev->keyname, "Delete") == 0)))
|
(strcmp(ev->keyname, "Delete") == 0)))
|
||||||
{
|
{
|
||||||
item = (Elm_Multibuttonentry_Item *)wd->selected_it;
|
item = (Elm_Multibuttonentry_Item *)wd->selected_it;
|
||||||
if (item)
|
if (item && wd->editable)
|
||||||
{
|
{
|
||||||
_del_button_item(item);
|
_del_button_item(item);
|
||||||
elm_widget_item_free(item);
|
elm_widget_item_free(item);
|
||||||
|
@ -1462,6 +1476,7 @@ elm_multibuttonentry_add(Evas_Object *parent)
|
||||||
wd->rect_for_end = NULL;
|
wd->rect_for_end = NULL;
|
||||||
wd->add_callback = NULL;
|
wd->add_callback = NULL;
|
||||||
wd->add_callback_data = NULL;
|
wd->add_callback_data = NULL;
|
||||||
|
wd->editable = EINA_TRUE;
|
||||||
|
|
||||||
evas_object_smart_callbacks_descriptions_set(obj, _signals);
|
evas_object_smart_callbacks_descriptions_set(obj, _signals);
|
||||||
|
|
||||||
|
@ -1508,6 +1523,36 @@ elm_multibuttonentry_expanded_set(Evas_Object *obj, Eina_Bool expanded)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
elm_multibuttonentry_editable_set(Evas_Object *obj, Eina_Bool editable)
|
||||||
|
{
|
||||||
|
ELM_CHECK_WIDTYPE(obj, widtype);
|
||||||
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
if (!wd) return;
|
||||||
|
if (wd->editable == editable) return;
|
||||||
|
wd->editable = editable;
|
||||||
|
|
||||||
|
if (wd->entry)
|
||||||
|
{
|
||||||
|
if (wd->editable)
|
||||||
|
evas_object_show(wd->entry);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
elm_entry_input_panel_hide(wd->entry);
|
||||||
|
evas_object_hide(wd->entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
elm_multibuttonentry_editable_get(const Evas_Object *obj)
|
||||||
|
{
|
||||||
|
ELM_CHECK_WIDTYPE(obj, widtype) -1;
|
||||||
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
if (!wd) return -1;
|
||||||
|
return wd->editable;
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Elm_Object_Item *
|
EAPI Elm_Object_Item *
|
||||||
elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data)
|
elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -313,6 +313,30 @@ EAPI void elm_multibuttonentry_item_filter_prepend(Evas_Ob
|
||||||
*/
|
*/
|
||||||
EAPI void elm_multibuttonentry_item_filter_remove(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, void *data);
|
EAPI void elm_multibuttonentry_item_filter_remove(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, void *data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets if the multibuttonentry is to be editable or not.
|
||||||
|
*
|
||||||
|
* @param obj The multibuttonentry object
|
||||||
|
* @param editable If EINA_TRUE, user can add/delete item in multibuttonentry, if not, the multibuttonentry is non-editable.
|
||||||
|
*
|
||||||
|
* @ingroup Multibuttonentry
|
||||||
|
*
|
||||||
|
* @since 1.1
|
||||||
|
*/
|
||||||
|
EAPI void elm_multibuttonentry_editable_set(Evas_Object *obj, Eina_Bool editable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets whether the multibuttonentry is editable or not.
|
||||||
|
*
|
||||||
|
* @param obj The multibuttonentry object
|
||||||
|
* @return EINA_TRUE if the multibuttonentry is editable by the user. EINA_FALSE if not.
|
||||||
|
*
|
||||||
|
* @ingroup Multibuttonentry
|
||||||
|
*
|
||||||
|
* @since 1.1
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_multibuttonentry_editable_get(const Evas_Object *obj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue