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-common.h"
21 #include "vcui-view-elements.h"
22 #include "vcui-view-multi-call-conf.h"
23 #include "vcui-view-keypad.h"
25 #define VCUI_VIEW_MULTICALL_CONF_LAYOUT_ID "MULTIVIEWCONF"
27 Evas_Object *contents;
28 Evas_Object *caller_info;
32 Evas_Object *record_btn;
33 vcui_app_call_status_t call_status;
35 } vcui_view_multi_call_conf_priv_t;
37 static int __vcui_view_multi_call_conf_oncreate(voice_call_view_data_t *view_data, int param1, void *param2, void *param3);
38 static int __vcui_view_multi_call_conf_onupdate(voice_call_view_data_t *view_data, void *update_data1, void *update_data2);
39 static int __vcui_view_multi_call_conf_onhide(voice_call_view_data_t *view_data);
40 static int __vcui_view_multi_call_conf_onshow(voice_call_view_data_t *view_data);
41 static int __vcui_view_multi_call_conf_ondestroy(voice_call_view_data_t *view_data);
43 static voice_call_view_data_t s_view = {
44 .type = VIEW_INCALL_MULTICALL_CONF_VIEW,
47 .onCreate = __vcui_view_multi_call_conf_oncreate,
48 .onUpdate = __vcui_view_multi_call_conf_onupdate,
49 .onHide = __vcui_view_multi_call_conf_onhide,
50 .onShow = __vcui_view_multi_call_conf_onshow,
51 .onDestroy = __vcui_view_multi_call_conf_ondestroy,
55 voice_call_view_data_t *_vcui_view_multi_call_conf_new(vcui_app_call_data_t *ad)
58 s_view.priv = calloc(1, sizeof(vcui_view_multi_call_conf_priv_t));
61 CALL_UI_DEBUG("ERROR!!!!!!!!!!! ");
67 static void __vcui_view_multi_call_conf_draw_screen(Evas_Object *eo, void *data)
71 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
72 vcui_view_multi_call_conf_priv_t *priv = (vcui_view_multi_call_conf_priv_t *)vd->priv;
73 vcui_app_call_data_t *ad = vd->app_data;
74 char buf[DEF_BUF_LEN] = { 0, };
75 call_data_t *call_data = NULL;
77 priv->call_status = _vcui_doc_get_group_call_status();
78 call_data = _vcui_doc_get_call_data_by_call_status(priv->call_status);
79 if (call_data == NULL) {
80 CALL_UI_DEBUG("call data is null");
83 priv->total_members = _vcui_doc_get_hold_call_data_count() + _vcui_doc_get_unhold_call_data_count();
85 elm_win_rotation_with_resize_set(ad->win_main, ad->rotate_angle);
86 elm_win_rotation_with_resize_set(ad->popup_mw, ad->rotate_angle);
88 if (ad->rotate_angle == 0 || ad->rotate_angle == 180) {
89 CALL_UI_DEBUG("create portrait mode layout items");
91 _vcui_show_wallpaper_image(priv->contents);
92 priv->ic = _vcui_show_default_image(priv->contents, vd->app_data->win_main, CONF_ICON);
93 if (priv->call_status == CALL_HOLD) {
94 if (ad->root_w == MAIN_WIN_HD_W && ad->root_h == MAIN_WIN_HD_H) {
95 edje_object_signal_emit(_EDJ(priv->contents), "SHOW_DIM_HD", "CID_HD");
96 } else if (ad->root_w == MAIN_WIN_WVGA_W && ad->root_h == MAIN_WIN_WVGA_H) {
97 edje_object_signal_emit(_EDJ(priv->contents), "SHOW_DIM_WVGA", "CID_WVGA");
99 edje_object_signal_emit(_EDJ(priv->caller_info), "set-hold-state", "call-screen");
101 Evas_Object *txt_status = edje_object_part_swallow_get(_EDJ(priv->caller_info), "txt_status");
103 edje_object_part_unswallow(_EDJ(priv->caller_info), txt_status);
104 evas_object_del(txt_status);
106 edje_object_signal_emit(_EDJ(priv->contents), "HIDE_DIM", "CID");
107 edje_object_signal_emit(_EDJ(priv->caller_info), "set-unhold-state", "call-screen");
110 _vcui_show_call_bg_img(priv->contents);
111 _vcui_show_caller_info_status(data, _("IDS_CALL_BODY_ON_HOLD_ABB"), EINA_FALSE);
112 _vcui_show_caller_info_name(vd, _("IDS_CALL_OPT_CONFERENCE_CALL"), EINA_FALSE);
113 snprintf(buf, DEF_BUF_LEN, "%d %s", priv->total_members, _("IDS_CALL_BODY_PEOPLE"));
114 _vcui_show_caller_info_number(vd, buf, EINA_FALSE);
116 _vcui_show_caller_info_icon(vd, EINA_FALSE);
118 _vcui_view_common_set_each_time(_vcui_doc_get_call_start_time(call_data));
123 /*create a small button for Hold/Swap*/
124 _vcui_create_hold_swap_button(vd);
126 if ((_vcui_is_phonelock_status() == EINA_TRUE) && (_vcui_is_idle_lock() == EINA_TRUE)) {
127 _vcui_create_top_middle_button_disabled(vd);
129 _vcui_create_top_middle_button(vd);
131 _vcui_create_top_right_button(vd);
132 _vcui_create_bottom_left_button(vd);
133 _vcui_create_bottom_middle_button(vd);
136 _vcui_create_top_left_button(vd);
137 _vcui_create_bottom_right_button(vd);
141 ad->beffect_needed = EINA_FALSE;
142 } else if (ad->rotate_angle == 90 || ad->rotate_angle == 270) {
143 CALL_UI_DEBUG("landscape mode not supported");
146 _vcui_elements_check_keypad_n_hide(vd);
148 evas_object_show(eo);
151 static Evas_Object *__vcui_view_multi_call_conf_create_contents(void *data, char *group)
154 CALL_UI_DEBUG("ERROR");
157 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
162 eo = _vcui_load_edj(vd->app_data->win_main, EDJ_NAME, group);
169 static Evas_Object *__vcui_view_multi_call_conf_create_layout_main(Evas_Object *parent)
171 if (parent == NULL) {
172 CALL_UI_DEBUG("ERROR");
177 ly = elm_layout_add(parent);
178 retvm_if(ly == NULL, NULL, "Failed elm_layout_add.");
180 elm_layout_theme_set(ly, "standard", "window", "integration");
181 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
182 elm_win_resize_object_add(parent, ly);
184 edje_object_signal_emit(_EDJ(ly), "elm,state,show,indicator", "elm");
185 edje_object_signal_emit(_EDJ(ly), "elm,state,show,content", "elm");
186 evas_object_show(ly);
191 static int __vcui_view_multi_call_conf_oncreate(voice_call_view_data_t *view_data, int param1, void *param2, void *param3)
193 voice_call_view_data_t *vd = view_data;
197 /* Create Main Layout */
198 vd->layout = __vcui_view_multi_call_conf_create_layout_main(vd->app_data->win_main);
199 if (vd->layout == NULL) {
200 CALL_UI_DEBUG("ERROR");
204 CALL_UI_DEBUG("[UI]ad->layout_multicallconf==NULL case ");
205 evas_object_show(vd->layout);
208 __vcui_view_multi_call_conf_onshow(view_data);
212 static int __vcui_view_multi_call_conf_onupdate(voice_call_view_data_t *view_data, void *update_data1, void *update_data2)
214 CALL_UI_DEBUG("multicall-conf view update");
216 __vcui_view_multi_call_conf_onshow(view_data);
221 static int __vcui_view_multi_call_conf_onhide(voice_call_view_data_t *view_data)
223 CALL_UI_DEBUG("multicall-conf view hide");
225 evas_object_hide(view_data->layout);
229 static int __vcui_view_multi_call_conf_onshow(voice_call_view_data_t *view_data)
231 CALL_UI_DEBUG("multicall-conf view show");
233 vcui_view_multi_call_conf_priv_t *priv = (vcui_view_multi_call_conf_priv_t *)view_data->priv;
234 Evas_Object *sep_ly = NULL;
236 vcui_app_call_data_t *ad = view_data->app_data;
237 /*if (priv->cid_ly) {
239 evas_object_del(priv->cid_ly);
242 if (priv->contents) {
243 evas_object_del(priv->contents);
244 priv->contents = NULL;
247 if (ad->rotate_angle == 0 || ad->rotate_angle == 180) {
248 CALL_UI_DEBUG("portrait mode layout");
249 priv->contents = __vcui_view_multi_call_conf_create_contents(view_data, GRP_MULTICALL_CONF);
250 priv->caller_info = __vcui_view_multi_call_conf_create_contents(view_data, GRP_CALLER_INFO);
251 elm_object_part_content_set(priv->contents, "caller_info", priv->caller_info);
252 sep_ly = __vcui_view_multi_call_conf_create_contents(view_data, GRP_SEPARATOR_LAYOUT);
253 elm_object_part_content_set(priv->contents, "btn_bg", sep_ly);
254 priv->btn_ly = __vcui_view_multi_call_conf_create_contents(view_data, GRP_BUTTON_LAYOUT);
255 elm_object_part_content_set(priv->contents, "btn_region", priv->btn_ly);
256 } else if (ad->rotate_angle == 90 || ad->rotate_angle == 270) {
257 CALL_UI_DEBUG("landscape mode not supported");
259 elm_object_part_content_set(view_data->layout, "elm.swallow.content", priv->contents);
260 evas_object_name_set(priv->contents, VCUI_VIEW_MULTICALL_CONF_LAYOUT_ID);
261 CALL_UI_DEBUG("[========== MULTIVIEWCONF: priv->contents Addr : [%p] ==========]", priv->contents);
263 __vcui_view_multi_call_conf_draw_screen(priv->contents, view_data);
265 evas_object_hide(view_data->layout);
266 evas_object_show(view_data->layout);
270 static int __vcui_view_multi_call_conf_ondestroy(voice_call_view_data_t *view_data)
272 CALL_UI_DEBUG("multicall-conf view destroy");
273 vcui_app_call_data_t *ad = _vcui_get_app_data();
275 voice_call_view_data_t *vd = ad->view_st[VIEW_INCALL_MULTICALL_CONF_VIEW];
276 vcui_view_multi_call_conf_priv_t *priv = (vcui_view_multi_call_conf_priv_t *)vd->priv;
281 evas_object_del(priv->cid_ly);
285 evas_object_del(priv->btn_ly);
289 /*Delete keypad layout*/
290 _vcui_keypad_delete_layout(priv->contents);
292 if (priv->contents) {
293 evas_object_del(priv->contents);
294 priv->contents = NULL;
301 if (vd->layout != NULL) {
302 evas_object_hide(vd->layout);
303 evas_object_del(vd->layout);
307 ad->view_st[VIEW_INCALL_MULTICALL_CONF_VIEW] = NULL;
310 CALL_UI_DEBUG("complete destroy multi view conf");
315 int _vcui_view_multi_call_conf_check_valid_eo(voice_call_view_data_t *vd)
319 vcui_view_multi_call_conf_priv_t *priv = NULL;
322 VCUI_RETURN_VALUE_IF_FAIL(vd , -1);
323 priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
325 valid = _vcui_check_valid_eo(priv->contents, VCUI_VIEW_MULTICALL_CONF_LAYOUT_ID);
330 Evas_Object *_vcui_view_multi_call_conf_get_main_layout(voice_call_view_data_t *vd)
333 vcui_view_multi_call_conf_priv_t *priv = NULL;
335 VCUI_RETURN_NULL_IF_FAIL(vd);
336 priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
338 VCUI_RETURN_NULL_IF_FAIL(priv);
339 return priv->contents;
342 int _vcui_view_multi_call_conf_get_call_status(voice_call_view_data_t *vd)
345 vcui_view_multi_call_conf_priv_t *priv = NULL;
348 VCUI_RETURN_INVALID_IF_FAIL(vd);
349 priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
351 VCUI_RETURN_INVALID_IF_FAIL(priv);
352 if (priv->call_status == CALL_HOLD) {
353 call_status = CALL_HOLD;
355 call_status = CALL_UNHOLD;
361 void _vcui_view_multi_call_conf_set_call_timer(voice_call_view_data_t *vd, char *pcall_dur)
363 vcui_view_multi_call_conf_priv_t *priv = NULL;
365 VCUI_RETURN_IF_FAIL(vd);
366 priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
368 VCUI_RETURN_IF_FAIL(priv);
369 edje_object_part_text_set(_EDJ(priv->caller_info), "txt_timer", _(pcall_dur));
372 Evas_Object *_vcui_view_multi_call_conf_get_button_layout(voice_call_view_data_t *vd)
375 vcui_view_multi_call_conf_priv_t *priv = NULL;
377 VCUI_RETURN_NULL_IF_FAIL(vd);
378 priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
380 VCUI_RETURN_NULL_IF_FAIL(priv);
384 Evas_Object *_vcui_view_multi_call_conf_get_cid_layout(voice_call_view_data_t *vd)
387 vcui_view_multi_call_conf_priv_t *priv = NULL;
389 VCUI_RETURN_NULL_IF_FAIL(vd);
390 priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
392 VCUI_RETURN_NULL_IF_FAIL(priv);
396 int _vcui_view_multi_call_conf_get_total_members(voice_call_view_data_t *vd)
399 vcui_view_multi_call_conf_priv_t *priv = NULL;
401 VCUI_RETURN_INVALID_IF_FAIL(vd);
402 priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
404 VCUI_RETURN_INVALID_IF_FAIL(priv);
406 return priv->total_members;
409 Evas_Object *_vc_ui_view_multi_call_conf_get_caller_info(voice_call_view_data_t *vd)
412 vcui_view_multi_call_conf_priv_t *priv = NULL;
414 VCUI_RETURN_NULL_IF_FAIL(vd);
415 priv = (vcui_view_multi_call_conf_priv_t *) vd->priv;
417 VCUI_RETURN_NULL_IF_FAIL(priv);
418 return priv->caller_info;