4335eb51b00fb5a9866375c4271de89500e92e9e
[apps/native/sample/adventure.git] / new / src / main.c
1 /*\r
2  * Samsung API\r
3  * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd.\r
4  *\r
5  * Licensed under the Apache License, Version 2.0 (the License);\r
6  * you may not use this file except in compliance with the License.\r
7  * You may obtain a copy of the License at\r
8  *\r
9  * http://www.apache.org/license/\r
10  *\r
11  * Unless required by applicable law or agreed to in writing, software\r
12  * distributed under the License is distributed on an AS IS BASIS,\r
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14  * See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  */\r
17 \r
18 #include <tizen.h>\r
19 #include <Elementary.h>\r
20 #include "log.h"\r
21 #include "util.h"\r
22 #include "main.h"\r
23 #include "ui_manager.h"\r
24 \r
25 static void\r
26 _win_delete_request_cb(void *data, Evas_Object *obj, void *event_info)\r
27 {\r
28         ui_app_exit();\r
29 }\r
30 \r
31 static bool\r
32 app_create(void *data)\r
33 {\r
34         moment_info_s *moment_info = data;\r
35 \r
36         moment_info->win = elm_win_util_standard_add(PACKAGE, PACKAGE);\r
37         elm_win_conformant_set(moment_info->win, EINA_TRUE);\r
38         elm_win_autodel_set(moment_info->win, EINA_TRUE);\r
39         if (elm_win_wm_rotation_supported_get(moment_info->win)) {\r
40                 int rots[1] = {0};\r
41                 elm_win_wm_rotation_available_rotations_set(moment_info->win, (const int *)(&rots), 1);\r
42         }\r
43         evas_object_smart_callback_add(moment_info->win, "delete,request", _win_delete_request_cb, NULL);\r
44         elm_win_screen_size_get(moment_info->win, NULL, NULL, &moment_info->width, &moment_info->height);\r
45         evas_object_show(moment_info->win);\r
46 \r
47         moment_info->conform = elm_conformant_add(moment_info->win);\r
48         elm_win_indicator_mode_set(moment_info->win, ELM_WIN_INDICATOR_HIDE);\r
49         evas_object_size_hint_weight_set(moment_info->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
50         elm_win_resize_object_add(moment_info->win, moment_info->conform);\r
51         evas_object_show(moment_info->conform);\r
52 \r
53         _D("Window size (%d:%d)", moment_info->width, moment_info->height);\r
54 \r
55         moment_info->e = evas_object_evas_get(moment_info->win);\r
56 \r
57         return true;\r
58 }\r
59 \r
60 static void\r
61 app_control(app_control_h app_control, void *data)\r
62 {\r
63         moment_info_s *moment_info = data;\r
64         ret_if(!moment_info);\r
65         ret_if(!mement_info->conformant);\r
66 \r
67         moment_info->ui_manager = ui_manager_create(moment_info->conformant, moment_info);\r
68         ret_if(!moment_info->ui_manager);\r
69 }\r
70 \r
71 static void\r
72 app_pause(void *data)\r
73 {\r
74         /* Take necessary actions when application becomes invisible. */\r
75 }\r
76 \r
77 static void\r
78 app_resume(void *data)\r
79 {\r
80         /* Take necessary actions when application becomes visible. */\r
81 }\r
82 \r
83 static void\r
84 app_terminate(void *data)\r
85 {\r
86         moment_info_s *moment_info = data;\r
87 \r
88         if (moment_info->ui_manager)\r
89                 ui_manager_destroy(moment_info->ui_manager);\r
90 \r
91         if (moment_info->conform)\r
92                 evas_object_del(moment_info->conform);\r
93 \r
94         if (moment_info->win)\r
95                 evas_object_del(moment_info->win);\r
96 }\r
97 \r
98 static void\r
99 ui_app_lang_changed(app_event_info_h event_info, void *user_data)\r
100 {\r
101         /*APP_EVENT_LANGUAGE_CHANGED*/\r
102         char *locale = NULL;\r
103         system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);\r
104         elm_language_set(locale);\r
105         free(locale);\r
106         return;\r
107 }\r
108 \r
109 static void\r
110 ui_app_orient_changed(app_event_info_h event_info, void *user_data)\r
111 {\r
112         /*APP_EVENT_DEVICE_ORIENTATION_CHANGED*/\r
113         return;\r
114 }\r
115 \r
116 static void\r
117 ui_app_region_changed(app_event_info_h event_info, void *user_data)\r
118 {\r
119         /*APP_EVENT_REGION_FORMAT_CHANGED*/\r
120 }\r
121 \r
122 static void\r
123 ui_app_low_battery(app_event_info_h event_info, void *user_data)\r
124 {\r
125         /*APP_EVENT_LOW_BATTERY*/\r
126 }\r
127 \r
128 static void\r
129 ui_app_low_memory(app_event_info_h event_info, void *user_data)\r
130 {\r
131         /*APP_EVENT_LOW_MEMORY*/\r
132 }\r
133 \r
134 int\r
135 main(int argc, char *argv[])\r
136 {\r
137         moment_info_s moment_info = {0,};\r
138         int ret = 0;\r
139 \r
140         ui_app_lifecycle_callback_s event_callback = {0,};\r
141         app_event_handler_h handlers[5] = {NULL, };\r
142 \r
143         event_callback.create = app_create;\r
144         event_callback.terminate = app_terminate;\r
145         event_callback.pause = app_pause;\r
146         event_callback.resume = app_resume;\r
147         event_callback.app_control = app_control;\r
148 \r
149         ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &moment_info);\r
150         ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &moment_info);\r
151         ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, &moment_info);\r
152         ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &moment_info);\r
153         ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, &moment_info);\r
154         ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]);\r
155 \r
156         ret = ui_app_main(argc, argv, &event_callback, &moment_info);\r
157         if (ret != APP_ERROR_NONE) {\r
158                 dlog_print(DLOG_ERROR, LOG_TAG, "ui_app_main() is failed. err = %d", ret);\r
159         }\r
160 \r
161         return ret;\r
162 }\r