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://floralicense.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.
17 #include "cst-common.h"
18 #include "cst-common-string.h"
19 #include "cst-call-setting.h"
20 #include "cst-widget.h"
21 #include "cst-tapi-request.h"
22 #include "cst-answering.h"
23 #include "cst-forwarding.h"
24 #include "cst-reject-msg.h"
26 #include "cst-more-call-setting.h"
27 #include <ui-gadget-module.h>
28 #include <Elementary.h>
32 static Elm_Genlist_Item_Class *itc_1text = NULL;
33 static Elm_Genlist_Item_Class *itc_1text_1icon = NULL;
34 static Elm_Genlist_Item_Class *itc_title = NULL;
35 static Elm_Genlist_Item_Class *itc_help = NULL;
36 static Elm_Genlist_Item_Class *itc_2text = NULL;
38 static void __cst_on_click_speed_dial(void *data, Evas *evas, Evas_Object *obj, void *event_info);
40 static CstGlItemDisplayInfo_t list_dep1[] = {
41 {1, CST_STR_REJECT_MESSAGES, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_reject_message},
42 {1, CST_STR_EDIT_REJECT_MESSAGE, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_HELP_TEXT, NULL},
43 {1, CST_STR_SPEED_DIAL, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, __cst_on_click_speed_dial},
44 {1, CST_STR_CALL_ANSWERING_ENDING, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_answering_call},
45 {1, CST_STR_MANAGE_ANSWERING_ENDING_CALL_MODE, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_HELP_TEXT, NULL},
46 {1, CST_STR_CALL_FORWARDING, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_call_forwarding},
47 {1, CST_STR_MORE_CALL_SETTINGS, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_TEXT, _cst_on_click_more_call_setting},
48 {1, -1, ELM_GENLIST_ITEM_NONE, CST_GL_ITEM_NONE, NULL},
51 static void __cst_speed_dial_view_ug_destroy_cb(ui_gadget_h ug, void *priv)
53 ENTER(__cst_speed_dial_view_ug_destroy_cb);
59 static void __cst_speed_dial_view_ug_result_cb(ui_gadget_h ug, service_h service, void *priv)
61 ENTER(__cst_speed_dial_view_ug_result_cb);
65 static void __cst_speed_dial_view_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
67 ENTER(__cst_speed_dial_view_ug_layout_cb);
68 Evas_Object *base = ug_get_layout(ug);
71 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
72 elm_win_resize_object_add(ug_get_window(), base);
73 evas_object_show(base);
76 static void __cst_on_click_speed_dial(void *data, Evas *evas, Evas_Object *obj, void *event_info)
78 ENTER(__cst_on_click_speed_dial);
80 CstUgData_t *ugd = (CstUgData_t *)data;
81 struct ug_cbs cbs = { 0, };
84 cbs.layout_cb = __cst_speed_dial_view_ug_layout_cb;
85 cbs.result_cb = __cst_speed_dial_view_ug_result_cb;
86 cbs.destroy_cb = __cst_speed_dial_view_ug_destroy_cb;
87 cbs.priv = (void *)ugd;
89 ug = ug_create((ui_gadget_h)ugd->ug, "speeddial-efl", UG_MODE_FULLVIEW, NULL, &cbs);
92 DBG("ug create fail...");
96 static char *__cst_gl_label_get_phone(void *data, Evas_Object *obj, const char *part)
98 retv_if(NULL == data, NULL);
99 CstGlItemData_t *item_data = (CstGlItemData_t *)data;
100 CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;
102 ENTER(__cst_gl_label_get_phone);
103 if ((strcmp(part, "elm.text") == 0) ||
104 (strcmp(part, "elm.text.1") == 0)) {
105 if (list_dep1[item_data->index].str_id != -1) {
106 return strdup(T_(list_dep1[item_data->index].str_id));
112 static void __cst_gl_del_phone(void *data, Evas_Object *obj)
114 CstGlItemData_t *item_data = (CstGlItemData_t *)data;
121 static void __cst_gl_sel_phone(void *data, Evas_Object *obj, void *event_info)
123 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
124 Elm_Object_Item *it = (Elm_Object_Item *)event_info;
125 CstGlItemData_t *item_data = (CstGlItemData_t *)elm_object_item_data_get(it);
126 CstUgData_t *ugd = (CstUgData_t *)item_data->ugd;
128 if (list_dep1[item_data->index].func) {
129 if (list_dep1[item_data->index].style == CST_GL_ITEM_1TEXT_ONOFF) {
130 list_dep1[item_data->index].func((void *)item_data, NULL, obj, event_info);
132 list_dep1[item_data->index].func((void *)ugd, NULL, obj, event_info);
138 static void __cst_on_clicked_back_btn(void *data, Evas_Object *obj, void *event_info)
140 ENTER(__cst_on_clicked_back_btn);
141 CstUgData_t *ugd = (CstUgData_t *)data;
143 ug_destroy_me((ui_gadget_h)ugd->ug);
146 static void __cst_set_genlist_item_styles_phone(void)
148 ENTER(__cst_set_genlist_item_styles_phone);
150 itc_1text = elm_genlist_item_class_new();
152 if (!itc_1text_1icon) {
153 itc_1text_1icon = elm_genlist_item_class_new();
156 itc_title = elm_genlist_item_class_new();
159 itc_help = elm_genlist_item_class_new();
162 itc_2text = elm_genlist_item_class_new();
165 itc_1text->item_style = "dialogue/1text";
166 itc_1text->func.text_get = __cst_gl_label_get_phone;
167 itc_1text->func.content_get = NULL;
168 itc_1text->func.state_get = NULL;
169 itc_1text->func.del = __cst_gl_del_phone;
171 itc_title->item_style = "dialogue/title";
172 itc_title->func.text_get = __cst_gl_label_get_phone;
173 itc_title->func.content_get = NULL;
174 itc_title->func.state_get = NULL;
175 itc_title->func.del = __cst_gl_del_phone;
177 itc_help->item_style = "multiline/1text";
178 itc_help->func.text_get = __cst_gl_label_get_phone;
179 itc_help->func.content_get = NULL;
180 itc_help->func.state_get = NULL;
181 itc_help->func.del = __cst_gl_del_phone;
183 itc_2text->item_style = "dialogue/2text.3";
184 itc_2text->func.text_get = __cst_gl_label_get_phone;
185 itc_2text->func.content_get = NULL;
186 itc_2text->func.state_get = NULL;
187 itc_2text->func.del = __cst_gl_del_phone;
190 static Evas_Object *__cst_create_genlist_phone(void *data)
192 ENTER(__cst_create_genlist_phone);
193 retv_if(NULL == data, NULL);
194 CstUgData_t *ugd = (CstUgData_t *)data;
195 CstGlItemData_t *item_data;
196 Evas_Object *genlist;
199 genlist = elm_genlist_add(ugd->nf);
200 retv_if(NULL == genlist, NULL);
201 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
203 _cst_create_genlist_separator(genlist, EINA_FALSE);
205 for (i = 0; list_dep1[i].style != CST_GL_ITEM_NONE; ++i) {
206 item_data = (CstGlItemData_t *)calloc(1, sizeof(CstGlItemData_t));
207 retv_if(NULL == item_data, NULL);
208 DBG("list_dep1[i].str_id = %d", list_dep1[i].str_id);
209 item_data->index = i;
210 item_data->ugd = ugd;
211 if (list_dep1[i].style == CST_GL_ITEM_TEXT) {
212 item_data->gl_item = elm_genlist_item_append(genlist, itc_1text,
213 (void *)item_data, NULL, list_dep1[i].flags,
214 __cst_gl_sel_phone, ugd);
215 } else if (list_dep1[i].style == CST_GL_ITEM_DG_TITLE) {
216 item_data->gl_item = elm_genlist_item_append(genlist, itc_title,
217 (void *)item_data, NULL, list_dep1[i].flags,
219 elm_genlist_item_select_mode_set(item_data->gl_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
220 } else if (list_dep1[i].style == CST_GL_ITEM_HELP_TEXT) {
221 item_data->gl_item = elm_genlist_item_append(genlist, itc_help,
222 (void *)item_data, NULL, list_dep1[i].flags,
224 elm_genlist_item_select_mode_set(item_data->gl_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
225 if (list_dep1[i+1].style != CST_GL_ITEM_DG_TITLE) {
226 _cst_create_genlist_separator(genlist, EINA_FALSE);
228 } else if (list_dep1[i].style == CST_GL_ITEM_SUB_TEXT) {
229 item_data->gl_item = elm_genlist_item_append(genlist, itc_2text,
230 (void *)item_data, NULL, list_dep1[i].flags,
231 __cst_gl_sel_phone, ugd);
232 ugd->vm_gl_item = item_data->gl_item;
240 _cst_create_genlist_separator_no_line(genlist);
244 void _cst_create_call_setting(void *data)
246 ENTER(_cst_create_call_setting);
247 ret_if(NULL == data);
248 CstUgData_t *ugd = (CstUgData_t *)data;
250 __cst_set_genlist_item_styles_phone();
251 Evas_Object *genlist = __cst_create_genlist_phone(ugd);
252 Evas_Object *back_btn = elm_button_add(ugd->nf);
253 evas_object_smart_callback_add(back_btn, "clicked",
254 __cst_on_clicked_back_btn, ugd);
256 elm_naviframe_item_push(ugd->nf, T_(CST_STR_CALL),
257 back_btn, NULL, genlist, NULL);
258 elm_object_style_set(back_btn, "naviframe/back_btn/default");