Merge "[Feature] Hide some menus in emulator . ." into 2.0_beta
[apps/core/preloaded/settings.git] / setting-network / src / setting-network-preferred-network-delete.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
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
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  *
20  */
21 #include <setting-network-preferred-network-delete.h>
22
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);
27
28 typedef struct {
29         bool is_checked;
30         Evas_Object *eo_check;
31         int prefer_idx;
32         Setting_GenGroupItem_Data *data_Genitem;
33 } preferred_list_item_t;
34
35 static int check_count = 0;
36
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,
42 };
43
44 static void setting_network_preferred_network_delete_select_all_cb(void *data,
45                                                                    Evas_Object *
46                                                                    obj, void
47                                                                    *event_info);
48 static void setting_network_preferred_network_delete_check_cb(void *data,
49                                                               Evas_Object *obj,
50                                                               void *event_info);
51 static void setting_network_perferred_network_delete_mouse_up_cb(void *data,
52                                                                  Evas_Object *
53                                                                  obj, void
54                                                                  *event_info);
55
56 static void
57 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
58                                                                  Evas_Object *
59                                                                  obj, void
60                                                                  *event_info);
61 static void
62 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
63                                                                  Evas_Object *
64                                                                  obj, void
65                                                                  *event_info);
66 static void setting_network_preferred_network_delete_no_cb(void *cb);
67 static void setting_network_preferred_network_delete_yes_cb(void *cb);
68
69 /* ***************************************************
70  *
71  *basic func
72  *
73  ***************************************************/
74
75 static int setting_network_preferred_network_delete_create(void *cb)
76 {
77         SETTING_TRACE_BEGIN;
78         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
79
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;
84
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"),
88                                          NULL,
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); */
93
94         Evas_Object *sub_layout = elm_layout_add(ad->win_main_layout);
95         elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME,
96                             "search_layout");
97         evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
98         evas_object_show(sub_layout);
99
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);
106
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 */
110
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);
114
115         setting_network_preferred_network_delete_draw_network_list(ad);
116         setting_view_network_preferred_network_delete.is_create = 1;
117
118         return SETTING_RETURN_SUCCESS;
119 }
120
121 static int setting_network_preferred_network_delete_destroy(void *cb)
122 {
123         SETTING_TRACE_BEGIN;
124         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
125
126         elm_naviframe_item_pop(ad->navi_bar);
127         setting_view_network_preferred_network_delete.is_create = 0;
128
129         /* free data */
130         preferred_list_item_t *list_item;
131         if (ad->item_check_list != NULL) {
132                 Eina_List *l = NULL;
133                 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
134                         FREE(list_item);
135                 }
136                 eina_list_free(ad->item_check_list);
137                 ad->item_check_list = NULL;
138         }
139         return SETTING_RETURN_SUCCESS;
140 }
141
142 static int setting_network_preferred_network_delete_update(void *cb)
143 {
144         SETTING_TRACE_BEGIN;
145         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
146
147         setting_network_preferred_network_delete_refresh_view(ad);
148         return SETTING_RETURN_SUCCESS;
149 }
150
151 static int setting_network_preferred_network_delete_cleanup(void *cb)
152 {
153         return setting_network_preferred_network_delete_destroy(cb);
154 }
155
156 /* ***************************************************
157  *
158  *general func
159  *
160  ***************************************************/
161
162 void
163 setting_network_preferred_network_delete_refresh_view(SettingNetworkUG *ad)
164 {
165         SETTING_TRACE_BEGIN;
166         /* int i =0; */
167
168         if (ad->item_check_list) {
169                 eina_list_free(ad->item_check_list);
170                 ad->item_check_list = NULL;
171         }
172         /* create list */
173         setting_network_preferred_network_delete_draw_network_list(ad);
174
175 }
176
177 void
178 setting_network_preferred_network_delete_draw_network_list(SettingNetworkUG *
179                                                            ad)
180 {
181         SETTING_TRACE_BEGIN;
182         int i = 0;
183         preferred_list_item_t *list_item = NULL;
184
185         /* free data */
186         if (ad->item_check_list != NULL) {
187                 Eina_List *l = NULL;
188                 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
189                         FREE(list_item);
190                 }
191                 eina_list_free(ad->item_check_list);
192                 ad->item_check_list = NULL;
193         }
194
195         elm_genlist_clear(ad->scl_pref_del);    /* first to clear list */
196
197         check_count = 0;
198
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;
207         } else {
208                 SETTING_TRACE_ERROR("ad->data_cl_select_all is NULL");
209         }
210
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;
216
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,
222                                                      NULL, NULL, 0,
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;
227                 } else {
228                         SETTING_TRACE_ERROR("ad->data_Genitem is NULL");
229                 }
230
231                 ad->item_check_list =
232                     eina_list_append(ad->item_check_list, list_item);
233         }
234         return;
235 }
236
237 static void
238 setting_network_preferred_network_delete_select_all_cb(void *data,
239                                                        Evas_Object *obj,
240                                                        void *event_info)
241 {
242         SETTING_TRACE_BEGIN;
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),
249                                       &(ad->selInfoPop));
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;
253
254         if (state) {
255                 while (check_list) {
256                         pre_list_item = (preferred_list_item_t *)
257                             eina_list_data_get(check_list);
258                         if (NULL == pre_list_item)
259                                 continue;
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);
264                 }
265                 check_count = ad->pref_list.NumOfPrefPlmns;
266
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),
270                                           "elm.text", text);
271         } else {
272                 while (check_list) {
273                         pre_list_item = (preferred_list_item_t *)
274                             eina_list_data_get(check_list);
275                         if (NULL == pre_list_item)
276                                 continue;
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);
281                 }
282                 check_count = 0;
283                 evas_object_hide(ad->selInfoPop);
284         }
285
286         SETTING_TRACE("check_count:%d", check_count);
287         return;
288 }
289
290 static void
291 setting_network_preferred_network_delete_check_cb(void *data, Evas_Object *obj,
292                                                   void *event_info)
293 {
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),
300                                       &(ad->selInfoPop));
301
302         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
303         if (list_item->chk_status) {
304                 check_count++;
305         } else {
306                 check_count--;
307         }
308
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;
312         } else {
313                 elm_check_state_set(ad->data_cl_select_all->eo_check, 1);
314                 ad->data_cl_select_all->chk_status = 1;
315         }
316
317         SETTING_TRACE("check count is [%d]", check_count);
318         if (!check_count) {
319                 evas_object_hide(ad->selInfoPop);
320                 return;
321         }
322
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);
325
326
327         /*  text set and timeout set */
328         edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text",
329                                   text);
330
331 }
332
333 static void
334 setting_network_perferred_network_delete_mouse_up_cb(void *data,
335                                                      Evas_Object *obj,
336                                                      void *event_info)
337 {
338         SETTING_TRACE_BEGIN;
339         /* error check */
340         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
341
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);
346
347         int old_status = elm_check_state_get(list_item->eo_check);
348         /* new status */
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);
352
353         SettingNetworkUG *ad = list_item->userdata;
354         setting_create_sel_info_popup(ad->sub_clear_layout,
355                                       &(ad->selInfoPop_layout),
356                                       &(ad->selInfoPop));
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;
360
361         if (0 == safeStrCmp(KeyStr_Select_All, list_item->keyStr)) {    /* if(obj == chk_sel_all) */
362                 SETTING_TRACE("Select All");
363                 if (state) {
364                         while (check_list) {
365                                 pre_list_item = (preferred_list_item_t *)
366                                     eina_list_data_get(check_list);
367                                 if (NULL == pre_list_item)
368                                         continue;
369                                 elm_check_state_set
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);
373                         }
374                         check_count = ad->pref_list.NumOfPrefPlmns;
375
376                         char text[MAX_DISPLAY_NAME_LEN_ON_UI];
377                         snprintf(text, sizeof(text), "%d Items Selected",
378                                  check_count);
379                         edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
380                                                   "elm.text", text);
381                 } else {
382                         while (check_list) {
383                                 pre_list_item = (preferred_list_item_t *)
384                                     eina_list_data_get(check_list);
385                                 if (NULL == pre_list_item)
386                                         continue;
387                                 elm_check_state_set
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);
391                         }
392                         check_count = 0;
393                         evas_object_hide(ad->selInfoPop);
394                 }
395         } else {
396                 SETTING_TRACE("Select %s", list_item->keyStr);
397                 if (state) {
398                         check_count++;
399                 } else {
400                         check_count--;
401                 }
402
403                 if (check_count < ad->pref_list.NumOfPrefPlmns) {
404                         elm_check_state_set(ad->data_cl_select_all->eo_check,
405                                             0);
406                         ad->data_cl_select_all->chk_status = 0;
407                 } else {
408                         elm_check_state_set(ad->data_cl_select_all->eo_check,
409                                             1);
410                         ad->data_cl_select_all->chk_status = 1;
411                 }
412
413                 if (!check_count) {
414                         evas_object_hide(ad->selInfoPop);
415                         return;
416                 }
417
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);
420
421                 /*  text set and timeout set */
422                 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
423                                           "elm.text", text);
424         }
425         SETTING_TRACE("check_count:%d", check_count);
426 }
427
428 static bool
429 setting_network_preferred_network_delete_one(SettingNetworkUG *ad,
430                                              preferred_list_item_t *list_item)
431 {
432         retvm_if(list_item == NULL, FALSE, "list_item parameter is NULL");
433         bool ret = TRUE;
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);
442         tapi_ret =
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) {
446                 SETTING_TRACE_DEBUG
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);
450                 ret = FALSE;
451         }
452         return ret;
453 }
454
455 void setting_network_preferred_network_delete_ok(void *data)
456 {
457         SETTING_TRACE_BEGIN;
458         retm_if(data == NULL, "Data parameter is NULL");
459         SettingNetworkUG *ad = (SettingNetworkUG *) data;
460         bool ret = TRUE;
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;
468                 }
469                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"), NULL, POPUP_INTERVAL, FALSE, FALSE);
470
471                 int tapi_ret = TAPI_API_SUCCESS;
472
473                 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
474                 if (tapi_ret != TAPI_API_SUCCESS) {
475                         SETTING_TRACE_DEBUG
476                             ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
477                              SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
478                 }
479         } else {
480                 /* update info */
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,
484                          total_count);
485                 elm_object_text_set(ad->popup_label, info);
486                 /* delete next */
487                 list_item =
488                     eina_list_nth(ad->checked_data_list, ad->deleted_number);
489                 ret =
490                     setting_network_preferred_network_delete_one(ad, list_item);
491                 if (!ret) {
492                         setting_network_preferred_network_delete_failed(ad);
493                 }
494         }
495 }
496
497 void setting_network_preferred_network_delete_failed(void *data)
498 {
499         SETTING_TRACE_BEGIN;
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;
505         }
506         setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Failed!"), NULL, POPUP_INTERVAL, FALSE, FALSE);
507
508
509         int tapi_ret = TAPI_API_SUCCESS;
510
511         tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
512         if (tapi_ret != TAPI_API_SUCCESS) {
513                 SETTING_TRACE_DEBUG
514                     ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
515                      SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
516         }
517 }
518
519 static void setting_network_preferred_network_create_delete_pop(void *data)
520 {
521         SETTING_TRACE_BEGIN;
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;
527         }
528         Evas_Object *popup;
529         popup = elm_popup_add(ad->win_get);
530         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
531                                          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,
545                                          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;
554 }
555
556 /* ***************************************************
557  *
558  *call back func
559  *
560  ***************************************************/
561
562 static void setting_network_preferred_network_delete_yes_cb(void *cb)
563 {
564         SETTING_TRACE_BEGIN;
565         /* error check */
566         retm_if(cb == NULL, "Data parameter is NULL");
567
568         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
569         bool ret = TRUE;
570         if (ad->popup) {
571                 evas_object_del(ad->popup);
572                 ad->popup = NULL;
573         }
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;
580         while (check_list) {
581                 list_item =
582                     (preferred_list_item_t *) eina_list_data_get(check_list);
583                 if (NULL == list_item)
584                         continue;
585                 isChecked = list_item->data_Genitem->chk_status;
586
587                 if (isChecked) {
588                         ad->checked_data_list =
589                             eina_list_prepend(ad->checked_data_list, list_item);
590                 }
591                 check_list = eina_list_next(check_list);
592         }
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);
596         if (!ret) {
597                 setting_network_preferred_network_delete_failed(ad);
598         }
599         ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_DELETE;
600 }
601
602 static void setting_network_preferred_network_delete_no_cb(void *cb)
603 {
604         SETTING_TRACE_BEGIN;
605         /* error check */
606         retm_if(cb == NULL, "Data parameter is NULL");
607
608         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
609
610         if (ad->popup) {
611                 evas_object_del(ad->popup);
612                 ad->popup = NULL;
613         }
614 }
615
616 static void setting_preferred_network_delete_resp_cb(void *data,
617                                                      Evas_Object *obj,
618                                                      void *event_info)
619 {
620         SETTING_TRACE_BEGIN;
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);
626         }
627 }
628
629 static void
630 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
631                                                                  Evas_Object *
632                                                                  obj, void
633                                                                  *event_info)
634 {
635         SETTING_TRACE_BEGIN;
636         /* error check */
637         retm_if(data == NULL, "Data parameter is NULL");
638
639         SettingNetworkUG *ad = (SettingNetworkUG *) data;
640
641         if (ad->pref_list.NumOfPrefPlmns == 1) {
642                 setting_create_simple_popup(ad, ad->win_get,
643                                             NULL, _("Do not Delete!"));
644         } else {
645                 int sel_count = 0;
646                 Eina_List *check_list = ad->item_check_list;
647                 preferred_list_item_t *list_item = NULL;
648                 while (check_list) {
649                         list_item = (preferred_list_item_t *)
650                             eina_list_data_get(check_list);
651                         if (NULL == list_item)
652                                 continue;
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) {
657                                 sel_count++;
658                         }
659                         check_list = eina_list_next(check_list);
660                 }
661
662                 if (0 == sel_count) {
663                         setting_create_simple_popup(ad, ad->win_get,
664                                                     NULL, _("Please select item(s) to process!"));
665                         return;
666                 }
667
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"));
672                 } else {
673                         snprintf(notify_str, sizeof(notify_str),
674                                  "%s %d networks?", _("IDS_COM_SK_DELETE"),
675                                  sel_count);
676                 }
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"));
680         }
681
682         if (ad->selInfoPop) {
683                 evas_object_del(ad->selInfoPop);
684                 ad->selInfoPop = NULL;
685         }
686 }
687
688 static void
689 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
690                                                                  Evas_Object *
691                                                                  obj, void
692                                                                  *event_info)
693 {
694         SETTING_TRACE_BEGIN;
695         /* error check */
696         retm_if(data == NULL, "Data parameter is NULL");
697
698         SettingNetworkUG *ad = (SettingNetworkUG *) data;
699         if (ad->selInfoPop) {
700                 evas_object_del(ad->selInfoPop);
701                 ad->selInfoPop = NULL;
702         }
703
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);
707 }