elementary/naviframe - fixed incorrect argument
[framework/uifw/elementary.git] / src / bin / test_clock.c
1 #include <Elementary.h>
2 #ifdef HAVE_CONFIG_H
3 # include "elementary_config.h"
4 #include "test.h"
5 #endif
6 #ifndef ELM_LIB_QUICKLAUNCH
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_EDIT_ALL_ARMY,
23    API_STATE_LAST
24 };
25 typedef enum _api_state api_state;
26
27 static void
28 set_api_state(api_data *api)
29 {
30    const Eina_List *items = elm_box_children_get(api->box);
31    Evas_Object *ck = eina_list_nth(items, 0);
32    if(!eina_list_count(items))
33      return;
34
35    /* use elm_box_children_get() to get list of children */
36    switch(api->state)
37      { /* Put all api-changes under switch */
38         case CLOCK_HIDE_SEC:
39            elm_clock_show_seconds_set(ck, EINA_FALSE);
40            break;
41
42           case CLOCK_SHOW_AM_PM:
43            elm_clock_show_am_pm_set(ck,  EINA_TRUE);
44            break;
45
46           case CLOCK_SHOW_SEC:
47            elm_clock_show_seconds_set(ck, EINA_TRUE);
48            break;
49
50           case CLOCK_EDIT_MIN:
51            elm_clock_edit_set(ck, ELM_CLOCK_EDIT_MIN_DECIMAL | ELM_CLOCK_EDIT_MIN_UNIT);
52            break;
53
54           case CLOCK_EDIT_HOUR:
55            elm_clock_edit_set(ck, ELM_CLOCK_EDIT_DEFAULT);
56            elm_clock_edit_set(ck, ELM_CLOCK_EDIT_HOUR_DECIMAL | ELM_CLOCK_EDIT_HOUR_UNIT);
57            break;
58
59           case CLOCK_EDIT_ALL:
60            elm_clock_edit_set(ck, ELM_CLOCK_EDIT_ALL);
61            break;
62
63           case CLOCK_EDIT_ALL_ARMY:
64            elm_clock_show_am_pm_set(ck,  EINA_FALSE);
65            break;
66
67       case API_STATE_LAST:
68
69          break;
70       default:
71          return;
72      }
73 }
74
75 static void
76 _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
77 {  /* Will add here a SWITCH command containing code to modify test-object */
78    /* in accordance a->state value. */
79    api_data *a = data;
80    char str[128];
81
82    printf("clicked event on API Button: api_state=<%d>\n", a->state);
83    set_api_state(a);
84    a->state++;
85    sprintf(str, "Next API function (%u)", a->state);
86    elm_object_text_set(obj, str);
87    elm_object_disabled_set(obj, a->state == API_STATE_LAST);
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_clock(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
98 {
99    Evas_Object *win, *bg, *bx, *ck, *bt, *bxx;
100    unsigned int digedit;
101    api_data *api = calloc(1, sizeof(api_data));
102
103    win = elm_win_add(NULL, "clock", ELM_WIN_BASIC);
104    elm_win_title_set(win, "Clock");
105    elm_win_autodel_set(win, EINA_TRUE);
106    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
107
108    bg = elm_bg_add(win);
109    elm_win_resize_object_add(win, bg);
110    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
111    evas_object_show(bg);
112
113    bxx = elm_box_add(win);
114    elm_win_resize_object_add(win, bxx);
115    evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
116    evas_object_show(bxx);
117
118    bx = elm_box_add(win);
119    elm_win_resize_object_add(win, bx);
120    api->box = bx;
121    evas_object_show(bx);
122
123    bt = elm_button_add(win);
124    elm_object_text_set(bt, "Next API function");
125    evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
126    elm_box_pack_end(bxx, bt);
127    elm_object_disabled_set(bt, EINA_TRUE);
128    evas_object_show(bt);
129
130    elm_box_pack_end(bxx, bx);
131
132    ck = elm_clock_add(win);
133    elm_box_pack_end(bx, ck);
134    evas_object_show(ck);
135
136    ck = elm_clock_add(win);
137    elm_clock_show_am_pm_set(ck, EINA_TRUE);
138    elm_box_pack_end(bx, ck);
139    elm_clock_time_set(ck, 17, 25, 0);
140    evas_object_show(ck);
141
142    ck = elm_clock_add(win);
143    elm_clock_show_seconds_set(ck, EINA_TRUE);
144    elm_box_pack_end(bx, ck);
145    evas_object_show(ck);
146
147    ck = elm_clock_add(win);
148    elm_clock_show_seconds_set(ck, EINA_TRUE);
149    elm_clock_show_am_pm_set(ck, EINA_TRUE);
150    elm_box_pack_end(bx, ck);
151    elm_clock_time_set(ck, 11, 59, 57);
152    evas_object_show(ck);
153
154    ck = elm_clock_add(win);
155    elm_clock_show_seconds_set(ck, EINA_TRUE);
156    elm_clock_show_am_pm_set(ck, EINA_FALSE);
157    elm_clock_time_set(ck, 23, 59, 57);
158    elm_box_pack_end(bx, ck);
159    evas_object_show(ck);
160
161    ck = elm_clock_add(win);
162    elm_clock_edit_set(ck, EINA_TRUE);
163    elm_clock_show_seconds_set(ck, EINA_TRUE);
164    elm_clock_show_am_pm_set(ck, EINA_TRUE);
165    elm_clock_time_set(ck, 10, 11, 12);
166    elm_box_pack_end(bx, ck);
167    evas_object_show(ck);
168
169    ck = elm_clock_add(win);
170    elm_clock_show_seconds_set(ck, EINA_TRUE);
171    elm_clock_edit_set(ck, EINA_TRUE);
172    digedit = ELM_CLOCK_EDIT_HOUR_UNIT | ELM_CLOCK_EDIT_MIN_UNIT | ELM_CLOCK_EDIT_SEC_UNIT;
173    elm_clock_edit_mode_set(ck, digedit);
174    elm_box_pack_end(bx, ck);
175    elm_clock_time_set(ck, 0, 0, 0);
176    evas_object_show(ck);
177
178    evas_object_show(win);
179 }
180
181 static void
182 _edit_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
183 {
184    Evas_Object *ck = data;
185
186    if (!elm_clock_edit_get(ck))
187      {
188         elm_object_text_set(obj, "Done");
189         elm_clock_edit_set(ck, EINA_TRUE);
190         return;
191      }
192    elm_object_text_set(obj, "Edit");
193    elm_clock_edit_set(ck, EINA_FALSE);
194 }
195
196 static void
197 _hmode_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
198 {
199    Evas_Object *ck = data;
200
201    if (!elm_clock_show_am_pm_get(ck))
202      {
203         elm_object_text_set(obj, "24h");
204         elm_clock_show_am_pm_set(ck, EINA_TRUE);
205         return;
206      }
207    elm_object_text_set(obj, "12h");
208    elm_clock_show_am_pm_set(ck, EINA_FALSE);
209 }
210
211 void
212 test_clock2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
213 {
214    Evas_Object *win, *bg, *bx, *hbx, *ck, *bt, *bxx;
215    api_data *api = calloc(1, sizeof(api_data));
216
217    win = elm_win_add(NULL, "clock2", ELM_WIN_BASIC);
218    elm_win_title_set(win, "Clock 2");
219    elm_win_autodel_set(win, EINA_TRUE);
220    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
221
222    bg = elm_bg_add(win);
223    elm_win_resize_object_add(win, bg);
224    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
225    evas_object_show(bg);
226
227    bxx = elm_box_add(win);
228    elm_win_resize_object_add(win, bxx);
229    evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
230    evas_object_show(bxx);
231
232    bx = elm_box_add(win);
233    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
234    elm_win_resize_object_add(win, bx);
235    api->box = bx;
236    evas_object_show(bx);
237
238    bt = elm_button_add(win);
239    elm_object_text_set(bt, "Next API function");
240    evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
241    elm_box_pack_end(bxx, bt);
242    elm_object_disabled_set(bt, api->state == API_STATE_LAST);
243    evas_object_show(bt);
244
245    elm_box_pack_end(bxx, bx);
246
247    ck = elm_clock_add(win);
248    elm_clock_time_set(ck, 0, 15, 3);
249    elm_clock_edit_mode_set(ck, ELM_CLOCK_EDIT_DEFAULT);
250    elm_clock_show_seconds_set(ck, EINA_TRUE);
251    elm_clock_show_am_pm_set(ck, EINA_TRUE);
252    elm_box_pack_end(bx, ck);
253    evas_object_show(ck);
254
255    hbx = elm_box_add(win);
256    evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
257    elm_box_horizontal_set(hbx, EINA_TRUE);
258    elm_box_pack_end(bx, hbx);
259    evas_object_show(hbx);
260
261    bt = elm_button_add(win);
262    elm_object_text_set(bt, "Edit");
263    evas_object_smart_callback_add(bt, "clicked", _edit_bt_clicked, ck);
264    elm_box_pack_end(hbx, bt);
265    evas_object_show(bt);
266
267    bt = elm_button_add(win);
268    elm_object_text_set(bt, "24h");
269    evas_object_smart_callback_add(bt, "clicked", _hmode_bt_clicked, ck);
270    elm_box_pack_end(hbx, bt);
271    evas_object_show(bt);
272
273    evas_object_show(win);
274 }
275
276 void
277 test_clock3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
278 {
279    Evas_Object *win, *bg, *bx, *ck, *lb;
280
281    win = elm_win_add(NULL, "clock3", ELM_WIN_BASIC);
282    elm_win_title_set(win, "Clock 3");
283    elm_win_autodel_set(win, EINA_TRUE);
284
285    bg = elm_bg_add(win);
286    elm_win_resize_object_add(win, bg);
287    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
288    evas_object_show(bg);
289
290    bx = elm_box_add(win);
291    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
292    elm_win_resize_object_add(win, bx);
293    evas_object_show(bx);
294
295    lb = elm_label_add(win);
296    elm_object_text_set(lb,
297                        "Check time updates for an user mouse button hold."
298                        );
299    evas_object_size_hint_weight_set(lb, 0.0, 0.0);
300    evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
301    elm_box_pack_end(bx, lb);
302    evas_object_show(lb);
303
304    ck = elm_clock_add(win);
305    elm_clock_show_seconds_set(ck, 1);
306    elm_clock_edit_set(ck, EINA_TRUE);
307    elm_clock_first_interval_set(ck, 0.4);
308    elm_box_pack_end(bx, ck);
309    evas_object_show(ck);
310
311    ck = elm_clock_add(win);
312    elm_clock_show_seconds_set(ck, 1);
313    elm_clock_edit_set(ck, EINA_TRUE);
314    elm_clock_first_interval_set(ck, 1.2);
315    elm_box_pack_end(bx, ck);
316    evas_object_show(ck);
317
318    ck = elm_clock_add(win);
319    elm_clock_show_seconds_set(ck, 1);
320    elm_clock_edit_set(ck, EINA_TRUE);
321    elm_clock_first_interval_set(ck, 2.0);
322    elm_box_pack_end(bx, ck);
323    evas_object_show(ck);
324
325    evas_object_show(win);
326 }
327 #endif