apply FSL(Flora Software License)
[apps/home/call.git] / ui / 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-incoming.h"
22 #include "vcui-view-single-call.h"
23 #include "vcui-view-multi-call-conf.h"
24 #include "vcui-view-multi-call-split.h"
25 #include "vcui-view-multi-call-list.h"
26 #include "vcui-view-keypad.h"
27 #include "vcui-view-callend.h"
28
29 static void __vcui_hold_btn_cb(void *data, Evas_Object *obj, void *event_info);
30 static void __vcui_unhold_btn_cb(void *data, Evas_Object *obj, void *event_info);
31 static void __vcui_join_btn_cb(void *data, Evas_Object *obj, void *event_info);
32 static void __vcui_keypad_btn_cb(void *data, Evas_Object *obj, void *event_info);
33 static void __vcui_contacts_btn_cb(void *data, Evas_Object *obj, void *event_info);
34 static void __vcui_addcall_btn_cb(void *data, Evas_Object *obj, void *event_info);
35 static void __vcui_sound_path_btn_cb(void *data, Evas_Object *obj, void *event_info);
36 static void __vcui_spk_btn_cb(void *data, Evas_Object *obj, void *event_info);
37 static void __vcui_spk_press_btn_cb(void *data, Evas_Object *obj, void *event_info);
38 static void __vcui_mute_btn_cb(void *data, Evas_Object *obj, void *event_info);
39 static void __vcui_bigend_btn_cb(void *data, Evas_Object *obj, void *event_info);
40 static void __vcui_accept_btn_cb(void *data, Evas_Object *obj, void *event_info);
41 static void __vcui_reject_btn_cb(void *data, Evas_Object *obj, void *event_info);
42 static void __vcui_second_incoming_reject_btn_cb(void *data, Evas_Object *obj, void *event_info);
43 static void __vcui_second_incoming_hold_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info);
44 static void __vcui_second_incoming_end_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info);
45 static void __vcui_second_incoming_end_active_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info);
46 static void __vcui_second_incoming_end_hold_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info);
47 static void __vcui_second_incoming_end_all_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info);
48 static void __vcui_videocall_btn_cb(void *data, Evas_Object *obj, void *event_info);
49 static void __vcui_voicecall_btn_cb(void *data, Evas_Object *obj, void *event_info);
50 static void __vcui_msg_btn_cb(void *data, Evas_Object *obj, void *event_info);
51
52 static void __vcui_hold_btn_cb(void *data, Evas_Object *obj, void *event_info)
53 {
54         CALL_UI_DEBUG("..");
55         _vcui_engine_hold_unhold_swap_call();
56 }
57
58 static void __vcui_unhold_btn_cb(void *data, Evas_Object *obj, void *event_info)
59 {
60         CALL_UI_DEBUG("..");
61         _vcui_engine_hold_unhold_swap_call();
62 }
63
64 void _vcui_swap_btn_cb(void *data, Evas_Object *obj, void *event_info)
65 {
66         CALL_UI_DEBUG("..");
67         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
68         vcui_app_call_data_t *ad = vd->app_data;
69
70         ad->bholdisleft = ad->bswapped;
71         _vcui_view_popup_load(_("IDS_CALL_POP_SWAPPED"), POPUP_TIMEOUT_LONG, EINA_FALSE);
72         _vcui_engine_hold_unhold_swap_call();
73 }
74
75 static void __vcui_join_btn_cb(void *data, Evas_Object *obj, void *event_info)
76 {
77         CALL_UI_DEBUG("..");
78         _vcui_create_top_right_button_disabled(data);
79         _vcui_engine_join_call();
80 }
81
82 void _vcui_conf_img_cb(void *data, Evas_Object *obj, void *event_info)  /* for multicall list view */
83 {
84         CALL_UI_DEBUG("..");
85         _vcui_view_change(VIEW_INCALL_MULTICALL_LIST_VIEW, 0, 0, 0);
86 }
87
88 static void __vcui_keypad_btn_cb(void *data, Evas_Object *obj, void *event_info)
89 {
90         CALL_UI_DEBUG("..");
91         _vcui_view_change(VIEW_INCALL_KEYPAD_VIEW, 0, NULL, NULL);
92 }
93
94 static void __vcui_contacts_btn_cb(void *data, Evas_Object *obj, void *event_info)
95 {
96         CALL_UI_DEBUG("..");
97         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
98         _vcui_doc_launch_contact_list_ug(NULL, NULL, vd->layout, NULL, NULL, NULL, &(vd->app_data->ugs_array_data));
99 }
100
101 static void __vcui_addcall_btn_cb(void *data, Evas_Object *obj, void *event_info)
102 {
103         CALL_UI_DEBUG("..");
104         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
105         vcui_app_call_data_t *ad = vd->app_data;
106
107         _vcui_doc_launch_phoneui_ug(NULL, NULL, vd->layout, NULL, NULL, NULL, &(vd->app_data->ugs_array_data));
108 }
109
110 static void __vcui_sound_path_btn_cb(void *data, Evas_Object *obj, void *event_info)
111 {
112         CALL_UI_DEBUG("..");
113         _vcui_view_popup_load_snd_path();
114 }
115
116 static void __vcui_spk_btn_cb(void *data, Evas_Object *obj, void *event_info)
117 {
118         CALL_UI_DEBUG("..");
119         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
120         vcui_app_call_data_t *ad = vd->app_data;
121
122         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
123
124         _vcui_engine_speaker_on_off(EINA_TRUE);
125
126         ad->speaker_status = EINA_TRUE;
127         _vcui_create_bottom_left_button(vd);
128 }
129
130 static void __vcui_spk_press_btn_cb(void *data, Evas_Object *obj, void *event_info)
131 {
132         CALL_UI_DEBUG("..");
133         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
134         vcui_app_call_data_t *ad = vd->app_data;
135
136         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
137
138         _vcui_engine_speaker_on_off(EINA_FALSE);
139
140         ad->speaker_status = EINA_FALSE;
141         _vcui_create_bottom_left_button(vd);
142 }
143
144 static void __vcui_mute_btn_cb(void *data, Evas_Object *obj, void *event_info)
145 {
146         CALL_UI_DEBUG("..");
147
148         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
149         vcui_app_call_data_t *ad = vd->app_data;
150
151         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
152
153         _vcui_engine_mute_on_off(EINA_TRUE);
154
155         ad->mute_status = EINA_TRUE;
156         _vcui_create_bottom_middle_button(vd);
157 }
158
159 static void __vcui_mute_press_btn_cb(void *data, Evas_Object *obj, void *event_info)
160 {
161         CALL_UI_DEBUG("..");
162         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
163         vcui_app_call_data_t *ad = vd->app_data;
164
165         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
166
167         _vcui_engine_mute_on_off(EINA_FALSE);
168
169         ad->mute_status = EINA_FALSE;
170         _vcui_create_bottom_middle_button(vd);
171 }
172
173 static void __vcui_bigend_btn_cb(void *data, Evas_Object *obj, void *event_info)
174 {
175         CALL_UI_DEBUG("..");
176
177         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
178         vcui_app_call_data_t *ad = vd->app_data;
179         CALL_UI_DEBUG("vd->type:[%d]", vd->type);
180
181         _vcui_create_button_bigend_disabled(vd);
182
183         switch (vd->type) {
184         case VIEW_DIALLING_VIEW:
185                 {
186                         _vcui_engine_cancel_call();
187                 }
188                 break;
189         case VIEW_INCALL_ONECALL_VIEW:
190                 {
191                         _vcui_engine_end_call();
192                 }
193                 break;
194         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
195                 {
196                         _vcui_engine_end_active_calls();
197                 }
198                 break;
199         case VIEW_INCALL_MULTICALL_CONF_VIEW:
200                 {
201                         vcui_view_multi_call_conf_priv_t *priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
202                         if (priv->call_status == CALL_HOLD)
203                                 _vcui_engine_end_held_calls();
204                         else
205                                 _vcui_engine_end_active_calls();
206                         ad->call_end_type = CALL_END_TYPE_CONF_CALL;
207                 }
208                 break;
209         case VIEW_INCALL_MULTICALL_LIST_VIEW:
210                 {
211                         vcui_view_multi_call_list_priv_t *priv = (vcui_view_multi_call_list_priv_t *) vd->priv;
212                         if (priv->call_status == CALL_HOLD)
213                                 _vcui_engine_end_held_calls();
214                         else
215                                 _vcui_engine_end_active_calls();
216
217                         int grp_count = 0;
218                         vcall_engine_get_group_count(&grp_count);
219                         CALL_UI_DEBUG("No. of groups - %d", grp_count);
220                         if (grp_count == 1)
221                                 ad->call_end_type = CALL_END_TYPE_CONF_CALL;
222                         else
223                                 ad->call_end_type = CALL_END_TYPE_NONE;
224                 }
225                 break;
226         default:
227                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
228                 return;
229                 break;
230
231         }
232 }
233
234 static void __vcui_accept_btn_cb(void *data, Evas_Object *obj, void *event_info)
235 {
236         CALL_UI_DEBUG("..");
237         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
238         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
239
240         if (priv->bselected_btn == EINA_TRUE) {
241                 CALL_UI_DEBUG("already clicked!!");
242         } else {
243                 priv->bselected_btn = EINA_TRUE;
244                 _vcui_engine_answer_call();
245         }
246 }
247
248 static void __vcui_reject_btn_cb(void *data, Evas_Object *obj, void *event_info)
249 {
250         CALL_UI_DEBUG("..");
251         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
252         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
253
254         if (priv->bselected_btn == EINA_TRUE) {
255                 CALL_UI_DEBUG("already clicked!!");
256         } else {
257                 priv->bselected_btn = EINA_TRUE;
258                 _vcui_engine_reject_call();
259         }
260 }
261
262 static void __vcui_second_incoming_reject_btn_cb(void *data, Evas_Object *obj, void *event_info)
263 {
264         CALL_UI_DEBUG("..");
265         _vcui_engine_reject_call();
266 }
267
268 static void __vcui_second_incoming_hold_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info)
269 {
270         CALL_UI_DEBUG("..");
271         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
272         switch (vd->type) {
273         case VIEW_INCOMING_VIEW:
274                 {
275                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
276                         priv->bdont_refresh = EINA_TRUE;
277                 }
278                 break;
279         default:
280                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
281                 break;
282         }
283
284         _vcui_engine_answer_call_by_type(1);
285 }
286
287 static void __vcui_second_incoming_end_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info)
288 {
289         CALL_UI_DEBUG("..");
290         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
291         switch (vd->type) {
292         case VIEW_INCOMING_VIEW:
293                 {
294                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
295                         priv->bdont_refresh = EINA_TRUE;
296                 }
297                 break;
298         default:
299                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
300                 break;
301         }
302
303         _vcui_engine_answer_call_by_type(2);
304 }
305
306 static void __vcui_second_incoming_end_active_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info)
307 {
308         CALL_UI_DEBUG("..");
309         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
310         switch (vd->type) {
311         case VIEW_INCOMING_VIEW:
312                 {
313                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
314                         priv->bdont_refresh = EINA_TRUE;
315                 }
316                 break;
317         default:
318                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
319                 break;
320         }
321
322         _vcui_engine_answer_call_by_type(2);
323 }
324
325 static void __vcui_second_incoming_end_hold_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info)
326 {
327         CALL_UI_DEBUG("..");
328         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
329         switch (vd->type) {
330         case VIEW_INCOMING_VIEW:
331                 {
332                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
333                         priv->bdont_refresh = EINA_TRUE;
334                 }
335                 break;
336         default:
337                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
338                 break;
339         }
340
341         _vcui_engine_answer_call_by_type(3);
342 }
343
344 static void __vcui_second_incoming_end_all_and_accept_btn_cb(void *data, Evas_Object *obj, void *event_info)
345 {
346         CALL_UI_DEBUG("..");
347         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
348         switch (vd->type) {
349         case VIEW_INCOMING_VIEW:
350                 {
351                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
352                         priv->bdont_refresh = EINA_TRUE;
353                 }
354                 break;
355         default:
356                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
357                 break;
358         }
359
360         _vcui_engine_answer_call_by_type(4);
361 }
362
363 Evas_Object *_vcui_create_top_left_button(void *data)
364 {
365         return NULL;
366 }
367
368 Evas_Object *_vcui_create_top_left_button_disabled(void *data)
369 {
370         return NULL;
371 }
372
373
374 Evas_Object *_vcui_create_top_middle_button(void *data)
375 {
376         return NULL;
377 }
378
379 Evas_Object *_vcui_create_top_middle_button_disabled(void *data)
380 {
381         return NULL;
382 }
383
384 Evas_Object *_vcui_create_top_right_button(void *data)
385 {
386         return NULL;
387 }
388
389 Evas_Object *_vcui_create_top_right_button_disabled(void *data)
390 {
391         return NULL;
392 }
393
394 /* Speaker Button ENABLED */
395 Evas_Object *_vcui_create_bottom_left_button(void *data)
396 {
397         CALL_UI_KPI("_vcui_create_bottom_left_button start");
398         Evas_Object *btn;
399         Evas_Object *ic;
400         Evas_Object *layout;
401         Evas_Object *sw;
402
403         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
404         vcui_app_call_data_t *ad = vd->app_data;
405
406         switch (vd->type) {
407         case VIEW_DIALLING_VIEW:
408                 {
409                         vcui_view_dialing_priv_t *priv = (vcui_view_dialing_priv_t *) vd->priv;
410                         layout = priv->contents;
411                 }
412                 break;
413         case VIEW_INCALL_ONECALL_VIEW:
414                 {
415                         incall_one_view_priv_t *priv = (incall_one_view_priv_t *) vd->priv;
416                         layout = priv->contents;
417                 }
418                 break;
419         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
420                 {
421                         incall_multi_view_split_priv_t *priv = (incall_multi_view_split_priv_t *) vd->priv;
422                         layout = priv->contents;
423                 }
424                 break;
425         case VIEW_INCALL_MULTICALL_CONF_VIEW:
426                 {
427                         vcui_view_multi_call_conf_priv_t *priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
428                         layout = priv->contents;
429                 }
430                 break;
431         default:
432                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
433                 return NULL;
434                 break;
435
436         }
437
438         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_speaker");
439         if (sw) {
440                 edje_object_part_unswallow(_EDJ(layout), sw);
441                 evas_object_del(sw);
442         }
443         if (EINA_TRUE == _vcui_is_headset_conected()) {
444                 btn = elm_button_add(layout);
445                 CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn");
446                 elm_object_style_set(btn, "style_call_sixbtn");
447                 CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn");
448                 elm_object_part_content_set(layout, "btn_speaker", btn);
449                 ic = elm_icon_add(layout);
450                 elm_icon_file_set(ic, SPEAKER_ICON, NULL);
451                 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
452                 elm_icon_resizable_set(ic, 1, 1);
453                 elm_object_part_content_set(btn, "icon", ic);
454                 elm_object_text_set(btn, _("IDS_MSGC_OPT_SOUND"));
455                 evas_object_smart_callback_add(btn, "clicked", __vcui_sound_path_btn_cb, vd);
456         } else {
457                 if (ad->speaker_status == EINA_FALSE) {
458                         btn = elm_button_add(layout);
459                         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn");
460                         elm_object_style_set(btn, "style_call_sixbtn");
461                         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn");
462                         elm_object_part_content_set(layout, "btn_speaker", btn);
463                         ic = elm_icon_add(layout);
464                         elm_icon_file_set(ic, SPEAKER_ICON, NULL);
465                         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
466                         elm_icon_resizable_set(ic, 1, 1);
467                         elm_object_part_content_set(btn, "icon", ic);
468                         elm_object_text_set(btn, _("IDS_CALL_BUTTON_SPEAKER"));
469                         evas_object_smart_callback_add(btn, "clicked", __vcui_spk_btn_cb, vd);
470                 } else {
471                         btn = elm_button_add(layout);
472                         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_pressed");
473                         elm_object_style_set(btn, "style_call_sixbtn_pressed");
474                         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_pressed");
475                         elm_object_part_content_set(layout, "btn_speaker", btn);
476                         ic = elm_icon_add(layout);
477                         elm_icon_file_set(ic, SPEAKER_ICON, NULL);
478                         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
479                         elm_icon_resizable_set(ic, 1, 1);
480                         elm_object_part_content_set(btn, "icon", ic);
481                         elm_object_text_set(btn, _("IDS_CALL_BUTTON_SPEAKER"));
482                         evas_object_smart_callback_add(btn, "clicked", __vcui_spk_press_btn_cb, vd);
483                 }
484         }
485         CALL_UI_KPI("_vcui_create_bottom_left_button done");
486         return layout;
487 }
488
489 /* Speaker Button DISABLED */
490 Evas_Object *_vcui_create_bottom_left_button_disabled(void *data)
491 {
492         CALL_UI_KPI("_vcui_create_bottom_left_button_disabled start");
493         Evas_Object *btn;
494         Evas_Object *ic;
495         Evas_Object *layout;
496         Evas_Object *sw;
497
498         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
499         switch (vd->type) {
500         case VIEW_ENDCALL_VIEW:
501                 {
502                         endcall_view_priv_t *priv = (endcall_view_priv_t *) vd->priv;
503                         layout = priv->contents;
504                 }
505                 break;
506         default:
507                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
508                 return NULL;
509                 break;
510
511         }
512
513         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_speaker");
514         if (sw) {
515                 edje_object_part_unswallow(_EDJ(layout), sw);
516                 evas_object_del(sw);
517         }
518
519         btn = elm_button_add(layout);
520         CALL_UI_KPI("elm_object_style_set start :: style_call_sixbtn_disabled");
521         elm_object_style_set(btn, "style_call_sixbtn_disabled");
522         CALL_UI_KPI("elm_object_style_set done :: style_call_sixbtn_disabled");
523         elm_object_part_content_set(layout, "btn_speaker", btn);
524         ic = elm_icon_add(layout);
525         elm_icon_file_set(ic, SPEAKER_DISABLED_ICON, NULL);
526         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
527         elm_icon_resizable_set(ic, 1, 1);
528         elm_object_part_content_set(btn, "icon", ic);
529         elm_object_text_set(btn, _("IDS_CALL_BUTTON_SPEAKER"));
530         CALL_UI_KPI("_vcui_create_bottom_left_button_disabled done");
531         return layout;
532 }
533
534 Evas_Object *_vcui_create_bottom_middle_button(void *data)
535 {
536         return NULL;
537 }
538
539 Evas_Object *_vcui_create_bottom_middle_button_disabled(void *data)
540 {
541         return NULL;
542 }
543
544 Evas_Object *_vcui_create_bottom_right_button(void *data)
545 {
546         return NULL;
547 }
548
549
550 Evas_Object *_vcui_create_bottom_right_button_disabled(void *data)
551 {
552         return NULL;
553 }
554
555
556 Evas_Object *_vcui_create_button_bigend(void *data)
557 {
558         CALL_UI_KPI("_vcui_create_button_bigend start");
559         Evas_Object *btn;
560         Evas_Object *layout;
561         Evas_Object *sw;
562
563         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
564         switch (vd->type) {
565         case VIEW_DIALLING_VIEW:
566                 {
567                         vcui_view_dialing_priv_t *priv = (vcui_view_dialing_priv_t *) vd->priv;
568                         layout = priv->contents;
569                 }
570                 break;
571         case VIEW_INCALL_ONECALL_VIEW:
572                 {
573                         incall_one_view_priv_t *priv = (incall_one_view_priv_t *) vd->priv;
574                         layout = priv->contents;
575                 }
576                 break;
577         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
578                 {
579                         incall_multi_view_split_priv_t *priv = (incall_multi_view_split_priv_t *) vd->priv;
580                         layout = priv->contents;
581                 }
582                 break;
583         case VIEW_INCALL_MULTICALL_CONF_VIEW:
584                 {
585                         vcui_view_multi_call_conf_priv_t *priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
586                         layout = priv->contents;
587                 }
588                 break;
589         case VIEW_INCALL_MULTICALL_LIST_VIEW:
590                 {
591                         vcui_view_multi_call_list_priv_t *priv = (vcui_view_multi_call_list_priv_t *) vd->priv;
592                         layout = priv->contents;
593                 }
594                 break;
595         default:
596                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
597                 return NULL;
598                 break;
599
600         }
601
602         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_bigend");
603         if (sw) {
604                 edje_object_part_unswallow(_EDJ(layout), sw);
605                 evas_object_del(sw);
606         }
607
608         btn = elm_button_add(layout);
609         elm_object_part_content_set(layout, "btn_bigend", btn);
610         CALL_UI_KPI("elm_object_style_set start :: text_only/style_call_text_only_red");
611         elm_object_style_set(btn, "text_only/style_call_text_only_red");
612         CALL_UI_KPI("elm_object_style_set done :: text_only/style_call_text_only_red");
613         elm_object_text_set(btn, _("IDS_CALL_SK3_END_CALL"));
614         evas_object_smart_callback_add(btn, "clicked", __vcui_bigend_btn_cb, vd);
615         CALL_UI_KPI("_vcui_create_button_bigend done");
616         return layout;
617 }
618
619 Evas_Object *_vcui_create_button_bigend_disabled(void *data)
620 {
621         CALL_UI_KPI("_vcui_create_button_bigend_disabled start");
622         Evas_Object *btn;
623         Evas_Object *layout;
624         Evas_Object *sw;
625
626         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
627         switch (vd->type) {
628         case VIEW_DIALLING_VIEW:
629                 {
630                         vcui_view_dialing_priv_t *priv = (vcui_view_dialing_priv_t *) vd->priv;
631                         layout = priv->contents;
632                 }
633                 break;
634         case VIEW_INCALL_ONECALL_VIEW:
635                 {
636                         incall_one_view_priv_t *priv = (incall_one_view_priv_t *) vd->priv;
637                         layout = priv->contents;
638                 }
639                 break;
640         case VIEW_INCALL_MULTICALL_SPLIT_VIEW:
641                 {
642                         incall_multi_view_split_priv_t *priv = (incall_multi_view_split_priv_t *) vd->priv;
643                         layout = priv->contents;
644                 }
645                 break;
646         case VIEW_INCALL_MULTICALL_CONF_VIEW:
647                 {
648                         vcui_view_multi_call_conf_priv_t *priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
649                         layout = priv->contents;
650                 }
651                 break;
652         case VIEW_ENDCALL_VIEW:
653                 {
654                         endcall_view_priv_t *priv = (endcall_view_priv_t *) vd->priv;
655                         layout = priv->contents;
656                 }
657                 break;
658         default:
659                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
660                 return NULL;
661                 break;
662
663         }
664
665         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_bigend");
666         if (sw) {
667                 edje_object_part_unswallow(_EDJ(layout), sw);
668                 evas_object_del(sw);
669         }
670
671         btn = elm_button_add(layout);
672         elm_object_part_content_set(layout, "btn_bigend", btn);
673         CALL_UI_KPI("elm_object_style_set start :: text_only/style_call_text_only_red_disabled");
674         elm_object_style_set(btn, "text_only/style_call_text_only_red_disabled");
675         CALL_UI_KPI("elm_object_style_set done :: text_only/style_call_text_only_red_disabled");
676         elm_object_text_set(btn, _("IDS_CALL_SK3_END_CALL"));
677         CALL_UI_KPI("_vcui_create_button_bigend_disabled done");
678         return layout;
679 }
680
681 Evas_Object *_vcui_create_conf_list_button_hold(void *data)
682 {
683         return NULL;
684 }
685
686 Evas_Object *_vcui_create_button_accept(void *data)
687 {
688         Evas_Object *btn;
689         Evas_Object *layout;
690         Evas_Object *sw;
691
692         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
693         switch (vd->type) {
694         case VIEW_INCOMING_VIEW:
695                 {
696                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
697                         layout = priv->contents;
698                 }
699                 break;
700         default:
701                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
702                 return NULL;
703                 break;
704
705         }
706
707         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_accept");
708         if (sw) {
709                 edje_object_part_unswallow(_EDJ(layout), sw);
710                 evas_object_del(sw);
711         }
712
713         btn = elm_button_add(layout);
714         elm_object_part_content_set(layout, "btn_accept", btn);
715         CALL_UI_KPI("elm_object_style_set start :: text_only/style_call_text_only_green");
716         elm_object_style_set(btn, "text_only/style_call_text_only_green");
717         CALL_UI_KPI("elm_object_style_set done :: text_only/style_call_text_only_green");
718         elm_object_text_set(btn, _("IDS_CALL_BUTTON_ACCEPT"));
719         evas_object_smart_callback_add(btn, "clicked", __vcui_accept_btn_cb, vd);
720
721         return layout;
722 }
723
724 Evas_Object *_vcui_create_button_reject(void *data)
725 {
726         Evas_Object *btn;
727         Evas_Object *layout;
728         Evas_Object *sw;
729
730         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
731         switch (vd->type) {
732         case VIEW_INCOMING_VIEW:
733                 {
734                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
735                         layout = priv->contents;
736                 }
737                 break;
738         default:
739                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
740                 return NULL;
741                 break;
742
743         }
744
745         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_reject");
746         if (sw) {
747                 edje_object_part_unswallow(_EDJ(layout), sw);
748                 evas_object_del(sw);
749         }
750
751         btn = elm_button_add(layout);
752         elm_object_part_content_set(layout, "btn_reject", btn);
753         CALL_UI_KPI("elm_object_style_set start :: text_only/style_call_text_only_red");
754         elm_object_style_set(btn, "text_only/style_call_text_only_red");
755         CALL_UI_KPI("elm_object_style_set done :: text_only/style_call_text_only_red");
756         elm_object_text_set(btn, _("IDS_CALL_BUTTON_REJECT"));
757         evas_object_smart_callback_add(btn, "clicked", __vcui_reject_btn_cb, vd);
758
759         return layout;
760 }
761
762 Evas_Object *_vcui_create_button_second_incoming_reject(void *data, char *text, char *part_name)
763 {
764         Evas_Object *btn;
765         Evas_Object *layout;
766         Evas_Object *sw;
767
768         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
769         switch (vd->type) {
770         case VIEW_INCOMING_VIEW:
771                 {
772                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
773                         layout = priv->contents;
774                 }
775                 break;
776         default:
777                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
778                 return NULL;
779                 break;
780
781         }
782
783         sw = edje_object_part_swallow_get(_EDJ(layout), part_name);
784         if (sw) {
785                 edje_object_part_unswallow(_EDJ(layout), sw);
786                 evas_object_del(sw);
787         }
788
789         btn = elm_button_add(layout);
790         elm_object_part_content_set(layout, part_name, btn);
791         CALL_UI_KPI("elm_object_style_set start :: multiline_text_black");
792         elm_object_style_set(btn, "multiline_text_black");
793         CALL_UI_KPI("elm_object_style_set done :: multiline_text_black");
794         elm_object_text_set(btn, text);
795         evas_object_smart_callback_add(btn, "clicked", __vcui_second_incoming_reject_btn_cb, vd);
796
797         return layout;
798 }
799
800 Evas_Object *_vcui_create_button_second_incoming_hold_and_accept(void *data, char *text)
801 {
802         return NULL;
803 }
804
805 Evas_Object *_vcui_create_button_second_incoming_end_and_accept(void *data, char *text)
806 {
807         Evas_Object *btn;
808         Evas_Object *layout;
809         Evas_Object *sw;
810
811         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
812         switch (vd->type) {
813         case VIEW_INCOMING_VIEW:
814                 {
815                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
816                         layout = priv->contents;
817                 }
818                 break;
819         default:
820                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
821                 return NULL;
822                 break;
823
824         }
825
826         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_incoming4");
827         if (sw) {
828                 edje_object_part_unswallow(_EDJ(layout), sw);
829                 evas_object_del(sw);
830         }
831
832         btn = elm_button_add(layout);
833         elm_object_part_content_set(layout, "btn_incoming4", btn);
834         CALL_UI_KPI("elm_object_style_set start :: multiline_text_red");
835         elm_object_style_set(btn, "multiline_text_red");
836         CALL_UI_KPI("elm_object_style_set done :: multiline_text_red");
837         elm_object_text_set(btn, text);
838         evas_object_smart_callback_add(btn, "clicked", __vcui_second_incoming_end_and_accept_btn_cb, vd);
839
840         return layout;
841 }
842
843 Evas_Object *_vcui_create_button_second_incoming_end_active_and_accept(void *data, char *text)
844 {
845         Evas_Object *btn;
846         Evas_Object *layout;
847         Evas_Object *sw;
848
849         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
850         switch (vd->type) {
851         case VIEW_INCOMING_VIEW:
852                 {
853                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
854                         layout = priv->contents;
855                 }
856                 break;
857         default:
858                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
859                 return NULL;
860                 break;
861
862         }
863
864         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_incoming2");
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         elm_object_part_content_set(layout, "btn_incoming2", btn);
872         CALL_UI_KPI("elm_object_style_set start :: multiline_text_black");
873         elm_object_style_set(btn, "multiline_text_black");
874         CALL_UI_KPI("elm_object_style_set done :: multiline_text_black");
875         elm_object_text_set(btn, text);
876         evas_object_smart_callback_add(btn, "clicked", __vcui_second_incoming_end_active_and_accept_btn_cb, vd);
877
878         return layout;
879 }
880
881 Evas_Object *_vcui_create_button_second_incoming_end_hold_and_accept(void *data, char *text)
882 {
883         Evas_Object *btn;
884         Evas_Object *layout;
885         Evas_Object *sw;
886
887         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
888         switch (vd->type) {
889         case VIEW_INCOMING_VIEW:
890                 {
891                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
892                         layout = priv->contents;
893                 }
894                 break;
895         default:
896                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
897                 return NULL;
898                 break;
899
900         }
901
902         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_incoming3");
903         if (sw) {
904                 edje_object_part_unswallow(_EDJ(layout), sw);
905                 evas_object_del(sw);
906         }
907
908         btn = elm_button_add(layout);
909         elm_object_part_content_set(layout, "btn_incoming3", btn);
910         CALL_UI_KPI("elm_object_style_set start :: multiline_text_black");
911         elm_object_style_set(btn, "multiline_text_black");
912         CALL_UI_KPI("elm_object_style_set done :: multiline_text_black");
913         elm_object_text_set(btn, text);
914         evas_object_smart_callback_add(btn, "clicked", __vcui_second_incoming_end_hold_and_accept_btn_cb, vd);
915
916         return layout;
917 }
918
919 Evas_Object *_vcui_create_button_second_incoming_end_all_and_accept(void *data, char *text)
920 {
921         Evas_Object *btn;
922         Evas_Object *layout;
923         Evas_Object *sw;
924
925         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
926         switch (vd->type) {
927         case VIEW_INCOMING_VIEW:
928                 {
929                         incoming_view_priv_t *priv = (incoming_view_priv_t *) vd->priv;
930                         layout = priv->contents;
931                 }
932                 break;
933         default:
934                 CALL_UI_DEBUG("ERROR - wrong vd type:[%d]", vd->type);
935                 return NULL;
936                 break;
937
938         }
939
940         sw = edje_object_part_swallow_get(_EDJ(layout), "btn_incoming4");
941         if (sw) {
942                 edje_object_part_unswallow(_EDJ(layout), sw);
943                 evas_object_del(sw);
944         }
945
946         btn = elm_button_add(layout);
947         elm_object_part_content_set(layout, "btn_incoming4", btn);
948         CALL_UI_KPI("elm_object_style_set start :: multiline_text_red");
949         elm_object_style_set(btn, "multiline_text_red");
950         CALL_UI_KPI("elm_object_style_set done :: multiline_text_red");
951         elm_object_text_set(btn, text);
952         evas_object_smart_callback_add(btn, "clicked", __vcui_second_incoming_end_all_and_accept_btn_cb, vd);
953
954         return layout;
955 }
956
957 Evas_Object *_vcui_show_wallpaper_image(Evas_Object *contents)
958 {
959         return NULL;
960 }
961
962 Evas_Object *_vcui_show_calling_name_bg(Evas_Object *contents)
963 {
964         vcui_app_call_data_t *ad = _vcui_get_app_data();
965         Evas_Object *sw = NULL;
966         Evas_Object *ic = NULL;
967
968         sw = edje_object_part_swallow_get(_EDJ(contents), "swl_calling_name_bg");
969         if (sw) {
970                 edje_object_part_unswallow(_EDJ(contents), sw);
971                 evas_object_del(sw);
972         }
973
974         ic = elm_icon_add(ad->win_main);
975         elm_object_part_content_set(contents, "swl_calling_name_bg", ic);
976         elm_icon_file_set(ic, CALLING_NAME_BG_IMAGE, NULL);
977         elm_icon_fill_outside_set(ic, EINA_TRUE);
978
979         return ic;
980 }
981
982 void _vcui_delete_contact_image(Evas_Object *contents)
983 {
984         Evas_Object *sw;
985
986         sw = edje_object_part_swallow_get(_EDJ(contents), "swl_cid");
987         if (sw) {
988                 edje_object_part_unswallow(_EDJ(contents), sw);
989                 evas_object_del(sw);
990         }
991 }
992
993 Evas_Object *_vcui_show_contact_image(Evas_Object *contents, Evas_Object *win_main, char *path)
994 {
995         Evas_Object *sw;
996         Evas_Object *ic;
997
998         sw = edje_object_part_swallow_get(_EDJ(contents), "swl_cid");
999         if (sw) {
1000                 edje_object_part_unswallow(_EDJ(contents), sw);
1001                 evas_object_del(sw);
1002         }
1003
1004         ic = elm_icon_add(win_main);
1005         elm_object_part_content_set(contents, "swl_cid", ic);
1006         elm_icon_file_set(ic, path, NULL);
1007
1008         return ic;
1009 }
1010
1011 Evas_Object *_vcui_show_default_image(Evas_Object *contents, Evas_Object *win_main, char *path)
1012 {
1013         Evas_Object *sw;
1014         Evas_Object *ic;
1015
1016         sw = edje_object_part_swallow_get(_EDJ(contents), "swl_cid");
1017         if (sw) {
1018                 edje_object_part_unswallow(_EDJ(contents), sw);
1019                 evas_object_del(sw);
1020         }
1021
1022         ic = elm_icon_add(win_main);
1023         elm_object_part_content_set(contents, "swl_cid", ic);
1024         elm_icon_file_set(ic, path, NULL);
1025
1026         return ic;
1027 }
1028
1029 void _vcui_set_full_image(Evas_Object *contents, Evas_Object *win_main, char *img_path)
1030 {
1031         Evas_Object *d_image;
1032         Evas_Object *sw;
1033         vcui_app_call_data_t *ad = _vcui_get_app_data();
1034
1035         CALL_UI_DEBUG("path:[%s]", img_path);
1036
1037         sw = edje_object_part_swallow_get(_EDJ(contents), "swl_cid_background");
1038         if (sw) {
1039                 edje_object_part_unswallow(_EDJ(contents), sw);
1040                 evas_object_del(sw);
1041         }
1042
1043         d_image = elm_image_add(contents);
1044         elm_image_file_set(d_image, img_path, NULL);
1045         elm_object_part_content_set(contents, "swl_cid_background", d_image);
1046 }
1047
1048 static void __vcui_videocall_btn_cb(void *data, Evas_Object *obj, void *event_info)
1049 {
1050         CALL_UI_DEBUG("__vcui_videocall_btn_cb..");
1051         char *tel_num = (char *)data;
1052
1053         bundle *kb;
1054         kb = bundle_create();
1055         bundle_add(kb, "KEY_CALL_TYPE", "MO");
1056         bundle_add(kb, "number", tel_num);
1057         aul_launch_app("org.tizen.vtmain", kb);
1058         bundle_free(kb);
1059
1060         free(tel_num);
1061         tel_num = NULL;
1062
1063         _vcui_view_common_call_end_timer_reset();
1064         evas_object_smart_callback_del(obj, "clicked", __vcui_videocall_btn_cb);
1065 }
1066
1067 static void __vcui_voicecall_btn_cb(void *data, Evas_Object *obj, void *event_info)
1068 {
1069         CALL_UI_DEBUG("__vcui_voicecall_btn_cb..");
1070         vcui_app_call_data_t *ad = _vcui_get_app_data();
1071         char *tel_num = (char *)data;
1072         vcui_call_type_t call_type;
1073         vcui_call_mo_data_t call_data;
1074
1075         _vcui_view_common_timer_redial_reset();
1076         ad->speaker_status = EINA_FALSE;
1077         ad->mute_status = EINA_FALSE;
1078
1079         memset(&call_data, 0, sizeof(call_data));
1080         call_type = VCUI_CALL_TYPE_MO;
1081
1082         snprintf(call_data.call_number, sizeof(call_data.call_number), "%s", tel_num);
1083
1084         _vcui_engine_interface_process_mo_call(call_type, &call_data);
1085
1086         free(tel_num);
1087         tel_num = NULL;
1088
1089         evas_object_smart_callback_del(obj, "clicked", __vcui_voicecall_btn_cb);
1090 }
1091
1092 static void __vcui_msg_btn_cb(void *data, Evas_Object *obj, void *event_info)
1093 {
1094         CALL_UI_DEBUG("__vcui_msg_btn_cb..");
1095         char *tel_num = (char *)data;
1096
1097         _vcui_doc_launch_msg_composer(NULL, tel_num);
1098
1099         free(tel_num);
1100         tel_num = NULL;
1101
1102         _vcui_view_common_call_end_timer_reset();
1103         evas_object_smart_callback_del(obj, "clicked", __vcui_msg_btn_cb);
1104 }
1105
1106 static void __vcui_add_to_contacts_btn_cb(void *data, Evas_Object *obj, void *event_info)
1107 {
1108         CALL_UI_DEBUG("__vcui_add_to_contacts_btn_cb..");
1109         vcui_app_call_data_t *ad = _vcui_get_app_data();
1110         voice_call_view_data_t *vd = ad->view_st[VIEW_ENDCALL_VIEW];
1111         char *tel_num = (char *)data;
1112
1113         _vcui_doc_launch_add_to_contacts_ug(NULL, NULL, vd->layout, NULL, NULL, NULL, &(vd->app_data->ugs_array_data), tel_num);
1114
1115         free(tel_num);
1116         tel_num = NULL;
1117
1118         evas_object_smart_callback_del(obj, "clicked", __vcui_add_to_contacts_btn_cb);
1119 }
1120  
1121 static void __qp_end_btn_cb(void *data, Evas_Object * obj, void *event_info)
1122 {
1123         CALL_UI_DEBUG("..");
1124         voice_call_view_data_t *vd = (voice_call_view_data_t *) data;
1125         vcui_app_call_data_t *ad = vd->app_data;
1126         int grp_count = 0;
1127
1128         vcall_engine_get_group_count(&grp_count);
1129         CALL_UI_DEBUG("No. of groups - %d", grp_count);
1130
1131         if (grp_count > 1) {
1132                 CALL_UI_DEBUG("multi-party call");
1133                 _vcui_engine_end_active_calls();
1134         } else if (grp_count == 1) {
1135                 CALL_UI_DEBUG("single-party call");
1136                 int all_calls = 0, call_status = 0;
1137                 all_calls = _vcui_doc_get_count();
1138                 call_status = _vcui_doc_get_show_callstatus();
1139                 CALL_UI_DEBUG("all_calls[%d], call_status[%d]", all_calls, call_status);
1140
1141                 if (all_calls > 1) {
1142                         CALL_UI_DEBUG("End active conference call");
1143                         if (call_status == CALL_HOLD)
1144                                 _vcui_engine_end_held_calls();
1145                         else
1146                                 _vcui_engine_end_active_calls();
1147                         ad->call_end_type = CALL_END_TYPE_CONF_CALL;    /*conf call end screen SHOW*/
1148                 } else if (all_calls == 1) {
1149                         CALL_UI_DEBUG("End single active call");
1150                         _vcui_engine_end_call();
1151                 } else {
1152                         CALL_UI_DEBUG("invalid case");
1153                 }
1154         } else {
1155                 CALL_UI_DEBUG("dialing/connecting screen end");
1156                 _vcui_engine_cancel_call();
1157         }
1158 }