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>
23 static int setting_network_preferred_network_delete_create(void *cb);
24 static int setting_network_preferred_network_delete_destroy(void *cb);
25 static int setting_network_preferred_network_delete_update(void *cb);
26 static int setting_network_preferred_network_delete_cleanup(void *cb);
30 Evas_Object *eo_check;
32 Setting_GenGroupItem_Data *data_Genitem;
33 } preferred_list_item_t;
35 static int check_count = 0;
37 setting_view setting_view_network_preferred_network_delete = {
38 .create = setting_network_preferred_network_delete_create,
39 .destroy = setting_network_preferred_network_delete_destroy,
40 .update = setting_network_preferred_network_delete_update,
41 .cleanup = setting_network_preferred_network_delete_cleanup,
44 static void setting_network_preferred_network_delete_select_all_cb(void *data,
48 static void setting_network_preferred_network_delete_check_cb(void *data,
51 static void setting_network_perferred_network_delete_mouse_up_cb(void *data,
57 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
62 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
66 static void setting_network_preferred_network_delete_no_cb(void *cb);
67 static void setting_network_preferred_network_delete_yes_cb(void *cb);
69 /* ***************************************************
73 ***************************************************/
75 static int setting_network_preferred_network_delete_create(void *cb)
78 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
80 Evas_Object *layout = elm_layout_add(ad->win_main_layout);
81 elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "selinfo_bottom");
82 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
83 ad->sub_clear_layout = layout;
85 setting_push_layout_navi_bar(_("IDS_COM_SK_DELETE"),
86 dgettext("sys_string", "IDS_COM_SK_CANCEL"),
87 dgettext("sys_string", "IDS_COM_SK_DELETE"),
89 setting_network_preferred_network_delete_click_softkey_cancel_cb,
90 setting_network_preferred_network_delete_click_softkey_delete_cb,
91 NULL, ad, layout, ad->navi_bar, NULL);
92 /* elm_object_item_disabled_set(elm_toolbar_last_item_get(ad->controllbar_clear), EINA_TRUE); */
94 Evas_Object *sub_layout = elm_layout_add(ad->win_main_layout);
95 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME,
97 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
98 evas_object_show(sub_layout);
100 ad->gl_sel_all = elm_genlist_add(ad->win_main_layout);
101 elm_object_style_set(ad->gl_sel_all, "dialogue");
102 retvm_if(ad->gl_sel_all == NULL, SETTING_RETURN_FAIL,
103 "gl_sel_all == NULL");
104 elm_genlist_clear(ad->gl_sel_all); /* first to clear list */
105 elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
107 ad->scl_pref_del = elm_genlist_add(ad->win_main_layout);
108 elm_object_style_set(ad->scl_pref_del, "dialogue");
109 elm_genlist_clear(ad->scl_pref_del); /* first to clear list */
111 elm_object_part_content_set(sub_layout, "search_list", ad->scl_pref_del);
112 elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all);
113 elm_object_part_content_set(layout, "elm.swallow.contents", sub_layout);
115 setting_network_preferred_network_delete_draw_network_list(ad);
116 setting_view_network_preferred_network_delete.is_create = 1;
118 return SETTING_RETURN_SUCCESS;
121 static int setting_network_preferred_network_delete_destroy(void *cb)
124 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
126 elm_naviframe_item_pop(ad->navi_bar);
127 setting_view_network_preferred_network_delete.is_create = 0;
130 preferred_list_item_t *list_item;
131 if (ad->item_check_list != NULL) {
133 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
136 eina_list_free(ad->item_check_list);
137 ad->item_check_list = NULL;
139 return SETTING_RETURN_SUCCESS;
142 static int setting_network_preferred_network_delete_update(void *cb)
145 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
147 setting_network_preferred_network_delete_refresh_view(ad);
148 return SETTING_RETURN_SUCCESS;
151 static int setting_network_preferred_network_delete_cleanup(void *cb)
153 return setting_network_preferred_network_delete_destroy(cb);
156 /* ***************************************************
160 ***************************************************/
163 setting_network_preferred_network_delete_refresh_view(SettingNetworkUG *ad)
168 if (ad->item_check_list) {
169 eina_list_free(ad->item_check_list);
170 ad->item_check_list = NULL;
173 setting_network_preferred_network_delete_draw_network_list(ad);
178 setting_network_preferred_network_delete_draw_network_list(SettingNetworkUG *
183 preferred_list_item_t *list_item = NULL;
186 if (ad->item_check_list != NULL) {
188 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
191 eina_list_free(ad->item_check_list);
192 ad->item_check_list = NULL;
195 elm_genlist_clear(ad->scl_pref_del); /* first to clear list */
199 ad->data_cl_select_all =
200 setting_create_Gendial_field_def(ad->gl_sel_all, &itc_sel_all,
201 setting_network_perferred_network_delete_mouse_up_cb,
202 ad, SWALLOW_Type_1CHECK, NULL,
203 NULL, 0, KeyStr_Select_All, NULL,
204 setting_network_preferred_network_delete_select_all_cb);
205 if (ad->data_cl_select_all) {
206 ad->data_cl_select_all->userdata = ad;
208 SETTING_TRACE_ERROR("ad->data_cl_select_all is NULL");
211 for (i = 0; i < ad->pref_list.NumOfPrefPlmns; i++) {
212 list_item = calloc(1, sizeof(preferred_list_item_t));
213 setting_retm_if(!list_item, "calloc failed");
214 list_item->prefer_idx = i;
215 list_item->is_checked = 0;
217 list_item->data_Genitem =
218 setting_create_Gendial_field_def(ad->scl_pref_del,
219 &itc_cm_1text_1icon_2,
220 setting_network_perferred_network_delete_mouse_up_cb,
221 ad, SWALLOW_Type_1CHECK,
223 _(ad->pref_list.PrefPlmnRecord[i].network_name), NULL,
224 setting_network_preferred_network_delete_check_cb);
225 if (list_item->data_Genitem) {
226 list_item->data_Genitem->userdata = ad;
228 SETTING_TRACE_ERROR("ad->data_Genitem is NULL");
231 ad->item_check_list =
232 eina_list_append(ad->item_check_list, list_item);
238 setting_network_preferred_network_delete_select_all_cb(void *data,
243 retm_if(data == NULL, "Data parameter is NULL");
244 Setting_GenGroupItem_Data *list_item =
245 (Setting_GenGroupItem_Data *) data;
246 SettingNetworkUG *ad = list_item->userdata;
247 setting_create_sel_info_popup(ad->sub_clear_layout,
248 &(ad->selInfoPop_layout),
250 int state = list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
251 Eina_List *check_list = ad->item_check_list;
252 preferred_list_item_t *pre_list_item = NULL;
256 pre_list_item = (preferred_list_item_t *)
257 eina_list_data_get(check_list);
258 if (NULL == pre_list_item)
260 elm_check_state_set(pre_list_item->
261 data_Genitem->eo_check, 1);
262 pre_list_item->data_Genitem->chk_status = 1;
263 check_list = eina_list_next(check_list);
265 check_count = ad->pref_list.NumOfPrefPlmns;
267 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
268 snprintf(text, sizeof(text), "%d Items Selected", check_count);
269 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
273 pre_list_item = (preferred_list_item_t *)
274 eina_list_data_get(check_list);
275 if (NULL == pre_list_item)
277 elm_check_state_set(pre_list_item->
278 data_Genitem->eo_check, 0);
279 pre_list_item->data_Genitem->chk_status = 0;
280 check_list = eina_list_next(check_list);
283 evas_object_hide(ad->selInfoPop);
286 SETTING_TRACE("check_count:%d", check_count);
291 setting_network_preferred_network_delete_check_cb(void *data, Evas_Object *obj,
294 retm_if(data == NULL, "Data parameter is NULL");
295 Setting_GenGroupItem_Data *list_item =
296 (Setting_GenGroupItem_Data *) data;
297 SettingNetworkUG *ad = list_item->userdata;
298 setting_create_sel_info_popup(ad->sub_clear_layout,
299 &(ad->selInfoPop_layout),
302 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
303 if (list_item->chk_status) {
309 if (check_count < ad->pref_list.NumOfPrefPlmns) {
310 elm_check_state_set(ad->data_cl_select_all->eo_check, 0);
311 ad->data_cl_select_all->chk_status = 0;
313 elm_check_state_set(ad->data_cl_select_all->eo_check, 1);
314 ad->data_cl_select_all->chk_status = 1;
317 SETTING_TRACE("check count is [%d]", check_count);
319 evas_object_hide(ad->selInfoPop);
323 char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
324 snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%d %s", check_count, KeyStr_Item_Sel);
327 /* text set and timeout set */
328 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text",
334 setting_network_perferred_network_delete_mouse_up_cb(void *data,
340 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
342 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
343 elm_genlist_item_selected_set(item, 0);
344 Setting_GenGroupItem_Data *list_item =
345 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
347 int old_status = elm_check_state_get(list_item->eo_check);
349 list_item->chk_status = !old_status;
350 elm_check_state_set(list_item->eo_check, list_item->chk_status);
351 SETTING_TRACE("list_item->keyStr:%s", list_item->keyStr);
353 SettingNetworkUG *ad = list_item->userdata;
354 setting_create_sel_info_popup(ad->sub_clear_layout,
355 &(ad->selInfoPop_layout),
357 int state = elm_check_state_get(list_item->eo_check); /* for genlist update status */
358 Eina_List *check_list = ad->item_check_list;
359 preferred_list_item_t *pre_list_item = NULL;
361 if (0 == safeStrCmp(KeyStr_Select_All, list_item->keyStr)) { /* if(obj == chk_sel_all) */
362 SETTING_TRACE("Select All");
365 pre_list_item = (preferred_list_item_t *)
366 eina_list_data_get(check_list);
367 if (NULL == pre_list_item)
370 (pre_list_item->data_Genitem->eo_check, 1);
371 pre_list_item->data_Genitem->chk_status = 1;
372 check_list = eina_list_next(check_list);
374 check_count = ad->pref_list.NumOfPrefPlmns;
376 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
377 snprintf(text, sizeof(text), "%d Items Selected",
379 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
383 pre_list_item = (preferred_list_item_t *)
384 eina_list_data_get(check_list);
385 if (NULL == pre_list_item)
388 (pre_list_item->data_Genitem->eo_check, 0);
389 pre_list_item->data_Genitem->chk_status = 0;
390 check_list = eina_list_next(check_list);
393 evas_object_hide(ad->selInfoPop);
396 SETTING_TRACE("Select %s", list_item->keyStr);
403 if (check_count < ad->pref_list.NumOfPrefPlmns) {
404 elm_check_state_set(ad->data_cl_select_all->eo_check,
406 ad->data_cl_select_all->chk_status = 0;
408 elm_check_state_set(ad->data_cl_select_all->eo_check,
410 ad->data_cl_select_all->chk_status = 1;
414 evas_object_hide(ad->selInfoPop);
418 char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
419 snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%d %s", check_count, KeyStr_Item_Sel);
421 /* text set and timeout set */
422 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
425 SETTING_TRACE("check_count:%d", check_count);
429 setting_network_preferred_network_delete_one(SettingNetworkUG *ad,
430 preferred_list_item_t *list_item)
432 retvm_if(list_item == NULL, FALSE, "list_item parameter is NULL");
434 int tapi_ret = TAPI_API_SUCCESS;
435 TelNetworkPreferredPlmnInfo_t preff_plmn_info = { 0, };
436 memcpy(&preff_plmn_info,
437 &ad->pref_list.PrefPlmnRecord[list_item->prefer_idx],
438 sizeof(TelNetworkPreferredPlmnInfo_t));
439 SETTING_TRACE_WARNING
440 ("preff_plmn_info.network_name = %s, preff_plmn_info.Index = %d",
441 preff_plmn_info.network_name, preff_plmn_info.Index);
443 tel_set_network_preferred_plmn(ad->handle, TAPI_NETWORK_PREF_PLMN_DELETE,
444 &preff_plmn_info, setting_tapi_set_preferred_plmn_cb, ad);
445 if (tapi_ret != TAPI_API_SUCCESS) {
447 ("%s*** [ERR] tel_set_network_preferred_plmn(PLMN_DEL) err=%d ***%s",
448 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
449 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Delete Failed"), NULL, POPUP_INTERVAL, FALSE, FALSE);
455 void setting_network_preferred_network_delete_ok(void *data)
458 retm_if(data == NULL, "Data parameter is NULL");
459 SettingNetworkUG *ad = (SettingNetworkUG *) data;
461 preferred_list_item_t *list_item = NULL;
462 int total_count = eina_list_count(ad->checked_data_list);
463 ad->deleted_number++;
464 if (ad->deleted_number >= total_count) {
465 if (ad->network_ug_pop != NULL) {
466 evas_object_del(ad->network_ug_pop);
467 ad->network_ug_pop = NULL;
469 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"), NULL, POPUP_INTERVAL, FALSE, FALSE);
471 int tapi_ret = TAPI_API_SUCCESS;
473 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
474 if (tapi_ret != TAPI_API_SUCCESS) {
476 ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
477 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
481 char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
482 snprintf(info, sizeof(info), "%s (%d/%d)",
483 _("IDS_COM_SK_DELETE"), ad->deleted_number,
485 elm_object_text_set(ad->popup_label, info);
488 eina_list_nth(ad->checked_data_list, ad->deleted_number);
490 setting_network_preferred_network_delete_one(ad, list_item);
492 setting_network_preferred_network_delete_failed(ad);
497 void setting_network_preferred_network_delete_failed(void *data)
500 retm_if(data == NULL, "Data parameter is NULL");
501 SettingNetworkUG *ad = (SettingNetworkUG *) data;
502 if (ad->network_ug_pop != NULL) {
503 evas_object_del(ad->network_ug_pop);
504 ad->network_ug_pop = NULL;
506 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Failed!"), NULL, POPUP_INTERVAL, FALSE, FALSE);
509 int tapi_ret = TAPI_API_SUCCESS;
511 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
512 if (tapi_ret != TAPI_API_SUCCESS) {
514 ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
515 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
519 static void setting_network_preferred_network_create_delete_pop(void *data)
522 retm_if(data == NULL, "Data parameter is NULL");
523 SettingNetworkUG *ad = (SettingNetworkUG *) data;
524 if (ad->network_ug_pop != NULL) {
525 evas_object_del(ad->network_ug_pop);
526 ad->network_ug_pop = NULL;
529 popup = elm_popup_add(ad->win_get);
530 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
532 Evas_Object *box, *progressbar;
533 ad->popup_label = elm_label_add(popup);
534 char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
535 snprintf(info, sizeof(info), "%s (%d/%d)", _("IDS_COM_SK_DELETE"),
536 ad->deleted_number, eina_list_count(ad->checked_data_list));
537 elm_object_text_set(ad->popup_label, info);
538 evas_object_show(ad->popup_label);
539 box = elm_box_add(popup);
540 progressbar = elm_progressbar_add(popup);
541 elm_object_style_set(progressbar, "pending_list");
542 elm_progressbar_pulse(progressbar, EINA_TRUE);
543 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
544 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND,
546 elm_progressbar_pulse(progressbar, EINA_TRUE);
547 evas_object_show(progressbar);
548 elm_box_pack_end(box, ad->popup_label);
549 elm_box_pack_end(box, progressbar);
550 evas_object_show(box);
551 elm_object_content_set(popup, box);
552 evas_object_show(popup);
553 ad->network_ug_pop = popup;
556 /* ***************************************************
560 ***************************************************/
562 static void setting_network_preferred_network_delete_yes_cb(void *cb)
566 retm_if(cb == NULL, "Data parameter is NULL");
568 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
571 evas_object_del(ad->popup);
574 ad->deleted_number = 0;
575 eina_list_free(ad->checked_data_list);
576 ad->checked_data_list = NULL;
577 Eina_List *check_list = ad->item_check_list;
578 preferred_list_item_t *list_item = NULL;
579 bool isChecked = FALSE;
582 (preferred_list_item_t *) eina_list_data_get(check_list);
583 if (NULL == list_item)
585 isChecked = list_item->data_Genitem->chk_status;
588 ad->checked_data_list =
589 eina_list_prepend(ad->checked_data_list, list_item);
591 check_list = eina_list_next(check_list);
593 setting_network_preferred_network_create_delete_pop(ad);
594 list_item = eina_list_nth(ad->checked_data_list, ad->deleted_number);
595 ret = setting_network_preferred_network_delete_one(ad, list_item);
597 setting_network_preferred_network_delete_failed(ad);
599 ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_DELETE;
602 static void setting_network_preferred_network_delete_no_cb(void *cb)
606 retm_if(cb == NULL, "Data parameter is NULL");
608 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
611 evas_object_del(ad->popup);
616 static void setting_preferred_network_delete_resp_cb(void *data,
621 int response_type = btn_type(obj);
622 if (POPUP_RESPONSE_OK == response_type) {
623 setting_network_preferred_network_delete_yes_cb(data);
624 } else if (POPUP_RESPONSE_CANCEL == response_type) {
625 setting_network_preferred_network_delete_no_cb(data);
630 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
637 retm_if(data == NULL, "Data parameter is NULL");
639 SettingNetworkUG *ad = (SettingNetworkUG *) data;
641 if (ad->pref_list.NumOfPrefPlmns == 1) {
642 setting_create_simple_popup(ad, ad->win_get,
643 NULL, _("Do not Delete!"));
646 Eina_List *check_list = ad->item_check_list;
647 preferred_list_item_t *list_item = NULL;
649 list_item = (preferred_list_item_t *)
650 eina_list_data_get(check_list);
651 if (NULL == list_item)
653 SETTING_TRACE("item[%d]'s check flag is %d",
654 list_item->prefer_idx,
655 list_item->data_Genitem->chk_status);
656 if (list_item->data_Genitem->chk_status) {
659 check_list = eina_list_next(check_list);
662 if (0 == sel_count) {
663 setting_create_simple_popup(ad, ad->win_get,
664 NULL, _("Please select item(s) to process!"));
668 char notify_str[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
669 if (1 == sel_count) {
670 snprintf(notify_str, sizeof(notify_str),
671 "%s 1 network?", _("IDS_COM_SK_DELETE"));
673 snprintf(notify_str, sizeof(notify_str),
674 "%s %d networks?", _("IDS_COM_SK_DELETE"),
677 ad->popup = setting_create_popup_with_btn(ad, ad->win_get, NULL, notify_str,
678 setting_preferred_network_delete_resp_cb,
679 0, 2, _("IDS_COM_SK_OK"),_("IDS_COM_SK_CANCEL"));
682 if (ad->selInfoPop) {
683 evas_object_del(ad->selInfoPop);
684 ad->selInfoPop = NULL;
689 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
696 retm_if(data == NULL, "Data parameter is NULL");
698 SettingNetworkUG *ad = (SettingNetworkUG *) data;
699 if (ad->selInfoPop) {
700 evas_object_del(ad->selInfoPop);
701 ad->selInfoPop = NULL;
704 ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_NONE;
705 setting_view_change(&setting_view_network_preferred_network_delete,
706 &setting_view_network_preferred_network, ad);