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 _vcui_create_top_left_button(vd);
164 _vcui_create_bottom_right_button(vd);
167 CALL_UI_KPI("edje_object_signal_emit effect start");
168 if (ad->beffect_needed == EINA_TRUE) {
169 edje_object_signal_emit(_EDJ(priv->contents), "SHOW_EFFECT", "ALLBTN");
170 ad->beffect_needed = EINA_FALSE;
172 edje_object_signal_emit(_EDJ(priv->contents), "SHOW_NO_EFFECT", "ALLBTN");
174 CALL_UI_KPI("edje_object_signal_emit effect done");
176 _vcui_elements_check_keypad_n_hide(vd);
178 CALL_UI_KPI("evas_object_show start");
179 evas_object_show(eo);
180 CALL_UI_KPI("evas_object_show done");
183 static Evas_Object *__vc_ui_view_single_call_create_contents(void *data, char *grpname)
186 CALL_UI_DEBUG("ERROR");
189 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
190 Evas_Object *eo = NULL;
193 eo = _vcui_load_edj(vd->app_data->win_main, EDJ_NAME, grpname);
200 static Evas_Object *__vc_ui_view_single_call_create_layout_main(Evas_Object *parent)
202 if (parent == NULL) {
203 CALL_UI_DEBUG("ERROR");
208 ly = elm_layout_add(parent);
209 retvm_if(ly == NULL, NULL, "Failed elm_layout_add.");
211 elm_layout_theme_set(ly, "standard", "window", "integration");
212 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
213 elm_win_resize_object_add(parent, ly);
215 edje_object_signal_emit(_EDJ(ly), "elm,state,show,indicator", "elm");
216 edje_object_signal_emit(_EDJ(ly), "elm,state,show,content", "elm");
217 evas_object_show(ly);
222 static int __vc_ui_view_single_call_oncreate(voice_call_view_data_t *view_data, int param1, void *param2, void *param3)
224 CALL_UI_DEBUG("incall view create");
225 voice_call_view_data_t *vd = view_data;
226 incall_one_view_priv_t *priv = (incall_one_view_priv_t *)vd->priv;
227 call_data_t *call_data = _vcui_doc_get_first_call_data_from_list();
228 Evas_Object *sep_ly = NULL;
230 if (call_data == NULL) {
231 CALL_UI_DEBUG("call data is null");
237 CALL_UI_KPI("__vc_ui_view_single_call_create_layout_main start");
238 vd->layout = __vc_ui_view_single_call_create_layout_main(vd->app_data->win_main);
239 CALL_UI_KPI("__vc_ui_view_single_call_create_layout_main done");
240 if (vd->layout == NULL) {
241 CALL_UI_DEBUG("ERROR");
245 CALL_UI_KPI("__vc_ui_view_single_call_create_contents start");
246 priv->contents = __vc_ui_view_single_call_create_contents(vd, GRP_INCALL);
247 elm_object_part_content_set(vd->layout, "elm.swallow.content", priv->contents);
248 CALL_UI_KPI("__vc_ui_view_single_call_create_contents done");
250 sep_ly = __vc_ui_view_single_call_create_contents(vd, "separator-layout");
251 elm_object_part_content_set(priv->contents, "btn_bg", sep_ly);
253 priv->btn_ly = __vc_ui_view_single_call_create_contents(vd, GRP_BUTTON_LAYOUT);
254 elm_object_part_content_set(priv->contents, "btn_region", priv->btn_ly);
256 priv->caller_info = __vc_ui_view_single_call_create_contents(vd, GRP_CALLER_INFO);
257 elm_object_part_content_set(priv->contents, "caller_info", priv->caller_info);
259 CALL_UI_KPI("evas_object_name_set start");
260 evas_object_name_set(priv->contents, VIEW_SINGLE_CALL_LAYOUT_ID);
261 CALL_UI_KPI("evas_object_name_set done");
262 CALL_UI_DEBUG("[========== ONEVIEW: priv->contents Addr : [%p] ==========]", priv->contents);
265 CALL_UI_DEBUG("[UI]ad->layout_incall==NULL case ");
266 evas_object_show(vd->layout);
269 __vc_ui_view_single_call_onshow(view_data);
273 static int __vc_ui_view_single_call_onupdate(voice_call_view_data_t *view_data, void *update_data1, void *update_data2)
275 CALL_UI_DEBUG("incall view update");
277 __vc_ui_view_single_call_onshow(view_data);
282 static int __vc_ui_view_single_call_onhide(voice_call_view_data_t *view_data)
284 CALL_UI_DEBUG("incall view hide");
286 evas_object_hide(view_data->layout);
290 static int __vc_ui_view_single_call_onshow(voice_call_view_data_t *view_data)
292 CALL_UI_DEBUG("incall view show");
293 CALL_UI_KPI("__vc_ui_view_single_call_onshow start");
294 incall_one_view_priv_t *priv = (incall_one_view_priv_t *)view_data->priv;
295 call_data_t *call_data = _vcui_doc_get_first_call_data_from_list();
297 /*change the orientation to normal - 0 */
298 elm_win_rotation_with_resize_set(view_data->app_data->win_main, 0);
299 elm_win_rotation_with_resize_set(view_data->app_data->popup_mw, 0);
301 if (call_data == NULL) {
302 CALL_UI_DEBUG("call data is null");
305 CALL_UI_KPI("__vc_ui_view_single_call_draw_screen start");
306 __vc_ui_view_single_call_draw_screen(priv->contents, view_data);
307 CALL_UI_KPI("__vc_ui_view_single_call_draw_screen done");
309 CALL_UI_KPI("incall-one-view hide start");
310 evas_object_hide(view_data->layout);
311 CALL_UI_KPI("incall-one-view hide done");
312 CALL_UI_KPI("incall-one-view show start");
313 evas_object_show(view_data->layout);
314 CALL_UI_KPI("incall-one-view show done");
315 CALL_UI_KPI("__vc_ui_view_single_call_onshow done");
319 static int __vc_ui_view_single_call_ondestroy(voice_call_view_data_t *view_data)
321 CALL_UI_DEBUG("incall view destroy");
323 vcui_app_call_data_t *ad = _vcui_get_app_data();
325 voice_call_view_data_t *vd = ad->view_st[VIEW_INCALL_ONECALL_VIEW];
326 incall_one_view_priv_t *priv = (incall_one_view_priv_t *)vd->priv;
330 evas_object_del(priv->btn_ly);
334 if (priv->caller_info) {
335 evas_object_del(priv->caller_info);
336 priv->caller_info = NULL;
339 /*Delete keypad layout*/
340 _vcui_keypad_delete_layout(priv->contents);
342 if (priv->contents) {
343 evas_object_del(priv->contents);
344 priv->contents = NULL;
351 if (vd->layout != NULL) {
352 evas_object_hide(vd->layout);
353 evas_object_del(vd->layout);
357 ad->view_st[VIEW_INCALL_ONECALL_VIEW] = NULL;
360 CALL_UI_DEBUG("complete destroy one view");
364 int _vc_ui_view_single_call_check_valid_eo(voice_call_view_data_t *vd)
368 incall_one_view_priv_t *priv = NULL;
371 VCUI_RETURN_VALUE_IF_FAIL(vd , -1);
372 priv = (incall_one_view_priv_t *) vd->priv;
374 valid = _vcui_check_valid_eo(priv->contents, VIEW_SINGLE_CALL_LAYOUT_ID);
379 Evas_Object *_vc_ui_view_single_call_get_layout(voice_call_view_data_t *vd)
382 incall_one_view_priv_t *priv = NULL;
384 VCUI_RETURN_NULL_IF_FAIL(vd);
385 priv = (incall_one_view_priv_t *) vd->priv;
387 VCUI_RETURN_NULL_IF_FAIL(priv);
388 return priv->contents;
391 Evas_Object *_vc_ui_view_single_call_get_button_layout(voice_call_view_data_t *vd)
394 incall_one_view_priv_t *priv = NULL;
396 VCUI_RETURN_NULL_IF_FAIL(vd);
397 priv = (incall_one_view_priv_t *) vd->priv;
399 VCUI_RETURN_NULL_IF_FAIL(priv);
403 int _vc_ui_view_single_call_get_call_status(voice_call_view_data_t *vd)
406 incall_one_view_priv_t *priv = NULL;
407 call_data_t *call_data = _vcui_doc_get_first_call_data_from_list();
410 VCUI_RETURN_INVALID_IF_FAIL(vd);
411 priv = (incall_one_view_priv_t *) vd->priv;
413 VCUI_RETURN_INVALID_IF_FAIL(call_data);
414 call_status = _vcui_doc_get_call_status(call_data);
418 void _vc_ui_view_single_call_set_call_timer(voice_call_view_data_t *vd, char *pcall_dur)
420 incall_one_view_priv_t *priv = NULL;
422 VCUI_RETURN_IF_FAIL(vd);
423 priv = (incall_one_view_priv_t *) vd->priv;
425 VCUI_RETURN_IF_FAIL(priv);
426 edje_object_part_text_set(_EDJ(priv->caller_info), "txt_timer", _(pcall_dur));
429 Evas_Object *_vc_ui_view_single_call_get_caller_info(voice_call_view_data_t *vd)
432 incall_one_view_priv_t *priv = NULL;
434 VCUI_RETURN_NULL_IF_FAIL(vd);
435 priv = (incall_one_view_priv_t *) vd->priv;
437 VCUI_RETURN_NULL_IF_FAIL(priv);
438 return priv->caller_info;