2 * Copyright 2012 Samsung Electronics Co., Ltd
\r
4 * Licensed under the Flora License, Version 1.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.tizenopensource.org/license
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
18 #include "vcui-application.h"
\r
19 #include "vcui-app-data.h"
\r
20 #include "vcui-view-choice.h"
\r
21 #include "vcui-view-dialing.h"
\r
22 #include "vcui-view-incoming-lock.h"
\r
23 #include "vcui-view-single-call.h"
\r
24 #include "vcui-view-multi-call-list.h"
\r
25 #include "vcui-view-multi-call-split.h"
\r
26 #include "vcui-view-multi-call-conf.h"
\r
27 #include "vcui-view-keypad.h"
\r
28 #include "vcui-view-callend.h"
\r
29 static const char *vcui_view_name[] = {
\r
30 "VIEW_DIALLING_VIEW",
\r
31 "VIEW_INCOMING_LOCK_VIEW",
\r
32 "VIEW_INCALL_ONECALL_VIEW",
\r
33 "VIEW_INCALL_MULTICALL_SPLIT_VIEW",
\r
34 "VIEW_INCALL_MULTICALL_CONF_VIEW",
\r
35 "VIEW_INCALL_MULTICALL_LIST_VIEW",
\r
36 "VIEW_ENDCALL_VIEW",
\r
37 "VIEW_QUICKPANEL_VIEW",
\r
41 void _vcui_view_change(vcui_app_call_view_id_t view_id, int param1, void *param2, void *param3)
\r
43 vcui_app_call_data_t *ad = _vcui_get_app_data();
\r
45 CALL_UI_DEBUG("view:[%d] -> [%d]", ad->view_top, view_id);
\r
46 if (view_id >= VIEW_MAX) {
\r
47 CALL_UI_DEBUG("[=========== ERROR!!!! Invalid View ID : %d =================]", view_id);
\r
50 ad->ball_view_hide = EINA_FALSE;
\r
51 #ifdef _DESTROY_UG_ALL_FORCE_
\r
52 if (ad->ugs_array_data.ug_count != 0)
\r
53 _vcui_doc_launch_destroy_ug_all(&(ad->ugs_array_data));
\r
55 if (ad->ugs_array_data.ug_count != 0) {
\r
56 Eina_List *l = NULL;
\r
57 ui_gadget_h ug = NULL;
\r
58 EINA_LIST_FOREACH(ad->ugs_array_data.ug_lists, l, ug) {
\r
59 CALL_UI_DEBUG("Destroy UG due to _vcui_view_change");
\r
62 ad->ugs_array_data.ug_lists = eina_list_free(ad->ugs_array_data.ug_lists);
\r
63 ad->ugs_array_data.ug_count = 0;
\r
64 ad->ugs_array_data.last_ug_type = VCUI_UG_TYPE_NOE;
\r
65 ad->contact_ug = NULL;
\r
68 if (ad->view_st[view_id]) {
\r
69 CALL_UI_DEBUG("[============ Layout exists !! ============]");
\r
70 voice_call_view_data_t *vd = (voice_call_view_data_t *) ad->view_st[view_id];
\r
72 if (view_id == VIEW_DIALLING_VIEW) {
\r
73 valid = _vc_ui_view_dialing_check_valid_eo(vd);
\r
74 } else if (view_id == VIEW_INCOMING_LOCK_VIEW) {
\r
75 valid = _vc_ui_view_incoming_lock_check_valid_eo(vd);
\r
76 } else if (view_id == VIEW_INCALL_ONECALL_VIEW) {
\r
77 valid = _vc_ui_view_single_call_check_valid_eo(vd);
\r
78 } else if (view_id == VIEW_INCALL_MULTICALL_SPLIT_VIEW) {
\r
79 valid = _vcui_view_multi_call_split_check_valid_eo(vd);
\r
80 } else if (view_id == VIEW_INCALL_MULTICALL_CONF_VIEW) {
\r
81 valid = _vcui_view_multi_call_conf_check_valid_eo(vd);
\r
82 } else if (view_id == VIEW_INCALL_MULTICALL_LIST_VIEW) {
\r
83 valid = _vcui_view_multi_call_list_check_valid_eo(vd);
\r
84 } else if (view_id == VIEW_ENDCALL_VIEW) {
\r
85 valid = _vc_ui_view_callend_check_valid_eo(vd);
\r
87 CALL_UI_DEBUG("[============ BAD INPUT!!!! Check Input Layout!!!!! %d============]", view_id);
\r
90 CALL_UI_DEBUG("[========== WARNING!! Invalid Evas Object ==========]");
\r
91 ad->view_st[view_id] = NULL;
\r
96 CALL_UI_DEBUG("[============ Create Layout !! ============]");
\r
98 ad->view_before_top = ad->view_top; /* hold the current top window in the before_top pointer */
\r
99 ad->view_top = view_id; /* set the new top window to the view_id which is passed... this step enables in setting 00:00:00 as timer */
\r
100 if (view_id == VIEW_DIALLING_VIEW || view_id == VIEW_INCOMING_LOCK_VIEW) {
\r
101 _vcui_raise_main_win();
\r
103 if ((ad->view_before_top != -1) && (ad->view_before_top != view_id)) {
\r
104 CALL_UI_DEBUG("hide & destroy [%d]", ad->view_before_top);
\r
105 CALL_UI_KPI("%s onHide start", vcui_view_name[ad->view_before_top]);
\r
106 ad->view_st[ad->view_before_top]->onHide(ad->view_st[ad->view_before_top]);
\r
107 CALL_UI_KPI("%s onHide done", vcui_view_name[ad->view_before_top]);
\r
108 CALL_UI_KPI("%s onDestroy start", vcui_view_name[ad->view_before_top]);
\r
109 ad->view_st[ad->view_before_top]->onDestroy(ad->view_st[ad->view_before_top]);
\r
110 CALL_UI_KPI("%s onDestroy done", vcui_view_name[ad->view_before_top]);
\r
112 if (ad->view_st[view_id] == NULL) {
\r
113 CALL_UI_DEBUG("Create view data");
\r
114 voice_call_view_data_t *view_data = ad->func_new[view_id] (ad);
\r
115 ad->view_st[view_id] = view_data;
\r
117 if (ad->view_st[view_id]->layout == NULL) {
\r
118 CALL_UI_DEBUG("Create layout");
\r
119 CALL_UI_KPI("%s onCreate start", vcui_view_name[view_id]);
\r
120 ad->view_st[view_id]->onCreate(ad->view_st[view_id], param1, param2, param3);
\r
121 CALL_UI_KPI("%s onCreate done", vcui_view_name[view_id]);
\r
123 CALL_UI_DEBUG("Update layout");
\r
124 CALL_UI_KPI("%s onUpdate start", vcui_view_name[view_id]);
\r
125 ad->view_st[view_id]->onUpdate(ad->view_st[view_id], param2, param3);
\r
126 CALL_UI_KPI("%s onUpdate done", vcui_view_name[view_id]);
\r
128 _vcui_show_main_ui_set_flag();
\r
129 CALL_UI_DEBUG("End");
\r
132 void _vcui_view_auto_change()
\r
134 CALL_UI_DEBUG("..");
\r
136 void *data = _vcui_view_get_second_mtcall_popup_data();
\r
137 _vcui_view_popup_second_mtcall_unload(data);
\r
139 if (_vcui_doc_get_no_status_call_data_count() == 1) {
\r
140 call_data_t *call_data = _vcui_doc_get_recent_call_data();
\r
141 int call_type = _vcui_doc_get_call_type(call_data);
\r
142 if (call_type == CALL_OUTGOING) {
\r
143 _vcui_view_change(VIEW_DIALLING_VIEW, 0, NULL, NULL);
\r
144 } else if (call_type == CALL_INCOMING) {
\r
145 _vcui_view_change(VIEW_INCOMING_LOCK_VIEW, 0, NULL, NULL);
\r
147 CALL_UI_DEBUG("ERROR");
\r
149 } else if (_vcui_doc_get_all_call_data_count() > 1) {
\r
150 if (_vcui_doc_get_unhold_call_data_count() == 0 || _vcui_doc_get_hold_call_data_count() == 0) {
\r
151 _vcui_view_change(VIEW_INCALL_MULTICALL_CONF_VIEW, 0, NULL, NULL);
\r
153 _vcui_view_change(VIEW_INCALL_MULTICALL_SPLIT_VIEW, 0, NULL, NULL);
\r
156 _vcui_view_change(VIEW_INCALL_ONECALL_VIEW, 0, NULL, NULL);
\r
158 CALL_UI_DEBUG("End..");
\r
161 void _vcui_view_all_hide()
\r
164 vcui_app_call_data_t *ad = _vcui_get_app_data();
\r
165 for (i = 0; i < VIEW_MAX; i++) {
\r
166 if (ad->view_st[i] != NULL) {
\r
167 ad->view_st[i]->onHide(ad->view_st[i]);
\r
170 ad->ball_view_hide = EINA_TRUE;
\r
171 _vcui_show_main_ui_set_flag();
\r
174 void _vcui_view_update()
\r
176 vcui_app_call_data_t *ad = _vcui_get_app_data();
\r
177 if (ad->view_top != -1 && ad->view_st[ad->view_top] != NULL) {
\r
178 ad->view_st[ad->view_top]->onUpdate(ad->view_st[ad->view_top], NULL, NULL);
\r
180 _vcui_show_main_ui_set_flag();
\r
183 void _vcui_view_destroy(vcui_app_call_view_id_t view_id)
\r
185 CALL_UI_DEBUG("view_id:[%d]", view_id);
\r
186 vcui_app_call_data_t *ad = _vcui_get_app_data();
\r
187 if (ad->view_st[view_id]) {
\r
188 ad->view_st[view_id]->onHide(ad->view_st[view_id]);
\r
189 ad->view_st[view_id]->onDestroy(ad->view_st[view_id]);
\r
193 void _vcui_view_quickpanel_change()
\r
195 #ifdef _QUICKPANNEL_SUPPORT_
\r
196 CALL_UI_DEBUG("..");
\r
197 vcui_app_call_data_t *ad = _vcui_get_app_data();
\r
198 if (ad->win_quickpanel) {
\r
199 if (_vcui_doc_get_all_call_data_count() < 1) {
\r
200 CALL_UI_DEBUG("destroy quickpanel");
\r
201 ad->view_st[VIEW_QUICKPANEL_VIEW]->onHide(ad->view_st[VIEW_QUICKPANEL_VIEW]);
\r
202 ad->view_st[VIEW_QUICKPANEL_VIEW]->onDestroy(ad->view_st[VIEW_QUICKPANEL_VIEW]);
\r
203 ad->win_quickpanel = NULL;
\r
205 if (ad->view_st[VIEW_QUICKPANEL_VIEW]->layout != NULL) {
\r
206 CALL_UI_DEBUG("update quickpanel");
\r
207 ad->view_st[VIEW_QUICKPANEL_VIEW]->onUpdate(ad->view_st[VIEW_QUICKPANEL_VIEW], NULL, NULL);
\r
211 CALL_UI_DEBUG("create quickpanel");
\r
212 if (ad->view_st[VIEW_QUICKPANEL_VIEW] == NULL) {
\r
213 voice_call_view_data_t *view_data = ad->func_new[VIEW_QUICKPANEL_VIEW] (ad);
\r
214 ad->view_st[VIEW_QUICKPANEL_VIEW] = view_data;
\r
216 if (ad->view_st[VIEW_QUICKPANEL_VIEW]->layout == NULL) {
\r
217 CALL_UI_DEBUG("create!!");
\r
218 ad->view_st[VIEW_QUICKPANEL_VIEW]->onCreate(ad->view_st[VIEW_QUICKPANEL_VIEW], 0, NULL, NULL);
\r
222 CALL_UI_DEBUG("Not applied yet");
\r