static void _clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _changed(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _cancel_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
-static void _signal_reset_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _del_hook(Evas_Object *obj)
{
if (wd->cancel_btn)
edje_object_part_swallow(wd->base, "button_cancel", wd->cancel_btn);
- edje_object_signal_callback_add(wd->base, "elm,action,click", "", _signal_reset_clicked, obj);
-
edje_object_scale_set(wd->cancel_btn, elm_widget_scale_get(obj) * _elm_config->scale);
_sizing_eval(obj);
}
evas_object_size_hint_max_set(obj, maxw, maxh);
}
+static void
+_searchicon_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ if (!strcmp(source, "search_icon"))
+ evas_object_smart_callback_call(data, "searchsymbol,clicked", NULL);
+}
+
static void _clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
{
Widget_Data *wd = elm_widget_data_get(data);
evas_object_smart_callback_call(data, "cancel,clicked", NULL);
}
-static void _signal_reset_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
-{
- Widget_Data *wd = elm_widget_data_get(data);
- if (!wd) return;
- elm_entry_entry_set(elm_editfield_entry_get(wd->eb), NULL);
-}
-
/**
* Add a new searchbar to the parent
* @param parent The parent object
elm_editfield_eraser_set(wd->eb, EINA_TRUE);
evas_object_smart_callback_add(wd->eb, "clicked", _clicked, obj);
evas_object_smart_callback_add(elm_editfield_entry_get(wd->eb), "changed", _changed, obj);
+ edje_object_signal_callback_add(wd->base, "mouse,up,1", "search_icon", _searchicon_clicked, obj);
+
elm_widget_sub_object_add(obj, wd->eb);
// Add Button
wd->cancel_btn_ani_flag = EINA_FALSE;
- edje_object_signal_callback_add(wd->base, "elm,action,click", "", _signal_reset_clicked, obj);
-
elm_widget_resize_object_set(obj, wd->base);
_sizing_eval(obj);
}
/**
- * get the text of entry
+ * set the text of entry
*
- * @param obj The entry object
- * @return The title of entry
+ * @param obj The searchbar object
+ * @return void
*
- * @ingroup entry
+ * @ingroup Searchbar
*/
EAPI void elm_searchbar_text_set(Evas_Object *obj, const char *entry)
{
/**
* get the text of entry
*
- * @param obj The entry object
- * @return The title of entry
+ * @param obj The searchbar object
+ * @return string pointer of entry
*
- * @ingroup entry
+ * @ingroup Searchbar
*/
EAPI const char* elm_searchbar_text_get(Evas_Object *obj)
{
/**
* get the pointer of entry
*
- * @param obj The entry object
- * @return The title of entry
+ * @param obj The searchbar object
+ * @return the entry object
*
- * @ingroup entry
+ * @ingroup Searchbar
*/
EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj)
{
}
/**
- * get the pointer of entry
+ * set the cancel button animation flag
*
- * @param obj The entry object
- * @return The title of entry
+ * @param obj The searchbar object
+ * @param cancel_btn_ani_flag The flag of animating cancen button or not
+ * @return void
*
- * @ingroup entry
+ * @ingroup Searchbar
*/
EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag)
{
\r
struct _Widget_Data\r
{\r
- Evas_Object *win;\r
Evas_Object *parent;\r
Evas_Object *base;\r
- Evas_Coord_Rectangle win_rect;\r
- Evas_Coord_Rectangle base_rect;\r
- Evas_Coord handler_h;\r
- Evas_Coord drag;\r
- Evas_Coord_Point down_pos;\r
+ Evas_Object *handler;\r
+ Evas_Object *dragable_rect;\r
+ Elm_SlidingDrawer_Pos pos;\r
};\r
\r
static const char *widtype = NULL;\r
static void _del_hook(Evas_Object *obj);\r
static void _theme_hook(Evas_Object *obj);\r
static void _sizing_eval(Evas_Object *obj);\r
-static void _slidingdrawer_show(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
-static void _slidingdrawer_hide(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
static void _parent_resize(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
\r
static void\r
_theme_hook(Evas_Object *obj)\r
{\r
Widget_Data *wd = (Widget_Data *) elm_widget_data_get(obj);\r
- _elm_theme_object_set(obj, wd->base, "slidingdrawer", "base", elm_widget_style_get(obj));\r
+ elm_slidingdrawer_pos_set(obj, wd->pos);\r
}\r
\r
static void\r
}\r
\r
static void\r
-_slidingdrawer_show(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
-{\r
- Widget_Data *wd = (Widget_Data*) data;\r
- evas_object_show(wd->win);\r
-}\r
-\r
-static void\r
-_slidingdrawer_hide(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
-{\r
- Widget_Data *wd = (Widget_Data*) data;\r
- evas_object_hide(wd->win);\r
-}\r
-\r
-static void\r
_sizing_eval(Evas_Object *obj)\r
{\r
- Evas_Coord x, y, w, h;\r
Widget_Data *wd;\r
+ Evas_Coord x, y, w, h;\r
+ const Evas_Object *part;\r
\r
wd = elm_widget_data_get(obj);\r
\r
evas_object_move(obj, x, y);\r
evas_object_resize(obj, w, h);\r
\r
- /*\r
- ecore_x_window_geometry_get(ecore_x_window_root_get(ecore_x_window_focus_get()), &wd->win_rect.x, &wd->win_rect.y, &wd->win_rect.w, &wd->win_rect.h);\r
- edje_object_part_geometry_get(wd->base, "handler", NULL, NULL, NULL, &wd->handler_h);\r
- evas_object_resize(wd->win, wd->win_rect.w, wd->handler_h);\r
- evas_object_move(wd->win, 0, wd->win_rect.h - wd->handler_h);\r
- evas_object_resize(wd->base, wd->win_rect.w, wd->handler_h);\r
- wd->base_rect.y = 0;\r
- wd->base_rect.h = wd->handler_h;\r
- */\r
-}\r
-\r
-void\r
-_down(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
-{\r
- Evas_Event_Mouse_Down *ev;\r
- Widget_Data *wd = (Widget_Data*) data;\r
-\r
- ev = (Evas_Event_Mouse_Down *) event_info;\r
- wd = (Widget_Data*) data;\r
+ part = edje_object_part_object_get(wd->base, "elm.dragable.handler");\r
\r
- evas_object_move(wd->win, 0, 0 );\r
- evas_object_resize(wd->win, wd->win_rect.w, wd->win_rect.h);\r
- evas_object_move(wd->base, 0, wd->win_rect.h - wd->base_rect.h);\r
- wd->base_rect.y = wd->win_rect.h - wd->base_rect.h;\r
- wd->down_pos.x = ev->output.x;\r
- wd->down_pos.y = wd->win_rect.h - wd->base_rect.h + ev->output.y;\r
- fprintf( stderr, "DOWN! window - %d %d %d %d\n", 0, 0, wd->win_rect.w, wd->win_rect.h);\r
- fprintf( stderr, "DOWN! base - %d %d\n", 0, wd->win_rect.h - wd->base_rect.h );\r
+ if((wd->pos == ELM_SLIDINGDRAWER_TOP) || (wd->pos == ELM_SLIDINGDRAWER_BOTTOM)) {\r
+ edje_object_size_min_get(part, NULL, &h);\r
+ }else {\r
+ edje_object_size_min_get(part, &w, NULL);\r
+ }\r
\r
-}\r
-\r
-void\r
-_move(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
-{\r
- Evas_Event_Mouse_Move *ev;\r
- Widget_Data *wd;\r
-\r
- ev = (Evas_Event_Mouse_Move *) event_info;\r
-\r
- if(!ev->buttons)\r
- return ;\r
-\r
- wd = (Widget_Data*) data;\r
-\r
- wd->drag = ev->cur.output.y - wd->down_pos.y;\r
- evas_object_move(wd->base, 0, wd->base_rect.y + wd->drag );\r
- evas_object_resize(wd->base, wd->win_rect.w, wd->handler_h - wd->drag );\r
-}\r
-\r
-void\r
-_up(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
-{\r
- Evas_Event_Mouse_Up *ev;\r
- Widget_Data *wd;\r
- ev = (Evas_Event_Mouse_Up *) event_info;\r
-\r
- wd = (Widget_Data *) data;\r
-\r
- wd->base_rect.y = wd->base_rect.y + wd->drag;\r
- wd->base_rect.h = wd->handler_h - wd->drag;\r
- evas_object_move(wd->win, 0, wd->base_rect.y);\r
- evas_object_resize(wd->win, wd->win_rect.w, wd->base_rect.h);\r
- evas_object_move(wd->base, 0, 0);\r
- wd->drag = 0;\r
-// fprintf( stderr, "UP! window - %d %d %d %d\n", 0, wd->base_rect.y, wd->win_rect.w, wd->base_rect.h);\r
+ evas_object_size_hint_min_set(wd->handler, w, h);\r
}\r
\r
EAPI Evas_Object *\r
-elm_slidingdrawer_content_get(Evas_Object *obj)\r
+elm_slidingdrawer_content_unset(Evas_Object *obj)\r
{\r
ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
\r
return swallow;\r
}\r
\r
-\r
EAPI void\r
elm_slidingdrawer_content_set (Evas_Object *obj, Evas_Object *content)\r
{\r
edje_object_part_swallow (wd->base, "elm.swallow.content", content);\r
}\r
\r
+EAPI void\r
+elm_slidingdrawer_pos_set(Evas_Object *obj, Elm_SlidingDrawer_Pos pos)\r
+{\r
+ ELM_CHECK_WIDTYPE(obj, widtype);\r
+\r
+ Widget_Data *wd = elm_widget_data_get(obj);\r
+\r
+ switch(pos)\r
+ {\r
+ case ELM_SLIDINGDRAWER_BOTTOM:\r
+ _elm_theme_object_set(obj, wd->base, "slidingdrawer", "bottom", elm_widget_style_get(obj));\r
+ break;\r
+ case ELM_SLIDINGDRAWER_LEFT:\r
+ _elm_theme_object_set(obj, wd->base, "slidingdrawer", "left", elm_widget_style_get(obj));\r
+ break;\r
+ case ELM_SLIDINGDRAWER_RIGHT:\r
+ _elm_theme_object_set(obj, wd->base, "slidingdrawer", "right", elm_widget_style_get(obj));\r
+ break;\r
+ case ELM_SLIDINGDRAWER_TOP:\r
+ _elm_theme_object_set(obj, wd->base, "slidingdrawer", "top", elm_widget_style_get(obj));\r
+ break;\r
+ }\r
+\r
+ edje_object_part_drag_value_set(wd->base, "elm.dragable.handler", 0, 0);\r
+ wd->pos = pos;\r
+ _sizing_eval(obj);\r
+}\r
+\r
+EAPI void\r
+elm_slidingdrawer_max_drag_set(Evas_Object *obj, double dw, double dh)\r
+{\r
+ ELM_CHECK_WIDTYPE(obj, widtype);\r
+ Widget_Data *wd;\r
+ Evas_Coord w, h;\r
+\r
+ wd = elm_widget_data_get(obj);\r
+ evas_object_geometry_get(wd->parent, NULL, NULL, &w, &h);\r
+ evas_object_size_hint_max_set(wd->dragable_rect, ((double) w) * dw, ((double) h) * dh);\r
+}\r
+\r
\r
EAPI Evas_Object *\r
elm_slidingdrawer_add(Evas_Object *parent)\r
Widget_Data *wd;\r
\r
if(!parent)\r
- return ;\r
+ return NULL;\r
\r
wd = ELM_NEW(Widget_Data);\r
if(!wd) return NULL;\r
\r
//base\r
wd->base = edje_object_add(e);\r
- _elm_theme_object_set(obj, wd->base, "slidingdrawer", "base", "default");\r
+ _elm_theme_object_set(obj, wd->base, "slidingdrawer", "bottom", "default");\r
elm_widget_sub_object_add(obj, wd->base);\r
elm_widget_resize_object_set(obj, wd->base);\r
\r
+ //dragable_rect\r
+ wd->dragable_rect = evas_object_rectangle_add(e);\r
+ edje_object_part_swallow(wd->base, "elm.swallow.dragable_rect", wd->dragable_rect);\r
+\r
//handler\r
+ wd->handler = evas_object_rectangle_add(e);\r
+ evas_object_color_set(wd->handler, 0, 0, 0, 0);\r
+ edje_object_part_swallow(wd->base, "elm.dragable.handler", wd->handler);\r
+\r
evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, _parent_resize, obj);\r
- //evas_object_event_callback_add(handler, EVAS_CALLBACK_MOUSE_DOWN, _down, wd);\r
- //evas_object_event_callback_add(handler, EVAS_CALLBACK_MOUSE_MOVE, _move, wd);\r
- //evas_object_event_callback_add(handler, EVAS_CALLBACK_MOUSE_UP, _up, wd);\r
- //evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _slidingdrawer_show, wd);\r
- //evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _slidingdrawer_hide, wd);\r
\r
_sizing_eval(obj);\r
\r