Fixed N_SE-8702(Swap issue)
[apps/home/call.git] / ui / src / vcui-view-elements.c
1 /*
2  * Copyright 2012  Samsung Electronics Co., Ltd
3  *
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
7  *
8  * http://www.tizenopensource.org/license
9  *
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.
15  */
16
17
18 #include "vcui-application.h"
19 #include "vcui-view-elements.h"
20 #include "vcui-view-dialing.h"
21 #include "vcui-view-single-call.h"
22 #include "vcui-view-multi-call-conf.h"
23 #include "vcui-view-multi-call-split.h"
24 #include "vcui-view-multi-call-list.h"
25 #include "vcui-view-keypad.h"
26 #include "vcui-view-incoming-lock.h"
27 #include "vcui-view-callend.h"
28 #include "vcui-view-quickpanel.h"
29 #include "vcui-view-popup.h"
30
31 static void __vcui_hold_btn_cb(void *data, Evas_Object *obj, void *event_info);
32 static void __vcui_unhold_btn_cb(void *data, Evas_Object *obj, void *event_info);
33 static void __vcui_join_btn_cb(void *data, Evas_Object *obj, void *event_info);
34 static void __vcui_keypad_btn_cb(void *data, Evas_Object *obj, void *event_info);
35 static void __vcui_contacts_btn_cb(void *data, Evas_Object *obj, void *event_info);
36 static void __vcui_addcall_btn_cb(void *data, Evas_Object *obj, void *event_info);
37 static void __vcui_sound_path_btn_cb(void *data, Evas_Object *obj, void *event_info);
38 static void __vcui_spk_btn_cb(void *data, Evas_Object *obj, void *event_info);
39 static void __vcui_spk_press_btn_cb(void *data, Evas_Object *obj, void *event_info);
40 static void __vcui_mute_btn_cb(void *data, Evas_Object *obj, void *event_info);
41 static void __vcui_bigend_btn_cb(void *data, Evas_Object *obj, void *event_info);
42 static void __vcui_videocall_btn_cb(void *data, Evas_Object *obj, void *event_info);
43 static void __vcui_voicecall_btn_cb(void *data, Evas_Object *obj, void *event_info);
44 static void __vcui_msg_btn_cb(void *data, Evas_Object *obj, void *event_info);
45 static void __vcui_hold_btn_cb(void *data, Evas_Object *obj, void *event_info)
46 {
47         CALL_UI_DEBUG("..");
48         vcall_engine_process_hold_call();
49 }
50
51 static void __vcui_unhold_btn_cb(void *data, Evas_Object *obj, void *event_info)
52 {
53         CALL_UI_DEBUG("..");
54         vcall_engine_process_hold_call();
55 }
56
57 void _vcui_swap_btn_cb(void *data, Evas_Object *obj, void *event_info)
58 {
59         CALL_UI_DEBUG("..");
60         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
61         vcui_app_call_data_t *ad = vd->app_data;
62
63         ad->bholdisleft = ad->bswapped;
64         vcall_engine_process_hold_call();
65 }
66
67 static void __vcui_join_btn_cb(void *data, Evas_Object *obj, void *event_info)
68 {
69         CALL_UI_DEBUG("..");
70         _vcui_create_top_left_button_disabled(data);
71         vcall_engine_join_call();
72 }
73
74 void _vcui_conf_img_cb(void *data, Evas_Object *obj, void *event_info)
75 {                               /* for multicall list view */
76         CALL_UI_DEBUG("..");
77         _vcui_view_change(VIEW_INCALL_MULTICALL_LIST_VIEW, 0, 0, 0);
78 }
79
80 static void __vcui_keypad_btn_cb(void *data, Evas_Object *obj, void *event_info)
81 {
82         CALL_UI_DEBUG("..");
83         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
84         Evas_Object *view_ly = NULL;
85
86         switch (vd->type) {
87         case VIEW_DIALLING_VIEW:
88                 {
89                         view_ly = _vc_ui_view_dialing_get_layout(vd);
90                 }
91                 break;
92         case VIEW_INCALL_ONECALL_VIEW:
93                 {
94                         view_ly = _vc_ui_view_single_call_get_layout(vd);
95                 }
96                 break;
97         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
98                 {
99                         view_ly = _vcui_view_multi_call_split_get_layout(vd);
100                 }
101                 break;
102         case VIEW_INCALL_MULTICALL_CONF_VIEW:
103                 {
104                         view_ly = _vcui_view_multi_call_conf_get_main_layout(vd);
105                 }
106                 break;
107         default:
108                 CALL_UI_DEBUG("code should never reach here");
109                 return;
110         }
111
112         if (_vcui_keypad_get_show_status() == EINA_FALSE) {     /*show keypad region*/
113                 CALL_UI_DEBUG("..");
114
115                 /*Hide caller info area*/
116                 edje_object_signal_emit(_EDJ(view_ly), "HIDE", "CALL_AREA");
117                 edje_object_signal_emit(_EDJ(view_ly), "HIDE_NOISE_REDUCTIION", "NOISE_REDUCTIION");
118                 edje_object_signal_emit(_EDJ(view_ly), "HIDE_SOUND_EQ", "SOUND_EQ");
119
120                 /*Show keypad layout - ON view*/
121                 edje_object_signal_emit(_EDJ(view_ly), "SHOW", "KEYPAD_BTN");
122
123                 /*Actual show with animation*/
124                 _vcui_keypad_show_layout(vd);
125
126                 elm_object_text_set(obj, dgettext("sys_string", "IDS_COM_SK_HIDE"));
127
128                 _vcui_keypad_set_show_status(EINA_TRUE);
129         } else {
130                 CALL_UI_DEBUG("..");
131
132                 /*Hide animation on keypad*/
133                 _vcui_keypad_show_hide_effect(vd, view_ly);
134
135                 /*Set keypad text*/
136                 elm_object_text_set(obj, _("IDS_CALL_SK3_KEYPAD"));
137
138                 /*Set keypad status flag*/
139                 _vcui_keypad_set_show_status(EINA_FALSE);
140         }
141 }
142
143 static void __vcui_contacts_btn_cb(void *data, Evas_Object *obj, void *event_info)
144 {
145         CALL_UI_DEBUG("..");
146         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
147         vcui_app_call_data_t *ad = vd->app_data;
148
149         if (ad->beffect_show == EINA_TRUE) {
150                 ad->bcontact_clicked = EINA_TRUE;
151         } else {
152                 _vcui_doc_launch_contact_list_ug(NULL, NULL, vd->layout, NULL, NULL, NULL, &(vd->app_data->ugs_array_data));
153         }
154 }
155
156 static void __vcui_addcall_btn_cb(void *data, Evas_Object *obj, void *event_info)
157 {
158         CALL_UI_DEBUG("..");
159         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
160         vcui_app_call_data_t *ad = vd->app_data;
161
162         if (ad->beffect_show == EINA_TRUE) {
163                 ad->badd_call_clicked = EINA_TRUE;
164         } else {
165                 _vcui_doc_launch_phoneui_ug(NULL, NULL, vd->layout, NULL, NULL, NULL, &(vd->app_data->ugs_array_data));
166         }
167 }
168
169 static void __vcui_sound_path_btn_cb(void *data, Evas_Object *obj, void *event_info)
170 {
171         CALL_UI_DEBUG("..");
172         _vcui_view_popup_load_snd_path(data);
173 }
174
175 /* #define RCS_TEST */
176
177 static void __vcui_spk_btn_cb(void *data, Evas_Object *obj, void *event_info)
178 {
179         CALL_UI_DEBUG("..");
180         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
181         vcui_app_call_data_t *ad = vd->app_data;
182
183         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
184
185         vcall_engine_process_loudspeaker(EINA_TRUE);
186
187         ad->speaker_status = EINA_TRUE;
188         _vcui_create_bottom_left_button(vd);
189
190 }
191
192 static void __vcui_spk_press_btn_cb(void *data, Evas_Object *obj, void *event_info)
193 {
194         CALL_UI_DEBUG("..");
195         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
196         vcui_app_call_data_t *ad = vd->app_data;
197
198         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
199
200         vcall_engine_process_loudspeaker(EINA_FALSE);
201
202         ad->speaker_status = EINA_FALSE;
203         _vcui_create_bottom_left_button(vd);
204
205 }
206
207 static void __vcui_mute_btn_cb(void *data, Evas_Object *obj, void *event_info)
208 {
209         CALL_UI_DEBUG("..");
210
211         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
212         vcui_app_call_data_t *ad = vd->app_data;
213
214         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
215
216         vcall_engine_process_voice_mute(EINA_TRUE);
217
218         ad->mute_status = EINA_TRUE;
219         if (vd->type == VIEW_QUICKPANEL_VIEW) {
220                 _vcui_view_common_update_mute_btn();
221         } else {
222                 _vcui_create_bottom_middle_button(vd);
223         }
224         _vcui_create_quickpanel_mute_button(vd);
225
226 }
227
228 static void __vcui_mute_press_btn_cb(void *data, Evas_Object *obj, void *event_info)
229 {
230         CALL_UI_DEBUG("..");
231         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
232         vcui_app_call_data_t *ad = vd->app_data;
233
234         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
235
236         vcall_engine_process_voice_mute(EINA_FALSE);
237
238         ad->mute_status = EINA_FALSE;
239
240         if (vd->type == VIEW_QUICKPANEL_VIEW) {
241                 _vcui_view_common_update_mute_btn();
242         } else {
243                 _vcui_create_bottom_middle_button(vd);
244         }
245         _vcui_create_quickpanel_mute_button(vd);
246
247 }
248
249 static void __vcui_bigend_btn_cb(void *data, Evas_Object *obj, void *event_info)
250 {
251         CALL_UI_DEBUG("..");
252
253         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
254         vcui_app_call_data_t *ad = vd->app_data;
255         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
256
257         switch (vd->type) {
258         case VIEW_DIALLING_VIEW:
259                 {
260                         vcall_engine_cancel_call();
261                 }
262                 break;
263         case VIEW_INCALL_ONECALL_VIEW:
264                 {
265                         vcall_engine_release_call();
266                 }
267                 break;
268         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
269                 {
270                         vcall_engine_release_call_by_type(VCALL_ENGINE_RELEASE_ALL_ACTIVE_CALLS);
271                 }
272                 break;
273         case VIEW_INCALL_MULTICALL_CONF_VIEW:
274                 {
275                         int call_status = -1;
276                         call_status = _vcui_view_multi_call_conf_get_call_status(vd);
277                         if (call_status == CALL_HOLD)
278                                 vcall_engine_release_call_by_type(VCALL_ENGINE_RELEASE_ALL_HELD_CALLS);
279                         else if (call_status == CALL_UNHOLD)
280                                 vcall_engine_release_call_by_type(VCALL_ENGINE_RELEASE_ALL_ACTIVE_CALLS);
281                         ad->call_end_type = CALL_END_TYPE_CONF_CALL;
282                 }
283                 break;
284         case VIEW_INCALL_MULTICALL_LIST_VIEW:
285                 {
286                         int call_status = -1;
287                         call_status = _vcui_view_multi_call_list_get_call_status(vd);
288                         if (call_status == CALL_HOLD)
289                                 vcall_engine_release_call_by_type(VCALL_ENGINE_RELEASE_ALL_HELD_CALLS);
290                         else if (call_status == CALL_UNHOLD)
291                                 vcall_engine_release_call_by_type(VCALL_ENGINE_RELEASE_ALL_ACTIVE_CALLS);
292                         int grp_count = 0;
293                         vcall_engine_get_group_count(&grp_count);
294                         CALL_UI_DEBUG("No. of groups - %d", grp_count);
295                         if (grp_count == 1)
296                                 ad->call_end_type = CALL_END_TYPE_CONF_CALL;
297                         else
298                                 ad->call_end_type = CALL_END_TYPE_NONE;
299                 }
300                 break;
301         default:
302                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
303                 return;
304                 break;
305
306         }
307 }
308
309 Evas_Object *__vcui_create_button_style(void *data, Evas_Object **p_button, char *part_name)
310 {
311         Evas_Object *layout;
312         Evas_Object *sw;
313         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
314
315         switch (vd->type) {
316         case VIEW_DIALLING_VIEW:
317                 {
318                         layout = _vc_ui_view_dialing_get_button_layout(vd);
319                 }
320                 break;
321         case VIEW_INCALL_ONECALL_VIEW:
322                 {
323                         layout = _vc_ui_view_single_call_get_button_layout(vd);
324                 }
325                 break;
326         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
327                 {
328                         layout = _vcui_view_multi_call_split_get_button_layout(vd);
329                 }
330                 break;
331         case VIEW_INCALL_MULTICALL_CONF_VIEW:
332                 {
333                         layout = _vcui_view_multi_call_conf_get_button_layout(vd);
334                 }
335                 break;
336         case VIEW_ENDCALL_VIEW:
337                 {
338                         layout = _vc_ui_view_callend_get_button_layout(vd);
339                 }
340                 break;
341         default:
342                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
343                 return NULL;
344                 break;
345
346         }
347
348         sw = edje_object_part_swallow_get(_EDJ(layout), part_name);
349         if (sw) {
350                 edje_object_part_unswallow(_EDJ(layout), sw);
351                 evas_object_del(sw);
352         }
353
354         *p_button = elm_button_add(layout);
355         elm_object_part_content_set(layout, part_name, *p_button);
356
357         return layout;
358 }
359
360 /* Add-Call/Join button ENABLED*/
361 Evas_Object *_vcui_create_top_left_button(void *data)
362 {
363         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
364         vcui_app_call_data_t *ad = vd->app_data;
365         Evas_Object *btn;
366         Evas_Object *layout;
367         Eina_Bool bjoin = EINA_FALSE;
368
369         if (vd->type == VIEW_INCALL_MULTICALL_SPLIT_VIEW)
370                 bjoin = EINA_TRUE;
371
372         layout = __vcui_create_button_style(data, &btn, "top_left_button");
373         {
374                 if (bjoin) {
375                         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_join");
376                         elm_object_style_set(btn, "style_call_sixbtn_join");
377                         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_join");
378                         elm_object_text_set(btn, _("IDS_CALL_BUTTON_JOIN"));
379                         evas_object_smart_callback_add(btn, "clicked", __vcui_join_btn_cb, vd);
380                 } else {
381                         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_add");
382                         elm_object_style_set(btn, "style_call_sixbtn_add");
383                         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_add");
384                         elm_object_text_set(btn, _("IDS_CALL_BUTTON_ADD_CALL"));
385                         evas_object_smart_callback_add(btn, "clicked", __vcui_addcall_btn_cb, data);
386                 }
387         }
388         return btn;
389 }
390
391 /* Add-Call/Join Button DISABLED */
392 Evas_Object *_vcui_create_top_left_button_disabled(void *data)
393 {
394         CALL_UI_KPI("_vcui_create_top_left_button_disabled start");
395         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
396         Evas_Object *btn;
397         Evas_Object *layout;
398         Eina_Bool bjoin = EINA_FALSE;
399
400         if (vd->type == VIEW_INCALL_MULTICALL_SPLIT_VIEW)
401                 bjoin = EINA_TRUE;
402
403         layout = __vcui_create_button_style(data, &btn, "top_left_button");
404         {
405                 if (bjoin) {
406                         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_disabled_join");
407                         elm_object_style_set(btn, "style_call_sixbtn_disabled_join");
408                         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_disabled_join");
409                         elm_object_text_set(btn, _("IDS_CALL_BUTTON_JOIN"));
410                 } else {
411                         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_disabled_add");
412                         elm_object_style_set(btn, "style_call_sixbtn_disabled_add");
413                         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_disabled_add");
414                         elm_object_text_set(btn, _("IDS_CALL_BUTTON_ADD_CALL"));
415                 }
416         }
417
418         CALL_UI_KPI("_vcui_create_top_left_button_disabled done");
419
420         return btn;
421 }
422
423 /* Keypad Button ENABLED */
424 Evas_Object *_vcui_create_top_middle_button(void *data)
425 {
426         Evas_Object *btn;
427         Evas_Object *layout;
428         Evas_Object *view_ly = NULL;
429         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
430
431         layout = __vcui_create_button_style(data, &btn, "top_middle_button");
432         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_keypad");
433         elm_object_style_set(btn, "style_call_sixbtn_keypad");
434         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_keypad");
435
436         switch (vd->type) {
437         case VIEW_DIALLING_VIEW:
438                 {
439                         view_ly = _vc_ui_view_dialing_get_layout(vd);
440                 }
441                 break;
442         case VIEW_INCALL_ONECALL_VIEW:
443                 {
444                         view_ly = _vc_ui_view_single_call_get_layout(vd);
445                 }
446                 break;
447         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
448                 {
449                         view_ly = _vcui_view_multi_call_split_get_layout(vd);
450                 }
451                 break;
452         case VIEW_INCALL_MULTICALL_CONF_VIEW:
453                 {
454                         view_ly = _vcui_view_multi_call_conf_get_main_layout(vd);
455                 }
456                 break;
457         default:
458                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
459                 return NULL;
460                 break;
461         }
462
463         /*Create keypad layout*/
464         _vcui_keypad_create_layout(vd, view_ly);
465         if (_vcui_keypad_get_show_status() == EINA_FALSE) {
466                 elm_object_text_set(btn, _("IDS_CALL_SK3_KEYPAD"));
467         } else {
468                 elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_HIDE"));
469         }
470         evas_object_smart_callback_add(btn, "clicked", __vcui_keypad_btn_cb, data);
471
472         return btn;
473 }
474
475 /* Keypad Button DISABLED */
476 Evas_Object *_vcui_create_top_middle_button_disabled(void *data)
477 {
478         CALL_UI_KPI("_vcui_create_top_middle_button_disabled start");
479         Evas_Object *btn;
480         Evas_Object *layout;
481
482         layout = __vcui_create_button_style(data, &btn, "top_middle_button");
483         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_disabled_keypad");
484         elm_object_style_set(btn, "style_call_sixbtn_disabled_keypad");
485         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_disabled_keypad");
486         elm_object_text_set(btn, _("IDS_CALL_SK3_KEYPAD"));
487         CALL_UI_KPI("_vcui_create_top_middle_button_disabled done");
488
489         return btn;
490 }
491
492 /* End Call Button ENABLED */
493 Evas_Object *_vcui_create_top_right_button(void *data)
494 {
495         Evas_Object *btn;
496         Evas_Object *layout;
497
498         layout = __vcui_create_button_style(data, &btn, "top_right_button");
499         elm_object_style_set(btn, "style_call_sixbtn_end");
500         elm_object_text_set(btn, _("IDS_CALL_SK3_END_CALL"));
501         evas_object_smart_callback_add(btn, "clicked", __vcui_bigend_btn_cb, data);
502
503         return btn;
504 }
505
506 /* End Call Button DISABLED */
507 Evas_Object *_vcui_create_top_right_button_disabled(void *data)
508 {
509         Evas_Object *btn;
510         Evas_Object *layout;
511
512         layout = __vcui_create_button_style(data, &btn, "top_right_button");
513         elm_object_style_set(btn, "style_call_sixbtn_disabled_end");
514         elm_object_text_set(btn, _("IDS_CALL_SK3_END_CALL"));
515
516         return btn;
517 }
518
519 /* Speaker Button ENABLED */
520 Evas_Object *_vcui_create_bottom_left_button(void *data)
521 {
522         CALL_UI_KPI("_vcui_create_bottom_left_button start");
523         Evas_Object *btn;
524         Evas_Object *layout;
525         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
526         vcui_app_call_data_t *ad = vd->app_data;
527
528         layout = __vcui_create_button_style(data, &btn, "bottom_left_button");
529         if (EINA_TRUE == _vcui_is_headset_conected()) {
530                 elm_object_style_set(btn, "style_call_sixbtn_speaker");
531                 elm_object_text_set(btn, _("IDS_CALL_BUTTON_SOUND_ABB"));
532                 evas_object_smart_callback_add(btn, "clicked", __vcui_sound_path_btn_cb, vd);
533         } else {
534                 elm_object_text_set(btn, _("IDS_CALL_BUTTON_SPEAKER"));
535                 if (ad->speaker_status == EINA_FALSE) {
536                         elm_object_style_set(btn, "style_call_sixbtn_speaker");
537                         evas_object_smart_callback_add(btn, "clicked", __vcui_spk_btn_cb, vd);
538                 } else {
539                         elm_object_style_set(btn, "style_call_sixbtn_speaker_on");
540                         evas_object_smart_callback_add(btn, "clicked", __vcui_spk_press_btn_cb, vd);
541                 }
542         }
543         CALL_UI_KPI("_vcui_create_bottom_left_button done");
544
545         return btn;
546 }
547
548 /* Speaker Button DISABLED */
549 Evas_Object *_vcui_create_bottom_left_button_disabled(void *data)
550 {
551         CALL_UI_KPI("_vcui_create_bottom_left_button_disabled start");
552         Evas_Object *btn;
553         Evas_Object *layout;
554
555         layout = __vcui_create_button_style(data, &btn, "bottom_left_button");
556         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_disabled_speaker");
557         elm_object_style_set(btn, "style_call_sixbtn_disabled_speaker");
558         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_disabled_speaker");
559         elm_object_text_set(btn, _("IDS_CALL_BUTTON_SPEAKER"));
560         CALL_UI_KPI("_vcui_create_bottom_left_button_disabled done");
561
562         return btn;
563 }
564
565 /* Mute Button ENABLED */
566 Evas_Object *_vcui_create_bottom_middle_button(void *data)
567 {
568         Evas_Object *btn;
569         Evas_Object *layout;
570         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
571         vcui_app_call_data_t *ad = vd->app_data;
572
573         layout = __vcui_create_button_style(data, &btn, "bottom_middle_button");
574         elm_object_text_set(btn, _("IDS_CALL_BUTTON_MUTE_ABB"));
575         if (ad->mute_status == EINA_FALSE) {
576                 elm_object_style_set(btn, "style_call_sixbtn_mute");
577                 evas_object_smart_callback_add(btn, "clicked", __vcui_mute_btn_cb, vd);
578         } else {
579                 elm_object_style_set(btn, "style_call_sixbtn_mute_on");
580                 evas_object_smart_callback_add(btn, "clicked", __vcui_mute_press_btn_cb, vd);
581         }
582
583         return btn;
584 }
585
586 /* Mute Button DISABLED */
587 Evas_Object *_vcui_create_bottom_middle_button_disabled(void *data)
588 {
589         CALL_UI_KPI("_vcui_create_bottom_middle_button_disabled start");
590         Evas_Object *btn;
591         Evas_Object *layout;
592
593         layout = __vcui_create_button_style(data, &btn, "bottom_middle_button");
594         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_disabled_mute");
595         elm_object_style_set(btn, "style_call_sixbtn_disabled_mute");
596         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_disabled_mute");
597         elm_object_text_set(btn, _("IDS_CALL_BUTTON_MUTE_ABB"));
598         CALL_UI_KPI("_vcui_create_bottom_middle_button_disabled done");
599
600         return btn;
601 }
602
603 /* Share/Contacts Button ENABLED */
604 Evas_Object *_vcui_create_bottom_right_button(void *data)
605 {
606         Evas_Object *btn;
607         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
608         vcui_app_call_data_t *ad = vd->app_data;
609
610         __vcui_create_button_style(data, &btn, "bottom_right_button");
611
612         {
613                 CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_contacts");
614                 elm_object_style_set(btn, "style_call_sixbtn_contacts");
615                 CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_contacts");
616                 elm_object_text_set(btn, _("IDS_CALL_BUTTON_CONTACTS"));
617                 evas_object_smart_callback_add(btn, "clicked", __vcui_contacts_btn_cb, vd);
618         }
619
620         return btn;
621 }
622
623 /* Share/Contacts Button DISABLED */
624 Evas_Object *_vcui_create_bottom_right_button_disabled(void *data)
625 {
626         CALL_UI_KPI("_vcui_create_bottom_right_button_disabled start");
627         Evas_Object *btn;
628
629         __vcui_create_button_style(data, &btn, "bottom_right_button");
630         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_disabled");
631         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_disabled");
632
633         {
634                 CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_disabled_contacts");
635                 elm_object_style_set(btn, "style_call_sixbtn_disabled_contacts");
636                 CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_disabled_contacts");
637                 elm_object_text_set(btn, _("IDS_CALL_BUTTON_CONTACTS"));
638         }
639
640         CALL_UI_KPI("_vcui_create_bottom_right_button_disabled done");
641
642         return btn;
643 }
644
645 Evas_Object *_vcui_create_hold_swap_button(void *data)
646 {
647         Evas_Object *btn;
648         Evas_Object *ic;
649         Evas_Object *layout;
650         Evas_Object *sw;
651         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
652         int call_status = 0;
653         Eina_Bool bswap_button = EINA_FALSE;
654         Eina_Bool bhold_button = EINA_FALSE;
655
656         switch (vd->type) {
657         case VIEW_INCALL_ONECALL_VIEW:
658                 {
659                         layout = _vc_ui_view_single_call_get_layout(vd);
660                         call_status = _vc_ui_view_single_call_get_call_status(vd);
661                         bhold_button = EINA_TRUE;
662                 }
663                 break;
664         case VIEW_INCALL_MULTICALL_CONF_VIEW:
665                 {
666                         layout = _vcui_view_multi_call_conf_get_main_layout(vd);
667                         call_status = _vcui_view_multi_call_conf_get_call_status(vd);
668                         bhold_button = EINA_TRUE;
669                 }
670                 break;
671         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
672                 {
673                         layout = _vcui_view_multi_call_split_get_layout(vd);
674                         bswap_button = EINA_TRUE;
675                 }
676                 break;
677         default:
678                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
679                 return NULL;
680                 break;
681         }
682         CALL_UI_DEBUG("vd type:[%d], call_status:[%d]", vd->type, call_status);
683
684         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_hold_swap");
685         if (sw) {
686                 edje_object_part_unswallow(_EDJ(layout), sw);
687                 evas_object_del(sw);
688         }
689
690         btn = elm_button_add(layout);
691         elm_object_part_content_set(layout, "btn_hold_swap", btn);
692         ic = elm_image_add(layout);
693         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
694         elm_icon_resizable_set(ic, 1, 1);
695         elm_object_content_set(btn, ic);
696
697         if (bhold_button) {
698                 elm_object_style_set(btn, "style_normal_holdbtn");
699                 if (call_status == CALL_UNHOLD) {
700                         elm_image_file_set(ic, HOLD_ICON, NULL);
701                         edje_object_part_text_set(_EDJ(layout), "txt_hold_swap", _("IDS_CALL_BUTTON_HOLD"));
702                         evas_object_smart_callback_add(btn, "clicked", __vcui_hold_btn_cb, vd);
703                 } else {                /* CALL_HOLD */
704                         elm_image_file_set(ic, UNHOLD_ICON, NULL);
705                         edje_object_part_text_set(_EDJ(layout), "txt_hold_swap", _("IDS_CALL_BUTTON_UNHOLD"));
706                         evas_object_smart_callback_add(btn, "clicked", __vcui_unhold_btn_cb, vd);
707                 }
708         } else if (bswap_button) {
709                 elm_object_style_set(btn, "style_normal_swapbtn");
710                 elm_image_file_set(ic, SWAP_ICON, NULL);
711                 edje_object_part_text_set(_EDJ(layout), "txt_hold_swap", _("Swap"));
712                 evas_object_smart_callback_add(btn, "clicked", _vcui_swap_btn_cb, vd);
713         }
714
715         return layout;
716 }
717
718 Evas_Object *_vcui_create_button_bigend(void *data)
719 {
720         CALL_UI_KPI("_vcui_create_button_bigend start");
721         Evas_Object *btn;
722         Evas_Object *layout;
723         Evas_Object *sw;
724
725         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
726         switch (vd->type) {
727         case VIEW_DIALLING_VIEW:
728                 {
729                         layout = _vc_ui_view_dialing_get_layout(vd);
730                 }
731                 break;
732         case VIEW_INCALL_ONECALL_VIEW:
733                 {
734                         layout = _vc_ui_view_single_call_get_layout(vd);
735                 }
736                 break;
737         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
738                 {
739                         layout = _vcui_view_multi_call_split_get_layout(vd);
740                 }
741                 break;
742         case VIEW_INCALL_MULTICALL_CONF_VIEW:
743                 {
744                         layout = _vcui_view_multi_call_conf_get_main_layout(vd);
745                 }
746                 break;
747         case VIEW_INCALL_MULTICALL_LIST_VIEW:
748                 {
749                         layout = _vcui_view_multi_call_list_get_main_layout(vd);
750                 }
751                 break;
752         default:
753                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
754                 return NULL;
755                 break;
756
757         }
758
759         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_bigend");
760         if (sw) {
761                 edje_object_part_unswallow(_EDJ(layout), sw);
762                 evas_object_del(sw);
763         }
764
765         btn = elm_button_add(layout);
766         elm_object_part_content_set(layout, "btn_bigend", btn);
767         CALL_UI_KPI("elm_object_style_set start :: style_call_text_only_red");
768         elm_object_style_set(btn, "style_call_text_only_red");
769         CALL_UI_KPI("elm_object_style_set done :: style_call_text_only_red");
770         elm_object_text_set(btn, _("IDS_CALL_OPT_END_ALL_CALLS"));
771         evas_object_smart_callback_add(btn, "clicked", __vcui_bigend_btn_cb, vd);
772         CALL_UI_KPI("_vcui_create_button_bigend done");
773         return layout;
774 }
775
776 Evas_Object *_vcui_create_button_bigend_disabled(void *data)
777 {
778         CALL_UI_KPI("_vcui_create_button_bigend_disabled start");
779         Evas_Object *btn;
780         Evas_Object *layout;
781         Evas_Object *sw;
782
783         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
784         switch (vd->type) {
785         case VIEW_DIALLING_VIEW:
786                 {
787                         layout = _vc_ui_view_dialing_get_layout(vd);
788                 }
789                 break;
790         case VIEW_INCALL_ONECALL_VIEW:
791                 {
792                         layout = _vc_ui_view_single_call_get_layout(vd);
793                 }
794                 break;
795         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
796                 {
797                         layout = _vcui_view_multi_call_split_get_layout(vd);
798                 }
799                 break;
800         case VIEW_INCALL_MULTICALL_CONF_VIEW:
801                 {
802                         layout = _vcui_view_multi_call_conf_get_main_layout(vd);
803                 }
804                 break;
805         case VIEW_ENDCALL_VIEW:
806                 {
807                         layout = _vc_ui_view_callend_get_layout(vd);
808                 }
809                 break;
810         default:
811                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
812                 return NULL;
813                 break;
814
815         }
816
817         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_bigend");
818         if (sw) {
819                 edje_object_part_unswallow(_EDJ(layout), sw);
820                 evas_object_del(sw);
821         }
822
823         btn = elm_button_add(layout);
824         elm_object_part_content_set(layout, "btn_bigend", btn);
825         CALL_UI_KPI("elm_object_style_set start :: style_call_text_only_red_disabled");
826         elm_object_style_set(btn, "style_call_text_only_red_disabled");
827         CALL_UI_KPI("elm_object_style_set done :: style_call_text_only_red_disabled");
828         elm_object_text_set(btn, _("IDS_CALL_SK3_END_CALL"));
829         CALL_UI_KPI("_vcui_create_button_bigend_disabled done");
830         return layout;
831 }
832
833 Evas_Object *_vcui_create_conf_list_button_hold(void *data)
834 {
835         Evas_Object *btn;
836         Evas_Object *ic;
837         Evas_Object *layout;
838         Evas_Object *sw;
839         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
840
841         int call_status = 0;
842         switch (vd->type) {
843         case VIEW_INCALL_MULTICALL_CONF_VIEW:
844                 {
845                         layout = _vcui_view_multi_call_conf_get_main_layout(vd);
846                         call_status = _vcui_doc_get_group_call_status();
847                 }
848                 break;
849         case VIEW_INCALL_MULTICALL_LIST_VIEW:
850                 {
851                         layout = _vcui_view_multi_call_list_get_main_layout(vd);
852                         call_status = _vcui_doc_get_group_call_status();
853                 }
854                 break;
855         default:
856                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
857                 return NULL;
858                 break;
859
860         }
861         CALL_UI_DEBUG("vd type:[%d], call_status:[%d]", vd->type, call_status);
862
863         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_hold");
864         if (sw) {
865                 edje_object_part_unswallow(_EDJ(layout), sw);
866                 evas_object_del(sw);
867         }
868
869         btn = elm_button_add(layout);
870         CALL_UI_KPI("elm_object_style_set start :: style_list_holdbtn");
871         elm_object_style_set(btn, "style_list_holdbtn");
872         CALL_UI_KPI("elm_object_style_set done :: style_list_holdbtn");
873         elm_object_part_content_set(layout, "btn_hold", btn);
874         ic = elm_image_add(layout);
875         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
876         elm_icon_resizable_set(ic, 1, 1);
877         elm_object_content_set(btn, ic);
878
879         if (call_status == CALL_UNHOLD) {
880                 elm_image_file_set(ic, HOLD_ICON, NULL);
881                 elm_object_text_set(btn, _("IDS_CALL_BUTTON_HOLD"));
882
883                 evas_object_smart_callback_add(btn, "clicked", __vcui_hold_btn_cb, vd);
884         } else {                /* CALL_HOLD */
885                 elm_image_file_set(ic, UNHOLD_ICON, NULL);
886                 elm_object_text_set(btn, _("IDS_CALL_BUTTON_UNHOLD"));
887
888                 evas_object_smart_callback_add(btn, "clicked", __vcui_unhold_btn_cb, vd);
889         }
890
891         return layout;
892 }
893
894 Evas_Object *_vcui_show_wallpaper_image(Evas_Object *contents)
895 {
896         Evas_Object *d_image = NULL;
897         return d_image;
898 }
899
900 void _vcui_delete_contact_image(Evas_Object *contents)
901 {
902         Evas_Object *sw;
903
904         sw = edje_object_part_swallow_get(_EDJ(contents), "swl_cid");
905         if (sw) {
906                 edje_object_part_unswallow(_EDJ(contents), sw);
907                 evas_object_del(sw);
908         }
909 }
910
911 Evas_Object *_vcui_show_contact_image(Evas_Object *contents, Evas_Object *win_main, char *path)
912 {
913         Evas_Object *sw;
914         Evas_Object *ic;
915
916         sw = edje_object_part_swallow_get(_EDJ(contents), "swl_cid");
917         if (sw) {
918                 edje_object_part_unswallow(_EDJ(contents), sw);
919                 evas_object_del(sw);
920         }
921
922         ic = elm_image_add(win_main);
923         elm_object_part_content_set(contents, "swl_cid", ic);
924         elm_image_file_set(ic, path, NULL);
925
926         return ic;
927 }
928
929 Evas_Object *_vcui_show_default_image(Evas_Object *contents, Evas_Object *win_main, char *path)
930 {
931         Evas_Object *sw;
932         Evas_Object *ic;
933
934         sw = edje_object_part_swallow_get(_EDJ(contents), "swl_cid");
935         if (sw) {
936                 edje_object_part_unswallow(_EDJ(contents), sw);
937                 evas_object_del(sw);
938         }
939
940         ic = elm_image_add(win_main);
941         elm_object_part_content_set(contents, "swl_cid", ic);
942         elm_image_file_set(ic, path, NULL);
943
944         return ic;
945 }
946
947 static void __vcui_more_btn_cb(void *data, Evas_Object *obj, void *event_info)
948 {
949         CALL_UI_DEBUG("__vcui_more_btn_cb..");
950         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
951         vcui_app_call_data_t *ad = vd->app_data;
952
953         _vcui_view_popup_load_more_option(data);
954 }
955
956 static void __vcui_videocall_btn_cb(void *data, Evas_Object *obj, void *event_info)
957 {
958         CALL_UI_DEBUG("__vcui_videocall_btn_cb..");
959         char *tel_num = (char *)data;
960
961         bundle *kb;
962         kb = bundle_create();
963         bundle_add(kb, "KEY_CALL_TYPE", "MO");
964         bundle_add(kb, "number", tel_num);
965         aul_launch_app("org.tizen.vtmain", kb);
966         bundle_free(kb);
967
968         free(tel_num);
969         tel_num = NULL;
970
971         _vcui_view_common_call_end_timer_reset();
972         evas_object_smart_callback_del(obj, "clicked", __vcui_videocall_btn_cb);
973 }
974
975 static void __vcui_voicecall_btn_cb(void *data, Evas_Object *obj, void *event_info)
976 {
977         CALL_UI_DEBUG("__vcui_voicecall_btn_cb..");
978         vcui_app_call_data_t *ad = _vcui_get_app_data();
979         char *tel_num = (char *)data;
980         vcui_call_mo_data_t call_data;
981
982         _vcui_view_common_timer_redial_reset();
983         ad->speaker_status = EINA_FALSE;
984         ad->mute_status = EINA_FALSE;
985         ad->wbamr_status = EINA_FALSE;
986
987         memset(&call_data, 0, sizeof(call_data));
988
989         snprintf(call_data.call_number, sizeof(call_data.call_number), "%s", tel_num);
990         call_data.ct_index = -1;
991
992         vcall_engine_process_normal_call(call_data.call_number, call_data.ct_index, EINA_FALSE);
993
994         free(tel_num);
995         tel_num = NULL;
996
997         evas_object_smart_callback_del(obj, "clicked", __vcui_voicecall_btn_cb);
998 }
999
1000 static void __vcui_msg_btn_cb(void *data, Evas_Object *obj, void *event_info)
1001 {
1002         CALL_UI_DEBUG("__vcui_msg_btn_cb..");
1003         char *tel_num = (char *)data;
1004
1005         _vcui_doc_launch_msg_composer(NULL, tel_num);
1006
1007         free(tel_num);
1008         tel_num = NULL;
1009
1010         _vcui_view_common_call_end_timer_reset();
1011         evas_object_smart_callback_del(obj, "clicked", __vcui_msg_btn_cb);
1012 }
1013
1014 static void __vcui_add_to_contacts_btn_cb(void *data, Evas_Object *obj, void *event_info)
1015 {
1016         vcui_app_call_data_t *ad = _vcui_get_app_data();
1017         voice_call_view_data_t *vd = ad->view_st[VIEW_ENDCALL_VIEW];
1018         char *tel_num = (char *)data;
1019
1020         _vcui_doc_launch_add_to_contacts_ug(NULL, NULL, vd->layout, NULL, NULL, NULL, &(vd->app_data->ugs_array_data), tel_num);
1021
1022         free(tel_num);
1023         tel_num = NULL;
1024
1025         evas_object_smart_callback_del(obj, "clicked", __vcui_add_to_contacts_btn_cb);
1026 }
1027
1028 static void __vcui_view_contact_btn_cb(void *data, Evas_Object *obj, void *event_info)
1029 {
1030         vcui_app_call_data_t *ad = _vcui_get_app_data();
1031         voice_call_view_data_t *vd = ad->view_st[VIEW_ENDCALL_VIEW];
1032
1033         _vcui_doc_launch_view_contact_ug(NULL, NULL, vd->layout, NULL, NULL, NULL, &(vd->app_data->ugs_array_data), data);
1034
1035         evas_object_smart_callback_del(obj, "clicked", __vcui_view_contact_btn_cb);
1036 }
1037
1038 Evas_Object *_vcui_create_videocall_button(void *data, char *number)
1039 {
1040         Evas_Object *btn;
1041         Evas_Object *layout;
1042         Evas_Object *sw;
1043         voice_call_view_data_t *vd = NULL;
1044         char *tel_number = NULL;
1045
1046         VCUI_RETURN_NULL_IF_FAIL((vd = (voice_call_view_data_t *)data) != NULL);
1047         layout = _vc_ui_view_callend_get_layout(vd);
1048
1049         tel_number = strdup(number);
1050
1051         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_videocall");
1052         if (sw) {
1053                 edje_object_part_unswallow(_EDJ(layout), sw);
1054                 evas_object_del(sw);
1055         }
1056
1057         btn = elm_button_add(layout);
1058         elm_object_part_content_set(layout, "btn_videocall", btn);
1059         elm_object_style_set(btn, "style_call_end_video_call_button");
1060
1061         elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"));
1062         evas_object_smart_callback_add(btn, "clicked", __vcui_videocall_btn_cb, tel_number);
1063
1064         return layout;
1065 }
1066
1067 Evas_Object *_vcui_create_voicecall_button(void *data, char *number)
1068 {
1069         Evas_Object *btn;
1070         Evas_Object *layout;
1071         Evas_Object *sw;
1072         voice_call_view_data_t *vd = NULL;
1073         char *tel_number = NULL;
1074
1075         VCUI_RETURN_NULL_IF_FAIL((vd = (voice_call_view_data_t *)data) != NULL);
1076         layout = _vc_ui_view_callend_get_layout(vd);
1077
1078         tel_number = strdup(number);
1079
1080         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_voicecall");
1081         if (sw) {
1082                 edje_object_part_unswallow(_EDJ(layout), sw);
1083                 evas_object_del(sw);
1084         }
1085
1086         btn = elm_button_add(layout);
1087         elm_object_part_content_set(layout, "btn_voicecall", btn);
1088         elm_object_style_set(btn, "style_call_end_voice_call_button");
1089
1090         elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_BODY_VOICE_CALL"));
1091         evas_object_smart_callback_add(btn, "clicked", __vcui_voicecall_btn_cb, tel_number);
1092
1093         return layout;
1094 }
1095
1096 Evas_Object *_vcui_create_message_button(void *data, char *number)
1097 {
1098         Evas_Object *btn;
1099         Evas_Object *layout;
1100         Evas_Object *sw;
1101         voice_call_view_data_t *vd = NULL;
1102         char *tel_number = NULL;
1103
1104         VCUI_RETURN_NULL_IF_FAIL((vd = (voice_call_view_data_t *)data) != NULL);
1105         layout = _vc_ui_view_callend_get_layout(vd);
1106
1107         tel_number = strdup(number);
1108
1109         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_message");
1110         if (sw) {
1111                 edje_object_part_unswallow(_EDJ(layout), sw);
1112                 evas_object_del(sw);
1113         }
1114
1115         btn = elm_button_add(layout);
1116         elm_object_part_content_set(layout, "btn_message", btn);
1117         elm_object_style_set(btn, "style_call_end_message_button");
1118
1119         elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_BODY_MESSAGE"));
1120         evas_object_smart_callback_add(btn, "clicked", __vcui_msg_btn_cb, tel_number);
1121
1122         return layout;
1123 }
1124
1125 Evas_Object *_vcui_create_add_to_contacts_button(void *data, char *number)
1126 {
1127         Evas_Object *btn;
1128         Evas_Object *layout;
1129         Evas_Object *sw;
1130         char *tel_number = strdup(number);
1131
1132         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1133         switch (vd->type) {
1134         case VIEW_ENDCALL_VIEW:
1135                 {
1136                         layout = _vc_ui_view_callend_get_layout(vd);
1137                 }
1138                 break;
1139         default:
1140                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
1141                 if (tel_number != NULL) {
1142                         free(tel_number);
1143                         tel_number = NULL;
1144                 }
1145                 return NULL;
1146                 break;
1147
1148         }
1149
1150         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_contacts");
1151         if (sw) {
1152                 edje_object_part_unswallow(_EDJ(layout), sw);
1153                 evas_object_del(sw);
1154         }
1155
1156         btn = elm_button_add(layout);
1157         elm_object_part_content_set(layout, "btn_contacts", btn);
1158         elm_object_style_set(btn, "style_call_text_only_grey");
1159         elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"));
1160         evas_object_smart_callback_add(btn, "clicked", __vcui_add_to_contacts_btn_cb, tel_number);
1161
1162         return layout;
1163 }
1164
1165 Evas_Object *_vcui_create_view_contact_button(void *data, int ct_id)
1166 {
1167         Evas_Object *btn;
1168         Evas_Object *layout;
1169         Evas_Object *sw;
1170
1171         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1172         switch (vd->type) {
1173         case VIEW_ENDCALL_VIEW:
1174                 {
1175                         layout = _vc_ui_view_callend_get_layout(vd);
1176                 }
1177                 break;
1178         default:
1179                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
1180                 return NULL;
1181                 break;
1182
1183         }
1184
1185         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_contacts");
1186         if (sw) {
1187                 edje_object_part_unswallow(_EDJ(layout), sw);
1188                 evas_object_del(sw);
1189         }
1190
1191         btn = elm_button_add(layout);
1192         elm_object_part_content_set(layout, "btn_contacts", btn);
1193         elm_object_style_set(btn, "style_call_text_only_grey");
1194         elm_object_text_set(btn, _("IDS_CALL_BUTTON_VIEW_CONTACT"));
1195         evas_object_smart_callback_add(btn, "clicked", __vcui_view_contact_btn_cb, (void *)ct_id);
1196
1197         return layout;
1198 }
1199
1200 static void __qp_end_btn_cb(void *data, Evas_Object *obj, void *event_info)
1201 {
1202         CALL_UI_DEBUG("..");
1203         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1204         vcui_app_call_data_t *ad = vd->app_data;
1205         int grp_count = 0;
1206
1207         vcall_engine_get_group_count(&grp_count);
1208         CALL_UI_DEBUG("No. of groups - %d", grp_count);
1209
1210         if (grp_count > 1) {
1211                 CALL_UI_DEBUG("multi-party call");
1212                 vcall_engine_release_call_by_type(VCALL_ENGINE_RELEASE_ALL_ACTIVE_CALLS);
1213         } else if (grp_count == 1) {
1214                 CALL_UI_DEBUG("single-party call");
1215                 int all_calls = 0, call_status = 0;
1216                 all_calls = _vcui_doc_get_all_call_data_count();
1217                 call_status = _vcui_doc_get_group_call_status();
1218                 CALL_UI_DEBUG("all_calls[%d], call_status[%d]", all_calls, call_status);
1219
1220                 if (all_calls > 1) {
1221                         CALL_UI_DEBUG("End active conference call");
1222                         if (call_status == CALL_HOLD)
1223                                 vcall_engine_release_call_by_type(VCALL_ENGINE_RELEASE_ALL_HELD_CALLS);
1224                         else
1225                                 vcall_engine_release_call_by_type(VCALL_ENGINE_RELEASE_ALL_ACTIVE_CALLS);
1226                         ad->call_end_type = CALL_END_TYPE_CONF_CALL;    /*conf call end screen SHOW */
1227                 } else if (all_calls == 1) {
1228                         CALL_UI_DEBUG("End single active call");
1229                         vcall_engine_release_call();
1230                 } else {
1231                         CALL_UI_DEBUG("invalid case");
1232                 }
1233         } else {
1234                 CALL_UI_DEBUG("dialing/connecting screen end");
1235                 vcall_engine_cancel_call();
1236         }
1237 }
1238
1239 Evas_Object *_vcui_create_quickpanel_mute_button(void *data)
1240 {
1241         CALL_UI_DEBUG("..");
1242         Evas_Object *btn, *layout, *sw;
1243         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1244         vcui_app_call_data_t *ad = vd->app_data;
1245         CALL_UI_DEBUG("vd->type: %d", vd->type);
1246
1247         layout = ad->quickpanel_layout;
1248         VCUI_RETURN_NULL_IF_FAIL(layout);
1249
1250         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_left");
1251         if (sw) {
1252                 edje_object_part_unswallow(_EDJ(layout), sw);
1253                 evas_object_del(sw);
1254         }
1255
1256         btn = elm_button_add(layout);
1257
1258         elm_object_part_content_set(layout, "btn_left", btn);
1259         elm_object_text_set(btn, _("IDS_CALL_BUTTON_MUTE_ABB"));
1260
1261         if (ad->mute_status == EINA_FALSE) {
1262                 elm_object_style_set(btn, "style_call_qp_text_only_normal");
1263                 evas_object_smart_callback_add(btn, "clicked", __vcui_mute_btn_cb, vd);
1264         } else {
1265                 Evas_Object *ic = elm_image_add(layout);
1266                 elm_image_file_set(ic, QP_MUTE_ICON, NULL);
1267                 elm_object_content_set(btn, ic);
1268
1269                 elm_object_style_set(btn, "style_call_small_text_with_icon");
1270                 evas_object_smart_callback_add(btn, "clicked", __vcui_mute_press_btn_cb, vd);
1271         }
1272
1273         return layout;
1274 }
1275
1276 Evas_Object *_vcui_create_quickpanel_unhold_button(void *data)
1277 {
1278         CALL_UI_DEBUG("..");
1279         Evas_Object *btn, *layout, *sw;
1280         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1281         vcui_app_call_data_t *ad = vd->app_data;
1282         CALL_UI_DEBUG("vd->type: %d", vd->type);
1283
1284         layout = ad->quickpanel_layout;
1285         VCUI_RETURN_NULL_IF_FAIL(layout);
1286
1287         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_left");
1288         if (sw) {
1289                 edje_object_part_unswallow(_EDJ(layout), sw);
1290                 evas_object_del(sw);
1291         }
1292
1293         btn = elm_button_add(layout);
1294         elm_object_part_content_set(layout, "btn_left", btn);
1295         elm_object_style_set(btn, "style_call_qp_text_only_normal");
1296
1297         elm_object_text_set(btn, _("IDS_CALL_BUTTON_UNHOLD"));
1298         evas_object_smart_callback_add(btn, "clicked", __vcui_hold_btn_cb, vd);
1299
1300         return layout;
1301 }
1302
1303 Evas_Object *_vcui_create_quickpanel_end_button(void *data)
1304 {
1305         CALL_UI_DEBUG("..");
1306         Evas_Object *btn, *layout, *sw;
1307         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1308         vcui_app_call_data_t *ad = vd->app_data;
1309         CALL_UI_DEBUG("vd->type: %d", vd->type);
1310
1311         switch (vd->type) {
1312         case VIEW_QUICKPANEL_VIEW:
1313                 {
1314                         layout = ad->quickpanel_layout;
1315                 }
1316                 break;
1317
1318         default:
1319                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
1320                 return NULL;
1321                 break;
1322
1323         }
1324
1325         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_right");
1326         if (sw) {
1327                 edje_object_part_unswallow(_EDJ(layout), sw);
1328                 evas_object_del(sw);
1329         }
1330
1331         btn = elm_button_add(layout);
1332         elm_object_part_content_set(layout, "btn_right", btn);
1333         elm_object_style_set(btn, "style_call_qp_text_only_end");
1334         elm_object_text_set(btn, _("IDS_CALL_SK3_END_CALL"));
1335         evas_object_smart_callback_add(btn, "clicked", __qp_end_btn_cb, vd);
1336
1337         return layout;
1338 }
1339
1340 static Evas_Object *__vcui_create_caller_info(void *data, Eina_Bool bhold)
1341 {
1342         Evas_Object *caller_info = NULL;
1343         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1344
1345         switch (vd->type) {
1346         case VIEW_DIALLING_VIEW:
1347                 {
1348                         caller_info = _vc_ui_view_dialing_get_caller_info(vd);
1349                 }
1350                 break;
1351                 case VIEW_INCOMING_LOCK_VIEW:
1352                 {
1353                         caller_info = _vc_ui_view_incoming_lock_get_caller_info(vd);
1354                 }
1355                 break;
1356         case VIEW_INCALL_ONECALL_VIEW:
1357                 {
1358                         caller_info = _vc_ui_view_single_call_get_caller_info(vd);
1359                 }
1360                 break;
1361         case VIEW_INCALL_MULTICALL_CONF_VIEW:
1362                 {
1363                         caller_info = _vc_ui_view_multi_call_conf_get_caller_info(vd);
1364                 }
1365                 break;
1366         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
1367                 {
1368                         if (bhold == EINA_TRUE) {
1369                                 caller_info = _vc_ui_view_multi_call_split_get_caller_info_hold(vd);
1370                         } else {
1371                                 caller_info = _vc_ui_view_multi_call_split_get_caller_info_unhold(vd);
1372                         }
1373                 }
1374                 break;
1375         case VIEW_ENDCALL_VIEW:
1376                 {
1377                         caller_info = _vc_ui_view_callend_get_caller_info(vd);
1378                 }
1379                 break;
1380         default:
1381                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
1382                 break;
1383         }
1384
1385         return caller_info;
1386 }
1387
1388
1389 /* Caller info name or number*/
1390 void _vcui_show_caller_info_name(void *data, const char *name, Eina_Bool bhold)
1391 {
1392         Evas_Object *layout = NULL;
1393
1394         layout = __vcui_create_caller_info(data, bhold);
1395         edje_object_part_text_set(_EDJ(layout), "txt_call_name", name);
1396 }
1397
1398 /* Caller info number */
1399 void _vcui_show_caller_info_number(void *data, const char *number, Eina_Bool bhold)
1400 {
1401         Evas_Object *layout = NULL;
1402
1403         layout = __vcui_create_caller_info(data, bhold);
1404         edje_object_part_text_set(_EDJ(layout), "txt_phone_num", number);
1405 }
1406
1407 /* Caller info icon*/
1408 Evas_Object *_vcui_show_caller_info_icon(void *data, Eina_Bool bhold)
1409 {
1410         Evas_Object *sw = NULL;
1411         Evas_Object *ic = NULL;
1412         Evas_Object *btn = NULL;
1413         Evas_Object *layout = NULL;
1414
1415         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1416
1417         layout = __vcui_create_caller_info(data, bhold);
1418
1419         sw = edje_object_part_swallow_get(_EDJ(layout), "caller_info_icon");
1420         if (sw) {
1421                 edje_object_part_unswallow(_EDJ(layout), sw);
1422                 evas_object_del(sw);
1423         }
1424
1425         if (vd->type == VIEW_DIALLING_VIEW ||
1426                 vd->type == VIEW_INCOMING_LOCK_VIEW) {
1427                 CALL_UI_DEBUG("Call status icon");
1428                 ic = elm_image_add(layout);
1429                 elm_image_file_set(ic, CALLER_INFO_ICON, NULL);
1430                 elm_object_part_content_set(layout, "caller_info_icon", ic);
1431
1432                 return ic;
1433         } else {
1434                 CALL_UI_DEBUG("More button");
1435
1436                 edje_object_signal_emit(_EDJ(layout), "show_vert_separtor", "call-screen");
1437
1438                 btn = elm_button_add(layout);
1439                 CALL_UI_KPI("elm_object_style_set start :: style_caller_info_morebtn");
1440                 elm_object_style_set(btn, "style_caller_info_morebtn");
1441                 CALL_UI_KPI("elm_object_style_set done :: style_caller_info_morebtn");
1442                 elm_object_part_content_set(layout, "caller_info_icon", btn);
1443
1444                 evas_object_smart_callback_add(btn, "clicked", __vcui_more_btn_cb, vd);
1445
1446                 return btn;
1447         }
1448 }
1449
1450 /* Caller info status*/
1451 Evas_Object *_vcui_show_caller_info_status(void *data, const char *status, Eina_Bool bhold)
1452 {
1453         Evas_Object *layout = NULL;
1454
1455         layout = __vcui_create_caller_info(data, bhold);
1456         edje_object_part_text_set(_EDJ(layout), "txt_status", status);
1457
1458         return layout;
1459 }
1460
1461 Evas_Object *_vcui_show_contact_image_split(Evas_Object *contents, const char *path, const char *full_path, Eina_Bool bhold)
1462 {
1463         Evas_Object *sw = NULL;
1464         Evas_Object *img = NULL;
1465         char *part = NULL;
1466
1467         if (bhold) {
1468                 part = "swl_cid_hold";
1469         } else {
1470                 part = "swl_cid_unhold";
1471         }
1472
1473         sw = edje_object_part_swallow_get(_EDJ(contents), part);
1474         if (sw) {
1475                 edje_object_part_unswallow(_EDJ(contents), sw);
1476                 evas_object_del(sw);
1477         }
1478
1479         if (strcmp(full_path, CONF_SPLIT_ICON) == 0) {
1480                 CALL_UI_DEBUG("Conf Image");
1481                 img = elm_image_add(contents);
1482                 elm_image_file_set(img, CONF_SPLIT_ICON, NULL);
1483         } else if ((strncmp(full_path, IMGDIR, strlen(IMGDIR)) == 0) || (strlen(full_path) == 0)) {
1484                 CALL_UI_DEBUG("No caller image");
1485                 img = elm_image_add(contents);
1486                 elm_image_file_set(img, NOIMG_SPLIT_ICON, NULL);
1487         } else {
1488                 CALL_UI_DEBUG("Display : %s", full_path);
1489                 img = elm_bg_add(contents);
1490                 elm_bg_load_size_set(img, MAIN_WIN_HD_W, 445);
1491                 elm_bg_file_set(img, full_path, NULL);
1492                 evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1493                 evas_object_size_hint_align_set(img, 0.5, 0.5);
1494                 evas_object_show(img);
1495         }
1496
1497         elm_object_part_content_set(contents, part, img);
1498         return img;
1499 }
1500
1501 Evas_Object *_vcui_show_call_bg_img(Evas_Object *contents)
1502 {
1503         Evas_Object *d_image;
1504         Evas_Object *sw;
1505
1506         sw = edje_object_part_swallow_get(_EDJ(contents), "call_bg_img");
1507         if (sw) {
1508                 edje_object_part_unswallow(_EDJ(contents), sw);
1509                 evas_object_del(sw);
1510         }
1511
1512         d_image = elm_image_add(contents);
1513         elm_image_file_set(d_image, CALL_BG_IMG, NULL);
1514         elm_object_part_content_set(contents, "call_bg_img", d_image);
1515
1516         return d_image;
1517 }
1518
1519 Evas_Object *_vcui_show_call_not_saved_bg_img(Evas_Object *contents)
1520 {
1521         Evas_Object *d_image;
1522         Evas_Object *sw;
1523
1524         sw = edje_object_part_swallow_get(_EDJ(contents), "call_bg_img");
1525         if (sw) {
1526                 edje_object_part_unswallow(_EDJ(contents), sw);
1527                 evas_object_del(sw);
1528         }
1529
1530         d_image = elm_image_add(contents);
1531         elm_image_file_set(d_image, CALL_NOT_SAVED_BG_IMG, NULL);
1532         elm_object_part_content_set(contents, "call_bg_img", d_image);
1533
1534         return d_image;
1535 }
1536
1537 void _vcui_elements_check_keypad_n_hide(void *data)
1538 {
1539         CALL_UI_DEBUG("..");
1540         voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1541         Evas_Object *view_ly = NULL;
1542
1543         switch (vd->type) {
1544         case VIEW_DIALLING_VIEW:
1545                 {
1546                         view_ly = _vc_ui_view_dialing_get_layout(vd);
1547                 }
1548                 break;
1549         case VIEW_INCALL_ONECALL_VIEW:
1550                 {
1551                         view_ly = _vc_ui_view_single_call_get_layout(vd);
1552                 }
1553                 break;
1554         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
1555                 {
1556                         view_ly = _vcui_view_multi_call_split_get_layout(vd);
1557                 }
1558                 break;
1559         case VIEW_INCALL_MULTICALL_CONF_VIEW:
1560                 {
1561                         view_ly = _vcui_view_multi_call_conf_get_main_layout(vd);
1562                 }
1563                 break;
1564         default:
1565                 CALL_UI_DEBUG("code should never reach here");
1566                 return;
1567         }
1568
1569         if (_vcui_keypad_get_show_status() == EINA_TRUE) {
1570                 /*Hide caller info area*/
1571                 edje_object_signal_emit(_EDJ(view_ly), "HIDE", "CALL_AREA");
1572         }
1573 }
1574