tizen 2.4 release
[framework/uifw/elementary.git] / src / examples / label_example_03.c
1 //Compile with:
2 //gcc -g label_example_03.c -o label_example_03 `pkg-config --cflags --libs elementary`
3
4 #include <Elementary.h>
5
6 typedef struct _appdata_s
7 {
8    Evas_Object *style;
9    Evas_Object *label;
10 } appdata_s;
11
12 static void
13 _theme_change_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
14 {
15    appdata_s *ad = data;
16
17    if (!strcmp("slide_long", elm_object_text_get(ad->style)))
18       elm_object_text_set(ad->style, "slide_short");
19    else if (!strcmp("slide_short", elm_object_text_get(ad->style)))
20       elm_object_text_set(ad->style, "slide_bounce");
21    else
22       elm_object_text_set(ad->style, "slide_long");
23
24    elm_object_style_set(ad->label, elm_object_text_get(ad->style));
25 }
26
27 static void
28 _win_del_request_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
29 {
30    appdata_s *ad = data;
31    free(ad);
32 }
33
34 static void
35 _slide_start_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
36 {
37    Evas_Object *label = data;
38
39    elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_ALWAYS);
40    elm_label_slide_go(label);
41 }
42
43 static void
44 _slide_stop_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
45 {
46    Evas_Object *label = data;
47
48    elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_NONE);
49    elm_label_slide_go(label);
50 }
51
52 EAPI_MAIN int
53 elm_main(int argc, char** argv)
54 {
55    Evas_Object *win, *bx, *bx1, *bx2, *style, *label, *btn;
56    appdata_s *ad = (appdata_s*)calloc(1, sizeof(appdata_s));
57
58    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
59
60    // Win
61    win = elm_win_util_standard_add("label", "Label Theme Change");
62    elm_win_autodel_set(win, EINA_TRUE);
63    evas_object_resize(win, 400, 85);
64    evas_object_show(win);
65    evas_object_smart_callback_add(win, "delete,request", _win_del_request_cb, ad);
66
67    // Box
68    bx = elm_box_add(win);
69    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
70    evas_object_show(bx);
71    elm_win_resize_object_add(win, bx);
72
73    // Box1 for label
74    bx1 = elm_box_add(bx);
75    evas_object_size_hint_weight_set(bx1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
76    elm_box_pack_end(bx, bx1);
77    evas_object_show(bx1);
78
79    // Label for showing style
80    style = elm_label_add(bx1);
81    elm_object_text_set(style, "slide_long");
82    elm_box_pack_end(bx1, style);
83    evas_object_show(style);
84
85    ad->style = style;
86
87    // Label
88    label = elm_label_add(bx1);
89    elm_object_style_set(label, "slide_long");
90    elm_object_text_set(label, "This is a label widget, you can change its theme or whether slide start or stop.");
91    elm_label_wrap_width_set(label, 200);
92    elm_label_slide_duration_set(label, 4.0);
93    elm_box_pack_end(bx1, label);
94    evas_object_show(label);
95
96    ad->label = label;
97
98    // Box2 for button
99    bx2 = elm_box_add(bx);
100    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
101    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);
102    elm_box_horizontal_set(bx2, EINA_TRUE);
103    elm_box_homogeneous_set(bx2, EINA_TRUE);
104    elm_box_pack_end(bx, bx2);
105    evas_object_show(bx2);
106
107    // Button
108    btn = elm_button_add(bx2);
109    evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
110    evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
111    elm_object_text_set(btn, "Change");
112    elm_box_pack_end(bx2, btn);
113    evas_object_show(btn);
114    evas_object_smart_callback_add(btn, "clicked", _theme_change_cb, ad);
115
116    btn = elm_button_add(bx2);
117    evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
118    evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
119    elm_object_text_set(btn, "Change");
120    elm_object_text_set(btn, "Go");
121    elm_box_pack_end(bx2, btn);
122    evas_object_show(btn);
123    evas_object_smart_callback_add(btn, "clicked", _slide_start_cb, label);
124
125    btn = elm_button_add(bx2);
126    evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
127    evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
128    elm_object_text_set(btn, "Change");
129    elm_object_text_set(btn, "Stop");
130    elm_box_pack_end(bx2, btn);
131    evas_object_show(btn);
132    evas_object_smart_callback_add(btn, "clicked", _slide_stop_cb, label);
133
134    elm_run();
135
136    return 0;
137 }
138 ELM_MAIN()