fixed plugin image size problem
[framework/uifw/elementary.git] / src / bin / test_multibuttonentry.c
1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 static void
8 _item_selected_cb(void *data __UNUSED__,
9                   Evas_Object *obj __UNUSED__,
10                   void *event_info)
11 {
12    Elm_Object_Item *mbe_it = event_info;
13    printf("selected item = %s\n", elm_object_item_text_get(mbe_it));
14 }
15
16 // "item,added" smart callback of multibuttonentry.
17 static void
18 _item_added_cb(void *data __UNUSED__,
19                Evas_Object *obj __UNUSED__,
20                void *event_info)
21 {
22    Elm_Object_Item *mbe_it = event_info;
23    printf("added item = %s\n", elm_object_item_text_get(mbe_it));
24 }
25
26 // "item,deleted" smart callback
27 static void
28 _item_deleted_cb(void *data __UNUSED__,
29                  Evas_Object *obj __UNUSED__,
30                  void *event_info __UNUSED__)
31 {
32    printf("deleted item\n");
33 }
34
35 // "item,clicked" smart callback
36 static void
37 _item_clicked_cb(void *data __UNUSED__,
38                  Evas_Object *obj __UNUSED__,
39                  void *event_info )
40 {
41    Elm_Object_Item *mbe_it = event_info;
42    printf("clicked item = %s\n", elm_object_item_text_get(mbe_it));
43 }
44
45 static void
46 _mbe_clicked_cb(void *data __UNUSED__,
47                 Evas_Object *obj,
48                 void *event_info __UNUSED__ )
49 {
50    //Unset the multibuttonentry to contracted mode of single line
51    elm_multibuttonentry_expanded_set(obj, EINA_TRUE);
52    printf("A multibuttonentry is clicked!\n");
53    Evas_Object *entry;
54    entry = elm_multibuttonentry_entry_get(obj);
55    if (!entry)
56      {
57         printf("%s entry is NULL\n", __func__);
58      }
59
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);
66 }
67
68 static void
69 _mbe_unfocused_cb(void *data __UNUSED__,
70                   Evas_Object *obj,
71                   void *event_info __UNUSED__ )
72 {
73    //Set the multibuttonentry to contracted mode of single line
74    elm_multibuttonentry_expanded_set(obj, EINA_FALSE);
75    printf("multibuttonentry unfocused!\n");
76 }
77
78 static void
79 _mbe_focused_cb(void *data __UNUSED__,
80                 Evas_Object *obj __UNUSED__,
81                 void *event_info __UNUSED__ )
82 {
83    printf("multibuttonentry focused!\n");
84 }
85
86 // "expanded" smart callback
87 static void
88 _expanded_cb(void *data __UNUSED__,
89              Evas_Object *obj __UNUSED__,
90              void *event_info __UNUSED__)
91 {
92    printf("expanded!\n");
93 }
94
95 // "contracted" smart callback
96 static void
97 _contracted_cb(void *data __UNUSED__,
98            Evas_Object *obj __UNUSED__,
99            void *event_info __UNUSED__)
100 {
101    printf("contracted!\n");
102 }
103
104 // "contracted,state,changed" smart callback
105 static void
106 _shrink_state_changed_cb(void *data __UNUSED__,
107                          Evas_Object *obj __UNUSED__,
108                          void *event_info __UNUSED__)
109 {
110    printf("contracted state changed! \n");
111 }
112
113 // "item verified" confirm callback
114 static Eina_Bool
115 _item_filter_cb(Evas_Object *obj __UNUSED__,
116                 const char* item_label,
117                 void *item_data __UNUSED__,
118                 void *data __UNUSED__)
119 {
120    printf("%s, label: %s\n", __func__, item_label);
121
122    return EINA_TRUE;
123 }
124
125 static void
126 _button_clicked_cb(void *data __UNUSED__,
127                    Evas_Object *obj __UNUSED__,
128                    void *event_info __UNUSED__)
129 {
130    printf("%s button is clicked\n", __func__);
131 }
132
133 static Evas_Object*
134 _add_multibuttonentry(Evas_Object *parent)
135 {
136    Evas_Object *scr = NULL;
137    Evas_Object *mbe = NULL;
138    void *data = NULL;
139
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);
144
145    mbe = elm_multibuttonentry_add(parent);
146    elm_object_text_set(mbe, "To: ");
147    elm_object_part_text_set(mbe, "guide", "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);
151
152    // Add item verify callback to Multibuttonentry
153    elm_multibuttonentry_item_filter_append(mbe, _item_filter_cb, data);
154
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);
161
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);
165
166    evas_object_smart_callback_add(mbe, "expanded", _expanded_cb, NULL);
167    evas_object_smart_callback_add(mbe, "contracted", _contracted_cb, NULL);
168    evas_object_smart_callback_add(mbe, "shrink,state,changed", _shrink_state_changed_cb, NULL);
169
170    evas_object_resize(mbe, 220, 300);
171    elm_object_focus_set(mbe, EINA_TRUE);
172
173    return scr;
174 }
175
176 static Evas_Object*
177 _add_buttons(Evas_Object *parent)
178 {
179    Evas_Object *bx = NULL;
180    Evas_Object *btn;
181
182    bx = elm_box_add(parent);
183    elm_box_horizontal_set(bx, EINA_TRUE);
184    elm_box_homogeneous_set(bx, EINA_TRUE);
185
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);
193
194    return bx;
195 }
196
197 void
198 test_multibuttonentry(void *data __UNUSED__,
199                       Evas_Object *obj __UNUSED__,
200                       void *event_info __UNUSED__)
201 {
202    Evas_Object *win, *sc, *bx;
203    Evas_Object *ly;
204    char buf[PATH_MAX];
205
206    win = elm_win_util_standard_add("multibuttonentry", "MultiButtonEntry");
207    elm_win_autodel_set(win, EINA_TRUE);
208
209    ly = elm_layout_add(win);
210    snprintf(buf, sizeof(buf), "%s/objects/multibuttonentry.edj", elm_app_data_dir_get());
211    elm_layout_file_set(ly, buf, "multibuttonentry_test");
212    evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
213    elm_win_resize_object_add(win, ly);
214    evas_object_show(ly);
215
216    sc = _add_multibuttonentry(ly);
217    elm_object_part_content_set(ly, "multibuttonentry", sc);
218
219    bx = _add_buttons(ly);
220    elm_object_part_content_set(ly, "box", bx);
221
222    evas_object_resize(win, 320, 480);
223    evas_object_show(win);
224    elm_object_focus_set(sc, EINA_TRUE);
225 }
226 #endif