2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "vcui-application.h"
19 #include "vcui-document.h"
20 #include "vcui-view-popup.h"
21 #include "vcui-view-multi-call-split.h"
22 #include "vcui-view-multi-call-conf.h"
23 #include "vcui-view-multi-call-list.h"
24 #include "vcui-view-single-call.h"
25 #include "vcui-view-common.h"
26 #define VCONFKEY_BT_HEADSET_NAME "memory/bluetooth/sco_headset_name"
28 #define TICKER_TIMEOUT 2
30 #define POPUP_LIST_HD_W 610
31 #define POPUP_LIST_ITEM_HD_H 113
37 Elm_Genlist_Item_Class *itc_option_list;
39 }_second_mtcall_popup_data_t;
41 static _second_mtcall_popup_data_t *g_popup_data;
43 static void __vcui_view_popup_response_cb_vol_voice(void *data, Evas_Object *obj, void *event_info);
44 static void __vcui_view_popup_response_cb_vol_ringtone(void *data, Evas_Object *obj, void *event_info);
45 static void __vcui_view_popup_response_cb_vol_bt(void *data, Evas_Object *obj, void *event_info);
47 static void __vcui_view_popup_win_del(void *data)
50 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
52 CALL_UI_DEBUG("delete the popup main_win - if created...");
53 if (ad->popup_mw != NULL) {
54 CALL_UI_DEBUG("main_win is NOT null");
55 evas_object_del(ad->popup_mw);
60 void _vcui_view_popup_unload(Evas_Object *popup_eo)
63 vcui_app_call_data_t *ad = _vcui_get_app_data();
66 evas_object_hide(popup_eo);
67 evas_object_del(popup_eo);
71 __vcui_view_popup_win_del(ad);
77 static void __vcui_view_popup_response_cb_terminate(void *data, Evas_Object *obj, void *event_info)
80 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
83 CALL_UI_DEBUG("popup eo delete.");
84 evas_object_hide(ad->popup_eo);
85 evas_object_del(ad->popup_eo);
89 __vcui_view_popup_win_del(ad);
91 _vcui_view_common_call_terminate_or_view_change();
96 static void __vcui_view_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
99 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
102 CALL_UI_DEBUG("popup eo delete.");
103 evas_object_hide(ad->popup_eo);
104 evas_object_del(ad->popup_eo);
108 __vcui_view_popup_win_del(ad);
112 /* create a separate main window for the popups with a high priority */
113 /* this window will always be displayed on top, even on a lock screen */
114 static Evas_Object *__vcui_view_popup_create_win(vcui_app_call_data_t *ad, const char *name)
121 CALL_UI_DEBUG("create the popup main_win...");
122 eo = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
124 elm_win_alpha_set(eo, EINA_TRUE);
125 elm_win_title_set(eo, name);
126 elm_win_borderless_set(eo, EINA_TRUE);
128 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
129 evas_object_resize(eo, w, h);
131 /* Set the popup window type as LEVEL-HIGH so it is always displayed on top */
132 CALL_UI_DEBUG("...Set HIGH priority...");
133 xwin = elm_win_xwindow_get(eo);
134 ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_NOTIFICATION);
135 utilx_set_system_notification_level(ecore_x_display_get(), xwin, UTILX_NOTIFICATION_LEVEL_HIGH);
137 elm_win_rotation_with_resize_set(eo, ad->rotate_angle);
138 evas_object_show(eo);
144 void _vcui_view_popup_load(char *popup_msg, double time_out, int bterminate)
146 CALL_UI_DEBUG("msg:[%s], bterminate:[%d]", popup_msg, bterminate);
147 vcui_app_call_data_t *ad = _vcui_get_app_data();
148 char *markup_text = NULL;
150 if (popup_msg == NULL) {
154 _vcui_view_popup_unload(ad->popup_eo);
158 CALL_UI_DEBUG("parent window TOP");
159 ad->popup_eo = elm_popup_add(ad->win_main);
160 _vcui_show_main_ui_set_flag();
164 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
165 ad->popup_eo = elm_popup_add(ad->popup_mw);
168 markup_text = evas_textblock_text_utf8_to_markup(NULL, popup_msg);
170 evas_object_size_hint_weight_set(ad->popup_eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
171 elm_object_text_set(ad->popup_eo, markup_text);
172 elm_popup_timeout_set(ad->popup_eo, time_out);
173 if (bterminate == 0) {
174 evas_object_smart_callback_add(ad->popup_eo, "timeout", __vcui_view_popup_response_cb, ad);
176 evas_object_smart_callback_add(ad->popup_eo, "timeout", __vcui_view_popup_response_cb_terminate, ad);
178 evas_object_show(ad->popup_eo);
182 evas_object_del(ad->popup_eo);
184 __vcui_view_popup_win_del(ad);
189 void _vcui_view_popup_replace(char *popup_msg, double time_out, int bterminate)
191 CALL_UI_DEBUG("msg:[%s], bterminate:[%d]", popup_msg, bterminate);
192 vcui_app_call_data_t *ad = _vcui_get_app_data();
193 char *markup_text = NULL;
195 if (ad->popup_eo == NULL) {
196 _vcui_view_popup_load(popup_msg, time_out, bterminate);
198 if (popup_msg == NULL) {
202 if (ad->view_top != -1) {
204 _vcui_raise_main_win();
206 if (ad->popup_mw != NULL)
207 elm_win_activate(ad->popup_mw);
211 markup_text = evas_textblock_text_utf8_to_markup(NULL, popup_msg);
213 elm_object_text_set(ad->popup_eo, markup_text);
214 elm_popup_timeout_set(ad->popup_eo, time_out);
215 if (bterminate == 0) {
216 evas_object_smart_callback_add(ad->popup_eo, "timeout", __vcui_view_popup_response_cb, ad);
218 evas_object_smart_callback_add(ad->popup_eo, "timeout", __vcui_view_popup_response_cb_terminate, ad);
220 evas_object_show(ad->popup_eo);
224 evas_object_del(ad->popup_eo);
226 __vcui_view_popup_win_del(ad);
232 void _vcui_view_popup_load_reject_call(char *name, char *number, int end_app)
235 char msg[DEF_BUF_LEN_LONG] = { 0, };
237 if (strlen(name) == 0) {
238 snprintf(msg, sizeof(msg), "%s\n%s", number, _("IDS_CALL_POP_REJECTED"));
239 } else if (strlen(number) == 0) {
240 snprintf(msg, sizeof(msg), "%s\n%s", name, _("IDS_CALL_POP_REJECTED"));
242 snprintf(msg, sizeof(msg), "%s\n%s\n%s", name, number, _("IDS_CALL_POP_REJECTED"));
245 _vcui_view_popup_load(msg, POPUP_TIMEOUT_LONG, end_app);
249 void _vcui_view_popup_load_endcall_time(call_data_t *cd)
251 unsigned long sec = 0;
252 unsigned long min = 0;
253 unsigned long hr = 0;
254 unsigned long call_duration_in_sec = _vcui_get_diff_now(_vcui_doc_get_call_start_time(cd));
255 char buf[DEF_BUF_LEN] = { 0, };
256 char msg[DEF_BUF_LEN_LONG] = { 0, };
258 sec = call_duration_in_sec % 60;
259 min = (call_duration_in_sec / 60) % 60;
260 hr = call_duration_in_sec / 3600;
261 snprintf(buf, sizeof(buf), "%c%c:%c%c:%c%c", (int)((hr / 10) + '0'), (int)((hr % 10) + '0'), (int)((min / 10) + '0'), (int)((min % 10) + '0'), (int)((sec / 10) + '0'), (int)((sec % 10) + '0'));
263 snprintf(msg, sizeof(msg), "%s\n%s\n%s", _vcui_doc_get_call_display_name(cd), _vcui_doc_get_call_number(cd), buf);
265 _vcui_view_popup_load(msg, POPUP_TIMEOUT_SHORT, EINA_FALSE);
268 void _vcui_view_popup_load_redial(void)
270 _vcui_view_popup_load(_("IDS_CALL_POP_REDIALLING"), POPUP_TIMEOUT_NORMAL, EINA_FALSE);
273 static Eina_Bool __vcui_view_popup_timer_cb_vol_ringtone(void *data)
275 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
277 __vcui_view_popup_response_cb_vol_ringtone(ad, ad->vol_ringtone_popup_eo, NULL);
279 return ECORE_CALLBACK_CANCEL;
282 static void __vcui_view_popup_vol_update_icon(int volume_level)
284 CALL_UI_DEBUG("...");
285 vcui_app_call_data_t *ad = _vcui_get_app_data();
286 Evas_Object *icon = NULL;
288 icon = edje_object_part_swallow_get(_EDJ(ad->popup_vol_ly), "volume_icon");
290 edje_object_part_unswallow(_EDJ(ad->popup_vol_ly), icon);
291 evas_object_del(icon);
294 icon = elm_image_add(ad->popup_vol_ly);
295 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
296 elm_image_resizable_set(icon, 0, 0);
297 elm_object_part_content_set(ad->popup_vol_ly, "volume_icon", icon);
298 if (volume_level == 0)
299 elm_image_file_set(icon, VOLUME_MUTE_ICON, NULL);
301 elm_image_file_set(icon, VOLUME_ICON, NULL);
304 static void __vcui_view_popup_vol_ringtone_changed_cb(void *data, Evas_Object *obj, void *event_info)
306 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
309 value = elm_slider_value_get(obj);
310 if (value > RINGTONE_MAX)
311 value = RINGTONE_MAX;
312 else if (value < RINGTONE_MIN)
313 value = RINGTONE_MIN;
315 ad->ringtone_val = (int)value;
317 vcall_engine_set_volume_level(VCALL_ENGINE_VOL_TYPE_RINGTONE, ad->ringtone_val);
319 elm_slider_value_set(obj, ad->ringtone_val);
320 if (ad->vol_ringtone_popup_del_timer) {
321 ecore_timer_del(ad->vol_ringtone_popup_del_timer);
322 ad->vol_ringtone_popup_del_timer = NULL;
325 CALL_UI_DEBUG("ad->ringtone_val %d...", ad->ringtone_val);
326 __vcui_view_popup_vol_update_icon(ad->ringtone_val);
327 ad->vol_ringtone_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_ringtone, ad);
330 static void __vcui_view_popup_response_cb_vol_ringtone(void *data, Evas_Object *obj, void *event_info)
333 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
335 if (ad->vol_ringtone_popup_eo) {
336 CALL_UI_DEBUG("vol_ringtone_popup_eo delete.");
337 evas_object_del(ad->vol_ringtone_popup_eo);
338 ad->vol_ringtone_popup_eo = NULL;
341 ad->vol_longpress_cnt = 0;
343 if (ad->volup_key_longpress_timer) {
344 ecore_timer_del(ad->volup_key_longpress_timer);
345 ad->volup_key_longpress_timer = NULL;
348 if (ad->voldown_key_longpress_timer) {
349 ecore_timer_del(ad->voldown_key_longpress_timer);
350 ad->voldown_key_longpress_timer = NULL;
353 if (ad->vol_ringtone_popup_del_timer) {
354 ecore_timer_del(ad->vol_ringtone_popup_del_timer);
355 ad->vol_ringtone_popup_del_timer = NULL;
359 __vcui_view_popup_win_del(ad);
363 void _vcui_view_popup_vol_ringtone(int vol_level)
365 CALL_UI_DEBUG("vol_level(%d)", vol_level);
366 vcui_app_call_data_t *ad = _vcui_get_app_data();
367 Evas_Object *popup = NULL;
368 Evas_Object *slider = NULL;
370 if (ad->vol_ringtone_popup_eo) {
371 __vcui_view_popup_vol_update_icon(vol_level);
372 elm_slider_value_set(ad->vol_ringtone_slider_eo, vol_level);
373 if (ad->vol_ringtone_popup_del_timer) {
374 ecore_timer_del(ad->vol_ringtone_popup_del_timer);
375 ad->vol_ringtone_popup_del_timer = NULL;
377 ad->vol_ringtone_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_ringtone, ad);
380 popup = elm_popup_add(ad->win_main);
382 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
383 ad->vol_ringtone_popup_eo = popup = elm_popup_add(ad->popup_mw);
385 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
386 elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_BODY_RINGTONE"));
388 ad->popup_vol_ly = _vcui_load_edj(popup, EDJ_NAME, "volume");
389 if (ad->popup_vol_ly == NULL) {
390 if (ad->vol_ringtone_popup_eo) {
391 CALL_UI_DEBUG("vol_ringtone_popup_eo delete.");
392 evas_object_del(ad->vol_ringtone_popup_eo);
393 ad->vol_ringtone_popup_eo = NULL;
395 __vcui_view_popup_win_del(ad);
398 elm_object_content_set(popup, ad->popup_vol_ly);
399 __vcui_view_popup_vol_update_icon(vol_level);
401 slider = elm_slider_add(popup);
402 elm_slider_horizontal_set(slider, EINA_TRUE);
403 elm_slider_indicator_show_set(slider, EINA_TRUE);
404 elm_slider_indicator_format_set(slider, "%.0f");
405 elm_object_part_content_set(ad->popup_vol_ly, "volume_slider", slider);
406 elm_slider_min_max_set(slider, 0, 15);
407 elm_slider_value_set(slider, vol_level);
408 evas_object_smart_callback_add(slider, "changed", __vcui_view_popup_vol_ringtone_changed_cb, ad);
409 ad->vol_ringtone_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_ringtone, ad);
410 evas_object_smart_callback_add(popup, "block,clicked", __vcui_view_popup_response_cb_vol_ringtone, ad);
412 ad->vol_ringtone_slider_eo = slider;
413 evas_object_show(popup);
418 static Eina_Bool __vcui_view_popup_timer_cb_vol_voice(void *data)
420 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
422 __vcui_view_popup_response_cb_vol_voice(ad, ad->vol_voice_popup_eo, NULL);
424 return ECORE_CALLBACK_CANCEL;
427 static void __vcui_view_popup_vol_voice_changed_cb(void *data, Evas_Object *obj, void *event_info)
429 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
432 value = elm_slider_value_get(obj);
433 if (value > VOICE_VOL_MAX)
434 value = VOICE_VOL_MAX;
435 else if (value < VOICE_VOL_MIN)
436 value = VOICE_VOL_MIN;
437 ad->voice_vol_val = (int)value;
439 vcall_engine_set_volume_level(VCALL_ENGINE_VOL_TYPE_VOICE, ad->voice_vol_val);
441 elm_slider_value_set(obj, ad->voice_vol_val);
442 if (ad->vol_voice_popup_del_timer) {
443 ecore_timer_del(ad->vol_voice_popup_del_timer);
444 ad->vol_voice_popup_del_timer = NULL;
446 ad->vol_voice_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_voice, ad);
449 static void __vcui_view_popup_response_cb_vol_voice(void *data, Evas_Object *obj, void *event_info)
452 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
454 if (ad->vol_voice_popup_eo) {
455 CALL_UI_DEBUG("vol_voice_popup_eo delete.");
456 evas_object_del(ad->vol_voice_popup_eo);
457 ad->vol_voice_popup_eo = NULL;
460 ad->vol_longpress_cnt = 0;
462 if (ad->volup_key_longpress_timer) {
463 ecore_timer_del(ad->volup_key_longpress_timer);
464 ad->volup_key_longpress_timer = NULL;
467 if (ad->voldown_key_longpress_timer) {
468 ecore_timer_del(ad->voldown_key_longpress_timer);
469 ad->voldown_key_longpress_timer = NULL;
472 if (ad->vol_voice_popup_del_timer) {
473 ecore_timer_del(ad->vol_voice_popup_del_timer);
474 ad->vol_voice_popup_del_timer = NULL;
478 __vcui_view_popup_win_del(ad);
482 void _vcui_view_popup_vol_voice(int vol_level)
484 vcui_app_call_data_t *ad = _vcui_get_app_data();
485 Evas_Object *popup = NULL;
486 Evas_Object *slider = NULL;
488 if (ad->vol_voice_popup_eo) {
489 elm_slider_value_set(ad->vol_voice_slider_eo, vol_level);
490 if (ad->vol_voice_popup_del_timer) {
491 ecore_timer_del(ad->vol_voice_popup_del_timer);
492 ad->vol_voice_popup_del_timer = NULL;
494 ad->vol_voice_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_voice, ad);
497 popup = elm_popup_add(ad->win_main);
499 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
500 popup = elm_popup_add(ad->popup_mw);
502 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
503 elm_object_part_text_set(popup, "title,text", _("IDS_CALL_BODY_CALL"));
505 ad->popup_vol_ly = _vcui_load_edj(popup, EDJ_NAME, "volume");
506 if (ad->popup_vol_ly == NULL) {
508 CALL_UI_DEBUG("popup delete.");
509 evas_object_del(popup);
512 __vcui_view_popup_win_del(ad);
515 elm_object_content_set(popup, ad->popup_vol_ly);
516 __vcui_view_popup_vol_update_icon(vol_level);
518 slider = elm_slider_add(ad->popup_vol_ly);
519 elm_slider_horizontal_set(slider, EINA_TRUE);
520 elm_slider_indicator_show_set(slider, EINA_TRUE);
521 elm_slider_indicator_format_set(slider, "%.0f");
522 elm_object_part_content_set(ad->popup_vol_ly, "volume_slider", slider);
523 elm_slider_min_max_set(slider, 0, 7);
524 elm_slider_value_set(slider, vol_level);
525 evas_object_smart_callback_add(slider, "changed", __vcui_view_popup_vol_voice_changed_cb, ad);
526 ad->vol_voice_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_voice, ad);
527 evas_object_smart_callback_add(popup, "block,clicked", __vcui_view_popup_response_cb_vol_voice, ad);
529 ad->vol_voice_slider_eo = slider;
530 ad->vol_voice_popup_eo = popup;
531 evas_object_show(popup);
535 static Eina_Bool __vcui_view_popup_timer_cb_vol_bt(void *data)
537 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
539 __vcui_view_popup_response_cb_vol_bt(ad, ad->vol_bt_popup_eo, NULL);
541 return ECORE_CALLBACK_CANCEL;
544 static void __vcui_view_popup_vol_bt_changed_cb(void *data, Evas_Object *obj, void *event_info)
546 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
549 value = elm_slider_value_get(obj);
550 if (value > BT_VOL_MAX)
552 else if (value < BT_VOL_MIN)
555 ad->bt_vol_val = (int)value;
557 vcall_engine_set_volume_level(VCALL_ENGINE_VOL_TYPE_HEADSET, ad->bt_vol_val);
559 elm_slider_value_set(obj, ad->bt_vol_val);
560 if (ad->vol_bt_popup_del_timer) {
561 ecore_timer_del(ad->vol_bt_popup_del_timer);
562 ad->vol_bt_popup_del_timer = NULL;
564 ad->vol_bt_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_bt, ad);
567 static void __vcui_view_popup_response_cb_vol_bt(void *data, Evas_Object *obj, void *event_info)
570 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
572 if (ad->vol_bt_popup_eo) {
573 CALL_UI_DEBUG("vol_bt_popup_eo delete.");
574 evas_object_del(ad->vol_bt_popup_eo);
575 ad->vol_bt_popup_eo = NULL;
576 __vcui_view_popup_win_del(ad);
579 ad->vol_longpress_cnt = 0;
581 if (ad->volup_key_longpress_timer) {
582 ecore_timer_del(ad->volup_key_longpress_timer);
583 ad->volup_key_longpress_timer = NULL;
586 if (ad->voldown_key_longpress_timer) {
587 ecore_timer_del(ad->voldown_key_longpress_timer);
588 ad->voldown_key_longpress_timer = NULL;
591 if (ad->vol_bt_popup_del_timer) {
592 ecore_timer_del(ad->vol_bt_popup_del_timer);
593 ad->vol_bt_popup_del_timer = NULL;
597 __vcui_view_popup_win_del(ad);
601 void _vcui_view_popup_vol_bt(int vol_level)
603 vcui_app_call_data_t *ad = _vcui_get_app_data();
604 Evas_Object *popup = NULL;
605 Evas_Object *slider = NULL;
607 if (ad->vol_bt_popup_eo) {
608 elm_slider_value_set(ad->vol_bt_slider_eo, vol_level);
609 if (ad->vol_bt_popup_del_timer) {
610 ecore_timer_del(ad->vol_bt_popup_del_timer);
611 ad->vol_bt_popup_del_timer = NULL;
613 ad->vol_bt_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_bt, ad);
616 popup = elm_popup_add(ad->win_main);
618 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
619 popup = elm_popup_add(ad->popup_mw);
621 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
622 elm_object_part_text_set(popup, "title,text", _("IDS_CALL_BUTTON_HEADSET"));
624 ad->popup_vol_ly = _vcui_load_edj(popup, EDJ_NAME, "volume");
625 if (ad->popup_vol_ly == NULL) {
627 CALL_UI_DEBUG("popup delete.");
628 evas_object_del(popup);
631 __vcui_view_popup_win_del(ad);
634 elm_object_content_set(popup, ad->popup_vol_ly);
635 __vcui_view_popup_vol_update_icon(vol_level);
637 slider = elm_slider_add(popup);
638 elm_slider_horizontal_set(slider, EINA_TRUE);
639 elm_slider_indicator_show_set(slider, EINA_TRUE);
640 elm_slider_indicator_format_set(slider, "%.0f");
641 elm_object_part_content_set(ad->popup_vol_ly, "volume_slider", slider);
642 elm_slider_min_max_set(slider, 0, 15);
643 elm_slider_value_set(slider, vol_level);
644 evas_object_smart_callback_add(slider, "changed", __vcui_view_popup_vol_bt_changed_cb, ad);
645 ad->vol_bt_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_bt, ad);
646 evas_object_smart_callback_add(popup, "block,clicked", __vcui_view_popup_response_cb_vol_bt, ad);
648 ad->vol_bt_slider_eo = slider;
649 ad->vol_bt_popup_eo = popup;
650 evas_object_show(popup);
655 static Eina_Bool __vcui_view_popup_response_cb_delay(void *data)
659 _vcui_view_popup_load((char *)data, POPUP_TIMEOUT_SHORT, EINA_FALSE);
661 vcui_app_call_data_t *ad = _vcui_get_app_data();
662 ecore_timer_del(ad->popup_delay);
663 ad->popup_delay = NULL;
665 CALL_UI_DEBUG("delay popup work");
669 void _vcui_view_popup_load_with_delay(char *popup_msg, double delay_time)
672 vcui_app_call_data_t *ad = _vcui_get_app_data();
674 ad->popup_delay = ecore_timer_add(delay_time, __vcui_view_popup_response_cb_delay, popup_msg);
675 CALL_UI_DEBUG("delay popup");
678 void _vcui_view_popup_unload_progress(vcui_app_call_data_t *ad)
682 if (ad->popup_progress_eo) {
683 evas_object_hide(ad->popup_progress_eo);
684 evas_object_del(ad->popup_progress_eo);
685 ad->popup_progress_eo = NULL;
687 __vcui_view_popup_win_del(ad);
694 static void __vcui_view_popup_progressbar_set_label(char *status_string)
698 vcui_app_call_data_t *ad = _vcui_get_app_data();
699 CALL_UI_DEBUG("popup_progress_set_label ...");
701 label = (Evas_Object *)evas_object_data_get(ad->popup_progress_eo, "progress_label");
702 elm_object_text_set(label, status_string);
705 static void __vcui_view_popup_progressbar_response_cb(void *data, Evas_Object *obj, void *event_info)
707 vcui_app_call_data_t *ad = _vcui_get_app_data();
708 CALL_UI_DEBUG("__vcui_view_popup_progressbar_response_cb callback=%d", (int)event_info);
710 if (ad->popup_progress_eo) {
711 evas_object_del(ad->popup_progress_eo);
712 ad->popup_progress_eo = NULL;
715 evas_object_del(obj);
716 __vcui_view_popup_win_del(ad);
719 void _vcui_view_popup_load_progress(char *display_string)
722 Evas_Object *progressbar_eo;
723 Evas_Object *box, *label;
724 vcui_app_call_data_t *ad = _vcui_get_app_data();
726 if (NULL != ad->popup_progress_eo) {
727 __vcui_view_popup_progressbar_set_label(display_string);
731 ad->popup_progress_eo = elm_popup_add(ad->win_main);
733 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
734 ad->popup_progress_eo = elm_popup_add(ad->popup_mw);
737 label = elm_label_add(ad->popup_progress_eo);
738 elm_object_text_set(label, display_string);
739 evas_object_show(label);
740 box = elm_box_add(ad->popup_progress_eo);
741 progressbar_eo = elm_progressbar_add(ad->popup_progress_eo);
742 elm_object_style_set(progressbar_eo, "list_progress");
743 elm_progressbar_pulse(progressbar_eo, EINA_TRUE);
744 evas_object_size_hint_align_set(progressbar_eo, EVAS_HINT_FILL, 0.5);
745 evas_object_size_hint_weight_set(progressbar_eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
746 elm_progressbar_pulse(progressbar_eo, EINA_TRUE);
747 evas_object_show(progressbar_eo);
748 elm_box_pack_end(box, label);
749 elm_box_pack_end(box, progressbar_eo);
750 evas_object_show(box);
751 elm_object_content_set(ad->popup_progress_eo, box);
752 evas_object_smart_callback_add(ad->popup_progress_eo, "timeout", __vcui_view_popup_progressbar_response_cb, NULL);
753 evas_object_show(ad->popup_progress_eo);
755 evas_object_data_set(ad->popup_progress_eo, "progress_label", (void *)label);
758 void _vcui_view_popup_load_sending_dtmf(char *status_string, char *dtmf_num)
761 char msg[DEF_BUF_LEN_LONG] = { 0, };
763 snprintf(msg, DEF_BUF_LEN_LONG, "%s\n%s", status_string, dtmf_num);
765 _vcui_view_popup_load_progress(msg);
768 static void __vcui_view_popup_snd_path_bt_cb(void *data, Evas_Object *obj, void *event_info)
771 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
773 elm_radio_value_set(ad->ctxpopup_radio_group_eo, VCUI_SND_PATH_HEADSET);
775 vcall_engine_change_sound_path(VCALL_ENGINE_AUDIO_HEADSET);
777 ad->speaker_status = EINA_FALSE;
778 ad->headset_status = EINA_TRUE;
781 static void __vcui_view_popup_snd_path_earjack_cb(void *data, Evas_Object *obj, void *event_info)
784 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
786 elm_radio_value_set(ad->ctxpopup_radio_group_eo, VCUI_SND_PATH_RECEIVER_EARJACK);
788 vcall_engine_change_sound_path(VCALL_ENGINE_AUDIO_RECEIVER_EARJACK);
790 ad->speaker_status = EINA_FALSE;
791 ad->headset_status = EINA_FALSE;
794 static void __vcui_view_popup_snd_path_speaker_cb(void *data, Evas_Object *obj, void *event_info)
797 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
799 elm_radio_value_set(ad->ctxpopup_radio_group_eo, VCUI_SND_PATH_SPEAKER);
801 vcall_engine_change_sound_path(VCALL_ENGINE_AUDIO_SPEAKER);
803 ad->speaker_status = EINA_TRUE;
804 ad->headset_status = EINA_FALSE;
807 static void __vcui_view_popup_hide_snd_path_cb(void *data, Evas_Object *obj, void *event_info)
810 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
812 if (ad->ctxpopup_eo) {
813 evas_object_del(ad->ctxpopup_eo);
814 ad->ctxpopup_eo = NULL;
818 static void __vcui_view_popup_move_snd_path(Evas_Object *ctxpopup, Evas_Object *layout, Evas_Coord touch_x, Evas_Coord touch_y)
820 evas_object_move(ctxpopup, touch_x, touch_y);
823 void _vcui_view_popup_load_snd_path(void *data)
826 vcui_app_call_data_t *ad = _vcui_get_app_data();
827 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
828 int bearjack_status = EINA_FALSE;
830 Evas_Object *ctxpopup = NULL;
831 Evas_Object *radio = NULL;
832 Evas_Object *group = NULL;
835 char *bt_name = NULL;
839 bt_name = vconf_get_str(VCONFKEY_BT_HEADSET_NAME);
841 bt_name = _("IDS_CALL_BUTTON_HEADSET");
844 /* check earjack status */
845 if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &status)) {
846 if (status != VCONFKEY_SYSMAN_EARJACK_REMOVED) {
847 bearjack_status = EINA_TRUE;
851 if (ad->ctxpopup_eo) {
852 evas_object_del(ad->ctxpopup_eo);
853 ad->ctxpopup_eo = NULL;
856 ctxpopup = elm_ctxpopup_add(vd->layout);
858 evas_object_smart_callback_add(ctxpopup, "dismissed", __vcui_view_popup_hide_snd_path_cb, ad);
860 __vcui_view_popup_move_snd_path(ctxpopup, vd->layout, ad->touch_x, ad->touch_y);
863 group = radio = elm_radio_add(ctxpopup);
864 elm_radio_state_value_set(radio, VCUI_SND_PATH_HEADSET);
865 evas_object_data_set(radio, "idx", (void *)(VCUI_SND_PATH_HEADSET));
866 evas_object_show(radio);
867 elm_ctxpopup_item_append(ctxpopup, bt_name, radio, __vcui_view_popup_snd_path_bt_cb, ad);
869 /* earjack or receiver */
870 radio = elm_radio_add(ctxpopup);
871 elm_radio_state_value_set(radio, VCUI_SND_PATH_RECEIVER_EARJACK);
872 elm_radio_group_add(radio, group);
873 evas_object_data_set(radio, "idx", (void *)(VCUI_SND_PATH_RECEIVER_EARJACK));
874 evas_object_show(radio);
875 if (bearjack_status) {
876 elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_BUTTON_HEADPHONES"), radio, __vcui_view_popup_snd_path_earjack_cb, ad);
878 elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_BUTTON_RECEIVER"), radio, __vcui_view_popup_snd_path_earjack_cb, ad);
882 radio = elm_radio_add(ctxpopup);
883 elm_radio_state_value_set(radio, VCUI_SND_PATH_SPEAKER);
884 elm_radio_group_add(radio, group);
885 evas_object_data_set(radio, "idx", (void *)(VCUI_SND_PATH_SPEAKER));
886 evas_object_show(radio);
887 elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_BUTTON_SPEAKER"), radio, __vcui_view_popup_snd_path_speaker_cb, ad);
888 /* current sound path set */
889 vcall_engine_get_sound_path(&snd_path);
891 case VCALL_ENGINE_AUDIO_SPEAKER:
893 elm_radio_value_set(group, VCUI_SND_PATH_SPEAKER);
896 case VCALL_ENGINE_AUDIO_HEADSET:
898 elm_radio_value_set(group, VCUI_SND_PATH_HEADSET);
901 case VCALL_ENGINE_AUDIO_RECEIVER_EARJACK:
903 elm_radio_value_set(group, VCUI_SND_PATH_RECEIVER_EARJACK);
907 CALL_UI_DEBUG("ERROR - wrong type:[%d]", snd_path);
912 evas_object_show(ctxpopup);
914 ad->ctxpopup_eo = ctxpopup;
915 ad->ctxpopup_radio_group_eo = group;
919 static Eina_Bool __vcui_view_ticker_response_cb(void *data)
921 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
925 ecore_timer_del(ad->ticker_tm);
926 ad->ticker_tm = NULL;
929 /* to be implemented */
931 return ECORE_CALLBACK_CANCEL;
934 void _vcui_view_create_ticker_noti(char *ticker_msg)
936 Evas_Object *ticker_noti = NULL;
937 vcui_app_call_data_t *ad = _vcui_get_app_data();
939 CALL_UI_DEBUG("load_ticker_noti_at_bottom enter");
941 ticker_noti = elm_tickernoti_add(NULL);
942 elm_object_style_set(ticker_noti, "info");
943 elm_object_text_set(ticker_noti, ticker_msg);
944 elm_tickernoti_orient_set(ticker_noti, ELM_TICKERNOTI_ORIENT_BOTTOM);
945 elm_tickernoti_rotation_set(ticker_noti, ad->rotate_angle);
947 ecore_timer_del(ad->ticker_tm);
948 ad->ticker_tm = NULL;
950 ad->ticker_tm = ecore_timer_add(TICKER_TIMEOUT, __vcui_view_ticker_response_cb, ad);
951 evas_object_show(ticker_noti);
953 CALL_UI_DEBUG("load_ticker_noti_at_bottom over");
957 static Eina_Bool __vcui_view_send_dtmf_idler_cb(void *data)
960 gboolean bsuccess = TRUE;
962 if (strncmp(elm_object_text_get((Evas_Object *)data), "Send", 4) == 0) {
964 } else if (strncmp(elm_object_text_get((Evas_Object *)data), "Cancel", 6) == 0) {
967 CALL_UI_DEBUG("bsuccess %d", bsuccess);
968 vcall_engine_send_dtmf(bsuccess);
973 static void __vcui_view_dtmf_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
976 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
978 ecore_idler_add((Ecore_Task_Cb) __vcui_view_send_dtmf_idler_cb, obj);
980 CALL_UI_DEBUG("popup eo delete.");
981 evas_object_hide(ad->popup_eo);
982 evas_object_del(ad->popup_eo);
986 __vcui_view_popup_win_del(ad);
990 void _vcui_view_load_send_dtmf_popup_with_buttons(char *status_string, char *dtmf_num)
992 vcui_app_call_data_t *ad = _vcui_get_app_data();
993 char popup_msg[DEF_BUF_LEN_LONG] = { 0, };
994 Evas_Object *btn1 = NULL;
995 Evas_Object *btn2 = NULL;
997 snprintf(popup_msg, DEF_BUF_LEN_LONG, "%s\n%s", status_string, dtmf_num);
998 CALL_UI_DEBUG("msg:[%s]", popup_msg);
1000 _vcui_view_popup_unload_progress(ad);
1001 _vcui_view_popup_unload(ad->popup_eo);
1003 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
1004 ad->popup_eo = elm_popup_add(ad->popup_mw);
1005 evas_object_size_hint_weight_set(ad->popup_eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1006 elm_object_text_set(ad->popup_eo, popup_msg);
1007 btn1 = elm_button_add(ad->popup_eo);
1008 elm_object_text_set(btn1, "Send");
1009 elm_object_part_content_set(ad->popup_eo, "button1", btn1);
1010 evas_object_smart_callback_add(btn1, "clicked", __vcui_view_dtmf_popup_response_cb, ad);
1011 btn2 = elm_button_add(ad->popup_eo);
1012 elm_object_text_set(btn2, "Cancel");
1013 elm_object_part_content_set(ad->popup_eo, "button2", btn2);
1014 evas_object_smart_callback_add(btn2, "clicked", __vcui_view_dtmf_popup_response_cb, ad);
1015 evas_object_show(ad->popup_eo);
1018 void _vcui_view_popup_second_mtcall_unload(void *data)
1020 CALL_UI_DEBUG("..");
1021 vcui_app_call_data_t *ad = _vcui_get_app_data();
1022 _second_mtcall_popup_data_t *p_popup_data = (_second_mtcall_popup_data_t *) data;
1025 if (p_popup_data != NULL) {
1028 if (p_popup_data->text_buffer[iter] != NULL) {
1029 CALL_UI_DEBUG("Free the string %d buffer", iter);
1030 free(p_popup_data->text_buffer[iter]);
1031 p_popup_data->text_buffer[iter] = NULL;
1036 if (p_popup_data->itc_option_list != NULL) {
1037 elm_genlist_item_class_free(p_popup_data->itc_option_list);
1038 p_popup_data->itc_option_list = NULL;
1042 p_popup_data = NULL;
1044 _vcui_view_set_second_mtcall_popup_data(NULL);
1047 _vcui_view_popup_unload(ad->popup_eo);
1050 static char *__second_mtcall_option_list_gl_label_get_option(void *data, Evas_Object *obj, const char *part)
1052 VCUI_RETURN_NULL_IF_FAIL(part != NULL);
1053 CALL_UI_DEBUG("..");
1054 _second_mtcall_popup_data_t *p_popup_data = (_second_mtcall_popup_data_t *) _vcui_view_get_second_mtcall_popup_data();
1055 char *list_text = NULL;
1057 list_text = p_popup_data->text_buffer[(int) data];
1058 CALL_UI_DEBUG("list_text: %s", list_text);
1060 if (strcmp(part, "elm.text") == 0) {
1061 CALL_UI_DEBUG("..");
1062 if (list_text != NULL) {
1063 return strdup(list_text);
1072 static void __second_mtcall_option_list_gl_sel_option(void *data, Evas_Object *obj, void *event_info)
1074 CALL_UI_DEBUG("..");
1075 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1077 int unhold_call_count = 0;
1078 int hold_call_count = 0;
1082 index = (int) elm_object_item_data_get(item);
1083 CALL_UI_DEBUG("index: %d", index);
1085 unhold_call_count = _vcui_doc_get_unhold_call_data_count();
1086 hold_call_count = _vcui_doc_get_hold_call_data_count();
1088 if ((unhold_call_count >= 1) && (hold_call_count == 0)) {
1089 CALL_UI_DEBUG("1 active call OR 1 active conference call");
1091 vcall_engine_answer_call_by_type(VCALL_ENGINE_ANSWER_HOLD_ACTIVE_AND_ACCEPT);
1092 } else if (index == 1) {
1093 vcall_engine_answer_call_by_type(VCALL_ENGINE_ANSWER_RELEASE_ACTIVE_AND_ACCEPT);
1095 CALL_UI_DEBUG("Wrong index.. Should never get here");
1097 } else if ((unhold_call_count == 1 && hold_call_count == 1) || (unhold_call_count > 1 && hold_call_count == 1) || \
1098 (unhold_call_count == 1 && hold_call_count > 1)) {
1099 CALL_UI_DEBUG("1 active call + 1 held call OR 1 active conf call + 1 held call OR 1 active call + 1 held conf call");
1101 vcall_engine_answer_call_by_type(VCALL_ENGINE_ANSWER_RELEASE_ACTIVE_AND_ACCEPT);
1102 } else if (index == 1) {
1103 vcall_engine_answer_call_by_type(VCALL_ENGINE_ANSWER_RELEASE_HOLD_AND_ACCEPT);
1104 } else if (index == 2) {
1105 vcall_engine_answer_call_by_type(VCALL_ENGINE_ANSWER_RELEASE_ALL_AND_ACCEPT);
1107 CALL_UI_DEBUG("Wrong index.. Should never get here");
1113 static void __second_mtcall_cancel_btn_response_cb(void *data, Evas_Object *obj, void *event_info)
1115 CALL_UI_DEBUG("..");
1117 _vcui_view_popup_second_mtcall_unload(data);
1119 _vcui_view_change(VIEW_INCOMING_LOCK_VIEW, -1, NULL, NULL);
1124 void _vcui_view_popup_second_mtcall_load(char *title_text, int unhold_call_count, int hold_call_count)
1126 CALL_UI_DEBUG("..");
1127 vcui_app_call_data_t *ad = _vcui_get_app_data();
1128 _second_mtcall_popup_data_t *popup_data = NULL;
1129 Evas_Object *box = NULL;
1131 call_data_t *hold_call_data = NULL;
1132 call_data_t *unhold_call_data = NULL;
1133 char *hold_call_number = NULL;
1134 char *hold_call_name = NULL;
1135 char *unhold_call_number = NULL;
1136 char *unhold_call_name = NULL;
1137 char *temp_str = NULL;
1141 hold_call_data = _vcui_doc_get_call_data_by_call_status(CALL_HOLD);
1142 unhold_call_data = _vcui_doc_get_call_data_by_call_status(CALL_UNHOLD);
1144 if (unhold_call_data == NULL) {
1145 CALL_UI_DEBUG("call data is null");
1149 _vcui_view_popup_second_mtcall_unload(NULL);
1151 ad->popup_eo = elm_popup_add(ad->win_main);
1152 evas_object_size_hint_weight_set(ad->popup_eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1153 elm_object_style_set(ad->popup_eo, "min_menustyle");
1154 elm_object_part_text_set(ad->popup_eo, "title,text", title_text);
1156 popup_data = (_second_mtcall_popup_data_t *) calloc(1, sizeof(_second_mtcall_popup_data_t));
1157 if (popup_data == NULL) {
1158 CALL_UI_DEBUG("memory allocation failed for popup data.. return");
1161 _vcui_view_set_second_mtcall_popup_data(popup_data);
1163 popup_data->itc_option_list = elm_genlist_item_class_new();
1165 popup_data->itc_option_list->item_style = "1text";
1166 popup_data->itc_option_list->func.text_get = __second_mtcall_option_list_gl_label_get_option;
1167 popup_data->itc_option_list->func.content_get = NULL;
1168 popup_data->itc_option_list->func.state_get = NULL;
1169 popup_data->itc_option_list->func.del = NULL;
1171 box = elm_box_add(ad->popup_eo);
1173 popup_data->glist = elm_genlist_add(box);
1174 evas_object_size_hint_weight_set(popup_data->glist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1175 evas_object_size_hint_align_set(popup_data->glist, EVAS_HINT_FILL, EVAS_HINT_FILL);
1177 for (iter = 0; iter < 3; iter++) {
1178 popup_data->text_buffer[iter] = (char *) calloc(1, DEF_BUF_LEN);
1179 memset(popup_data->text_buffer[iter], 0x00, DEF_BUF_LEN);
1182 CALL_UI_DEBUG("..");
1183 if (hold_call_data != NULL) {
1184 hold_call_number = _vcui_doc_get_call_number(hold_call_data);
1185 hold_call_name = _vcui_doc_get_call_display_name(hold_call_data);
1186 if (strlen(hold_call_name) == 0)
1187 hold_call_name = hold_call_number;
1190 if (unhold_call_data != NULL) {
1191 unhold_call_number = _vcui_doc_get_call_number(unhold_call_data);
1192 unhold_call_name = _vcui_doc_get_call_display_name(unhold_call_data);
1193 if (strlen(unhold_call_name) == 0)
1194 unhold_call_name = unhold_call_number;
1197 if ((unhold_call_count == 1) && (hold_call_count == 0)) {
1198 CALL_UI_DEBUG("1 active call");
1201 temp_str = _("IDS_CALL_BODY_PUTTING_PS_ON_HOLD");
1202 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, unhold_call_name);
1203 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1206 temp_str = _("IDS_CALL_BODY_ENDING_CALL_WITH_PS");
1207 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, unhold_call_name);
1208 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1210 } else if ((unhold_call_count > 1) && (hold_call_count == 0)) {
1211 CALL_UI_DEBUG("1 active conference call");
1214 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, "%s (%d)", _("IDS_CALL_BODY_HOLD_ACTIVE_CALL_ABB"), unhold_call_count);
1215 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1218 temp_str = _("IDS_CALL_BODY_END_ACTIVE_CALLS_HPD");
1219 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, unhold_call_count);
1220 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1222 } else if ((unhold_call_count == 1) && (hold_call_count == 1)) {
1223 CALL_UI_DEBUG("1 active call + 1 held call");
1226 temp_str = _("IDS_CALL_BODY_ENDING_CALL_WITH_PS");
1227 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, unhold_call_name);
1228 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1231 temp_str = _("IDS_CALL_BODY_ENDING_CALL_WITH_PS");
1232 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, hold_call_name);
1233 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1236 strncpy(popup_data->text_buffer[iter], _("IDS_CALL_OPT_END_ALL_CALLS"), DEF_BUF_LEN - 1);
1237 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1239 } else if ((unhold_call_count > 1) && (hold_call_count == 1)) {
1240 CALL_UI_DEBUG("1 active conf call + 1 held call");
1243 temp_str = _("IDS_CALL_BODY_END_ACTIVE_CALLS_HPD");
1244 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, unhold_call_count);
1245 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1248 temp_str = _("IDS_CALL_BODY_ENDING_CALL_WITH_PS");
1249 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, hold_call_name);
1250 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1253 strncpy(popup_data->text_buffer[iter], _("IDS_CALL_OPT_END_ALL_CALLS"), DEF_BUF_LEN - 1);
1254 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1256 } else if ((unhold_call_count == 1) && (hold_call_count > 1)) {
1257 CALL_UI_DEBUG("1 active call + 1 held conf call");
1260 temp_str = _("IDS_CALL_BODY_ENDING_CALL_WITH_PS");
1261 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, unhold_call_name);
1262 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1265 temp_str = _("IDS_CALL_BODY_END_HELD_CALLS_HPD");
1266 snprintf(popup_data->text_buffer[iter], DEF_BUF_LEN, temp_str, hold_call_count);
1267 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1270 strncpy(popup_data->text_buffer[iter], _("IDS_CALL_OPT_END_ALL_CALLS"), DEF_BUF_LEN - 1);
1271 elm_genlist_item_append(popup_data->glist, popup_data->itc_option_list, (void *)iter, NULL, ELM_GENLIST_ITEM_NONE, __second_mtcall_option_list_gl_sel_option, popup_data);
1274 popup_data->btn = elm_button_add(ad->popup_eo);
1275 elm_object_text_set(popup_data->btn, dgettext("sys_string", "IDS_COM_POP_CANCEL"));
1276 elm_object_part_content_set(ad->popup_eo, "button1", popup_data->btn);
1277 evas_object_smart_callback_add(popup_data->btn, "clicked", __second_mtcall_cancel_btn_response_cb, popup_data);
1279 evas_object_size_hint_min_set(box, POPUP_LIST_HD_W * ad->scale_factor, ((POPUP_LIST_ITEM_HD_H * (iter + 1))) * ad->scale_factor);
1280 evas_object_show(popup_data->glist);
1281 elm_box_pack_end(box, popup_data->glist);
1282 elm_object_content_set(ad->popup_eo, box);
1283 evas_object_show(ad->popup_eo);
1287 void _vcui_view_set_second_mtcall_popup_data(void *p_popup_data)
1289 g_popup_data = (_second_mtcall_popup_data_t *) p_popup_data;
1292 void *_vcui_view_get_second_mtcall_popup_data(void)
1294 return ((void *) g_popup_data);
1297 static void __vcui_view_popup_hide_more_option(void *data, Evas_Object *obj, void *event_info)
1299 CALL_UI_DEBUG("..");
1300 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
1302 if (ad->ctxpopup_eo) {
1303 evas_object_del(ad->ctxpopup_eo);
1304 ad->ctxpopup_eo = NULL;
1308 static void __vcui_view_popup_move_more_option(Evas_Object *ctxpopup, Evas_Object *layout, Evas_Coord touch_x, Evas_Coord touch_y)
1310 evas_object_move(ctxpopup, touch_x, touch_y);
1313 static void __vcui_view_popup_manage_conf_cb(void *data, Evas_Object *obj, void *event_info)
1315 CALL_UI_DEBUG("..");
1316 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
1317 if (ad->ctxpopup_eo) {
1318 evas_object_del(ad->ctxpopup_eo);
1319 ad->ctxpopup_eo = NULL;
1322 _vcui_view_change(VIEW_INCALL_MULTICALL_LIST_VIEW, 0, 0, 0);
1325 void _vcui_view_popup_load_more_option(void *data)
1327 CALL_UI_DEBUG("..");
1328 vcui_app_call_data_t *ad = _vcui_get_app_data();
1329 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
1331 Evas_Object *ctxpopup = NULL;
1332 int hold_calls = _vcui_doc_get_hold_call_data_count();
1333 int active_calls = _vcui_doc_get_unhold_call_data_count();
1334 Evas_Object* icon = NULL;
1336 if (ad->ctxpopup_eo) {
1337 evas_object_del(ad->ctxpopup_eo);
1338 ad->ctxpopup_eo = NULL;
1341 ctxpopup = elm_ctxpopup_add(vd->layout);
1342 elm_object_style_set(ctxpopup, "more_ctxpopup");
1344 evas_object_smart_callback_add(ctxpopup, "dismissed", __vcui_view_popup_hide_more_option, ad);
1346 if ((active_calls > 1)
1347 || ((active_calls == 0) && (hold_calls > 1))) {
1348 CALL_UI_DEBUG("Manage conference (active:%d, hold:%d)", active_calls, hold_calls);
1349 icon = elm_image_add(ctxpopup);
1350 elm_image_file_set(icon, MORE_MANAGE_CONF_ICON, NULL);
1351 elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_HEADER_MANAGE_CONFERENCE_CALL"), icon, __vcui_view_popup_manage_conf_cb, ad);
1354 elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_LEFT,
1355 ELM_CTXPOPUP_DIRECTION_RIGHT, ELM_CTXPOPUP_DIRECTION_UP);
1356 __vcui_view_popup_move_more_option(ctxpopup, vd->layout, MORE_MENU_CTXPOPUP_X, MORE_MENU_CTXPOPUP_Y);
1357 evas_object_show(ctxpopup);
1358 ad->ctxpopup_eo = ctxpopup;