1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
8 _item_selected_cb(void *data __UNUSED__,
9 Evas_Object *obj __UNUSED__,
12 Elm_Object_Item *mbe_it = event_info;
13 printf("selected item = %s\n", elm_object_item_text_get(mbe_it));
16 // "item,added" smart callback of multibuttonentry.
18 _item_added_cb(void *data __UNUSED__,
19 Evas_Object *obj __UNUSED__,
22 Elm_Object_Item *mbe_it = event_info;
23 printf("added item = %s\n", elm_object_item_text_get(mbe_it));
26 // "item,deleted" smart callback
28 _item_deleted_cb(void *data __UNUSED__,
29 Evas_Object *obj __UNUSED__,
30 void *event_info __UNUSED__)
32 printf("deleted item\n");
35 // "item,clicked" smart callback
37 _item_clicked_cb(void *data __UNUSED__,
38 Evas_Object *obj __UNUSED__,
41 Elm_Object_Item *mbe_it = event_info;
42 printf("clicked item = %s\n", elm_object_item_text_get(mbe_it));
46 _mbe_clicked_cb(void *data __UNUSED__,
48 void *event_info __UNUSED__ )
50 //Unset the multibuttonentry to contracted mode of single line
51 elm_multibuttonentry_shrink_mode_set(obj, 0);
52 printf("A multibuttonentry is clicked!\n");
54 entry = elm_multibuttonentry_entry_get(obj);
57 printf("%s entry is NULL\n", __func__);
60 Evas_Coord x, y, w, h;
61 Evas_Coord mbe_x, mbe_y, mbe_w, mbe_h;
62 evas_object_geometry_get(obj, &mbe_x, &mbe_y, &mbe_w, &mbe_h);
63 evas_object_geometry_get(entry, &x, &y, &w, &h);
64 printf("%s mbe x :%d y:%d w :%d h:%d\n", __func__, mbe_x, mbe_y, mbe_w, mbe_h);
65 printf("%s wd->entry x :%d y:%d w :%d h:%d\n", __func__, x, y, w, h);
69 _mbe_unfocused_cb(void *data __UNUSED__,
71 void *event_info __UNUSED__ )
73 //Set the multibuttonentry to contracted mode of single line
74 elm_multibuttonentry_shrink_mode_set(obj, 1);
75 printf("multibuttonentry unfocused!\n");
79 _mbe_focused_cb(void *data __UNUSED__,
80 Evas_Object *obj __UNUSED__,
81 void *event_info __UNUSED__ )
83 printf("multibuttonentry focused!\n");
86 // "expanded" smart callback
88 _expanded_cb(void *data __UNUSED__,
89 Evas_Object *obj __UNUSED__,
90 void *event_info __UNUSED__)
92 printf("expanded!\n");
95 // "contracted" smart callback
97 _shrank_cb(void *data __UNUSED__,
98 Evas_Object *obj __UNUSED__,
99 void *event_info __UNUSED__)
104 // "contracted,state,changed" smart callback
106 _shrink_state_changed_cb(void *data __UNUSED__,
107 Evas_Object *obj __UNUSED__,
108 void *event_info __UNUSED__)
110 printf("contracted state changed! \n");
113 // "item verified" confirm callback
115 _item_filter_cb(Evas_Object *obj __UNUSED__,
116 const char* item_label,
117 void *item_data __UNUSED__,
118 void *data __UNUSED__)
120 printf("%s, label: %s\n", __func__, item_label);
126 _button_clicked_cb(void *data __UNUSED__,
127 Evas_Object *obj __UNUSED__,
128 void *event_info __UNUSED__)
130 printf("%s button is clicked\n", __func__);
134 _add_multibuttonentry(Evas_Object *parent)
136 Evas_Object *scr = NULL;
137 Evas_Object *mbe = NULL;
140 scr = elm_scroller_add(parent);
141 elm_scroller_bounce_set(scr, EINA_FALSE, EINA_TRUE);
142 elm_scroller_policy_set(scr, ELM_SCROLLER_POLICY_OFF,ELM_SCROLLER_POLICY_AUTO);
143 evas_object_show(scr);
145 mbe = elm_multibuttonentry_add(parent);
146 elm_object_text_set(mbe, "To: ");
147 elm_multibuttonentry_guide_text_set(mbe, "Tap to add recipient");
148 evas_object_size_hint_weight_set(mbe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
149 evas_object_size_hint_align_set(mbe, EVAS_HINT_FILL, EVAS_HINT_FILL);
150 elm_object_content_set(scr, mbe);
152 // Add item verify callback to Multibuttonentry
153 elm_multibuttonentry_item_filter_append(mbe, _item_filter_cb, data);
155 // Add "item,selected","item,added", "item,deleted", "clicked", "unfocused",
156 // "expanded", "contracted" and "contracted,state,changed" smart callback
157 evas_object_smart_callback_add(mbe, "item,selected", _item_selected_cb, NULL);
158 evas_object_smart_callback_add(mbe, "item,added", _item_added_cb, NULL);
159 evas_object_smart_callback_add(mbe, "item,deleted", _item_deleted_cb, NULL);
160 evas_object_smart_callback_add(mbe, "item,clicked", _item_clicked_cb, NULL);
162 evas_object_smart_callback_add(mbe, "clicked", _mbe_clicked_cb, NULL);
163 evas_object_smart_callback_add(mbe, "focused", _mbe_focused_cb, NULL);
164 evas_object_smart_callback_add(mbe, "unfocused", _mbe_unfocused_cb, NULL);
166 evas_object_smart_callback_add(mbe, "expanded", _expanded_cb, NULL);
167 evas_object_smart_callback_add(mbe, "shrank", _shrank_cb, NULL);
168 evas_object_smart_callback_add(mbe, "shrink,state,changed", _shrink_state_changed_cb, NULL);
170 evas_object_resize(mbe, 220, 300);
171 elm_object_focus_set(mbe, EINA_TRUE);
177 _add_buttons(Evas_Object *parent)
179 Evas_Object *bx = NULL;
182 bx = elm_box_add(parent);
183 elm_box_horizontal_set(bx, EINA_TRUE);
184 elm_box_homogeneous_set(bx, EINA_TRUE);
186 btn = elm_button_add(parent);
187 evas_object_smart_callback_add(btn, "clicked", _button_clicked_cb, NULL);
188 elm_object_text_set(btn, "click");
189 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
190 evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
191 elm_box_pack_end(bx, btn);
192 evas_object_show(btn);
198 test_multibuttonentry(void *data __UNUSED__,
199 Evas_Object *obj __UNUSED__,
200 void *event_info __UNUSED__)
202 Evas_Object *win, *bg, *sc, *bx;
206 win = elm_win_add(NULL, "Multibuttonentry", ELM_WIN_BASIC);
207 elm_win_title_set(win, "Multibuttonentry");
208 elm_win_autodel_set(win, EINA_TRUE);
210 bg = elm_bg_add(win);
211 elm_win_resize_object_add(win, bg);
212 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
213 evas_object_show(bg);
215 ly = elm_layout_add(win);
216 snprintf(buf, sizeof(buf), "%s/objects/multibuttonentry.edj", elm_app_data_dir_get());
217 elm_layout_file_set(ly, buf, "multibuttonentry_test");
218 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
219 elm_win_resize_object_add(win, ly);
220 evas_object_show(ly);
222 sc = _add_multibuttonentry(ly);
223 elm_object_part_content_set(ly, "multibuttonentry", sc);
225 bx = _add_buttons(ly);
226 elm_object_part_content_set(ly, "box", bx);
228 evas_object_resize(win, 320, 480);
229 evas_object_show(win);
230 elm_object_focus_set(sc, EINA_TRUE);