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