efl

Форк
0
/
test_grid.c 
190 строк · 5.1 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4
#include <Elementary.h>
5

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 EINA_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 EINA_UNUSED, Evas_Object *obj, void *event_info EINA_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 EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
92
{
93
   free(data);
94
}
95

96
void
97
test_grid(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_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
   evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
110
   elm_win_resize_object_add(win, gd);
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 * elm_config_scale_get(),
188
                           480 * elm_config_scale_get());
189
   evas_object_show(win);
190
}
191

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.