4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #include <setting-network-preferred-network-delete.h>
22 #include <efl_assist.h>
24 static int setting_network_preferred_network_delete_create(void *cb);
25 static int setting_network_preferred_network_delete_destroy(void *cb);
26 static int setting_network_preferred_network_delete_update(void *cb);
27 static int setting_network_preferred_network_delete_cleanup(void *cb);
31 Evas_Object *eo_check;
33 Setting_GenGroupItem_Data *data_Genitem;
34 } preferred_list_item_t;
36 static int check_count = 0;
38 setting_view setting_view_network_preferred_network_delete = {
39 .create = setting_network_preferred_network_delete_create,
40 .destroy = setting_network_preferred_network_delete_destroy,
41 .update = setting_network_preferred_network_delete_update,
42 .cleanup = setting_network_preferred_network_delete_cleanup,
45 static void setting_network_preferred_network_delete_select_all_cb(void *data,
49 static void setting_network_preferred_network_delete_check_cb(void *data,
52 static void setting_network_perferred_network_delete_mouse_up_cb(void *data,
58 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
63 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
67 static void setting_network_preferred_network_delete_no_cb(void *cb);
68 static void setting_network_preferred_network_delete_yes_cb(void *cb);
70 /* ***************************************************
74 ***************************************************/
76 static int setting_network_preferred_network_delete_create(void *cb)
79 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
81 Evas_Object *layout = elm_layout_add(ad->win_main_layout);
82 elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "selinfo_bottom");
83 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
84 ad->sub_clear_layout = layout;
86 setting_push_layout_navi_bar(_("IDS_COM_SK_DELETE"),
87 dgettext("sys_string", "IDS_COM_SK_CANCEL"),
88 dgettext("sys_string", "IDS_COM_SK_DELETE"),
90 setting_network_preferred_network_delete_click_softkey_cancel_cb,
91 setting_network_preferred_network_delete_click_softkey_delete_cb,
92 NULL, ad, layout, ad->navi_bar, NULL);
93 /* elm_object_item_disabled_set(elm_toolbar_last_item_get(ad->controllbar_clear), EINA_TRUE); */
95 Evas_Object *sub_layout = elm_layout_add(ad->win_main_layout);
96 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME,
98 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
99 evas_object_show(sub_layout);
101 ad->gl_sel_all = elm_genlist_add(ad->win_main_layout);
102 retvm_if(ad->gl_sel_all == NULL, SETTING_RETURN_FAIL,
103 "gl_sel_all == NULL");
104 elm_genlist_realization_mode_set(ad->gl_sel_all, EINA_TRUE);
105 elm_object_style_set(ad->gl_sel_all, "dialogue");
106 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
107 elm_scroller_bounce_set(ad->gl_sel_all, 0, 0);
108 evas_object_smart_callback_add(ad->gl_sel_all, "realized", __gl_realized_cb, NULL);
110 ad->scl_pref_del = elm_genlist_add(ad->win_main_layout);
111 retvm_if(ad->scl_pref_del == NULL, SETTING_RETURN_FAIL,
112 "ad->scl_pref_del == NULL");
113 elm_genlist_realization_mode_set(ad->scl_pref_del, EINA_TRUE);
114 elm_object_style_set(ad->scl_pref_del, "dialogue");
115 elm_genlist_clear(ad->scl_pref_del); /* first to clear list */
116 evas_object_smart_callback_add(ad->scl_pref_del, "realized", __gl_realized_cb, NULL);
118 elm_object_part_content_set(sub_layout, "search_list", ad->scl_pref_del);
119 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all);
120 elm_object_part_content_set(layout, "elm.swallow.contents", sub_layout);
122 setting_network_preferred_network_delete_draw_network_list(ad);
123 setting_view_network_preferred_network_delete.is_create = 1;
125 return SETTING_RETURN_SUCCESS;
128 static int setting_network_preferred_network_delete_destroy(void *cb)
131 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
133 elm_naviframe_item_pop(ad->navi_bar);
134 setting_view_network_preferred_network_delete.is_create = 0;
137 preferred_list_item_t *list_item;
138 if (ad->item_check_list != NULL) {
140 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
143 eina_list_free(ad->item_check_list);
144 ad->item_check_list = NULL;
146 return SETTING_RETURN_SUCCESS;
149 static int setting_network_preferred_network_delete_update(void *cb)
152 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
154 setting_network_preferred_network_delete_refresh_view(ad);
155 return SETTING_RETURN_SUCCESS;
158 static int setting_network_preferred_network_delete_cleanup(void *cb)
160 return setting_network_preferred_network_delete_destroy(cb);
163 /* ***************************************************
167 ***************************************************/
170 setting_network_preferred_network_delete_refresh_view(SettingNetworkUG *ad)
175 if (ad->item_check_list) {
176 eina_list_free(ad->item_check_list);
177 ad->item_check_list = NULL;
180 setting_network_preferred_network_delete_draw_network_list(ad);
185 setting_network_preferred_network_delete_draw_network_list(SettingNetworkUG *
190 preferred_list_item_t *list_item = NULL;
193 if (ad->item_check_list != NULL) {
195 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
198 eina_list_free(ad->item_check_list);
199 ad->item_check_list = NULL;
202 elm_genlist_clear(ad->scl_pref_del); /* first to clear list */
206 ad->data_cl_select_all =
207 setting_create_Gendial_field_def(ad->gl_sel_all, &itc_sel_all,
208 setting_network_perferred_network_delete_mouse_up_cb,
209 ad, SWALLOW_Type_1CHECK, NULL,
210 NULL, 0, KeyStr_Select_All, NULL,
211 setting_network_preferred_network_delete_select_all_cb);
212 if (ad->data_cl_select_all) {
213 ad->data_cl_select_all->userdata = ad;
215 SETTING_TRACE_ERROR("ad->data_cl_select_all is NULL");
218 for (i = 0; i < ad->pref_list.NumOfPrefPlmns; i++) {
219 list_item = calloc(1, sizeof(preferred_list_item_t));
220 setting_retm_if(!list_item, "calloc failed");
221 list_item->prefer_idx = i;
222 list_item->is_checked = 0;
224 list_item->data_Genitem =
225 setting_create_Gendial_field_def(ad->scl_pref_del,
226 &itc_cm_1text_1icon_2,
227 setting_network_perferred_network_delete_mouse_up_cb,
228 ad, SWALLOW_Type_1CHECK,
230 _(ad->pref_list.PrefPlmnRecord[i].network_name), NULL,
231 setting_network_preferred_network_delete_check_cb);
232 if (list_item->data_Genitem) {
233 list_item->data_Genitem->userdata = ad;
235 SETTING_TRACE_ERROR("ad->data_Genitem is NULL");
238 ad->item_check_list =
239 eina_list_append(ad->item_check_list, list_item);
245 setting_network_preferred_network_delete_select_all_cb(void *data,
250 retm_if(data == NULL, "Data parameter is NULL");
251 Setting_GenGroupItem_Data *list_item =
252 (Setting_GenGroupItem_Data *) data;
253 SettingNetworkUG *ad = list_item->userdata;
254 setting_create_sel_info_popup(ad->sub_clear_layout,
255 &(ad->selInfoPop_layout),
257 int state = list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
258 Eina_List *check_list = ad->item_check_list;
259 preferred_list_item_t *pre_list_item = NULL;
263 pre_list_item = (preferred_list_item_t *)
264 eina_list_data_get(check_list);
265 if (NULL == pre_list_item)
267 setting_update_gl_item_chk_status(pre_list_item->data_Genitem, 1);
268 check_list = eina_list_next(check_list);
270 check_count = ad->pref_list.NumOfPrefPlmns;
272 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
273 snprintf(text, sizeof(text), "%d Items Selected", check_count);
274 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
278 pre_list_item = (preferred_list_item_t *)
279 eina_list_data_get(check_list);
280 if (NULL == pre_list_item)
282 setting_update_gl_item_chk_status(pre_list_item->data_Genitem, 0);
284 check_list = eina_list_next(check_list);
287 evas_object_hide(ad->selInfoPop);
290 SETTING_TRACE("check_count:%d", check_count);
295 setting_network_preferred_network_delete_check_cb(void *data, Evas_Object *obj,
298 retm_if(data == NULL, "Data parameter is NULL");
299 Setting_GenGroupItem_Data *list_item =
300 (Setting_GenGroupItem_Data *) data;
301 SettingNetworkUG *ad = list_item->userdata;
302 setting_create_sel_info_popup(ad->sub_clear_layout,
303 &(ad->selInfoPop_layout),
306 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
307 if (list_item->chk_status) {
313 if (check_count < ad->pref_list.NumOfPrefPlmns) {
314 setting_update_gl_item_chk_status(ad->data_cl_select_all, 0);
316 setting_update_gl_item_chk_status(ad->data_cl_select_all, 1);
319 SETTING_TRACE("check count is [%d]", check_count);
321 evas_object_hide(ad->selInfoPop);
325 char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
326 snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%d %s", check_count, KeyStr_Item_Sel);
329 /* text set and timeout set */
330 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text",
336 setting_network_perferred_network_delete_mouse_up_cb(void *data,
342 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
344 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
345 elm_genlist_item_selected_set(item, 0);
346 Setting_GenGroupItem_Data *list_item =
347 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
349 setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
350 SETTING_TRACE("list_item->keyStr:%s", list_item->keyStr);
352 SettingNetworkUG *ad = list_item->userdata;
353 setting_create_sel_info_popup(ad->sub_clear_layout,
354 &(ad->selInfoPop_layout),
356 int state = list_item->chk_status; /* for genlist update status */
357 Eina_List *check_list = ad->item_check_list;
358 preferred_list_item_t *pre_list_item = NULL;
360 if (0 == safeStrCmp(KeyStr_Select_All, list_item->keyStr)) { /* if(obj == chk_sel_all) */
361 SETTING_TRACE("Select All");
364 pre_list_item = (preferred_list_item_t *)
365 eina_list_data_get(check_list);
366 if (NULL == pre_list_item)
368 setting_update_gl_item_chk_status(pre_list_item->data_Genitem, 1);
369 check_list = eina_list_next(check_list);
371 check_count = ad->pref_list.NumOfPrefPlmns;
373 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
374 snprintf(text, sizeof(text), "%d Items Selected",
376 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
380 pre_list_item = (preferred_list_item_t *)
381 eina_list_data_get(check_list);
382 if (NULL == pre_list_item)
384 setting_update_gl_item_chk_status(pre_list_item->data_Genitem, 0);
385 check_list = eina_list_next(check_list);
388 evas_object_hide(ad->selInfoPop);
391 SETTING_TRACE("Select %s", list_item->keyStr);
398 if (check_count < ad->pref_list.NumOfPrefPlmns) {
399 setting_update_gl_item_chk_status(ad->data_cl_select_all, 0);
401 setting_update_gl_item_chk_status(ad->data_cl_select_all, 1);
405 evas_object_hide(ad->selInfoPop);
409 char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
410 snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%d %s", check_count, KeyStr_Item_Sel);
412 /* text set and timeout set */
413 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
416 SETTING_TRACE("check_count:%d", check_count);
420 setting_network_preferred_network_delete_one(SettingNetworkUG *ad,
421 preferred_list_item_t *list_item)
423 retvm_if(list_item == NULL, FALSE, "list_item parameter is NULL");
425 int tapi_ret = TAPI_API_SUCCESS;
426 TelNetworkPreferredPlmnInfo_t preff_plmn_info = { 0, };
427 memcpy(&preff_plmn_info,
428 &ad->pref_list.PrefPlmnRecord[list_item->prefer_idx],
429 sizeof(TelNetworkPreferredPlmnInfo_t));
430 SETTING_TRACE_WARNING
431 ("preff_plmn_info.network_name = %s, preff_plmn_info.Index = %d",
432 preff_plmn_info.network_name, preff_plmn_info.Index);
434 tel_set_network_preferred_plmn(ad->handle, TAPI_NETWORK_PREF_PLMN_DELETE,
435 &preff_plmn_info, setting_tapi_set_preferred_plmn_cb, ad);
436 if (tapi_ret != TAPI_API_SUCCESS) {
438 ("%s*** [ERR] tel_set_network_preferred_plmn(PLMN_DEL) err=%d ***%s",
439 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
440 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Delete Failed"), NULL, POPUP_INTERVAL, FALSE, FALSE);
446 void setting_network_preferred_network_delete_ok(void *data)
449 retm_if(data == NULL, "Data parameter is NULL");
450 SettingNetworkUG *ad = (SettingNetworkUG *) data;
452 preferred_list_item_t *list_item = NULL;
453 int total_count = eina_list_count(ad->checked_data_list);
454 ad->deleted_number++;
455 if (ad->deleted_number >= total_count) {
456 if (ad->network_ug_pop != NULL) {
457 evas_object_del(ad->network_ug_pop);
458 ad->network_ug_pop = NULL;
460 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"), NULL, POPUP_INTERVAL, FALSE, FALSE);
462 int tapi_ret = TAPI_API_SUCCESS;
464 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
465 if (tapi_ret != TAPI_API_SUCCESS) {
467 ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
468 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
472 char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
473 snprintf(info, sizeof(info), "%s (%d/%d)",
474 _("IDS_COM_SK_DELETE"), ad->deleted_number,
476 elm_object_text_set(ad->popup_label, info);
479 eina_list_nth(ad->checked_data_list, ad->deleted_number);
481 setting_network_preferred_network_delete_one(ad, list_item);
483 setting_network_preferred_network_delete_failed(ad);
488 void setting_network_preferred_network_delete_failed(void *data)
491 retm_if(data == NULL, "Data parameter is NULL");
492 SettingNetworkUG *ad = (SettingNetworkUG *) data;
493 if (ad->network_ug_pop != NULL) {
494 evas_object_del(ad->network_ug_pop);
495 ad->network_ug_pop = NULL;
497 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Failed!"), NULL, POPUP_INTERVAL, FALSE, FALSE);
500 int tapi_ret = TAPI_API_SUCCESS;
502 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
503 if (tapi_ret != TAPI_API_SUCCESS) {
505 ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
506 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
510 static void setting_network_preferred_network_create_delete_pop(void *data)
513 retm_if(data == NULL, "Data parameter is NULL");
514 SettingNetworkUG *ad = (SettingNetworkUG *) data;
515 if (ad->network_ug_pop != NULL) {
516 evas_object_del(ad->network_ug_pop);
517 ad->network_ug_pop = NULL;
520 popup = elm_popup_add(ad->win_get);
521 ea_object_event_callback_add(popup, EA_CALLBACK_BACK, ea_popup_back_cb_2, NULL);
522 setting_add_hardkey_features(popup, ad);
523 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
525 Evas_Object *box, *progressbar;
526 ad->popup_label = elm_label_add(popup);
527 char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
528 snprintf(info, sizeof(info), "%s (%d/%d)", _("IDS_COM_SK_DELETE"),
529 ad->deleted_number, eina_list_count(ad->checked_data_list));
530 elm_object_text_set(ad->popup_label, info);
531 evas_object_show(ad->popup_label);
532 box = elm_box_add(popup);
533 progressbar = elm_progressbar_add(popup);
534 elm_object_style_set(progressbar, PROGRESSBAR_STYLE);
535 elm_progressbar_pulse(progressbar, EINA_TRUE);
536 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
537 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND,
539 elm_progressbar_pulse(progressbar, EINA_TRUE);
540 evas_object_show(progressbar);
541 elm_box_pack_end(box, ad->popup_label);
542 elm_box_pack_end(box, progressbar);
543 evas_object_show(box);
544 elm_object_content_set(popup, box);
545 evas_object_show(popup);
546 ad->network_ug_pop = popup;
549 /* ***************************************************
553 ***************************************************/
555 static void setting_network_preferred_network_delete_yes_cb(void *cb)
559 retm_if(cb == NULL, "Data parameter is NULL");
561 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
564 evas_object_del(ad->popup);
567 ad->deleted_number = 0;
568 eina_list_free(ad->checked_data_list);
569 ad->checked_data_list = NULL;
570 Eina_List *check_list = ad->item_check_list;
571 preferred_list_item_t *list_item = NULL;
572 bool isChecked = FALSE;
575 (preferred_list_item_t *) eina_list_data_get(check_list);
576 if (NULL == list_item)
578 isChecked = list_item->data_Genitem->chk_status;
581 ad->checked_data_list =
582 eina_list_prepend(ad->checked_data_list, list_item);
584 check_list = eina_list_next(check_list);
586 setting_network_preferred_network_create_delete_pop(ad);
587 list_item = eina_list_nth(ad->checked_data_list, ad->deleted_number);
588 ret = setting_network_preferred_network_delete_one(ad, list_item);
590 setting_network_preferred_network_delete_failed(ad);
592 ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_DELETE;
595 static void setting_network_preferred_network_delete_no_cb(void *cb)
599 retm_if(cb == NULL, "Data parameter is NULL");
601 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
604 evas_object_del(ad->popup);
609 static void setting_preferred_network_delete_resp_cb(void *data,
614 int response_type = btn_type(obj);
615 if (POPUP_RESPONSE_OK == response_type) {
616 setting_network_preferred_network_delete_yes_cb(data);
617 } else if (POPUP_RESPONSE_CANCEL == response_type) {
618 setting_network_preferred_network_delete_no_cb(data);
623 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
630 retm_if(data == NULL, "Data parameter is NULL");
632 SettingNetworkUG *ad = (SettingNetworkUG *) data;
634 if (ad->pref_list.NumOfPrefPlmns == 1) {
635 setting_create_simple_popup(ad, ad->win_get,
636 NULL, _("Do not Delete!"));
639 Eina_List *check_list = ad->item_check_list;
640 preferred_list_item_t *list_item = NULL;
642 list_item = (preferred_list_item_t *)
643 eina_list_data_get(check_list);
644 if (NULL == list_item)
646 SETTING_TRACE("item[%d]'s check flag is %d",
647 list_item->prefer_idx,
648 list_item->data_Genitem->chk_status);
649 if (list_item->data_Genitem->chk_status) {
652 check_list = eina_list_next(check_list);
655 if (0 == sel_count) {
656 setting_create_simple_popup(ad, ad->win_get,
657 NULL, _("Please select item(s) to process!"));
661 char notify_str[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
662 if (1 == sel_count) {
663 snprintf(notify_str, sizeof(notify_str),
664 "%s 1 network?", _("IDS_COM_SK_DELETE"));
666 snprintf(notify_str, sizeof(notify_str),
667 "%s %d networks?", _("IDS_COM_SK_DELETE"),
670 ad->popup = setting_create_popup_with_btn(ad, ad->win_get, NULL, notify_str,
671 setting_preferred_network_delete_resp_cb,
672 0, 2, _("IDS_COM_SK_OK"),_("IDS_COM_SK_CANCEL"));
675 if (ad->selInfoPop) {
676 evas_object_del(ad->selInfoPop);
677 ad->selInfoPop = NULL;
682 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
689 retm_if(data == NULL, "Data parameter is NULL");
691 SettingNetworkUG *ad = (SettingNetworkUG *) data;
692 if (ad->selInfoPop) {
693 evas_object_del(ad->selInfoPop);
694 ad->selInfoPop = NULL;
697 ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_NONE;
698 setting_view_change(&setting_view_network_preferred_network_delete,
699 &setting_view_network_preferred_network, ad);