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-view-dialing.h"
20 #include "vcui-view-elements.h"
21 #include "vcui-view-common.h"
22 #include "vcui-app-window.h"
23 #include "vcui-view-keypad.h"
25 #define VIEW_DIALING_LAYOUT_ID "DIALVIEW"
27 Evas_Object *contents;
28 Evas_Object *caller_info;
31 } vcui_view_dialing_priv_t;
33 static int __vcui_view_dialing_oncreate(voice_call_view_data_t *view_data, int param1, void *param2, void *param3);
34 static int __vcui_view_dialing_onupdate(voice_call_view_data_t *view_data, void *update_data1, void *update_data2);
35 static int __vcui_view_dialing_onhide(voice_call_view_data_t *view_data);
36 static int __vcui_view_dialing_onshow(voice_call_view_data_t *view_data);
37 static int __vcui_view_dialing_ondestroy(voice_call_view_data_t *view_data);
39 static voice_call_view_data_t s_view = {
40 .type = VIEW_DIALLING_VIEW,
43 .onCreate = __vcui_view_dialing_oncreate,
44 .onUpdate = __vcui_view_dialing_onupdate,
45 .onHide = __vcui_view_dialing_onhide,
46 .onShow = __vcui_view_dialing_onshow,
47 .onDestroy = __vcui_view_dialing_ondestroy,
51 voice_call_view_data_t *_vcui_view_dialing_new(vcui_app_call_data_t *ad)
55 s_view.priv = calloc(1, sizeof(vcui_view_dialing_priv_t));
58 CALL_UI_DEBUG("ERROR!!!!!!!!!!! ");
64 void _vcui_view_dialing_draw_txt_ended(voice_call_view_data_t *vd, int end_type)
66 /* ============ Check valid Evas Object ============= */
68 CALL_UI_DEBUG("View Data is NULL");
72 vcui_view_dialing_priv_t *priv = (vcui_view_dialing_priv_t *)vd->priv;
73 vcui_app_call_data_t *ad = _vcui_get_app_data();
76 valid = _vcui_check_valid_eo(priv->contents, VIEW_DIALING_LAYOUT_ID);
78 CALL_UI_DEBUG("[========== DIALVIEW : Invalid Evas Object, priv->contents : %p ==========]", priv->contents);
80 char data[VC_DATA_LENGTH_MAX] = { 0, };
81 edje_object_part_text_set(_EDJ(priv->caller_info), "txt_status", _(_vcui_get_endcause_string(end_type, data)));
82 ad->quickpanel_text = data;
84 /* ============ Check valid Evas Object ============= */
87 static void __vcui_view_dialing_draw_screen(Evas_Object *eo, void *data)
91 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
92 vcui_view_dialing_priv_t *priv = (vcui_view_dialing_priv_t *)vd->priv;
94 call_data_t *now_call_data = _vcui_doc_get_recent_mo_call_data();
95 Eina_Bool bshift_alert = EINA_FALSE;
97 /* ============ Check valid Evas Object ============= */
99 valid = _vcui_check_valid_eo(priv->contents, VIEW_DIALING_LAYOUT_ID);
101 CALL_UI_DEBUG("[========== DIALVIEW : Invalid Evas Object, priv->contents : %p ==========]", priv->contents);
104 /* ============ Check valid Evas Object ============= */
106 if (now_call_data == NULL) {
107 CALL_UI_DEBUG("Now Data is NULL");
111 char *file_path = _vcui_doc_get_caller_id_file_path(now_call_data);
112 CALL_UI_DEBUG("file_path: %s", file_path);
115 _vcui_delete_contact_image(priv->contents);
116 if (strcmp(file_path, NOIMG_ICON) == 0) {
117 _vcui_view_common_show_noid_image(priv->contents);
118 bshift_alert = EINA_TRUE;
121 _vcui_show_wallpaper_image(priv->contents);
122 priv->ic = _vcui_show_contact_image(priv->contents, vd->app_data->win_main, file_path);
126 _vcui_show_call_bg_img(priv->contents);
128 char *call_number = _vcui_doc_get_call_number(now_call_data);
129 char *call_name = _vcui_doc_get_call_display_name(now_call_data);
130 /* call name (if nothing, call number) */
131 if (strlen(call_name) == 0) {
132 _vcui_show_caller_info_name(vd, call_number, EINA_FALSE);
134 _vcui_show_caller_info_name(vd, call_name, EINA_FALSE);
135 _vcui_show_caller_info_number(vd, call_number, EINA_FALSE);
138 _vcui_show_caller_info_icon(vd, EINA_FALSE);
139 _vcui_show_caller_info_status(vd, _("IDS_CALL_POP_CALLING"), EINA_FALSE);
141 _vcui_create_top_left_button_disabled(vd);
142 _vcui_create_top_middle_button(vd);
143 _vcui_create_top_right_button(vd);
144 _vcui_create_bottom_left_button(vd);
145 _vcui_create_bottom_middle_button_disabled(vd);
147 _vcui_create_bottom_right_button(vd);
149 _vcui_elements_check_keypad_n_hide(vd);
151 evas_object_show(eo);
154 static Evas_Object *__vcui_view_dialing_create_contents(void *data, char *grpname)
156 CALL_UI_KPI("__vcui_view_dialing_create_contents start");
157 voice_call_view_data_t *vd = (voice_call_view_data_t *)data;
158 Evas_Object *eo = NULL;
161 eo = _vcui_load_edj(vd->app_data->win_main, EDJ_NAME, grpname);
164 CALL_UI_KPI("__vcui_view_dialing_create_contents done");
168 static Evas_Object *__vcui_view_dialing_create_layout_main(Evas_Object *parent)
170 CALL_UI_KPI("__vcui_view_dialing_create_layout_main start");
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);
187 CALL_UI_KPI("__vcui_view_dialing_create_layout_main done");
191 static int __vcui_view_dialing_oncreate(voice_call_view_data_t *view_data, int param1, void *param2, void *param3)
193 CALL_UI_DEBUG("dialling view create!!");
195 vcui_app_call_data_t *ad = view_data->app_data;
196 vcui_view_dialing_priv_t *priv = view_data->priv;
197 Evas_Object *sep_ly = NULL;
199 if (!view_data->layout) {
201 /* Create Main Layout */
202 view_data->layout = __vcui_view_dialing_create_layout_main(ad->win_main);
204 if (view_data->layout == NULL) {
205 CALL_UI_DEBUG("ERROR");
208 /* Create Contents */
209 priv->contents = __vcui_view_dialing_create_contents(view_data, GRP_MOVIEW);
210 elm_object_part_content_set(view_data->layout, "elm.swallow.content", priv->contents);
212 priv->caller_info = __vcui_view_dialing_create_contents(view_data, GRP_CALLER_INFO);
213 elm_object_part_content_set(priv->contents, "caller_info", priv->caller_info);
215 sep_ly = __vcui_view_dialing_create_contents(view_data, GRP_SEPARATOR_LAYOUT);
216 elm_object_part_content_set(priv->contents, "btn_bg", sep_ly);
218 priv->btn_ly = __vcui_view_dialing_create_contents(view_data, GRP_BUTTON_LAYOUT);
219 elm_object_part_content_set(priv->contents, "btn_region", priv->btn_ly);
221 evas_object_name_set(priv->contents, VIEW_DIALING_LAYOUT_ID);
222 CALL_UI_DEBUG("[========== DIALVIEW: priv->contents Addr : [%p] ==========]", priv->contents);
225 __vcui_view_dialing_onshow(view_data);
229 static int __vcui_view_dialing_onupdate(voice_call_view_data_t *view_data, void *update_data1, void *update_data2)
231 CALL_UI_DEBUG("dialling view update");
232 vcui_view_dialing_priv_t *priv = view_data->priv;
234 __vcui_view_dialing_draw_screen(priv->contents, view_data);
238 static int __vcui_view_dialing_onhide(voice_call_view_data_t *view_data)
240 CALL_UI_DEBUG("dialling view hide");
243 vcui_view_dialing_priv_t *priv = (vcui_view_dialing_priv_t *)view_data->priv;
244 valid = _vcui_check_valid_eo(priv->contents, VIEW_DIALING_LAYOUT_ID);
247 CALL_UI_DEBUG("[========== DIALVIEW : Invalid Evas Object, priv->contents : %p ==========]", priv->contents);
250 evas_object_hide(view_data->layout);
254 static int __vcui_view_dialing_onshow(voice_call_view_data_t *view_data)
256 CALL_UI_KPI("__vcui_view_dialing_onshow start");
257 CALL_UI_DEBUG("dialling view show");
259 vcui_view_dialing_priv_t *priv = view_data->priv;
261 __vcui_view_dialing_draw_screen(priv->contents, view_data);
263 evas_object_hide(view_data->layout);
264 evas_object_show(view_data->layout);
266 if (_vcui_is_idle_lock() == CALL_LOCK)
267 _vcui_app_win_set_noti_type(EINA_TRUE);
269 _vcui_app_win_set_noti_type(EINA_FALSE);
271 CALL_UI_KPI("__vcui_view_dialing_onshow done");
276 static int __vcui_view_dialing_ondestroy(voice_call_view_data_t *view_data)
278 CALL_UI_DEBUG("dialling view destroy");
280 vcui_app_call_data_t *ad = _vcui_get_app_data();
282 voice_call_view_data_t *vd = ad->view_st[VIEW_DIALLING_VIEW];
283 vcui_view_dialing_priv_t *priv = (vcui_view_dialing_priv_t *)vd->priv;
287 evas_object_del(priv->btn_ly);
291 if (priv->caller_info) {
292 evas_object_del(priv->caller_info);
293 priv->caller_info = NULL;
296 /*Delete keypad layout*/
297 _vcui_keypad_delete_layout(priv->contents);
299 if (priv->contents) {
300 evas_object_del(priv->contents);
301 priv->contents = NULL;
308 if (vd->layout != NULL) {
309 evas_object_hide(vd->layout);
310 evas_object_del(vd->layout);
314 ad->view_st[VIEW_DIALLING_VIEW] = NULL;
320 int _vc_ui_view_dialing_check_valid_eo(voice_call_view_data_t *vd)
324 vcui_view_dialing_priv_t *priv = NULL;
327 VCUI_RETURN_VALUE_IF_FAIL(vd , -1);
328 priv = (vcui_view_dialing_priv_t *) vd->priv;
330 valid = _vcui_check_valid_eo(priv->contents, VIEW_DIALING_LAYOUT_ID);
335 Evas_Object *_vc_ui_view_dialing_get_layout(voice_call_view_data_t *vd)
338 vcui_view_dialing_priv_t *priv = NULL;
340 VCUI_RETURN_NULL_IF_FAIL(vd);
341 priv = (vcui_view_dialing_priv_t *) vd->priv;
343 VCUI_RETURN_NULL_IF_FAIL(priv);
344 return priv->contents;
347 Evas_Object *_vc_ui_view_dialing_get_button_layout(voice_call_view_data_t *vd)
350 vcui_view_dialing_priv_t *priv = NULL;
352 VCUI_RETURN_NULL_IF_FAIL(vd);
353 priv = (vcui_view_dialing_priv_t *) vd->priv;
355 VCUI_RETURN_NULL_IF_FAIL(priv);
359 Evas_Object *_vc_ui_view_dialing_get_caller_info(voice_call_view_data_t *vd)
362 vcui_view_dialing_priv_t *priv = NULL;
364 VCUI_RETURN_NULL_IF_FAIL(vd);
365 priv = (vcui_view_dialing_priv_t *) vd->priv;
367 VCUI_RETURN_NULL_IF_FAIL(priv);
368 return priv->caller_info;