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.
17 #include "ciss-common.h"
18 #include "ciss-widget.h"
19 #include "ciss-util.h"
23 #define CISS_BUF_LEN 128
24 #define CISS_DEF_FSIZE (24)
25 #define CISS_DEF_FNAME "HelveN_Asia"
27 Evas_Object *_ciss_create_popup(Evas_Object *parent, char *msg)
30 retv_if(msg == NULL, NULL);
31 retv_if(strlen(msg) == 0, NULL);
33 popup = elm_popup_add(parent);
34 elm_object_part_text_set(popup, "title,text", CISS_STR_INFORMATION);
35 elm_popup_timeout_set(popup, 1.5);
36 elm_object_text_set(popup, msg);
37 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
42 static void __ciss_resp_timeout_cb(void *data, Evas_Object *obj, void *event_info)
45 struct appdata *ad = (struct appdata *)data;
47 _ciss_create_error_popup(ad->win_main, CISS_ERR_UNKNOWN, 2.0, ad);
50 static void __ciss_err_cb(void *data, Evas_Object *obj, void *event_info)
53 struct appdata *ad = (struct appdata *)data;
60 Evas_Object *_ciss_create_error_popup(Evas_Object *parent, ciss_err_t ciss_error, double t_timeout, void *data)
64 struct appdata *ad = (struct appdata *)data;
65 if (ciss_error == CISS_ERR_NONE)
69 evas_object_del(ad->popup);
75 case CISS_ERR_UNKNOWN_SUBSCRIBER:
76 case CISS_ERR_BEARER_NOT_PROVISIONED:
77 case CISS_ERR_TELESERVICE_NOT_PROVISIONED:
78 case CISS_ERR_CALL_BARRED:
79 case CISS_ERR_ERR_STATUS:
80 case CISS_ERR_NOT_AVAIL:
81 case CISS_ERR_SUBSCRIPTION_VIOLATION:
82 case CISS_ERR_INCOMPATIBILITY:
83 case CISS_ERR_FACILITY_NOT_SUPPORT:
84 case CISS_ERR_SYS_FAILURE:
85 case CISS_ERR_DATA_MISSING:
86 case CISS_ERR_UNEXPECTED_DATA:
87 case CISS_ERR_MPTY_PARTICIPANTS_EXCEED:
88 case CISS_ERR_RESOURCE_NOT_AVAIL:
89 case CISS_ERR_UNKNOWN:
90 snprintf(strmsg, 100, "%s", CISS_STR_SERVICE_UNAVAILABLE);
92 case CISS_ERR_ILLEGAL_SS_OPER:
93 snprintf(strmsg, 100, "%s", CISS_STR_SERVICE_NOT_AUTHORISED);
95 case CISS_ERR_PW_REGIST_FAIL:
96 case CISS_ERR_NEGATIVE_PW_CHECK:
97 snprintf(strmsg, 100, "%s", CISS_STR_INVALID_PASSWORD);
99 case CISS_ERR_PW_ATTEMPS_VIOLATION: /**<numberOfPW_AttemptsViolation*/
100 snprintf(strmsg, 100, "%s", CISS_STR_PASSWORD_BLOCKED);
102 case CISS_ERR_NETWORK_API_FAILED: /**<Telephony API call failed*/
103 case CISS_ERR_DIVERT_TO_EMERGENCY_BLOCKED: /**<Call diverting to an emergency number not allowed*/
104 snprintf(strmsg, 100, "%s", CISS_STR_REJECTED_BY_NETWORK);
106 /* Call barring password mismatch errors */
107 case CISS_ERR_CB_PWD_TOO_SORT: /**<Password is too short - less than 4 characters*/
108 case CISS_ERR_CB_PWD_MISMATCH: /**<Password do not match - unequal password*/
109 case CISS_ERR_CB_PWD_TOO_LONG: /**<Password is too long - greater than 4 characters*/
110 snprintf(strmsg, 100, "%s", CISS_STR_INVALID_PASSWORD);
113 snprintf(strmsg, 100, "%s", CISS_STR_NETWORK_ERROR);
117 popup = elm_popup_add(parent);
118 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
119 elm_popup_timeout_set(popup, t_timeout);
120 elm_object_text_set(popup, strmsg);
121 elm_object_part_text_set(popup, "title,text", CISS_STR_INFORMATION);
122 evas_object_smart_callback_add(popup, "timeout", __ciss_err_cb, ad);
123 evas_object_smart_callback_add(popup, "block,clicked", __ciss_err_cb, ad);
125 evas_object_show(popup);
131 Evas_Object *_ciss_create_noti_popup(Evas_Object *parent, char *strtitle, char *strmsg, double t_timeout, void *data)
135 Evas_Object *progressbar;
136 retv_if(parent == NULL, NULL);
137 popup = elm_popup_add(parent);
139 elm_object_part_text_set(popup, "title,text", strtitle);
141 progressbar = elm_progressbar_add(popup);
142 elm_object_style_set(progressbar, "pending_list");
143 elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
144 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
145 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
146 elm_progressbar_pulse(progressbar, EINA_TRUE);
147 evas_object_show(progressbar);
149 elm_object_content_set(popup, progressbar);
150 elm_popup_timeout_set(popup, t_timeout);
151 evas_object_smart_callback_add(popup, "timeout", __ciss_resp_timeout_cb, data);
153 evas_object_show(popup);
158 static void __ciss_win_del(void *data, Evas_Object *obj, void *event)
163 Eina_Bool _ciss_on_end_key_down(void *data, int type, void *event)
166 Ecore_Event_Key *ev = event;
168 if (!strcmp(ev->keyname, KEY_END))
174 Evas_Object *_ciss_create_win(const char *name)
179 eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
180 retv_if(eo == NULL, NULL);
183 elm_win_alpha_set(eo, EINA_TRUE);
184 elm_win_title_set(eo, name);
185 elm_win_borderless_set(eo, EINA_TRUE);
187 elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
188 evas_object_smart_callback_add(eo, "delete,request", __ciss_win_del, NULL);
189 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
190 DBG("win w=%d h=%d", w, h);
191 evas_object_resize(eo, w, h);
197 Evas_Object *_ciss_create_layout_main(Evas_Object *parent)
202 retv_if(parent == NULL, NULL);
204 layout = elm_layout_add(parent);
205 retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
207 elm_layout_theme_set(layout, "layout", "application", "default");
208 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
209 elm_win_resize_object_add(parent, layout);
210 evas_object_show(layout);
215 Evas_Object *_ciss_create_bg(Evas_Object *parent)
217 retv_if(parent == NULL, NULL);
219 Evas_Object *bg = elm_bg_add(parent);
220 retvm_if(bg == NULL, NULL, "Failed elm_bg_add.\n");
221 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
222 elm_win_resize_object_add(parent, bg);
223 evas_object_show(bg);
228 Evas_Object *_ciss_create_navi_control_bar(Evas_Object *parent,
229 char *label1, Evas_Smart_Cb cb1,
230 char *label2, Evas_Smart_Cb cb2,
231 void *data, Elm_Object_Item *navi_it,
232 Elm_Object_Item ** c_item)
234 retv_if(NULL == parent, NULL);
235 Evas_Object *toolbar = elm_toolbar_add(parent);
236 Elm_Object_Item *item = NULL;
238 retv_if(toolbar == NULL, NULL);
239 retv_if(label1 == NULL, NULL);
241 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
245 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
246 elm_object_item_disabled_set(item, EINA_TRUE);
247 c_item[0] = elm_toolbar_item_append(toolbar,
248 NULL, label1, cb1, data);
249 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
250 elm_object_item_disabled_set(item, EINA_TRUE);
251 c_item[1] = elm_toolbar_item_append(toolbar,
252 NULL, label2, cb2, data);
254 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
255 elm_object_item_disabled_set(item, EINA_TRUE);
256 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
257 elm_object_item_disabled_set(item, EINA_TRUE);
258 item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
259 elm_object_item_disabled_set(item, EINA_TRUE);
261 c_item[0] = elm_toolbar_item_append(toolbar,
262 NULL, label1, cb1, data);
265 elm_object_item_part_content_set(navi_it, "controlbar", toolbar);
269 Evas_Object *_cst_create_title_btn(Evas_Object *parent,
270 const char *text, Evas_Smart_Cb func, void *data)
272 Evas_Object *btn = elm_button_add(parent);
273 if (!btn) return NULL;
274 elm_object_style_set(btn, "naviframe/title/default");
275 elm_object_text_set(btn, text);
276 evas_object_smart_callback_add(btn, "clicked", func, data);
280 static void __ciss_trans_finished(void *data, Evas_Object *obj, void *event_info)
283 elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
284 evas_object_smart_callback_del(obj, "transition,finished", __ciss_trans_finished);
287 void _ciss_remove_naviframe(Evas_Object *nf)
290 elm_naviframe_prev_btn_auto_pushed_set(nf, EINA_FALSE);
291 evas_object_smart_callback_add(nf, "transition,finished",
292 __ciss_trans_finished, NULL);
295 static char *__ciss_gl_label_get_result(void *data, Evas_Object *obj, const char *part)
297 char *label = (char *)data;
300 return strdup(label);
305 static void __ciss_gl_del_result(void *data, Evas_Object *obj)
307 char *label = (char *)data;
314 Evas_Object * _ciss_create_result_genlist(const char *result_str, int str_len, Evas_Object *nf, void *data)
316 Evas_Object *genlist = elm_genlist_add(nf);
317 retv_if(NULL == genlist, NULL);
318 retv_if(NULL == data, NULL);
320 struct appdata *ad = (struct appdata *)data;
321 ad->itc_multi_line->item_style = "multiline/1text";
322 ad->itc_multi_line->func.text_get = __ciss_gl_label_get_result;
323 ad->itc_multi_line->func.content_get = NULL;
324 ad->itc_multi_line->func.state_get = NULL;
325 ad->itc_multi_line->func.del = __ciss_gl_del_result;
327 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
328 char *label = calloc(str_len, sizeof(char));
329 retv_if(label == NULL, NULL);
331 strncpy(label, result_str, str_len - 1);
332 Elm_Object_Item *item = elm_genlist_item_append(genlist, ad->itc_multi_line,
333 (void *)label, NULL, ELM_GENLIST_ITEM_NONE,
335 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
340 void _ciss_geinlist_item_class_new(void *data)
342 ret_if(data == NULL);
344 struct appdata *ad = (struct appdata *)data;
345 ad->itc_ime = elm_genlist_item_class_new();
346 ad->itc_multi_line = elm_genlist_item_class_new();
349 void _ciss_geinlist_item_class_free(void *data)
351 ret_if(data == NULL);
353 struct appdata *ad = (struct appdata *)data;
355 elm_genlist_item_class_free(ad->itc_ime);
356 if (ad->itc_multi_line)
357 elm_genlist_item_class_free(ad->itc_multi_line);