fixed plugin image size problem
[framework/uifw/elementary.git] / src / bin / test_grid.c
1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 #ifndef ELM_LIB_QUICKLAUNCH
6 struct _Api_Data
7 {
8    Evas_Object *grid;
9    Evas_Object *child;
10 };
11 typedef struct _Api_Data Api_Data;
12
13 struct _api_data
14 {
15    unsigned int state;  /* What state we are testing       */
16    Api_Data data;
17 };
18 typedef struct _api_data api_data;
19
20 enum _api_state
21 {
22    GRID_PACK_SET,
23    GRID_UNPACK,
24    GRID_SIZE,
25    GRID_CLEAR,
26    API_STATE_LAST
27 };
28 typedef enum _api_state api_state;
29
30 static void
31 set_api_state(api_data *api)
32 {
33    Api_Data *dt = &api->data;
34    int w, h;
35
36    switch(api->state)
37      { /* Put all api-changes under switch */
38       case GRID_PACK_SET: /* 0 */
39          elm_grid_pack_set(dt->child, 5, 15, 60, 40);
40          break;
41
42       case GRID_UNPACK: /* 1 */
43          elm_grid_unpack(dt->grid, dt->child);
44          evas_object_del(dt->child);
45          break;
46
47       case GRID_SIZE: /* 2 */
48          elm_grid_size_get(dt->grid, &w, &h);
49          printf("size w=<%d> h=<%d>\n", w, h);
50          w = h = 100; /* grid size returns wrong values */
51          w += 30;
52          h += 10;
53
54          elm_grid_size_set(dt->grid, w, h);
55          break;
56
57       case GRID_CLEAR: /* 3 */
58          elm_grid_clear(dt->grid, EINA_TRUE);
59          break;
60
61       default:
62          return;
63      }
64 }
65
66 static void
67 _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
68 {  /* Will add here a SWITCH command containing code to modify test-object */
69    /* in accordance a->state value. */
70    api_data *a = data;
71    char str[128];
72
73    printf("clicked event on API Button: api_state=<%d>\n", a->state);
74    set_api_state(a);
75    a->state++;
76    sprintf(str, "Next API function (%u)", a->state);
77    elm_object_text_set(obj, str);
78    elm_object_disabled_set(obj, a->state == API_STATE_LAST);
79 }
80
81 static void
82 _ch_grid(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
83 {
84    int x, y, w, h;
85
86    elm_grid_pack_get(obj, &x, &y, &w, &h);
87    elm_grid_pack_set(obj, x - 1, y - 1, w + 2, h + 2);
88 }
89
90 static void
91 _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
92 {
93    free(data);
94 }
95
96 void
97 test_grid(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
98 {
99    Evas_Object *win, *gd, *bt, *rc, *en;
100
101    win = elm_win_util_standard_add("grid", "Grid");
102    elm_win_autodel_set(win, EINA_TRUE);
103    api_data *api = calloc(1, sizeof(api_data));
104
105    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
106
107    gd = elm_grid_add(win);
108    elm_grid_size_set(gd, 100, 100);
109    elm_win_resize_object_add(win, gd);
110    evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
111    api->data.grid = gd;
112    evas_object_show(gd);
113
114    en = elm_entry_add(win);
115    elm_entry_scrollable_set(en, EINA_TRUE);
116    elm_object_text_set(en, "Entry text");
117    elm_entry_single_line_set(en, EINA_TRUE);
118    elm_grid_pack(gd, en, 50, 10, 40, 10);
119    evas_object_show(en);
120
121    en = elm_entry_add(win);
122    elm_entry_scrollable_set(en, EINA_TRUE);
123    elm_object_text_set(en, "Entry text 2");
124    elm_entry_single_line_set(en, EINA_TRUE);
125    elm_grid_pack(gd, en, 60, 20, 30, 10);
126    evas_object_show(en);
127
128    bt = elm_button_add(win);
129    elm_object_text_set(bt, "Next API function");
130    evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
131    elm_grid_pack(gd, bt, 30, 0, 40, 10);
132    elm_object_disabled_set(bt, api->state == API_STATE_LAST);
133    evas_object_show(bt);
134
135    bt = elm_button_add(win);
136    elm_object_text_set(bt, "Button");
137    elm_grid_pack(gd, bt,  0,  0, 20, 20);
138    evas_object_show(bt);
139
140    bt = elm_button_add(win);
141    elm_object_text_set(bt, "Button");
142    elm_grid_pack(gd, bt, 10, 10, 40, 20);
143    api->data.child = bt;
144    evas_object_show(bt);
145
146    bt = elm_button_add(win);
147    elm_object_text_set(bt, "Button");
148    elm_grid_pack(gd, bt, 10, 30, 20, 50);
149    evas_object_show(bt);
150
151    bt = elm_button_add(win);
152    elm_object_text_set(bt, "Button");
153    elm_grid_pack(gd, bt, 80, 80, 20, 20);
154    evas_object_show(bt);
155
156    bt = elm_button_add(win);
157    elm_object_text_set(bt, "Change");
158    elm_grid_pack(gd, bt, 40, 40, 20, 20);
159    evas_object_smart_callback_add(bt, "clicked", _ch_grid, gd);
160    evas_object_show(bt);
161
162    rc = evas_object_rectangle_add(evas_object_evas_get(win));
163    evas_object_color_set(rc, 128, 0, 0, 128);
164    elm_grid_pack(gd, rc, 40, 70, 20, 10);
165    evas_object_show(rc);
166
167    rc = evas_object_rectangle_add(evas_object_evas_get(win));
168    evas_object_color_set(rc, 0, 128, 0, 128);
169    elm_grid_pack(gd, rc, 60, 70, 10, 10);
170    evas_object_show(rc);
171
172    rc = evas_object_rectangle_add(evas_object_evas_get(win));
173    evas_object_color_set(rc, 0, 0, 128, 128);
174    elm_grid_pack(gd, rc, 40, 80, 10, 10);
175    evas_object_show(rc);
176
177    rc = evas_object_rectangle_add(evas_object_evas_get(win));
178    evas_object_color_set(rc, 128, 0, 128, 128);
179    elm_grid_pack(gd, rc, 50, 80, 10, 10);
180    evas_object_show(rc);
181
182    rc = evas_object_rectangle_add(evas_object_evas_get(win));
183    evas_object_color_set(rc, 128, 64, 0, 128);
184    elm_grid_pack(gd, rc, 60, 80, 10, 10);
185    evas_object_show(rc);
186
187    evas_object_resize(win, 480, 480);
188    evas_object_show(win);
189 }
190 #endif