2 * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
4 * This file is part of <ciss>
5 * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
7 * PROPRIETARY/CONFIDENTIAL
9 * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
10 * You shall not disclose such Confidential Information and shall use it only in accordance
11 * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
12 * SAMSUNG make no representations or warranties about the suitability of the software,
13 * either express or implied, including but not limited to the implied warranties of merchantability,
14 * fitness for a particular purpose, or non-infringement.
15 * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
16 * modifying or distributing this software or its derivatives.
20 #include "ciss-common.h"
21 #include "ciss-widget.h"
22 #include "ciss-util.h"
26 #define CISS_BUF_LEN 128
27 #define CISS_DEF_FSIZE (24)
28 #define CISS_DEF_FNAME "HelveN_Asia"
30 Evas_Object *_ciss_create_popup(Evas_Object *parent, char *msg)
33 retv_if(msg == NULL, NULL);
34 retv_if(strlen(msg) == 0, NULL);
36 popup = elm_popup_add(parent);
37 elm_object_part_text_set(popup, "title,text", CISS_STR_INFORMATION);
38 elm_popup_timeout_set(popup, 1.5);
39 elm_object_text_set(popup, msg);
40 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
45 static void __ciss_resp_timeout_cb(void *data, Evas_Object *obj, void *event_info)
48 struct appdata *ad = (struct appdata *)data;
50 _ciss_create_error_popup(ad->win_main, CISS_ERR_UNKNOWN, 2.0, ad);
53 static void __ciss_err_cb(void *data, Evas_Object *obj, void *event_info)
56 struct appdata *ad = (struct appdata *)data;
63 Evas_Object *_ciss_create_error_popup(Evas_Object *parent, ciss_err_t ciss_error, double t_timeout, void *data)
67 struct appdata *ad = (struct appdata *)data;
68 if (ciss_error == CISS_ERR_NONE)
72 evas_object_del(ad->popup);
78 case CISS_ERR_UNKNOWN_SUBSCRIBER:
79 case CISS_ERR_BEARER_NOT_PROVISIONED:
80 case CISS_ERR_TELESERVICE_NOT_PROVISIONED:
81 case CISS_ERR_CALL_BARRED:
82 case CISS_ERR_ERR_STATUS:
83 case CISS_ERR_NOT_AVAIL:
84 case CISS_ERR_SUBSCRIPTION_VIOLATION:
85 case CISS_ERR_INCOMPATIBILITY:
86 case CISS_ERR_FACILITY_NOT_SUPPORT:
87 case CISS_ERR_SYS_FAILURE:
88 case CISS_ERR_DATA_MISSING:
89 case CISS_ERR_UNEXPECTED_DATA:
90 case CISS_ERR_MPTY_PARTICIPANTS_EXCEED:
91 case CISS_ERR_RESOURCE_NOT_AVAIL:
92 case CISS_ERR_UNKNOWN:
93 snprintf(strmsg, 100, "%s", CISS_STR_SERVICE_UNAVAILABLE);
95 case CISS_ERR_ILLEGAL_SS_OPER:
96 snprintf(strmsg, 100, "%s", CISS_STR_SERVICE_NOT_AUTHORISED);
98 case CISS_ERR_PW_REGIST_FAIL:
99 case CISS_ERR_NEGATIVE_PW_CHECK:
100 snprintf(strmsg, 100, "%s", CISS_STR_INVALID_PASSWORD);
102 case CISS_ERR_PW_ATTEMPS_VIOLATION: /**<numberOfPW_AttemptsViolation*/
103 snprintf(strmsg, 100, "%s", CISS_STR_PASSWORD_BLOCKED);
105 case CISS_ERR_NETWORK_API_FAILED: /**<Telephony API call failed*/
106 case CISS_ERR_DIVERT_TO_EMERGENCY_BLOCKED: /**<Call diverting to an emergency number not allowed*/
107 snprintf(strmsg, 100, "%s", CISS_STR_REJECTED_BY_NETWORK);
109 /* Call barring password mismatch errors */
110 case CISS_ERR_CB_PWD_TOO_SORT: /**<Password is too short - less than 4 characters*/
111 case CISS_ERR_CB_PWD_MISMATCH: /**<Password do not match - unequal password*/
112 case CISS_ERR_CB_PWD_TOO_LONG: /**<Password is too long - greater than 4 characters*/
113 snprintf(strmsg, 100, "%s", CISS_STR_INVALID_PASSWORD);
116 snprintf(strmsg, 100, "%s", CISS_STR_NETWORK_ERROR);
120 popup = elm_popup_add(parent);
121 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
122 elm_popup_timeout_set(popup, t_timeout);
123 elm_object_text_set(popup, strmsg);
124 elm_object_part_text_set(popup, "title,text", CISS_STR_INFORMATION);
125 evas_object_smart_callback_add(popup, "timeout", __ciss_err_cb, ad);
126 evas_object_smart_callback_add(popup, "block,clicked", __ciss_err_cb, ad);
128 evas_object_show(popup);
134 Evas_Object *_ciss_create_noti_popup(Evas_Object *parent, char *strtitle, char *strmsg, double t_timeout, void *data)
138 Evas_Object *progressbar;
139 retv_if(parent == NULL, NULL);
140 popup = elm_popup_add(parent);
142 elm_object_part_text_set(popup, "title,text", strtitle);
144 progressbar = elm_progressbar_add(popup);
145 elm_object_style_set(progressbar, "pending_list");
146 elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
147 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
148 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
149 elm_progressbar_pulse(progressbar, EINA_TRUE);
150 evas_object_show(progressbar);
152 elm_object_content_set(popup, progressbar);
153 elm_popup_timeout_set(popup, t_timeout);
154 evas_object_smart_callback_add(popup, "timeout", __ciss_resp_timeout_cb, data);
156 evas_object_show(popup);
161 static void __ciss_win_del(void *data, Evas_Object *obj, void *event)
166 Eina_Bool _ciss_on_end_key_down(void *data, int type, void *event)
169 Ecore_Event_Key *ev = event;
171 if (!strcmp(ev->keyname, KEY_END))
177 Evas_Object *_ciss_create_win(const char *name)
182 eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
183 retv_if(eo == NULL, NULL);
186 elm_win_alpha_set(eo, EINA_TRUE);
187 elm_win_title_set(eo, name);
188 elm_win_borderless_set(eo, EINA_TRUE);
190 elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
191 evas_object_smart_callback_add(eo, "delete,request", __ciss_win_del, NULL);
192 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
193 DBG("win w=%d h=%d", w, h);
194 evas_object_resize(eo, w, h);
200 Evas_Object *_ciss_create_layout_main(Evas_Object *parent)
205 retv_if(parent == NULL, NULL);
207 layout = elm_layout_add(parent);
208 retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
210 elm_layout_theme_set(layout, "layout", "application", "default");
211 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
212 elm_win_resize_object_add(parent, layout);
213 evas_object_show(layout);
218 Evas_Object *_ciss_create_bg(Evas_Object *parent)
220 retv_if(parent == NULL, NULL);
222 Evas_Object *bg = elm_bg_add(parent);
223 retvm_if(bg == NULL, NULL, "Failed elm_bg_add.\n");
224 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
225 elm_win_resize_object_add(parent, bg);
226 evas_object_show(bg);
231 Evas_Object *_ciss_create_navi_control_bar(Evas_Object *parent,
232 char *label1, Evas_Smart_Cb cb1,
233 char *label2, Evas_Smart_Cb cb2,
234 void *data, Elm_Object_Item *navi_it,
235 Elm_Object_Item ** c_item)
237 retv_if(NULL == parent, NULL);
238 Evas_Object *toolbar = elm_toolbar_add(parent);
239 Elm_Object_Item *item = NULL;
241 retv_if(toolbar == NULL, NULL);
242 retv_if(label1 == NULL, NULL);
244 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
248 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
249 elm_object_item_disabled_set(item, EINA_TRUE);
250 c_item[0] = elm_toolbar_item_append(toolbar,
251 NULL, label1, cb1, data);
252 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
253 elm_object_item_disabled_set(item, EINA_TRUE);
254 c_item[1] = elm_toolbar_item_append(toolbar,
255 NULL, label2, cb2, data);
257 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
258 elm_object_item_disabled_set(item, EINA_TRUE);
259 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
260 elm_object_item_disabled_set(item, EINA_TRUE);
261 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
262 elm_object_item_disabled_set(item, EINA_TRUE);
264 c_item[0] = elm_toolbar_item_append(toolbar,
265 NULL, label1, cb1, data);
268 elm_object_item_part_content_set(navi_it, "controlbar", toolbar);
272 Evas_Object *_cst_create_title_btn(Evas_Object *parent,
273 const char *text, Evas_Smart_Cb func, void *data)
275 Evas_Object *btn = elm_button_add(parent);
276 if (!btn) return NULL;
277 elm_object_style_set(btn, "naviframe/title/default");
278 elm_object_text_set(btn, text);
279 evas_object_smart_callback_add(btn, "clicked", func, data);
283 static void __ciss_trans_finished(void *data, Evas_Object *obj, void *event_info)
286 elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
287 evas_object_smart_callback_del(obj, "transition,finished", __ciss_trans_finished);
290 void _ciss_remove_naviframe(Evas_Object *nf)
293 elm_naviframe_prev_btn_auto_pushed_set(nf, EINA_FALSE);
294 evas_object_smart_callback_add(nf, "transition,finished",
295 __ciss_trans_finished, NULL);
298 static char *__ciss_gl_label_get_result(void *data, Evas_Object *obj, const char *part)
300 char *label = (char *)data;
303 return strdup(label);
308 static void __ciss_gl_del_result(void *data, Evas_Object *obj)
310 char *label = (char *)data;
317 Evas_Object * _ciss_create_result_genlist(const char *result_str, int str_len, Evas_Object *nf, void *data)
319 Evas_Object *genlist = elm_genlist_add(nf);
320 retv_if(NULL == genlist, NULL);
321 retv_if(NULL == data, NULL);
323 struct appdata *ad = (struct appdata *)data;
324 ad->itc_multi_line->item_style = "multiline/1text";
325 ad->itc_multi_line->func.text_get = __ciss_gl_label_get_result;
326 ad->itc_multi_line->func.content_get = NULL;
327 ad->itc_multi_line->func.state_get = NULL;
328 ad->itc_multi_line->func.del = __ciss_gl_del_result;
330 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
331 char *label = calloc(str_len, sizeof(char));
332 retv_if(label == NULL, NULL);
334 strncpy(label, result_str, str_len - 1);
335 Elm_Object_Item *item = elm_genlist_item_append(genlist, ad->itc_multi_line,
336 (void *)label, NULL, ELM_GENLIST_ITEM_NONE,
338 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
343 void _ciss_geinlist_item_class_new(void *data)
345 ret_if(data == NULL);
347 struct appdata *ad = (struct appdata *)data;
348 ad->itc_ime = elm_genlist_item_class_new();
349 ad->itc_multi_line = elm_genlist_item_class_new();
352 void _ciss_geinlist_item_class_free(void *data)
354 ret_if(data == NULL);
356 struct appdata *ad = (struct appdata *)data;
358 elm_genlist_item_class_free(ad->itc_ime);
359 if (ad->itc_multi_line)
360 elm_genlist_item_class_free(ad->itc_multi_line);