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-engine-interface.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
29 static void __vcui_view_popup_response_cb_vol_voice(void *data, Evas_Object *obj, void *event_info);
31 static void __vcui_view_popup_win_del(void *data)
34 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
36 CALL_UI_DEBUG("delete the popup main_win - if created...");
37 if (ad->popup_mw != NULL) {
38 CALL_UI_DEBUG("main_win is NOT null");
39 evas_object_del(ad->popup_mw);
44 void _vcui_view_popup_unload(Evas_Object *popup_eo)
47 vcui_app_call_data_t *ad = _vcui_get_app_data();
50 evas_object_hide(popup_eo);
51 evas_object_del(popup_eo);
55 __vcui_view_popup_win_del(ad);
61 static void __vcui_view_popup_response_cb_terminate(void *data, Evas_Object *obj, void *event_info)
64 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
67 CALL_UI_DEBUG("popup eo delete.");
68 evas_object_hide(ad->popup_eo);
69 evas_object_del(ad->popup_eo);
73 __vcui_view_popup_win_del(ad);
75 _vcui_view_common_call_terminate_or_view_change();
80 static void __vcui_view_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
83 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
86 CALL_UI_DEBUG("popup eo delete.");
87 evas_object_hide(ad->popup_eo);
88 evas_object_del(ad->popup_eo);
92 __vcui_view_popup_win_del(ad);
96 /* create a separate main window for the popups with a high priority */
97 /* this window will always be displayed on top, even on a lock screen */
98 static Evas_Object *__vcui_view_popup_create_win(vcui_app_call_data_t *ad, const char *name)
105 CALL_UI_DEBUG("create the popup main_win...");
106 eo = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
108 elm_win_alpha_set(eo, EINA_TRUE);
109 elm_win_title_set(eo, name);
110 elm_win_borderless_set(eo, EINA_TRUE);
112 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
113 evas_object_resize(eo, w, h);
115 /* Set the popup window type as LEVEL-HIGH so it is always displayed on top */
116 CALL_UI_DEBUG("...Set HIGH priority...");
117 xwin = elm_win_xwindow_get(eo);
118 ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_NOTIFICATION);
119 utilx_set_system_notification_level(ecore_x_display_get(), xwin, UTILX_NOTIFICATION_LEVEL_HIGH);
121 evas_object_show(eo);
127 void _vcui_view_popup_load(char *popup_msg, double time_out, int bterminate)
129 CALL_UI_DEBUG("msg:[%s], bterminate:[%d]", popup_msg, bterminate);
130 vcui_app_call_data_t *ad = _vcui_get_app_data();
132 if (popup_msg == NULL) {
136 _vcui_view_popup_unload(ad->popup_eo);
140 CALL_UI_DEBUG("parent window TOP");
141 ad->popup_eo = elm_popup_add(ad->win_main);
142 _vcui_show_main_ui_set_flag();
146 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
147 ad->popup_eo = elm_popup_add(ad->popup_mw);
149 evas_object_size_hint_weight_set(ad->popup_eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
150 elm_object_text_set(ad->popup_eo, popup_msg);
151 elm_popup_timeout_set(ad->popup_eo, time_out);
152 if (bterminate == 0) {
153 evas_object_smart_callback_add(ad->popup_eo, "timeout", __vcui_view_popup_response_cb, ad);
155 evas_object_smart_callback_add(ad->popup_eo, "timeout", __vcui_view_popup_response_cb_terminate, ad);
157 evas_object_show(ad->popup_eo);
160 void _vcui_view_popup_replace(char *popup_msg, double time_out, int bterminate)
162 CALL_UI_DEBUG("msg:[%s], bterminate:[%d]", popup_msg, bterminate);
163 vcui_app_call_data_t *ad = _vcui_get_app_data();
165 if (ad->popup_eo == NULL) {
166 _vcui_view_popup_load(popup_msg, time_out, bterminate);
168 if (popup_msg == NULL) {
172 if (ad->view_top != -1) {
174 _vcui_raise_main_win();
176 if (ad->popup_mw != NULL)
177 elm_win_activate(ad->popup_mw);
181 elm_object_text_set(ad->popup_eo, popup_msg);
182 elm_popup_timeout_set(ad->popup_eo, time_out);
183 if (bterminate == 0) {
184 evas_object_smart_callback_add(ad->popup_eo, "timeout", __vcui_view_popup_response_cb, ad);
186 evas_object_smart_callback_add(ad->popup_eo, "timeout", __vcui_view_popup_response_cb_terminate, ad);
188 evas_object_show(ad->popup_eo);
192 void _vcui_view_popup_load_reject_call(char *name, char *number, int end_app)
195 char msg[DEF_BUF_LEN_LONG] = { 0, };
197 if (strlen(name) == 0) {
198 snprintf(msg, sizeof(msg), "%s<br>%s", number, _("IDS_CALL_POP_REJECTED"));
199 } else if (strlen(number) == 0) {
200 snprintf(msg, sizeof(msg), "%s<br>%s", name, _("IDS_CALL_POP_REJECTED"));
202 snprintf(msg, sizeof(msg), "%s<br>%s<br>%s", name, number, _("IDS_CALL_POP_REJECTED"));
205 _vcui_view_popup_load(msg, POPUP_TIMEOUT_LONG, end_app);
209 void _vcui_view_popup_load_endcall_time(call_data_t *cd)
211 unsigned long sec = 0;
212 unsigned long min = 0;
213 unsigned long hr = 0;
214 unsigned long call_duration_in_sec = _vcui_get_diff_now(cd->start_time);
215 char buf[DEF_BUF_LEN] = { 0, };
216 char msg[DEF_BUF_LEN_LONG] = { 0, };
218 sec = call_duration_in_sec % 60;
219 min = (call_duration_in_sec / 60) % 60;
220 hr = call_duration_in_sec / 3600;
221 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'));
223 snprintf(msg, sizeof(msg), "%s<br>%s<br>%s", cd->call_display, cd->call_num, buf);
225 _vcui_view_popup_load(msg, POPUP_TIMEOUT_SHORT, EINA_FALSE);
228 void _vcui_view_popup_load_redial(void)
230 _vcui_view_popup_load(_("IDS_CALL_POP_REDIALLING"), POPUP_TIMEOUT_NORMAL, EINA_FALSE);
233 static Eina_Bool __vcui_view_popup_timer_cb_vol_ringtone(void *data)
235 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
237 ad->vol_ringtone_popup_del_timer = NULL;
238 return ECORE_CALLBACK_CANCEL;
241 static void __vcui_view_popup_vol_update_icon(int volume_level)
243 CALL_UI_DEBUG("...");
244 vcui_app_call_data_t *ad = _vcui_get_app_data();
245 Evas_Object *icon = NULL;
247 icon = edje_object_part_swallow_get(_EDJ(ad->popup_vol_ly), "volume_icon");
249 edje_object_part_unswallow(_EDJ(ad->popup_vol_ly), icon);
250 evas_object_del(icon);
253 icon = elm_icon_add(ad->popup_vol_ly);
254 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
255 elm_icon_resizable_set(icon, 0, 0);
256 elm_object_part_content_set(ad->popup_vol_ly, "volume_icon", icon);
257 if (volume_level == 0)
258 elm_icon_file_set(icon, VOLUME_MUTE_ICON, NULL);
260 elm_icon_file_set(icon, VOLUME_ICON, NULL);
263 static void __vcui_view_popup_vol_ringtone_changed_cb(void *data, Evas_Object *obj, void *event_info)
265 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
268 value = elm_slider_value_get(obj);
269 if (value > RINGTONE_MAX)
270 value = RINGTONE_MAX;
271 else if (value < RINGTONE_MIN)
272 value = RINGTONE_MIN;
274 ad->ringtone_val = (int)value;
276 _vcui_engine_set_volume_level(VCUI_VOL_RING, ad->ringtone_val);
278 elm_slider_value_set(obj, ad->ringtone_val);
279 if (ad->vol_ringtone_popup_del_timer) {
280 ecore_timer_del(ad->vol_ringtone_popup_del_timer);
281 ad->vol_ringtone_popup_del_timer = NULL;
284 CALL_UI_DEBUG("ad->ringtone_val %d...", ad->ringtone_val);
285 __vcui_view_popup_vol_update_icon(ad->ringtone_val);
286 ad->vol_ringtone_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_ringtone, ad);
289 static void __vcui_view_popup_response_cb_vol_ringtone(void *data, Evas_Object *obj, void *event_info)
292 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
294 if (ad->vol_ringtone_popup_eo) {
295 CALL_UI_DEBUG("vol_ringtone_popup_eo delete.");
296 evas_object_del(ad->vol_ringtone_popup_eo);
297 ad->vol_ringtone_popup_eo = NULL;
300 ad->vol_longpress_cnt = 0;
302 if (ad->volup_key_longpress_timer) {
303 ecore_timer_del(ad->volup_key_longpress_timer);
304 ad->volup_key_longpress_timer = NULL;
307 if (ad->voldown_key_longpress_timer) {
308 ecore_timer_del(ad->voldown_key_longpress_timer);
309 ad->voldown_key_longpress_timer = NULL;
313 __vcui_view_popup_win_del(ad);
317 void _vcui_view_popup_vol_ringtone(int vol_level)
319 CALL_UI_DEBUG("vol_level(%d)", vol_level);
320 vcui_app_call_data_t *ad = _vcui_get_app_data();
321 Evas_Object *popup = NULL;
322 Evas_Object *slider = NULL;
323 Evas_Object *icon = NULL;
325 if (ad->vol_ringtone_popup_eo) {
326 __vcui_view_popup_vol_update_icon(vol_level);
327 elm_slider_value_set(ad->vol_ringtone_slider_eo, vol_level);
328 if (ad->vol_ringtone_popup_del_timer) {
329 ecore_timer_del(ad->vol_ringtone_popup_del_timer);
330 ad->vol_ringtone_popup_del_timer = NULL;
332 ad->vol_ringtone_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_ringtone, ad);
335 popup = elm_popup_add(ad->win_main);
337 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
338 ad->vol_ringtone_popup_eo = popup = elm_popup_add(ad->popup_mw);
340 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
341 elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_BODY_RINGTONE"));
343 ad->popup_vol_ly = _vcui_load_edj(popup, EDJ_NAME, "volume");
344 if (ad->popup_vol_ly == NULL) {
345 if (ad->vol_ringtone_popup_eo) {
346 CALL_UI_DEBUG("vol_ringtone_popup_eo delete.");
347 evas_object_del(ad->vol_ringtone_popup_eo);
348 ad->vol_ringtone_popup_eo = NULL;
350 __vcui_view_popup_win_del(ad);
353 elm_object_content_set(popup, ad->popup_vol_ly);
354 __vcui_view_popup_vol_update_icon(vol_level);
356 slider = elm_slider_add(popup);
357 elm_slider_horizontal_set(slider, EINA_TRUE);
358 elm_slider_indicator_show_set(slider, EINA_TRUE);
359 elm_slider_indicator_format_set(slider, "%.0f");
360 elm_object_part_content_set(ad->popup_vol_ly, "volume_slider", slider);
361 elm_slider_min_max_set(slider, 0, 15);
362 elm_slider_value_set(slider, vol_level);
363 evas_object_smart_callback_add(slider, "changed", __vcui_view_popup_vol_ringtone_changed_cb, ad);
364 ad->vol_ringtone_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_ringtone, ad);
365 evas_object_smart_callback_add(popup, "timeout", __vcui_view_popup_response_cb_vol_ringtone, ad);
367 ad->vol_ringtone_slider_eo = slider;
368 evas_object_show(popup);
373 static Eina_Bool __vcui_view_popup_timer_cb_vol_voice(void *data)
375 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
377 __vcui_view_popup_response_cb_vol_voice(ad, ad->vol_voice_popup_eo, NULL);
378 ad->vol_voice_popup_del_timer = NULL;
379 return ECORE_CALLBACK_CANCEL;
382 static void __vcui_view_popup_vol_voice_changed_cb(void *data, Evas_Object *obj, void *event_info)
384 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
387 value = elm_slider_value_get(obj);
388 if (value > VOICE_VOL_MAX)
389 value = VOICE_VOL_MAX;
390 else if (value < VOICE_VOL_MIN)
391 value = VOICE_VOL_MIN;
392 ad->voice_vol_val = (int)value;
394 _vcui_engine_set_volume_level(VCUI_VOL_VOICE, ad->voice_vol_val);
396 elm_slider_value_set(obj, ad->voice_vol_val);
397 if (ad->vol_voice_popup_del_timer) {
398 ecore_timer_del(ad->vol_voice_popup_del_timer);
399 ad->vol_voice_popup_del_timer = NULL;
401 ad->vol_voice_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_voice, ad);
404 static void __vcui_view_popup_response_cb_vol_voice(void *data, Evas_Object *obj, void *event_info)
407 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
409 if (ad->vol_voice_popup_eo) {
410 CALL_UI_DEBUG("vol_voice_popup_eo delete.");
411 evas_object_del(ad->vol_voice_popup_eo);
412 ad->vol_voice_popup_eo = NULL;
415 ad->vol_longpress_cnt = 0;
417 if (ad->volup_key_longpress_timer) {
418 ecore_timer_del(ad->volup_key_longpress_timer);
419 ad->volup_key_longpress_timer = NULL;
422 if (ad->voldown_key_longpress_timer) {
423 ecore_timer_del(ad->voldown_key_longpress_timer);
424 ad->voldown_key_longpress_timer = NULL;
428 __vcui_view_popup_win_del(ad);
432 void _vcui_view_popup_vol_voice(int vol_level)
434 vcui_app_call_data_t *ad = _vcui_get_app_data();
435 Evas_Object *popup = NULL;
436 Evas_Object *slider = NULL;
437 Evas_Object *icon = NULL;
439 if (ad->vol_voice_popup_eo) {
440 elm_slider_value_set(ad->vol_voice_slider_eo, vol_level);
441 if (ad->vol_voice_popup_del_timer) {
442 ecore_timer_del(ad->vol_voice_popup_del_timer);
443 ad->vol_voice_popup_del_timer = NULL;
445 ad->vol_voice_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_voice, ad);
448 popup = elm_popup_add(ad->win_main);
450 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
451 popup = elm_popup_add(ad->popup_mw);
453 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
454 elm_object_part_text_set(popup, "title,text", _("IDS_CALL_BODY_CALL"));
456 ad->popup_vol_ly = _vcui_load_edj(popup, EDJ_NAME, "volume");
457 if (ad->popup_vol_ly == NULL) {
459 CALL_UI_DEBUG("popup delete.");
460 evas_object_del(popup);
463 __vcui_view_popup_win_del(ad);
466 elm_object_content_set(popup, ad->popup_vol_ly);
467 __vcui_view_popup_vol_update_icon(vol_level);
469 slider = elm_slider_add(ad->popup_vol_ly);
470 elm_slider_horizontal_set(slider, EINA_TRUE);
471 elm_slider_indicator_show_set(slider, EINA_TRUE);
472 elm_slider_indicator_format_set(slider, "%.0f");
473 elm_object_part_content_set(ad->popup_vol_ly, "volume_slider", slider);
474 elm_slider_min_max_set(slider, 0, 7);
475 elm_slider_value_set(slider, vol_level);
476 evas_object_smart_callback_add(slider, "changed", __vcui_view_popup_vol_voice_changed_cb, ad);
477 ad->vol_voice_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_voice, ad);
478 evas_object_smart_callback_add(popup, "block,clicked", __vcui_view_popup_response_cb_vol_voice, ad);
480 ad->vol_voice_slider_eo = slider;
481 ad->vol_voice_popup_eo = popup;
482 evas_object_show(popup);
486 static Eina_Bool __vcui_view_popup_timer_cb_vol_bt(void *data)
488 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
490 ad->vol_bt_popup_del_timer = NULL;
491 return ECORE_CALLBACK_CANCEL;
494 static void __vcui_view_popup_vol_bt_changed_cb(void *data, Evas_Object *obj, void *event_info)
496 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
499 value = elm_slider_value_get(obj);
500 if (value > BT_VOL_MAX)
502 else if (value < BT_VOL_MIN)
505 ad->bt_vol_val = (int)value;
507 _vcui_engine_set_volume_level(VCUI_VOL_HEADSET, ad->bt_vol_val);
509 elm_slider_value_set(obj, ad->bt_vol_val);
510 if (ad->vol_bt_popup_del_timer) {
511 ecore_timer_del(ad->vol_bt_popup_del_timer);
512 ad->vol_bt_popup_del_timer = NULL;
514 ad->vol_bt_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_bt, ad);
517 static void __vcui_view_popup_response_cb_vol_bt(void *data, Evas_Object *obj, void *event_info)
520 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
522 if (ad->vol_bt_popup_eo) {
523 CALL_UI_DEBUG("vol_bt_popup_eo delete.");
524 evas_object_del(ad->vol_bt_popup_eo);
525 ad->vol_bt_popup_eo = NULL;
526 __vcui_view_popup_win_del(ad);
529 ad->vol_longpress_cnt = 0;
531 if (ad->volup_key_longpress_timer) {
532 ecore_timer_del(ad->volup_key_longpress_timer);
533 ad->volup_key_longpress_timer = NULL;
536 if (ad->voldown_key_longpress_timer) {
537 ecore_timer_del(ad->voldown_key_longpress_timer);
538 ad->voldown_key_longpress_timer = NULL;
545 void _vcui_view_popup_vol_bt(int vol_level)
547 vcui_app_call_data_t *ad = _vcui_get_app_data();
548 Evas_Object *popup = NULL;
549 Evas_Object *slider = NULL;
550 Evas_Object *icon = NULL;
552 if (ad->vol_bt_popup_eo) {
553 elm_slider_value_set(ad->vol_bt_slider_eo, vol_level);
554 if (ad->vol_bt_popup_del_timer) {
555 ecore_timer_del(ad->vol_bt_popup_del_timer);
556 ad->vol_bt_popup_del_timer = NULL;
558 ad->vol_bt_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_bt, ad);
561 popup = elm_popup_add(ad->win_main);
563 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
564 popup = elm_popup_add(ad->popup_mw);
566 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
567 elm_object_part_text_set(popup, "title,text", _("IDS_CALL_BUTTON_HEADSET"));
569 ad->popup_vol_ly = _vcui_load_edj(popup, EDJ_NAME, "volume");
570 if (ad->popup_vol_ly == NULL) {
572 CALL_UI_DEBUG("popup delete.");
573 evas_object_del(popup);
576 __vcui_view_popup_win_del(ad);
579 elm_object_content_set(popup, ad->popup_vol_ly);
580 __vcui_view_popup_vol_update_icon(vol_level);
582 slider = elm_slider_add(popup);
583 elm_slider_horizontal_set(slider, EINA_TRUE);
584 elm_slider_indicator_show_set(slider, EINA_TRUE);
585 elm_slider_indicator_format_set(slider, "%.0f");
586 elm_object_part_content_set(ad->popup_vol_ly, "volume_slider", slider);
587 elm_slider_min_max_set(slider, 0, 15);
588 elm_slider_value_set(slider, vol_level);
589 evas_object_smart_callback_add(slider, "changed", __vcui_view_popup_vol_bt_changed_cb, ad);
590 ad->vol_bt_popup_del_timer = ecore_timer_add(POPUP_TIMEOUT_SHORT, __vcui_view_popup_timer_cb_vol_bt, ad);
591 evas_object_smart_callback_add(popup, "timeout", __vcui_view_popup_response_cb_vol_bt, ad);
593 ad->vol_bt_slider_eo = slider;
594 ad->vol_bt_popup_eo = popup;
595 evas_object_show(popup);
600 static Eina_Bool __vcui_view_popup_response_cb_delay(void *data)
604 _vcui_view_popup_load((char *)data, POPUP_TIMEOUT_SHORT, EINA_FALSE);
606 vcui_app_call_data_t *ad = _vcui_get_app_data();
607 ecore_timer_del(ad->popup_delay);
608 ad->popup_delay = NULL;
610 CALL_UI_DEBUG("delay popup work");
614 void _vcui_view_popup_load_with_delay(char *popup_msg, double delay_time)
617 vcui_app_call_data_t *ad = _vcui_get_app_data();
619 ad->popup_delay = ecore_timer_add(delay_time, __vcui_view_popup_response_cb_delay, popup_msg);
620 CALL_UI_DEBUG("delay popup");
623 void _vcui_view_popup_unload_progress(vcui_app_call_data_t *ad)
627 if (ad->popup_progress_eo) {
628 evas_object_hide(ad->popup_progress_eo);
629 evas_object_del(ad->popup_progress_eo);
630 ad->popup_progress_eo = NULL;
632 __vcui_view_popup_win_del(ad);
639 static void __vcui_view_popup_progressbar_set_label(char *status_string)
643 vcui_app_call_data_t *ad = _vcui_get_app_data();
644 CALL_UI_DEBUG("popup_progress_set_label ...\n");
646 label = (Evas_Object *)evas_object_data_get(ad->popup_progress_eo, "progress_label");
647 elm_object_text_set(label, status_string);
650 static void __vcui_view_popup_progressbar_response_cb(void *data, Evas_Object *obj, void *event_info)
652 vcui_app_call_data_t *ad = _vcui_get_app_data();
653 CALL_UI_DEBUG("__vcui_view_popup_progressbar_response_cb callback=%d\n", (int)event_info);
655 if (ad->popup_progress_eo) {
656 evas_object_del(ad->popup_progress_eo);
657 ad->popup_progress_eo = NULL;
660 evas_object_del(obj);
661 __vcui_view_popup_win_del(ad);
664 void _vcui_view_popup_load_progress(char *display_string)
667 Evas_Object *progressbar_eo;
668 Evas_Object *box, *label;
669 vcui_app_call_data_t *ad = _vcui_get_app_data();
671 if (NULL != ad->popup_progress_eo) {
672 __vcui_view_popup_progressbar_set_label(display_string);
676 ad->popup_progress_eo = elm_popup_add(ad->win_main);
678 ad->popup_mw = __vcui_view_popup_create_win(ad, "base");
679 ad->popup_progress_eo = elm_popup_add(ad->popup_mw);
682 label = elm_label_add(ad->popup_progress_eo);
683 elm_object_text_set(label, display_string);
684 evas_object_show(label);
685 box = elm_box_add(ad->popup_progress_eo);
686 progressbar_eo = elm_progressbar_add(ad->popup_progress_eo);
687 elm_object_style_set(progressbar_eo, "list_progress");
688 elm_progressbar_pulse(progressbar_eo, EINA_TRUE);
689 evas_object_size_hint_align_set(progressbar_eo, EVAS_HINT_FILL, 0.5);
690 evas_object_size_hint_weight_set(progressbar_eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
691 elm_progressbar_pulse(progressbar_eo, EINA_TRUE);
692 evas_object_show(progressbar_eo);
693 elm_box_pack_end(box, label);
694 elm_box_pack_end(box, progressbar_eo);
695 evas_object_show(box);
696 elm_object_content_set(ad->popup_progress_eo, box);
697 evas_object_smart_callback_add(ad->popup_progress_eo, "timeout", __vcui_view_popup_progressbar_response_cb, NULL);
698 evas_object_show(ad->popup_progress_eo);
700 evas_object_data_set(ad->popup_progress_eo, "progress_label", (void *)label);
703 void _vcui_view_popup_load_sending_dtmf(char *status_string, char *dtmf_num)
706 char msg[DEF_BUF_LEN_LONG] = { 0, };
708 snprintf(msg, DEF_BUF_LEN_LONG, "%s<br>%s", status_string, dtmf_num);
710 _vcui_view_popup_load_progress(msg);
713 static void __vcui_view_popup_snd_path_bt_cb(void *data, Evas_Object *obj, void *event_info)
716 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
718 elm_radio_value_set(ad->ctxpopup_radio_group_eo, VCUI_SND_PATH_HEADSET);
720 _vcui_engine_change_sound_path(VCUI_AUDIO_HEADSET);
722 ad->speaker_status = EINA_FALSE;
723 ad->headset_status = EINA_TRUE;
726 static void __vcui_view_popup_snd_path_earjack_cb(void *data, Evas_Object *obj, void *event_info)
729 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
731 elm_radio_value_set(ad->ctxpopup_radio_group_eo, VCUI_SND_PATH_EARJACK);
733 _vcui_engine_change_sound_path(VCUI_AUDIO_EARJACK);
735 ad->speaker_status = EINA_FALSE;
736 ad->headset_status = EINA_FALSE;
739 static void __vcui_view_popup_snd_path_speaker_cb(void *data, Evas_Object *obj, void *event_info)
742 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
744 elm_radio_value_set(ad->ctxpopup_radio_group_eo, VCUI_SND_PATH_SPEAKER);
746 _vcui_engine_change_sound_path(VCUI_AUDIO_SPEAKER);
748 ad->speaker_status = EINA_TRUE;
749 ad->headset_status = EINA_FALSE;
752 static void __vcui_view_popup_hide_snd_path_cb(void *data, Evas_Object *obj, void *event_info)
755 vcui_app_call_data_t *ad = (vcui_app_call_data_t *)data;
757 if (ad->ctxpopup_eo) {
758 evas_object_del(ad->ctxpopup_eo);
759 ad->ctxpopup_eo = NULL;
763 static void __vcui_view_popup_move_snd_path(Evas_Object *ctxpopup, Evas_Object *win, Evas_Coord touch_x, Evas_Coord touch_y)
765 evas_object_move(ctxpopup, touch_x, touch_y);
768 void _vcui_view_popup_load_snd_path()
771 vcui_app_call_data_t *ad = _vcui_get_app_data();
772 int bearjack_status = EINA_FALSE;
774 Evas_Object *ctxpopup = NULL;
775 Evas_Object *radio = NULL;
776 Evas_Object *group = NULL;
779 char *bt_name = NULL;
783 bt_name = vconf_get_str(VCONFKEY_BT_HEADSET_NAME);
785 bt_name = _("IDS_CALL_BUTTON_HEADSET");
788 /* check earjack status */
789 if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &status)) {
790 if (status != VCONFKEY_SYSMAN_EARJACK_REMOVED) {
791 bearjack_status = EINA_TRUE;
795 if (ad->ctxpopup_eo) {
796 evas_object_del(ad->ctxpopup_eo);
797 ad->ctxpopup_eo = NULL;
800 ctxpopup = elm_ctxpopup_add(ad->win_main);
802 evas_object_smart_callback_add(ctxpopup, "dismissed", __vcui_view_popup_hide_snd_path_cb, ad);
804 __vcui_view_popup_move_snd_path(ctxpopup, ad->win_main, ad->touch_x, ad->touch_y);
807 group = radio = elm_radio_add(ctxpopup);
808 elm_radio_state_value_set(radio, VCUI_SND_PATH_HEADSET);
809 evas_object_data_set(radio, "idx", (void *)(VCUI_SND_PATH_HEADSET));
810 evas_object_show(radio);
811 elm_ctxpopup_item_append(ctxpopup, bt_name, radio, __vcui_view_popup_snd_path_bt_cb, ad);
813 /* earjack or receiver */
814 radio = elm_radio_add(ctxpopup);
815 elm_radio_state_value_set(radio, VCUI_SND_PATH_EARJACK);
816 elm_radio_group_add(radio, group);
817 evas_object_data_set(radio, "idx", (void *)(VCUI_SND_PATH_EARJACK));
818 evas_object_show(radio);
819 if (bearjack_status) {
820 elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_BUTTON_HEADPHONES"), radio, __vcui_view_popup_snd_path_earjack_cb, ad);
822 elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_BUTTON_RECEIVER"), radio, __vcui_view_popup_snd_path_earjack_cb, ad);
826 radio = elm_radio_add(ctxpopup);
827 elm_radio_state_value_set(radio, VCUI_SND_PATH_SPEAKER);
828 elm_radio_group_add(radio, group);
829 evas_object_data_set(radio, "idx", (void *)(VCUI_SND_PATH_SPEAKER));
830 evas_object_show(radio);
831 elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_BUTTON_SPEAKER"), radio, __vcui_view_popup_snd_path_speaker_cb, ad);
832 /* current sound path set */
833 snd_path = _vcui_engine_get_sound_path();
835 case VCUI_AUDIO_SPEAKER:
837 elm_radio_value_set(group, VCUI_SND_PATH_SPEAKER);
840 case VCUI_AUDIO_HEADSET:
842 elm_radio_value_set(group, VCUI_SND_PATH_HEADSET);
845 case VCUI_AUDIO_EARJACK:
846 case VCUI_AUDIO_RECEIVER:
848 elm_radio_value_set(group, VCUI_SND_PATH_EARJACK);
852 CALL_UI_DEBUG("ERROR - wrong type:[%d]", snd_path);
857 evas_object_show(ctxpopup);
859 ad->ctxpopup_eo = ctxpopup;
860 ad->ctxpopup_radio_group_eo = group;
864 static Eina_Bool __vcui_view_ticker_response_cb(void *data)
866 vcui_app_call_data_t *ad = (vcui_app_call_data_t *) data;
870 ecore_timer_del(ad->ticker_tm);
871 ad->ticker_tm = NULL;
874 /* to be implemented */
876 return ECORE_CALLBACK_CANCEL;
879 void _vcui_view_create_ticker_noti(char *ticker_msg)
881 Evas_Object *ticker_noti = NULL;
882 vcui_app_call_data_t *ad = _vcui_get_app_data();
884 CALL_UI_DEBUG("load_ticker_noti_at_bottom enter \n");
886 ticker_noti = elm_tickernoti_add (NULL);
887 elm_object_style_set(ticker_noti, "info");
888 elm_object_text_set(ticker_noti, ticker_msg);
889 elm_tickernoti_orient_set(ticker_noti, ELM_TICKERNOTI_ORIENT_BOTTOM);
891 ecore_timer_del(ad->ticker_tm);
892 ad->ticker_tm = NULL;
894 ad->ticker_tm = ecore_timer_add(TICKER_TIMEOUT, __vcui_view_ticker_response_cb, ad);
895 evas_object_show(ticker_noti);
897 CALL_UI_DEBUG("load_ticker_noti_at_bottom over \n");