Revert a wrong commit. Un-wanted files are committed together.
[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, *bg, *gd, *bt, *rc, *en;
100
101    win = elm_win_add(NULL, "grid", ELM_WIN_BASIC);
102    elm_win_title_set(win, "Grid");
103    elm_win_autodel_set(win, EINA_TRUE);
104    api_data *api = calloc(1, sizeof(api_data));
105
106    bg = elm_bg_add(win);
107    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
108    elm_win_resize_object_add(win, bg);
109    evas_object_show(bg);
110    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
111
112    gd = elm_grid_add(win);
113    elm_grid_size_set(gd, 100, 100);
114    elm_win_resize_object_add(win, gd);
115    evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
116    api->data.grid = gd;
117    evas_object_show(gd);
118
119    en = elm_entry_add(win);
120    elm_entry_scrollable_set(en, EINA_TRUE);
121    elm_object_text_set(en, "Entry text");
122    elm_entry_single_line_set(en, EINA_TRUE);
123    elm_grid_pack(gd, en, 50, 10, 40, 10);
124    evas_object_show(en);
125
126    en = elm_entry_add(win);
127    elm_entry_scrollable_set(en, EINA_TRUE);
128    elm_object_text_set(en, "Entry text 2");
129    elm_entry_single_line_set(en, EINA_TRUE);
130    elm_grid_pack(gd, en, 60, 20, 30, 10);
131    evas_object_show(en);
132
133    bt = elm_button_add(win);
134    elm_object_text_set(bt, "Next API function");
135    evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
136    elm_grid_pack(gd, bt, 30, 0, 40, 10);
137    elm_object_disabled_set(bt, api->state == API_STATE_LAST);
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,  0,  0, 20, 20);
143    evas_object_show(bt);
144
145    bt = elm_button_add(win);
146    elm_object_text_set(bt, "Button");
147    elm_grid_pack(gd, bt, 10, 10, 40, 20);
148    api->data.child = bt;
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, 10, 30, 20, 50);
154    evas_object_show(bt);
155
156    bt = elm_button_add(win);
157    elm_object_text_set(bt, "Button");
158    elm_grid_pack(gd, bt, 80, 80, 20, 20);
159    evas_object_show(bt);
160
161    bt = elm_button_add(win);
162    elm_object_text_set(bt, "Change");
163    elm_grid_pack(gd, bt, 40, 40, 20, 20);
164    evas_object_smart_callback_add(bt, "clicked", _ch_grid, gd);
165    evas_object_show(bt);
166
167    rc = evas_object_rectangle_add(evas_object_evas_get(win));
168    evas_object_color_set(rc, 128, 0, 0, 128);
169    elm_grid_pack(gd, rc, 40, 70, 20, 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, 128, 0, 128);
174    elm_grid_pack(gd, rc, 60, 70, 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, 0, 0, 128, 128);
179    elm_grid_pack(gd, rc, 40, 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, 0, 128, 128);
184    elm_grid_pack(gd, rc, 50, 80, 10, 10);
185    evas_object_show(rc);
186
187    rc = evas_object_rectangle_add(evas_object_evas_get(win));
188    evas_object_color_set(rc, 128, 64, 0, 128);
189    elm_grid_pack(gd, rc, 60, 80, 10, 10);
190    evas_object_show(rc);
191
192    evas_object_resize(win, 480, 480);
193    evas_object_show(win);
194 }
195 #endif