*\r
* This is a Multibuttonentry.\r
*/\r
- \r
-#define MAX_STR 256 \r
-#define MAX_W_BTN 200 \r
-#define MIN_W_ENTRY 20 \r
+\r
+#define MAX_STR 256\r
+#define MAX_W_BTN 200\r
+#define MIN_W_ENTRY 20\r
\r
typedef enum _Multibuttonentry_Pos\r
{\r
MULTIBUTONENTRY_BUTTON_STATE_NUM\r
} Multibuttonentry_Button_State;\r
\r
-struct _Multibuttonentry_Item \r
+struct _Multibuttonentry_Item\r
{\r
Evas_Object *multibuttonentry;\r
Evas_Object *button;\r
Evas_Object *label;\r
void *data;\r
Evas_Coord vw, rw; // vw: visual width, real width\r
- Eina_Bool visible: 1; \r
+ Eina_Bool visible: 1;\r
};\r
\r
typedef struct _Widget_Data Widget_Data;\r
-struct _Widget_Data \r
+struct _Widget_Data\r
{\r
Evas_Object *base;\r
Evas_Object *box;\r
int n_str;\r
\r
Evas_Coord w_box, h_box;\r
- int contracted; \r
- Eina_Bool focused: 1; \r
+ int contracted;\r
+ Eina_Bool focused: 1;\r
};\r
\r
static const char *widtype = NULL;\r
Widget_Data *wd = elm_widget_data_get(obj);\r
if (!wd) return;\r
\r
- if (wd->items) \r
+ if (wd->items)\r
{\r
Elm_Multibuttonentry_Item *item;\r
- EINA_LIST_FREE(wd->items, item) \r
+ EINA_LIST_FREE(wd->items, item)\r
{\r
_del_button_obj(obj, item->button);\r
free(item);\r
if (wd->entry) evas_object_del (wd->entry);\r
if (wd->label) evas_object_del (wd->label);\r
if (wd->guidetext) evas_object_del (wd->guidetext);\r
- if (wd->end) evas_object_del (wd->end); \r
+ if (wd->end) evas_object_del (wd->end);\r
}\r
\r
static void\r
Eina_List *l;\r
Elm_Multibuttonentry_Item *item;\r
if (!wd) return;\r
- \r
+\r
_elm_theme_object_set(obj, wd->base, "multibuttonentry", "base", elm_widget_style_get(obj));\r
if (wd->box) edje_object_part_swallow (wd->base, "box.swallow", wd->box);\r
edje_object_scale_set(wd->base, elm_widget_scale_get(obj) * _elm_config->scale);\r
\r
- EINA_LIST_FOREACH(wd->items, l, item) \r
+ EINA_LIST_FOREACH(wd->items, l, item)\r
{\r
- if (item->button) \r
+ if (item->button)\r
_elm_theme_object_set (obj, item->button, "multibuttonentry", "btn", elm_widget_style_get (obj));\r
- if (item->label) \r
+ if (item->label)\r
edje_object_part_swallow (item->button, "elm.label", item->label);\r
edje_object_scale_set(item->button, elm_widget_scale_get(obj) * _elm_config->scale);\r
}\r
\r
evas_object_size_hint_min_get(wd->box, &minw, &minh);\r
edje_object_part_geometry_get(wd->base, "top.left.pad", NULL, NULL, &left, &top);\r
- edje_object_part_geometry_get(wd->base, "bottom.right.pad", NULL, NULL, &right, &bottom); \r
+ edje_object_part_geometry_get(wd->base, "bottom.right.pad", NULL, NULL, &right, &bottom);\r
\r
minw += (left + right);\r
minh += (top + bottom);\r
- \r
+\r
evas_object_size_hint_min_set(obj, minw, minh);\r
}\r
\r
-static void \r
+static void\r
_signal_mouse_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)\r
{\r
Widget_Data *wd = elm_widget_data_get(data);\r
evas_object_smart_callback_call(data, "clicked", NULL);\r
}\r
\r
-static void \r
+static void\r
_changed_size_hint_cb(void *data, Evas *evas, Evas_Object *obj, void *event)\r
{\r
Evas_Object *eo = (Evas_Object *)data;\r
_sizing_eval(eo);\r
}\r
\r
-static void \r
+static void\r
_resize_cb(void *data, Evas *evas, Evas_Object *obj, void *event)\r
{\r
Widget_Data *wd = elm_widget_data_get(data);\r
elm_scrolled_entry_entry_set(wd->entry, "");\r
\r
if (contracted == 1)\r
- { \r
+ {\r
Evas_Coord w=0, w_tmp=0;\r
- \r
+\r
// unpack all items and entry\r
- EINA_LIST_FOREACH(wd->items, l, item) \r
+ EINA_LIST_FOREACH(wd->items, l, item)\r
{\r
- if (item) \r
+ if (item)\r
{\r
elm_box_unpack(wd->box, item->button);\r
evas_object_hide(item->button);\r
elm_box_unpack(wd->box, wd->entry);\r
evas_object_hide(wd->entry);\r
\r
- \r
+\r
// pack buttons only 1line\r
w = wd->w_box;\r
\r
if (wd->label) evas_object_size_hint_min_get (wd->label, &w_tmp, NULL);\r
w -= w_tmp;\r
\r
- // w -= w_btns \r
- Eina_Bool on_contracted = EINA_FALSE; \r
+ // w -= w_btns\r
+ Eina_Bool on_contracted = EINA_FALSE;\r
item = NULL;\r
int count = eina_list_count(wd->items);\r
- EINA_LIST_FOREACH(wd->items, l, item) \r
+ EINA_LIST_FOREACH(wd->items, l, item)\r
{\r
- if (item) \r
+ if (item)\r
{\r
int w_label_count = 0;\r
char buf[MAX_STR] = {0,};\r
elm_box_pack_end(wd->box, item->button);\r
evas_object_show(item->button);\r
item->visible = EINA_TRUE;\r
- \r
+\r
w -= item->vw;\r
count--;\r
- \r
+\r
if (count > 0)\r
{\r
snprintf(buf, sizeof(buf), "... + %d", count);\r
\r
on_contracted = EINA_TRUE;\r
wd->contracted = contracted;\r
- evas_object_smart_callback_call(obj, "contracted,state,changed", wd->contracted);\r
+ evas_object_smart_callback_call(obj, "contracted,state,changed", (void *)wd->contracted);\r
\r
break;\r
}\r
\r
// pack remain btns\r
item = NULL;\r
- EINA_LIST_FOREACH(wd->items, l, item) \r
+ EINA_LIST_FOREACH(wd->items, l, item)\r
{\r
if (item && !item->visible)\r
{\r
elm_object_focus(wd->entry);\r
\r
wd->contracted = contracted;\r
- evas_object_smart_callback_call(obj, "contracted,state,changed", wd->contracted);\r
+ evas_object_smart_callback_call(obj, "contracted,state,changed", (void *)wd->contracted);\r
}\r
}\r
\r
-static void \r
+static void\r
_view_update(Evas_Object *obj)\r
{\r
Evas_Coord room = 0, w = 0;\r
- Widget_Data *wd = elm_widget_data_get(obj); \r
+ Widget_Data *wd = elm_widget_data_get(obj);\r
if (!wd || !wd->box || !wd->entry || !(wd->w_box > 0)) return;\r
\r
room = wd->w_box;\r
room -= MIN_W_ENTRY;\r
- \r
+\r
if (wd->rect)\r
- {\r
- evas_object_size_hint_min_get (wd->rect, &w, NULL);\r
+ {\r
+ evas_object_size_hint_min_get (wd->rect, &w, NULL);\r
room -= w;\r
}\r
- \r
+\r
// update label\r
if (wd->label)\r
- {\r
+ {\r
elm_box_unpack(wd->box, wd->label);\r
- if (wd->rect) elm_box_pack_after (wd->box, wd->label, wd->rect);\r
+ if (wd->rect) elm_box_pack_after (wd->box, wd->label, wd->rect);\r
else elm_box_pack_start(wd->box, wd->label);\r
evas_object_show(wd->label);\r
- elm_label_wrap_width_set(wd->label, room); \r
+ elm_label_wrap_width_set(wd->label, room);\r
evas_object_size_hint_min_get(wd->label, &w, NULL);\r
room -= w;\r
- }\r
+ }\r
\r
if (wd->guidetext)\r
- evas_object_size_hint_min_set(wd->guidetext, room, 0); \r
- \r
+ evas_object_size_hint_min_set(wd->guidetext, room, 0);\r
+\r
// update buttons in contracted mode\r
if (wd->contracted == 1)\r
{\r
if (wd->contracted != 1)\r
{\r
if (wd->guidetext && !eina_list_count (wd->items) && !elm_widget_focus_get(obj) && !wd->focused)\r
- { \r
+ {\r
elm_box_unpack(wd->box, wd->guidetext);\r
elm_box_unpack(wd->box, wd->entry);\r
evas_object_hide(wd->entry);\r
- elm_box_pack_end(wd->box, wd->guidetext); \r
+ elm_box_pack_end(wd->box, wd->guidetext);\r
evas_object_show(wd->guidetext);\r
}\r
else\r
Elm_Multibuttonentry_Item *item = NULL;\r
if (!wd) return;\r
\r
- if (wd->current) \r
- item = eina_list_data_get(wd->current);\r
+ if (wd->current)\r
+ item = eina_list_data_get(wd->current);\r
\r
if (item && item->button)\r
{\r
\r
// change the state of previous button to "default"\r
_change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);\r
- \r
+\r
// change the current\r
- EINA_LIST_FOREACH(wd->items, l, item) \r
+ EINA_LIST_FOREACH(wd->items, l, item)\r
{\r
if (item->button == btn)\r
{\r
\r
// chagne the state of current button to "focused"\r
_change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_SELECTED);\r
- \r
+\r
}\r
\r
static void\r
strncpy(str, elm_scrolled_entry_entry_get(wd->entry), MAX_STR);\r
str[MAX_STR - 1]= 0;\r
\r
- if (strlen (str)) \r
+ if (strlen (str))\r
_add_button(data, str);\r
\r
_change_current_button(data, obj);\r
\r
if (wd->current)\r
- if(item = eina_list_data_get(wd->current))\r
+ if((item = eina_list_data_get(wd->current)) != NULL)\r
evas_object_smart_callback_call(data, "item,clicked", item);\r
}\r
\r
Widget_Data *wd = elm_widget_data_get(obj);\r
Evas_Object *label;\r
if (!wd || !btn) return;\r
- \r
+\r
if (btn)\r
- { \r
+ {\r
// del label\r
label = edje_object_part_swallow_get(btn, "elm.label");\r
edje_object_part_unswallow(btn, label);\r
- evas_object_del(label); \r
+ evas_object_del(label);\r
\r
// del button\r
- evas_object_del(btn); \r
+ evas_object_del(btn);\r
}\r
}\r
\r
wd = elm_widget_data_get(obj);\r
if (!wd) return;\r
\r
- EINA_LIST_FOREACH(wd->items, l, _item) \r
+ EINA_LIST_FOREACH(wd->items, l, _item)\r
{\r
- if (_item == item) \r
+ if (_item == item)\r
{\r
wd->items = eina_list_remove(wd->items, _item);\r
elm_box_unpack(wd->box, _item->button);\r
evas_object_smart_callback_call(obj, "item,deleted", _item);\r
_del_button_obj(obj, _item->button);\r
free(_item);\r
- if (wd->current == l) \r
- wd->current = NULL;\r
+ if (wd->current == l)\r
+ wd->current = NULL;\r
break;\r
}\r
}\r
if (!wd->current)\r
{\r
// let the last button focus\r
- item = eina_list_data_get(eina_list_last(wd->items)); \r
- if (item->button) _change_current_button (obj, item->button); \r
+ item = eina_list_data_get(eina_list_last(wd->items));\r
+ if (item->button) _change_current_button (obj, item->button);\r
}\r
else\r
{\r
item = eina_list_data_get(wd->current);\r
if (item)\r
- { \r
+ {\r
_del_button_item(item);\r
}\r
}\r
evas_object_size_hint_min_get(label, &w_label, &h_label);\r
edje_object_part_geometry_get(btn, "elm.base", NULL, NULL, NULL, &h_btn);\r
edje_object_part_geometry_get(btn, "left.padding", NULL, NULL, &padding_outer, NULL);\r
- edje_object_part_geometry_get(btn, "left.inner.padding", NULL, NULL, &padding_inner, NULL); \r
- w_btn = w_label + 2*padding_outer + 2*padding_inner; \r
+ edje_object_part_geometry_get(btn, "left.inner.padding", NULL, NULL, &padding_inner, NULL);\r
+ w_btn = w_label + 2*padding_outer + 2*padding_inner;\r
\r
rw = w_btn;\r
- vw =(MAX_W_BTN < w_btn) ? MAX_W_BTN : w_btn; \r
+ vw =(MAX_W_BTN < w_btn) ? MAX_W_BTN : w_btn;\r
\r
//resize btn and label\r
evas_object_resize(btn, vw, h_btn);\r
evas_object_size_hint_min_set(btn, vw, h_btn);\r
if ( (rw != vw) && (vw - 2*padding_outer - 2*padding_inner >=0))\r
{\r
- evas_object_resize(label, vw - 2*padding_outer - 2*padding_inner, h_label); \r
- elm_label_wrap_width_set(label, vw - 2*padding_outer - 2*padding_inner ); \r
+ evas_object_resize(label, vw - 2*padding_outer - 2*padding_inner, h_label);\r
+ elm_label_wrap_width_set(label, vw - 2*padding_outer - 2*padding_inner );\r
}\r
\r
if(realw) *realw = rw;\r
\r
// append item list\r
item = ELM_NEW(Elm_Multibuttonentry_Item);\r
- if (item) \r
+ if (item)\r
{\r
Evas_Coord rw, vw;\r
_resize_button(btn, label, &rw, &vw);\r
item->label = label;\r
item->data = data;\r
item->rw = rw;\r
- item->vw = vw; \r
+ item->vw = vw;\r
item->visible = EINA_TRUE;\r
- \r
+\r
switch(pos)\r
{\r
case MULTIBUTONENTRY_POS_START:\r
break;\r
case MULTIBUTONENTRY_POS_BEFORE:\r
if (reference)\r
- { \r
+ {\r
wd->items = eina_list_prepend_relative(wd->items, item, reference);\r
elm_box_pack_before(wd->box, btn, reference->button);\r
_view_update(obj);\r
break;\r
case MULTIBUTONENTRY_POS_AFTER:\r
if (reference)\r
- { \r
+ {\r
wd->items = eina_list_append_relative(wd->items, item, reference);\r
elm_box_pack_after(wd->box, btn, reference->button);\r
- _view_update(obj); }\r
+ _view_update(obj);\r
+ }\r
else\r
- { \r
+ {\r
wd->items = eina_list_append(wd->items, item);\r
_view_update(obj);\r
elm_box_pack_before(wd->box, btn, wd->entry);\r
{\r
Widget_Data *wd = elm_widget_data_get(data);\r
Evas_Event_Key_Up *ev = (Evas_Event_Key_Up *) event_info;\r
- static char str[MAX_STR]; \r
+ static char str[MAX_STR];\r
if (!wd || !wd->base || !wd->box) return;\r
- \r
+\r
strncpy(str, elm_scrolled_entry_entry_get(wd->entry), MAX_STR);\r
str[MAX_STR - 1]= 0;\r
\r
if ( (wd->n_str == 0) && (strcmp (str, "") == 0) && ( (strcmp (ev->keyname, "BackSpace") == 0)|| (strcmp (ev->keyname, "BackSpace (") == 0)))\r
- { \r
- _del_button(data); \r
+ {\r
+ _del_button(data);\r
}\r
else if ( (strcmp (str, "") != 0) && (strcmp (ev->keyname, "KP_Enter") == 0 ||strcmp (ev->keyname, "Return") == 0 ))\r
{\r
//\r
}\r
\r
- wd->n_str = strlen(str); \r
+ wd->n_str = strlen(str);\r
}\r
\r
-static void \r
+static void\r
_view_init(Evas_Object *obj)\r
-{ \r
- Widget_Data *wd = elm_widget_data_get(obj); \r
+{\r
+ Widget_Data *wd = elm_widget_data_get(obj);\r
if (!wd) return;\r
- \r
+\r
if (!wd->box)\r
{\r
if (! (wd->box = elm_box_add (obj))) return;\r
elm_box_homogenous_set(wd->box, EINA_FALSE);\r
edje_object_part_swallow(wd->base, "box.swallow", wd->box);\r
}\r
- \r
+\r
if (!wd->rect)\r
{\r
Evas_Coord w, h;\r
_elm_theme_object_set(obj, wd->rect, "multibuttonentry", "rect", elm_widget_style_get(obj));\r
elm_widget_sub_object_add(obj, wd->rect);\r
edje_object_part_geometry_get(wd->rect, "elm.base", NULL, NULL, &w, &h);\r
- evas_object_size_hint_min_set(wd->rect, w, h); \r
+ evas_object_size_hint_min_set(wd->rect, w, h);\r
evas_object_size_hint_weight_set(wd->rect, 0.0, EVAS_HINT_EXPAND);\r
evas_object_size_hint_align_set(wd->rect, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
if (wd->box) elm_box_pack_start (wd->box, wd->rect);\r
evas_object_show(wd->rect);\r
}\r
- \r
+\r
if (!wd->entry)\r
{\r
if (! (wd->entry = elm_scrolled_entry_add (obj))) return;\r
\r
wd = ELM_NEW(Widget_Data);\r
e = evas_object_evas_get(parent);\r
- if (!e) return NULL; \r
+ if (!e) return NULL;\r
obj = elm_widget_add(e);\r
ELM_SET_WIDTYPE(widtype, "multibuttonentry");\r
elm_widget_type_set(obj, "multibuttonentry");\r
elm_widget_del_hook_set(obj, _del_hook);\r
elm_widget_theme_hook_set(obj, _theme_hook);\r
elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL);\r
- elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); \r
- \r
+ elm_widget_signal_emit_hook_set(obj, _signal_emit_hook);\r
+\r
wd->base = edje_object_add(e);\r
_elm_theme_object_set(obj, wd->base, "multibuttonentry", "base", "default");\r
elm_widget_resize_object_set(obj, wd->base);\r
- \r
+\r
wd->contracted = 0;\r
wd->focused = EINA_FALSE;\r
wd->n_str = 0;\r
- \r
+\r
_view_init(obj);\r
_event_init(obj);\r
\r
ELM_CHECK_WIDTYPE(obj, widtype);\r
Widget_Data *wd = elm_widget_data_get(obj);\r
if (!wd || !label) return;\r
- _set_label(obj, label); \r
+ _set_label(obj, label);\r
}\r
\r
/**\r
ELM_CHECK_WIDTYPE(obj, widtype);\r
Widget_Data *wd = elm_widget_data_get(obj);\r
if (!wd || !guidetext) return;\r
- _set_guidetext(obj, guidetext); \r
+ _set_guidetext(obj, guidetext);\r
}\r
\r
/**\r
* Get the value of contracted state.\r
*\r
* @param obj The multibuttonentry object\r
- * @param the value of contracted state. \r
+ * @param the value of contracted state.\r
*\r
* @ingroup Multibuttonentry\r
*/\r
* Set/Unset the multibuttonentry to contracted state of single line\r
*\r
* @param obj The multibuttonentry object\r
- * @param the value of contracted state. set this to 1 to set the multibuttonentry to contracted state of single line. set this to 0 to unset the contracted state. \r
+ * @param the value of contracted state. set this to 1 to set the multibuttonentry to contracted state of single line. set this to 0 to unset the contracted state.\r
*\r
* @ingroup Multibuttonentry\r
*/\r
}\r
\r
/**\r
- * Prepend a new item to the multibuttonentry \r
+ * Prepend a new item to the multibuttonentry\r
*\r
* @param obj The multibuttonentry object\r
* @param label The label of new item\r
Elm_Multibuttonentry_Item *item;\r
if (!wd || !label) return NULL;\r
item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_START, NULL, data);\r
- return item; \r
+ return item;\r
}\r
\r
/**\r
- * Append a new item to the multibuttonentry \r
+ * Append a new item to the multibuttonentry\r
*\r
* @param obj The multibuttonentry object\r
* @param label The label of new item\r
Elm_Multibuttonentry_Item *item;\r
if (!wd || !label) return NULL;\r
item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_END, NULL, data);\r
- return item; \r
+ return item;\r
}\r
\r
/**\r
Elm_Multibuttonentry_Item *item;\r
if (!wd || !label) return NULL;\r
item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_BEFORE, before, data);\r
- return item; \r
+ return item;\r
}\r
\r
/**\r
Elm_Multibuttonentry_Item *item;\r
if (!wd || !label) return NULL;\r
item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_AFTER, after, data);\r
- return item; \r
+ return item;\r
}\r
\r
/**\r
wd = elm_widget_data_get(item->multibuttonentry);\r
if (!wd) return;\r
\r
- EINA_LIST_FOREACH(wd->items, l, _item) \r
+ EINA_LIST_FOREACH(wd->items, l, _item)\r
{\r
- if (_item == item) \r
+ if (_item == item)\r
{\r
_change_current_button(item->multibuttonentry, item->button);\r
}\r
ELM_CHECK_WIDTYPE(obj, widtype);\r
Widget_Data *wd = elm_widget_data_get(obj);\r
if (!wd) return;\r
- \r
+\r
if (wd->contracted == 1)\r
_contracted_state_set(obj, 0);\r
- \r
+\r
if (wd->items)\r
{\r
Elm_Multibuttonentry_Item *item;\r
- EINA_LIST_FREE(wd->items, item) \r
+ EINA_LIST_FREE(wd->items, item)\r
{\r
elm_box_unpack(wd->box, item->button);\r
_del_button_obj(obj, item->button);\r
{\r
Widget_Data *wd;\r
Eina_List *l;\r
- Elm_Multibuttonentry_Item *_item; \r
+ Elm_Multibuttonentry_Item *_item;\r
if (!item || !str) return;\r
ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype);\r
wd = elm_widget_data_get(item->multibuttonentry);\r
if (!wd || !wd->items) return;\r
\r
EINA_LIST_FOREACH(wd->items, l, _item)\r
- if (_item == item) \r
+ if (_item == item)\r
{\r
Evas_Object *label = edje_object_part_swallow_get(_item->button, "elm.label");\r
if (label) elm_label_label_set (label, str);\r
if (!wd || !wd->items) return NULL;\r
\r
EINA_LIST_FOREACH(wd->items, l, _item)\r
- if (_item == item) \r
+ if (_item == item)\r
{\r
l = eina_list_prev(l);\r
if (!l) return NULL;\r
if (!wd || !wd->items) return NULL;\r
\r
EINA_LIST_FOREACH(wd->items, l, _item)\r
- if (_item == item) \r
+ if (_item == item)\r
{\r
l = eina_list_next(l);\r
if (!l) return NULL;\r