2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "vcui-application.h"
19 #include "vcui-view-common.h"
20 #include "vcui-view-single-call.h"
21 #include "vcui-view-keypad.h"
22 #include "vcui-view-elements.h"
24 #define VIEW_SINGLE_CALL_LAYOUT_ID "ONEVIEW"
26 Evas_Object *contents;
27 Evas_Object *caller_info;
30 Evas_Object *record_btn;
31 } incall_one_view_priv_t;
33 static int __vc_ui_view_single_call_oncreate(voice_call_view_data_t *view_data, int param1, void *param2, void *param3);
34 static int __vc_ui_view_single_call_onupdate(voice_call_view_data_t *view_data, void *update_data1, void *update_data2);
35 static int __vc_ui_view_single_call_onhide(voice_call_view_data_t *view_data);
36 static int __vc_ui_view_single_call_onshow(voice_call_view_data_t *view_data);
37 static int __vc_ui_view_single_call_ondestroy(voice_call_view_data_t *view_data);
38 static Evas_Object *__vc_ui_view_single_call_create_contents(void *data, char *grpname);
40 static voice_call_view_data_t s_view = {
41 .type = VIEW_INCALL_ONECALL_VIEW,
44 .onCreate = __vc_ui_view_single_call_oncreate,
45 .onUpdate = __vc_ui_view_single_call_onupdate,
46 .onHide = __vc_ui_view_single_call_onhide,
47 .onShow = __vc_ui_view_single_call_onshow,
48 .onDestroy = __vc_ui_view_single_call_ondestroy,
52 voice_call_view_data_t *_vc_ui_view_single_call_new(vcui_app_call_data_t *ad)
55 s_view.priv = calloc(1, sizeof(incall_one_view_priv_t));
58 CALL_UI_DEBUG("ERROR!!!!!!!!!!!");
64 static void __vc_ui_view_single_call_draw_screen(Evas_Object *eo, void *data)
68 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
69 incall_one_view_priv_t *priv = (incall_one_view_priv_t *)vd->priv;
70 vcui_app_call_data_t *ad = vd->app_data;
71 call_data_t *call_data = _vcui_doc_get_first_call_data_from_list();
73 if (call_data == NULL) {
74 CALL_UI_DEBUG("call Data is NULL");
78 /* ============ Check valid Evas Object ============= */
80 CALL_UI_KPI("_vcui_check_valid_eo ONEVIEW start");
81 valid = _vcui_check_valid_eo(priv->contents, VIEW_SINGLE_CALL_LAYOUT_ID);
82 CALL_UI_KPI("_vcui_check_valid_eo ONEVIEW done");
84 CALL_UI_DEBUG("[========== ONEVIEW : Invalid Evas Object, priv->contents : %p ==========]", priv->contents);
87 /* ============ Check valid Evas Object ============= */
89 char *file_path = _vcui_doc_get_caller_id_file_path(call_data);
90 int caller_status = _vcui_doc_get_call_status(call_data);
93 _vcui_delete_contact_image(priv->contents);
94 if (strcmp(file_path, NOIMG_ICON) == 0) {
95 _vcui_show_wallpaper_image(priv->contents);
97 CALL_UI_DEBUG("Caller ID file_path: %s", file_path);
99 _vcui_show_wallpaper_image(priv->contents);
100 priv->ic = _vcui_show_contact_image(priv->contents, vd->app_data->win_main, file_path);
104 _vcui_show_call_bg_img(priv->contents);
105 _vcui_show_caller_info_status(data, _("IDS_CALL_BODY_ON_HOLD_ABB"), EINA_FALSE);
106 if (caller_status == CALL_HOLD) {
107 CALL_UI_DEBUG("=================HOLD====================== ");
108 edje_object_signal_emit(_EDJ(priv->caller_info), "set-hold-state", "call-screen");
110 CALL_UI_DEBUG("=================UNHOLD====================== ");
112 edje_object_signal_emit(_EDJ(priv->caller_info), "set-unhold-state", "call-screen");
115 char *call_number = _vcui_doc_get_call_number(call_data);
116 char *call_name = _vcui_doc_get_call_display_name(call_data);
117 /* call name (if nothing, call number) */
118 CALL_UI_KPI("edje_object_part_text_set start");
119 if (strlen(call_name) == 0) {
120 _vcui_show_caller_info_name(vd, call_number, EINA_FALSE);
122 _vcui_show_caller_info_name(vd, call_name, EINA_FALSE);
123 _vcui_show_caller_info_number(vd, call_number, EINA_FALSE);
125 CALL_UI_KPI("edje_object_part_text_set done");
127 _vcui_show_caller_info_icon(vd, EINA_FALSE);
129 CALL_UI_KPI("_vcui_view_common_set_each_time start");
130 _vcui_view_common_set_each_time(_vcui_doc_get_call_start_time(call_data));
131 CALL_UI_KPI("_vcui_view_common_set_each_time done");
136 /*create a small button for Hold/Swap*/
137 _vcui_create_hold_swap_button(vd);
139 if ((_vcui_is_phonelock_status() == EINA_TRUE) && (_vcui_is_idle_lock() == EINA_TRUE)) {
140 CALL_UI_KPI("_vcui_create_top_middle_button start");
141 _vcui_create_top_middle_button_disabled(vd);
142 CALL_UI_KPI("_vcui_create_top_middle_button done");
145 CALL_UI_KPI("_vcui_create_top_middle_button start");
146 _vcui_create_top_middle_button(vd);
147 CALL_UI_KPI("_vcui_create_top_middle_button done");
151 CALL_UI_KPI("_vcui_create_top_right_button start");
152 _vcui_create_top_right_button(vd);
153 CALL_UI_KPI("_vcui_create_top_right_button done");
155 CALL_UI_KPI("_vcui_create_bottom_left_button start");
156 _vcui_create_bottom_left_button(vd);
157 CALL_UI_KPI("_vcui_create_bottom_left_button done");
159 CALL_UI_KPI("_vcui_create_bottom_middle_button start");
160 _vcui_create_bottom_middle_button(vd);
161 CALL_UI_KPI("_vcui_create_bottom_middle_button done");
163 if (_vcui_view_common_is_emul_bin() == EINA_TRUE) {
164 _vcui_create_top_left_button_disabled(vd);
165 _vcui_create_bottom_right_button_disabled(vd);
167 _vcui_create_top_left_button(vd);
168 _vcui_create_bottom_right_button(vd);
172 CALL_UI_KPI("edje_object_signal_emit effect start");
173 if (ad->beffect_needed == EINA_TRUE) {
174 edje_object_signal_emit(_EDJ(priv->contents), "SHOW_EFFECT", "ALLBTN");
175 ad->beffect_needed = EINA_FALSE;
177 edje_object_signal_emit(_EDJ(priv->contents), "SHOW_NO_EFFECT", "ALLBTN");
179 CALL_UI_KPI("edje_object_signal_emit effect done");
181 _vcui_elements_check_keypad_n_hide(vd);
183 CALL_UI_KPI("evas_object_show start");
184 evas_object_show(eo);
185 CALL_UI_KPI("evas_object_show done");
188 static Evas_Object *__vc_ui_view_single_call_create_contents(void *data, char *grpname)
191 CALL_UI_DEBUG("ERROR");
194 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
195 Evas_Object *eo = NULL;
198 eo = _vcui_load_edj(vd->app_data->win_main, EDJ_NAME, grpname);
205 static Evas_Object *__vc_ui_view_single_call_create_layout_main(Evas_Object *parent)
207 if (parent == NULL) {
208 CALL_UI_DEBUG("ERROR");
213 ly = elm_layout_add(parent);
214 retvm_if(ly == NULL, NULL, "Failed elm_layout_add.");
216 elm_layout_theme_set(ly, "standard", "window", "integration");
217 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
218 elm_win_resize_object_add(parent, ly);
220 edje_object_signal_emit(_EDJ(ly), "elm,state,show,indicator", "elm");
221 edje_object_signal_emit(_EDJ(ly), "elm,state,show,content", "elm");
222 evas_object_show(ly);
227 static int __vc_ui_view_single_call_oncreate(voice_call_view_data_t *view_data, int param1, void *param2, void *param3)
229 CALL_UI_DEBUG("incall view create");
230 voice_call_view_data_t *vd = view_data;
231 incall_one_view_priv_t *priv = (incall_one_view_priv_t *)vd->priv;
232 call_data_t *call_data = _vcui_doc_get_first_call_data_from_list();
233 Evas_Object *sep_ly = NULL;
235 if (call_data == NULL) {
236 CALL_UI_DEBUG("call data is null");
242 CALL_UI_KPI("__vc_ui_view_single_call_create_layout_main start");
243 vd->layout = __vc_ui_view_single_call_create_layout_main(vd->app_data->win_main);
244 CALL_UI_KPI("__vc_ui_view_single_call_create_layout_main done");
245 if (vd->layout == NULL) {
246 CALL_UI_DEBUG("ERROR");
250 CALL_UI_KPI("__vc_ui_view_single_call_create_contents start");
251 priv->contents = __vc_ui_view_single_call_create_contents(vd, GRP_INCALL);
252 elm_object_part_content_set(vd->layout, "elm.swallow.content", priv->contents);
253 CALL_UI_KPI("__vc_ui_view_single_call_create_contents done");
255 sep_ly = __vc_ui_view_single_call_create_contents(vd, "separator-layout");
256 elm_object_part_content_set(priv->contents, "btn_bg", sep_ly);
258 priv->btn_ly = __vc_ui_view_single_call_create_contents(vd, GRP_BUTTON_LAYOUT);
259 elm_object_part_content_set(priv->contents, "btn_region", priv->btn_ly);
261 priv->caller_info = __vc_ui_view_single_call_create_contents(vd, GRP_CALLER_INFO);
262 elm_object_part_content_set(priv->contents, "caller_info", priv->caller_info);
264 CALL_UI_KPI("evas_object_name_set start");
265 evas_object_name_set(priv->contents, VIEW_SINGLE_CALL_LAYOUT_ID);
266 CALL_UI_KPI("evas_object_name_set done");
267 CALL_UI_DEBUG("[========== ONEVIEW: priv->contents Addr : [%p] ==========]", priv->contents);
270 CALL_UI_DEBUG("[UI]ad->layout_incall==NULL case ");
271 evas_object_show(vd->layout);
274 __vc_ui_view_single_call_onshow(view_data);
278 static int __vc_ui_view_single_call_onupdate(voice_call_view_data_t *view_data, void *update_data1, void *update_data2)
280 CALL_UI_DEBUG("incall view update");
282 __vc_ui_view_single_call_onshow(view_data);
287 static int __vc_ui_view_single_call_onhide(voice_call_view_data_t *view_data)
289 CALL_UI_DEBUG("incall view hide");
291 evas_object_hide(view_data->layout);
295 static int __vc_ui_view_single_call_onshow(voice_call_view_data_t *view_data)
297 CALL_UI_DEBUG("incall view show");
298 CALL_UI_KPI("__vc_ui_view_single_call_onshow start");
299 incall_one_view_priv_t *priv = (incall_one_view_priv_t *)view_data->priv;
300 call_data_t *call_data = _vcui_doc_get_first_call_data_from_list();
302 /*change the orientation to normal - 0 */
303 elm_win_rotation_with_resize_set(view_data->app_data->win_main, 0);
304 elm_win_rotation_with_resize_set(view_data->app_data->popup_mw, 0);
306 if (call_data == NULL) {
307 CALL_UI_DEBUG("call data is null");
310 CALL_UI_KPI("__vc_ui_view_single_call_draw_screen start");
311 __vc_ui_view_single_call_draw_screen(priv->contents, view_data);
312 CALL_UI_KPI("__vc_ui_view_single_call_draw_screen done");
314 CALL_UI_KPI("incall-one-view hide start");
315 evas_object_hide(view_data->layout);
316 CALL_UI_KPI("incall-one-view hide done");
317 CALL_UI_KPI("incall-one-view show start");
318 evas_object_show(view_data->layout);
319 CALL_UI_KPI("incall-one-view show done");
320 CALL_UI_KPI("__vc_ui_view_single_call_onshow done");
324 static int __vc_ui_view_single_call_ondestroy(voice_call_view_data_t *view_data)
326 CALL_UI_DEBUG("incall view destroy");
328 vcui_app_call_data_t *ad = _vcui_get_app_data();
330 voice_call_view_data_t *vd = ad->view_st[VIEW_INCALL_ONECALL_VIEW];
331 incall_one_view_priv_t *priv = (incall_one_view_priv_t *)vd->priv;
335 evas_object_del(priv->btn_ly);
339 if (priv->caller_info) {
340 evas_object_del(priv->caller_info);
341 priv->caller_info = NULL;
344 /*Delete keypad layout*/
345 _vcui_keypad_delete_layout(priv->contents);
347 if (priv->contents) {
348 evas_object_del(priv->contents);
349 priv->contents = NULL;
356 if (vd->layout != NULL) {
357 evas_object_hide(vd->layout);
358 evas_object_del(vd->layout);
362 ad->view_st[VIEW_INCALL_ONECALL_VIEW] = NULL;
365 CALL_UI_DEBUG("complete destroy one view");
369 int _vc_ui_view_single_call_check_valid_eo(voice_call_view_data_t *vd)
373 incall_one_view_priv_t *priv = NULL;
376 VCUI_RETURN_VALUE_IF_FAIL(vd , -1);
377 priv = (incall_one_view_priv_t *) vd->priv;
379 valid = _vcui_check_valid_eo(priv->contents, VIEW_SINGLE_CALL_LAYOUT_ID);
384 Evas_Object *_vc_ui_view_single_call_get_layout(voice_call_view_data_t *vd)
387 incall_one_view_priv_t *priv = NULL;
389 VCUI_RETURN_NULL_IF_FAIL(vd);
390 priv = (incall_one_view_priv_t *) vd->priv;
392 VCUI_RETURN_NULL_IF_FAIL(priv);
393 return priv->contents;
396 Evas_Object *_vc_ui_view_single_call_get_button_layout(voice_call_view_data_t *vd)
399 incall_one_view_priv_t *priv = NULL;
401 VCUI_RETURN_NULL_IF_FAIL(vd);
402 priv = (incall_one_view_priv_t *) vd->priv;
404 VCUI_RETURN_NULL_IF_FAIL(priv);
408 int _vc_ui_view_single_call_get_call_status(voice_call_view_data_t *vd)
411 incall_one_view_priv_t *priv = NULL;
412 call_data_t *call_data = _vcui_doc_get_first_call_data_from_list();
415 VCUI_RETURN_INVALID_IF_FAIL(vd);
416 priv = (incall_one_view_priv_t *) vd->priv;
418 VCUI_RETURN_INVALID_IF_FAIL(call_data);
419 call_status = _vcui_doc_get_call_status(call_data);
423 void _vc_ui_view_single_call_set_call_timer(voice_call_view_data_t *vd, char *pcall_dur)
425 incall_one_view_priv_t *priv = NULL;
427 VCUI_RETURN_IF_FAIL(vd);
428 priv = (incall_one_view_priv_t *) vd->priv;
430 VCUI_RETURN_IF_FAIL(priv);
431 edje_object_part_text_set(_EDJ(priv->caller_info), "txt_timer", _(pcall_dur));
434 Evas_Object *_vc_ui_view_single_call_get_caller_info(voice_call_view_data_t *vd)
437 incall_one_view_priv_t *priv = NULL;
439 VCUI_RETURN_NULL_IF_FAIL(vd);
440 priv = (incall_one_view_priv_t *) vd->priv;
442 VCUI_RETURN_NULL_IF_FAIL(priv);
443 return priv->caller_info;