Imported Upstream version 1.0.1
[platform/upstream/iotivity.git] / service / resource-encapsulation / examples / tizen / RESampleServerApp / src / remain.cpp
1 /******************************************************************
2  *
3  * Copyright 2015 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  ******************************************************************/
20
21 #include "remain.h"
22 #include <tizen.h>
23
24 typedef struct appdata
25 {
26     Evas_Object *win;
27     Evas_Object *conform;
28     Evas_Object *layout;
29     Evas_Object *nf;
30     Evas_Object *findButton;
31     Evas_Object *logtext;
32     Evas_Object *listview;
33 } appdata_s;
34
35 static void
36 win_delete_request_cb(void *data , Evas_Object *obj , void *event_info)
37 {
38     ui_app_exit();
39 }
40
41 static void
42 list_selected_cb(void *data, Evas_Object *obj, void *event_info)
43 {
44     Elm_Object_Item *it = (Elm_Object_Item *)event_info;
45     elm_list_item_selected_set(it, EINA_FALSE);
46 }
47
48 static Eina_Bool
49 naviframe_pop_cb(void *data, Elm_Object_Item *it)
50 {
51     ui_app_exit();
52     return EINA_FALSE;
53 }
54
55 static void
56 create_list_view(appdata_s *ad)
57 {
58     Evas_Object *list;
59     Evas_Object *btn;
60     Evas_Object *nf = ad->nf;
61     Elm_Object_Item *nf_it;
62
63     // List
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);
67
68     // Main Menu Items Here
69     elm_list_item_append(list, "Start Temperature Sensor Resource", NULL, NULL, temperatureResource,
70                          nf);
71
72     elm_list_item_append(list, "Start Light Resource", NULL, NULL, lightResource, nf);
73
74     elm_list_go(list);
75
76     // This button is set for devices which doesn't have H/W back key.
77     btn = elm_button_add(nf);
78     elm_object_style_set(btn, "naviframe/end_btn/default");
79     nf_it = elm_naviframe_item_push(nf, "Resource Encapsulation", btn, NULL, list, NULL);
80     elm_naviframe_item_pop_cb_set(nf_it, naviframe_pop_cb, ad->win);
81 }
82
83
84 static void
85 create_base_gui(appdata_s *ad)
86 {
87     // Window
88     ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE);
89     elm_win_conformant_set(ad->win, EINA_TRUE);
90     elm_win_autodel_set(ad->win, EINA_TRUE);
91
92     if (elm_win_wm_rotation_supported_get(ad->win))
93     {
94         int rots[4] = { 0, 90, 180, 270 };
95         elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4);
96     }
97
98     evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL);
99
100     // Conformant
101     ad->conform = elm_conformant_add(ad->win);
102     evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
103     elm_win_resize_object_add(ad->win, ad->conform);
104     evas_object_show(ad->conform);
105
106     // Base Layout
107     ad->layout = elm_layout_add(ad->conform);
108     evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
109     elm_layout_theme_set(ad->layout, "layout", "application", "default");
110     evas_object_show(ad->layout);
111
112     elm_object_content_set(ad->conform, ad->layout);
113
114     // Naviframe
115     ad->nf = elm_naviframe_add(ad->layout);
116     create_list_view(ad);
117     elm_object_part_content_set(ad->layout, "elm.swallow.content", ad->nf);
118     eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
119     eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_MORE, eext_naviframe_more_cb, NULL);
120
121     // Show window after base gui is set up
122     evas_object_show(ad->win);
123 }
124
125 // Configures the OCPlatform
126 static void
127 configure_platform()
128 {
129     try
130     {
131         PlatformConfig config
132         { OC::ServiceType::InProc, ModeType::Server, "0.0.0.0", 0, OC::QualityOfService::LowQos };
133
134         OCPlatform::Configure(config);
135
136         dlog_print(DLOG_INFO, LOG_TAG, "#### Platform configuration done!!!!");
137     }
138     catch (OCException &e)
139     {
140         dlog_print(DLOG_ERROR, LOG_TAG, "Exception occured! (%s)", e.what());
141     }
142 }
143
144 static bool
145 app_create(void *data)
146 {
147     /* Hook to take necessary actions before main event loop starts
148        Initialize UI resources and application's data
149        If this function returns true, the main loop of application starts
150        If this function returns false, the application is terminated */
151     appdata_s *ad = (appdata_s *)data;
152
153     elm_app_base_scale_set(1.8);
154
155     create_base_gui(ad);
156
157     configure_platform();
158
159     return true;
160 }
161
162 static void
163 app_control(app_control_h app_control, void *data)
164 {
165     // Handle the launch request.
166 }
167
168 static void
169 app_pause(void *data)
170 {
171     // Take necessary actions when application becomes invisible.
172 }
173
174 static void
175 app_resume(void *data)
176 {
177     // Take necessary actions when application becomes visible.
178 }
179
180 static void
181 app_terminate(void *data)
182 {
183     // Release all resources.
184 }
185
186 static void
187 ui_app_lang_changed(app_event_info_h event_info, void *user_data)
188 {
189     // APP_EVENT_LANGUAGE_CHANGED
190     char *locale = NULL;
191     system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
192     elm_language_set(locale);
193     free(locale);
194     return;
195 }
196
197 static void
198 ui_app_orient_changed(app_event_info_h event_info, void *user_data)
199 {
200     // APP_EVENT_DEVICE_ORIENTATION_CHANGED
201     return;
202 }
203
204 static void
205 ui_app_region_changed(app_event_info_h event_info, void *user_data)
206 {
207     // APP_EVENT_REGION_FORMAT_CHANGED
208 }
209
210 static void
211 ui_app_low_battery(app_event_info_h event_info, void *user_data)
212 {
213     // APP_EVENT_LOW_BATTERY
214 }
215
216 static void
217 ui_app_low_memory(app_event_info_h event_info, void *user_data)
218 {
219     // APP_EVENT_LOW_MEMORY
220 }
221
222 int
223 main(int argc, char *argv[])
224 {
225     appdata_s ad = {0,};
226     int ret = 0;
227
228     ui_app_lifecycle_callback_s event_callback = {0,};
229     app_event_handler_h handlers[5] = {NULL, };
230
231     event_callback.create = app_create;
232     event_callback.terminate = app_terminate;
233     event_callback.pause = app_pause;
234     event_callback.resume = app_resume;
235     event_callback.app_control = app_control;
236
237     ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY,
238                              ui_app_low_battery, &ad);
239     ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY,
240                              ui_app_low_memory, &ad);
241     ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED],
242                              APP_EVENT_DEVICE_ORIENTATION_CHANGED,
243                              ui_app_orient_changed, &ad);
244     ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED],
245                              APP_EVENT_LANGUAGE_CHANGED,
246                              ui_app_lang_changed, &ad);
247     ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED],
248                              APP_EVENT_REGION_FORMAT_CHANGED,
249                              ui_app_region_changed, &ad);
250     ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]);
251
252     ret = ui_app_main(argc, argv, &event_callback, &ad);
253     if (APP_ERROR_NONE != ret)
254     {
255         dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret);
256     }
257     return ret;
258 }