[JungWooHyun] doing merge job ~
[framework/uifw/elementary.git] / src / examples / layout_example_01.c
1 //Compile with:
2 //gcc -g `pkg-config --cflags --libs elementary` layout_example_01.c -o layout_example_01
3
4 #include <Elementary.h>
5 #ifdef HAVE_CONFIG_H
6 # include "elementary_config.h"
7 #else
8 # define __UNUSED__
9 # define PACKAGE_DATA_DIR "."
10 #endif
11
12 #define TABLE "example/table"
13 #define BOX "example/box"
14 #define TITLE "example/title"
15 #define SWALLOW "example/custom"
16
17 static int _box_buttons = 0;
18
19 static void
20 _tbl_btn_cb(void *data, Evas_Object *btn, void *event_info __UNUSED__)
21 {
22    Evas_Object *layout = data;
23
24    elm_layout_table_unpack(layout, TABLE, btn);
25    evas_object_del(btn);
26 }
27
28 static void
29 _box_btn_cb(void *data, Evas_Object *btn, void *event_info __UNUSED__)
30 {
31    Evas_Object *layout = data;
32    Evas_Object *item;
33    char buf[30];
34
35    snprintf(buf, sizeof(buf), "Button %02d", _box_buttons++);
36
37    item = elm_button_add(elm_object_parent_widget_get(layout));
38    elm_object_text_set(item, buf);
39    evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
40    evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
41    evas_object_size_hint_min_set(item, 100, 50);
42    elm_layout_box_insert_before(layout, BOX, item, btn);
43    evas_object_smart_callback_add(item, "clicked", _box_btn_cb, layout);
44    evas_object_show(item);
45 }
46
47 static void
48 _swallow_btn_cb(void *data, Evas_Object *btn __UNUSED__, void *event_info __UNUSED__)
49 {
50    Evas_Object *layout = data;
51    Evas_Object *item;
52
53    elm_layout_table_clear(layout, TABLE, EINA_TRUE);
54    elm_layout_box_remove_all(layout, BOX, EINA_TRUE);
55    item = elm_object_part_content_unset(layout, SWALLOW);
56    evas_object_del(item);
57 }
58
59 int
60 elm_main(int argc __UNUSED__, char **argv __UNUSED__)
61 {
62    Evas_Object *win, *bg, *icon, *icon2, *bt, *bt2, *layout;
63    Evas_Object *clock;
64    Evas_Object *item;
65
66    win = elm_win_add(NULL, "layout", ELM_WIN_BASIC);
67    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
68    elm_win_autodel_set(win, EINA_TRUE);
69
70    bg = elm_bg_add(win);
71    elm_bg_color_set(bg, 255,255 ,255);
72    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
73    elm_win_resize_object_add(win, bg);
74    evas_object_show(bg);
75
76    // Adding layout and filling it with widgets
77    layout = elm_layout_add(win);
78    evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
79    elm_win_resize_object_add(win, layout);
80    elm_layout_file_set(
81        layout, PACKAGE_DATA_DIR "/examples/layout_example.edj",
82        "example/mylayout");
83    evas_object_show(layout);
84
85    // Setting title
86    const char *title = elm_layout_data_get(layout, "title");
87    if (title)
88      {
89         elm_win_title_set(win, title);
90         elm_object_part_text_set(layout, TITLE, title);
91      }
92
93    // Add icon, clock and button to the table
94    icon = elm_icon_add(win);
95    elm_icon_standard_set(icon, "home");
96    evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
97    evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
98    elm_layout_table_pack(layout, TABLE, icon, 0, 0, 1, 1);
99    evas_object_show(icon);
100
101    icon2 = elm_icon_add(win);
102    elm_icon_standard_set(icon2, "close");
103    evas_object_size_hint_weight_set(icon2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
104    evas_object_size_hint_align_set(icon2, EVAS_HINT_FILL, EVAS_HINT_FILL);
105    elm_layout_table_pack(layout, TABLE, icon2, 1, 0, 1, 1);
106    evas_object_show(icon2);
107
108    clock = elm_clock_add(win);
109    evas_object_size_hint_weight_set(clock, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
110    evas_object_size_hint_align_set(clock, EVAS_HINT_FILL, EVAS_HINT_FILL);
111    elm_layout_table_pack(layout, TABLE, clock, 2, 0, 1, 1);
112    evas_object_show(clock);
113
114    bt = elm_button_add(win);
115    elm_object_text_set(bt, "Click me!");
116    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
117    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
118    elm_layout_table_pack(layout, TABLE, bt, 0, 1, 3, 1);
119    evas_object_smart_callback_add(bt, "clicked", _tbl_btn_cb, layout);
120    evas_object_show(bt);
121
122    item = elm_button_add(win);
123    elm_object_text_set(item, "Position 0");
124    evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
125    evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
126    evas_object_size_hint_min_set(item, 100, 50);
127    elm_layout_box_insert_at(layout, BOX, item, 0);
128    evas_object_smart_callback_add(item, "clicked", _box_btn_cb, layout);
129    evas_object_show(item);
130
131    item = elm_button_add(win);
132    elm_object_text_set(item, "Prepended");
133    evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
134    evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
135    evas_object_size_hint_min_set(item, 100, 50);
136    elm_layout_box_prepend(layout, BOX, item);
137    evas_object_smart_callback_add(item, "clicked", _box_btn_cb, layout);
138    evas_object_show(item);
139
140    bt2 = elm_button_add(win);
141    elm_object_text_set(bt2, "Delete All");
142    elm_object_part_content_set(layout, SWALLOW, bt2);
143    evas_object_smart_callback_add(bt2, "clicked", _swallow_btn_cb, layout);
144
145    evas_object_size_hint_min_set(bg, 160, 160);
146    evas_object_size_hint_max_set(bg, 640, 640);
147    evas_object_resize(win, 320, 320);
148    evas_object_show(win);
149
150    elm_run();
151
152    return 0;
153 }
154
155 ELM_MAIN()