efl
75 строк · 2.1 Кб
1//Compile with:
2//gcc -g layout_example_02.c -o layout_example_02 `pkg-config --cflags --libs elementary`
3
4#include <Elementary.h>
5
6#define TABLE "example/table"
7#define BOX "example/box"
8#define TITLE "example/title"
9#define SWALLOW "example/custom"
10
11static const char *images[] = { "home", "close", "arrow_up", "arrow_down", NULL };
12
13struct _App {
14int current;
15};
16
17static void
18_signal_cb(void *data, Evas_Object *o, const char *emission, const char *source EINA_UNUSED)
19{
20struct _App *app = data;
21Evas_Object *icon = elm_object_part_content_get(o, "elm.swallow.content");
22
23printf("signal received\n");
24
25if (!strcmp("elm,action,back", emission))
26app->current--;
27else if (!strcmp("elm,action,next", emission))
28app->current++;
29
30if (app->current < 0)
31app->current = (sizeof(images) / sizeof(images[0])) - 2;
32else if (images[app->current] == NULL)
33app->current = 0;
34
35elm_icon_standard_set(icon, images[app->current]);
36}
37
38EAPI_MAIN int
39elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
40{
41Evas_Object *win, *layout, *icon;
42struct _App app;
43
44app.current = 0;
45
46elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
47
48win = elm_win_util_standard_add("layout", "Layout");
49elm_win_autodel_set(win, EINA_TRUE);
50
51// Adding layout and filling it with widgets
52layout = elm_layout_add(win);
53evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
54elm_win_resize_object_add(win, layout);
55if (!elm_layout_theme_set(
56layout, "layout", "application", "content-back-next"))
57fprintf(stderr, "Failed to set layout");
58evas_object_show(layout);
59
60icon = elm_icon_add(win);
61elm_icon_standard_set(icon, images[app.current]);
62evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
63elm_object_part_content_set(layout, "elm.swallow.content", icon);
64
65elm_object_signal_callback_add(layout, "elm,action,back", "elm", _signal_cb, &app);
66elm_object_signal_callback_add(layout, "elm,action,next", "elm", _signal_cb, &app);
67
68evas_object_resize(win, 320, 320);
69evas_object_show(win);
70
71elm_run();
72
73return 0;
74}
75ELM_MAIN()
76