d307b27281e0e6b2e1082358a2544c0eb8627b4c
[platform/upstream/elementary.git] / src / bin / test_clock.c
1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #include "test.h"
4 #endif
5 #include <Elementary.h>
6
7 struct _api_data
8 {
9    unsigned int state;  /* What state we are testing       */
10    Evas_Object *box;    /* Used in set_api_state           */
11 };
12 typedef struct _api_data api_data;
13
14 enum _api_state
15 {
16    CLOCK_HIDE_SEC,
17    CLOCK_SHOW_AM_PM,
18    CLOCK_SHOW_SEC,
19    CLOCK_EDIT_MIN,
20    CLOCK_EDIT_HOUR,
21    CLOCK_EDIT_ALL,
22    CLOCK_HIDE_AM_PM,
23    API_STATE_LAST
24 };
25 typedef enum _api_state api_state;
26
27 static const char* api_state_description[] = {
28    "Hide Sec",
29    "Show AM/PM",
30    "Show Sec",
31    "Edit Min",
32    "Edit Hour",
33    "Edit All",
34    "Hide AM/PM",
35    NULL
36 };
37
38 static void
39 set_api_state(api_data *api)
40 {
41    const Eina_List *items = elm_box_children_get(api->box);
42    Evas_Object *ck = eina_list_nth(items, 0);
43    if (!eina_list_count(items))
44      return;
45
46    /* use elm_box_children_get() to get list of children */
47    switch(api->state)
48      { /* Put all api-changes under switch */
49       case CLOCK_HIDE_SEC:
50         elm_clock_show_seconds_set(ck, EINA_FALSE);
51         break;
52
53       case CLOCK_SHOW_AM_PM:
54         elm_clock_show_am_pm_set(ck,  EINA_TRUE);
55         break;
56
57       case CLOCK_SHOW_SEC:
58         elm_clock_show_seconds_set(ck, EINA_TRUE);
59         break;
60
61       case CLOCK_EDIT_MIN:
62         elm_clock_edit_set(ck, EINA_TRUE);
63         elm_clock_edit_mode_set(ck, ELM_CLOCK_EDIT_MIN_DECIMAL | ELM_CLOCK_EDIT_MIN_UNIT);
64         break;
65
66       case CLOCK_EDIT_HOUR:
67         elm_clock_edit_set(ck, EINA_TRUE);
68         elm_clock_edit_mode_set(ck, ELM_CLOCK_EDIT_HOUR_DECIMAL | ELM_CLOCK_EDIT_HOUR_UNIT);
69         break;
70
71       case CLOCK_EDIT_ALL:
72         elm_clock_edit_set(ck, EINA_TRUE);
73         elm_clock_edit_mode_set(ck, ELM_CLOCK_EDIT_ALL);
74         break;
75
76       case CLOCK_HIDE_AM_PM:
77         elm_clock_show_am_pm_set(ck,  EINA_FALSE);
78         break;
79
80       case API_STATE_LAST:
81
82         break;
83       default:
84         return;
85      }
86 }
87
88 static void
89 _api_bt_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
90 {  /* Will add here a SWITCH command containing code to modify test-object */
91    /* in accordance a->state value. */
92    api_data *a = data;
93    char str[128];
94
95    printf("clicked event on API Button: api_state=<%s>\n", api_state_description[a->state]);
96    set_api_state(a);
97    a->state++;
98    sprintf(str, "Next API function (%u)", a->state);
99    elm_object_text_set(obj, str);
100    elm_object_disabled_set(obj, a->state == API_STATE_LAST);
101 }
102
103 static void
104 _cleanup_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
105 {
106    free(data);
107 }
108
109 void
110 test_clock(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
111 {
112    Evas_Object *win, *bx, *ck, *bt, *bxx;
113    unsigned int digedit;
114    api_data *api = calloc(1, sizeof(api_data));
115    if (!api) return;
116
117    win = elm_win_util_standard_add("clock", "Clock");
118    elm_win_autodel_set(win, EINA_TRUE);
119    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
120
121    bxx = elm_box_add(win);
122    evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
123    elm_win_resize_object_add(win, bxx);
124    evas_object_show(bxx);
125
126    bx = elm_box_add(bxx);
127    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
128    api->box = bx;
129    evas_object_show(bx);
130
131    bt = elm_button_add(bxx);
132    elm_object_text_set(bt, "Next API function");
133    evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
134    elm_box_pack_end(bxx, bt);
135    elm_object_disabled_set(bt, EINA_TRUE);
136    evas_object_show(bt);
137
138    elm_box_pack_end(bxx, bx);
139
140    ck = elm_clock_add(bx);
141    elm_box_pack_end(bx, ck);
142    evas_object_show(ck);
143
144    ck = elm_clock_add(bx);
145    elm_clock_show_am_pm_set(ck, EINA_TRUE);
146    elm_box_pack_end(bx, ck);
147    elm_clock_time_set(ck, 17, 25, 0);
148    evas_object_show(ck);
149
150    ck = elm_clock_add(bx);
151    elm_clock_show_seconds_set(ck, EINA_TRUE);
152    elm_box_pack_end(bx, ck);
153    evas_object_show(ck);
154
155    ck = elm_clock_add(bx);
156    elm_clock_show_seconds_set(ck, EINA_TRUE);
157    elm_clock_show_am_pm_set(ck, EINA_TRUE);
158    elm_box_pack_end(bx, ck);
159    elm_clock_time_set(ck, 11, 59, 57);
160    evas_object_show(ck);
161
162    ck = elm_clock_add(bx);
163    elm_clock_show_seconds_set(ck, EINA_TRUE);
164    elm_clock_show_am_pm_set(ck, EINA_FALSE);
165    elm_clock_time_set(ck, 23, 59, 57);
166    elm_box_pack_end(bx, ck);
167    evas_object_show(ck);
168
169    ck = elm_clock_add(bx);
170    elm_clock_edit_set(ck, EINA_TRUE);
171    elm_clock_show_seconds_set(ck, EINA_TRUE);
172    elm_clock_show_am_pm_set(ck, EINA_TRUE);
173    elm_clock_time_set(ck, 10, 11, 12);
174    elm_box_pack_end(bx, ck);
175    evas_object_show(ck);
176
177    ck = elm_clock_add(bx);
178    elm_clock_show_seconds_set(ck, EINA_TRUE);
179    elm_clock_edit_set(ck, EINA_TRUE);
180    digedit = ELM_CLOCK_EDIT_HOUR_UNIT | ELM_CLOCK_EDIT_MIN_UNIT | ELM_CLOCK_EDIT_SEC_UNIT;
181    elm_clock_edit_mode_set(ck, digedit);
182    elm_box_pack_end(bx, ck);
183    elm_clock_time_set(ck, 0, 0, 0);
184    evas_object_show(ck);
185
186    evas_object_show(win);
187 }
188
189 static void
190 _edit_bt_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
191 {
192    Evas_Object *ck = data;
193
194    if (!elm_clock_edit_get(ck))
195      {
196         elm_object_text_set(obj, "Done");
197         elm_clock_edit_set(ck, EINA_TRUE);
198         return;
199      }
200    elm_object_text_set(obj, "Edit");
201    elm_clock_edit_set(ck, EINA_FALSE);
202 }
203
204 static void
205 _hmode_bt_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
206 {
207    Evas_Object *ck = data;
208
209    if (!elm_clock_show_am_pm_get(ck))
210      {
211         elm_object_text_set(obj, "24h");
212         elm_clock_show_am_pm_set(ck, EINA_TRUE);
213         return;
214      }
215    elm_object_text_set(obj, "12h");
216    elm_clock_show_am_pm_set(ck, EINA_FALSE);
217 }
218
219 static void
220 _pause_resume_bt_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
221 {
222    Evas_Object *ck = data;
223
224    if (!elm_clock_pause_get(ck))
225      {
226         elm_object_text_set(obj, "Resume");
227         elm_clock_pause_set(ck, EINA_TRUE);
228         return;
229      }
230    elm_object_text_set(obj, "Pause");
231    elm_clock_pause_set(ck, EINA_FALSE);
232 }
233
234 void
235 test_clock_edit(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
236 {
237    Evas_Object *win, *bx, *hbx, *ck, *bt, *bxx;
238    api_data *api = calloc(1, sizeof(api_data));
239    if (!api) return;
240
241    win = elm_win_util_standard_add("clock-edit", "Clock Edit");
242    elm_win_autodel_set(win, EINA_TRUE);
243    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
244
245    bxx = elm_box_add(win);
246    evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
247    elm_win_resize_object_add(win, bxx);
248    evas_object_show(bxx);
249
250    bx = elm_box_add(bxx);
251    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
252    api->box = bx;
253    evas_object_show(bx);
254
255    bt = elm_button_add(bxx);
256    elm_object_text_set(bt, "Next API function");
257    evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
258    elm_box_pack_end(bxx, bt);
259    elm_object_disabled_set(bt, api->state == API_STATE_LAST);
260    evas_object_show(bt);
261
262    elm_box_pack_end(bxx, bx);
263
264    ck = elm_clock_add(bx);
265    elm_clock_time_set(ck, 0, 15, 3);
266    elm_clock_edit_mode_set(ck, ELM_CLOCK_EDIT_DEFAULT);
267    elm_clock_show_seconds_set(ck, EINA_TRUE);
268    elm_clock_show_am_pm_set(ck, EINA_TRUE);
269    elm_box_pack_end(bx, ck);
270    evas_object_show(ck);
271
272    hbx = elm_box_add(bx);
273    evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
274    elm_box_horizontal_set(hbx, EINA_TRUE);
275    elm_box_pack_end(bx, hbx);
276    evas_object_show(hbx);
277
278    bt = elm_button_add(hbx);
279    elm_object_text_set(bt, "Edit");
280    evas_object_smart_callback_add(bt, "clicked", _edit_bt_clicked, ck);
281    elm_box_pack_end(hbx, bt);
282    evas_object_show(bt);
283
284    bt = elm_button_add(hbx);
285    elm_object_text_set(bt, "24h");
286    evas_object_smart_callback_add(bt, "clicked", _hmode_bt_clicked, ck);
287    elm_box_pack_end(hbx, bt);
288    evas_object_show(bt);
289
290    evas_object_show(win);
291 }
292
293 void
294 test_clock_edit2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
295 {
296    Evas_Object *win, *bx, *ck, *lb;
297
298    win = elm_win_util_standard_add("clock-edit2", "Clock Edit 2");
299    elm_win_autodel_set(win, EINA_TRUE);
300
301    bx = elm_box_add(win);
302    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
303    elm_win_resize_object_add(win, bx);
304    evas_object_show(bx);
305
306    lb = elm_label_add(win);
307    elm_object_text_set(lb,
308                        "Check time updates for a user mouse button hold."
309                        );
310    evas_object_size_hint_weight_set(lb, 0.0, 0.0);
311    evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
312    elm_box_pack_end(bx, lb);
313    evas_object_show(lb);
314
315    ck = elm_clock_add(win);
316    elm_clock_show_seconds_set(ck, 1);
317    elm_clock_edit_set(ck, EINA_TRUE);
318    elm_clock_first_interval_set(ck, 0.4);
319    elm_box_pack_end(bx, ck);
320    evas_object_show(ck);
321
322    ck = elm_clock_add(win);
323    elm_clock_show_seconds_set(ck, 1);
324    elm_clock_edit_set(ck, EINA_TRUE);
325    elm_clock_first_interval_set(ck, 1.2);
326    elm_box_pack_end(bx, ck);
327    evas_object_show(ck);
328
329    ck = elm_clock_add(win);
330    elm_clock_show_seconds_set(ck, 1);
331    elm_clock_edit_set(ck, EINA_TRUE);
332    elm_clock_first_interval_set(ck, 2.0);
333    elm_box_pack_end(bx, ck);
334    evas_object_show(ck);
335
336    evas_object_show(win);
337 }
338
339 void
340 test_clock_pause(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
341 {
342    Evas_Object *win, *bx, *ck, *bt;
343
344    win = elm_win_util_standard_add("clock4", "Clock4");
345    elm_win_autodel_set(win, EINA_TRUE);
346
347    bx = elm_box_add(win);
348    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
349    elm_win_resize_object_add(win, bx);
350    evas_object_show(bx);
351
352    ck = elm_clock_add(win);
353    elm_clock_show_seconds_set(ck, EINA_TRUE);
354    elm_clock_time_set(ck, 0, 0, 0);
355    elm_box_pack_end(bx, ck);
356    evas_object_show(ck);
357
358    bt = elm_button_add(win);
359    elm_object_text_set(bt, "Pause");
360    evas_object_smart_callback_add(bt, "clicked", _pause_resume_bt_clicked, ck);
361    elm_box_pack_end(bx, bt);
362    evas_object_show(bt);
363
364    evas_object_show(win);
365 }