Merge with chun and jin
[apps/native/sample/adventure.git] / src / ui_manager.c
1 #include <Elementary.h>
2 #include "main.h"
3 #include "log.h"
4 #include "main_view.h"
5 #include "util.h"
6
7 const char *const UI_MANAGER_EDJE = "ui_manager.edj";
8
9 static void
10 _resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
11 {
12         int x, y, w, h;
13         evas_object_geometry_get(obj, &x, &y, &w, &h);
14         _D("%s (%d:%d:%d:%d)", data, x, y, w, h);
15 }
16
17 Evas_Object *ui_manager_create(Evas_Object *parent, moment_info_s *moment_info, int width, int height)
18 {
19         Evas_Object *ui_manager = NULL;
20         char *path = NULL;
21         char full_path[PATH_LEN] = {0, };
22
23         retv_if(!parent, NULL);
24         retv_if(!moment_info, NULL);
25
26         path = app_get_resource_path();
27         retv_if(!path, NULL);
28
29         snprintf(full_path, sizeof(full_path), "%s/edje/%s", path, UI_MANAGER_EDJE);
30         free(path);
31
32         _D("ui_manager is created with %s", full_path);
33
34         ui_manager = elm_layout_add(parent);
35         retv_if(!ui_manager, NULL);
36
37         elm_layout_file_set(ui_manager, full_path, "main");
38         evas_object_size_hint_weight_set(ui_manager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
39         evas_object_size_hint_align_set(ui_manager, EVAS_HINT_FILL, EVAS_HINT_FILL);
40         evas_object_event_callback_add(ui_manager, EVAS_CALLBACK_RESIZE, _resize_cb, "ui_manager");
41         evas_object_show(ui_manager);
42
43         moment_info->main_view = main_view_create(ui_manager, moment_info);
44         if (moment_info->main_view)
45                 elm_object_part_content_set(ui_manager, "content", moment_info->main_view);
46         else
47                 _E("cannot add the main view");
48
49         return ui_manager;
50 }
51
52
53
54 extern void ui_manager_destroy(Evas_Object *ui_manager)
55 {
56         Evas_Object *content = NULL;
57
58         ret_if(!ui_manager);
59
60         content = elm_object_part_content_unset(ui_manager, "content");
61         if (content)
62                 evas_object_del(content);
63
64         evas_object_del(ui_manager);
65 }