1 /******************************************************************
3 * Copyright 2015 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 ******************************************************************/
24 typedef struct appdata
30 Evas_Object *findButton;
32 Evas_Object *listview;
36 win_delete_request_cb(void *data , Evas_Object *obj , void *event_info)
42 list_selected_cb(void *data, Evas_Object *obj, void *event_info)
44 Elm_Object_Item *it = (Elm_Object_Item *)event_info;
45 elm_list_item_selected_set(it, EINA_FALSE);
49 naviframe_pop_cb(void *data, Elm_Object_Item *it)
56 create_list_view(appdata_s *ad)
60 Evas_Object *nf = ad->nf;
61 Elm_Object_Item *nf_it;
64 list = elm_list_add(nf);
65 elm_list_mode_set(list, ELM_LIST_COMPRESS);
66 evas_object_smart_callback_add(list, "selected", list_selected_cb, NULL);
70 // This button is set for devices which doesn't have H/W back key.
71 btn = elm_button_add(nf);
72 elm_object_style_set(btn, "naviframe/end_btn/default");
73 nf_it = elm_naviframe_item_push(nf, "Container Server", btn, NULL, list, NULL);
74 elm_naviframe_item_pop_cb_set(nf_it, naviframe_pop_cb, ad->win);
76 containerCreateUI(nf);
81 create_base_gui(appdata_s *ad)
84 ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE);
85 elm_win_conformant_set(ad->win, EINA_TRUE);
86 elm_win_autodel_set(ad->win, EINA_TRUE);
88 if (elm_win_wm_rotation_supported_get(ad->win))
90 int rots[4] = { 0, 90, 180, 270 };
91 elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4);
94 evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL);
97 ad->conform = elm_conformant_add(ad->win);
98 evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
99 elm_win_resize_object_add(ad->win, ad->conform);
100 evas_object_show(ad->conform);
103 ad->layout = elm_layout_add(ad->conform);
104 evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
105 elm_layout_theme_set(ad->layout, "layout", "application", "default");
106 evas_object_show(ad->layout);
108 elm_object_content_set(ad->conform, ad->layout);
111 ad->nf = elm_naviframe_add(ad->layout);
112 create_list_view(ad);
113 elm_object_part_content_set(ad->layout, "elm.swallow.content", ad->nf);
114 eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
115 eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_MORE, eext_naviframe_more_cb, NULL);
117 // Show window after base gui is set up
118 evas_object_show(ad->win);
121 // Configures the OCPlatform
127 PlatformConfig config
128 { OC::ServiceType::InProc, ModeType::Server, "0.0.0.0", 0, OC::QualityOfService::LowQos };
130 OCPlatform::Configure(config);
132 dlog_print(DLOG_INFO, LOG_TAG, "#### Platform configuration done!!!!");
134 catch (OCException &e)
136 dlog_print(DLOG_ERROR, LOG_TAG, "Exception occured! (%s)", e.what());
141 app_create(void *data)
143 /* Hook to take necessary actions before main event loop starts
144 Initialize UI resources and application's data
145 If this function returns true, the main loop of application starts
146 If this function returns false, the application is terminated */
147 appdata_s *ad = (appdata_s *)data;
149 elm_app_base_scale_set(1.8);
153 configure_platform();
159 app_control(app_control_h app_control, void *data)
161 // Handle the launch request.
165 app_pause(void *data)
167 // Take necessary actions when application becomes invisible.
171 app_resume(void *data)
173 // Take necessary actions when application becomes visible.
177 app_terminate(void *data)
179 // Release all resources.
183 ui_app_lang_changed(app_event_info_h event_info, void *user_data)
185 // APP_EVENT_LANGUAGE_CHANGED
187 system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
188 elm_language_set(locale);
194 ui_app_orient_changed(app_event_info_h event_info, void *user_data)
196 // APP_EVENT_DEVICE_ORIENTATION_CHANGED
201 ui_app_region_changed(app_event_info_h event_info, void *user_data)
203 // APP_EVENT_REGION_FORMAT_CHANGED
207 ui_app_low_battery(app_event_info_h event_info, void *user_data)
209 // APP_EVENT_LOW_BATTERY
213 ui_app_low_memory(app_event_info_h event_info, void *user_data)
215 // APP_EVENT_LOW_MEMORY
219 main(int argc, char *argv[])
224 ui_app_lifecycle_callback_s event_callback = {0,};
225 app_event_handler_h handlers[5] = {NULL, };
227 event_callback.create = app_create;
228 event_callback.terminate = app_terminate;
229 event_callback.pause = app_pause;
230 event_callback.resume = app_resume;
231 event_callback.app_control = app_control;
233 ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY,
234 ui_app_low_battery, &ad);
235 ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY,
236 ui_app_low_memory, &ad);
237 ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED],
238 APP_EVENT_DEVICE_ORIENTATION_CHANGED,
239 ui_app_orient_changed, &ad);
240 ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED],
241 APP_EVENT_LANGUAGE_CHANGED,
242 ui_app_lang_changed, &ad);
243 ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED],
244 APP_EVENT_REGION_FORMAT_CHANGED,
245 ui_app_region_changed, &ad);
246 ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]);
248 ret = ui_app_main(argc, argv, &event_callback, &ad);
249 if (APP_ERROR_NONE != ret)
251 dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret);