Tizen 2.0 Release
[apps/home/settings.git] / setting-network / src / setting-network-preferred-network-delete.c
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.0 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://floralicense.org/license/
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #include <setting-network-preferred-network-delete.h>
18
19 static int setting_network_preferred_network_delete_create(void *cb);
20 static int setting_network_preferred_network_delete_destroy(void *cb);
21 static int setting_network_preferred_network_delete_update(void *cb);
22 static int setting_network_preferred_network_delete_cleanup(void *cb);
23
24 typedef struct {
25         bool is_checked;
26         Evas_Object *eo_check;
27         int prefer_idx;
28         Setting_GenGroupItem_Data *data_Genitem;
29 } preferred_list_item_t;
30
31 static int check_count = 0;
32
33 setting_view setting_view_network_preferred_network_delete = {
34         .create = setting_network_preferred_network_delete_create,
35         .destroy = setting_network_preferred_network_delete_destroy,
36         .update = setting_network_preferred_network_delete_update,
37         .cleanup = setting_network_preferred_network_delete_cleanup,
38 };
39
40 static void setting_network_preferred_network_delete_select_all_cb(void *data,
41                                                                    Evas_Object *
42                                                                    obj, void
43                                                                    *event_info);
44 static void setting_network_preferred_network_delete_check_cb(void *data,
45                                                               Evas_Object *obj,
46                                                               void *event_info);
47 static void setting_network_perferred_network_delete_mouse_up_cb(void *data,
48                                                                  Evas_Object *
49                                                                  obj, void
50                                                                  *event_info);
51
52 static void
53 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
54                                                                  Evas_Object *
55                                                                  obj, void
56                                                                  *event_info);
57 static void
58 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
59                                                                  Evas_Object *
60                                                                  obj, void
61                                                                  *event_info);
62 static void setting_network_preferred_network_delete_no_cb(void *cb);
63 static void setting_network_preferred_network_delete_yes_cb(void *cb);
64
65 /* ***************************************************
66  *
67  *basic func
68  *
69  ***************************************************/
70
71 static int setting_network_preferred_network_delete_create(void *cb)
72 {
73         SETTING_TRACE_BEGIN;
74         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
75
76         Evas_Object *layout = elm_layout_add(ad->win_main_layout);
77         elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "selinfo_bottom");
78         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
79         ad->sub_clear_layout = layout;
80
81         setting_push_layout_navi_bar(_("IDS_COM_SK_DELETE"),
82                                      dgettext("sys_string", "IDS_COM_SK_CANCEL"),
83                                      dgettext("sys_string", "IDS_COM_SK_DELETE"),
84                                          NULL,
85                                      setting_network_preferred_network_delete_click_softkey_cancel_cb,
86                                      setting_network_preferred_network_delete_click_softkey_delete_cb,
87                                      NULL, ad, layout, ad->navi_bar, NULL);
88         /* elm_object_item_disabled_set(elm_toolbar_last_item_get(ad->controllbar_clear), EINA_TRUE); */
89
90         Evas_Object *sub_layout = elm_layout_add(ad->win_main_layout);
91         elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME,
92                             "search_layout");
93         evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
94         evas_object_show(sub_layout);
95
96         ad->gl_sel_all = elm_genlist_add(ad->win_main_layout);
97         elm_object_style_set(ad->gl_sel_all, "dialogue");
98         retvm_if(ad->gl_sel_all == NULL, SETTING_RETURN_FAIL,
99                  "gl_sel_all == NULL");
100         elm_genlist_clear(ad->gl_sel_all);      /* first to clear list */
101         elm_genlist_bounce_set(ad->gl_sel_all, 0, 0);
102
103         ad->scl_pref_del = elm_genlist_add(ad->win_main_layout);
104         elm_object_style_set(ad->scl_pref_del, "dialogue");
105         elm_genlist_clear(ad->scl_pref_del);    /* first to clear list */
106
107         elm_object_part_content_set(sub_layout, "search_list", ad->scl_pref_del);
108         elm_object_part_content_set(sub_layout, "search_bar", ad->gl_sel_all);
109         elm_object_part_content_set(layout, "elm.swallow.contents", sub_layout);
110
111         setting_network_preferred_network_delete_draw_network_list(ad);
112         setting_view_network_preferred_network_delete.is_create = 1;
113
114         return SETTING_RETURN_SUCCESS;
115 }
116
117 static int setting_network_preferred_network_delete_destroy(void *cb)
118 {
119         SETTING_TRACE_BEGIN;
120         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
121
122         elm_naviframe_item_pop(ad->navi_bar);
123         setting_view_network_preferred_network_delete.is_create = 0;
124
125         /* free data */
126         preferred_list_item_t *list_item;
127         if (ad->item_check_list != NULL) {
128                 Eina_List *l = NULL;
129                 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
130                         FREE(list_item);
131                 }
132                 eina_list_free(ad->item_check_list);
133                 ad->item_check_list = NULL;
134         }
135         return SETTING_RETURN_SUCCESS;
136 }
137
138 static int setting_network_preferred_network_delete_update(void *cb)
139 {
140         SETTING_TRACE_BEGIN;
141         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
142
143         setting_network_preferred_network_delete_refresh_view(ad);
144         return SETTING_RETURN_SUCCESS;
145 }
146
147 static int setting_network_preferred_network_delete_cleanup(void *cb)
148 {
149         return setting_network_preferred_network_delete_destroy(cb);
150 }
151
152 /* ***************************************************
153  *
154  *general func
155  *
156  ***************************************************/
157
158 void
159 setting_network_preferred_network_delete_refresh_view(SettingNetworkUG *ad)
160 {
161         SETTING_TRACE_BEGIN;
162         /* int i =0; */
163
164         if (ad->item_check_list) {
165                 eina_list_free(ad->item_check_list);
166                 ad->item_check_list = NULL;
167         }
168         /* create list */
169         setting_network_preferred_network_delete_draw_network_list(ad);
170
171 }
172
173 void
174 setting_network_preferred_network_delete_draw_network_list(SettingNetworkUG *
175                                                            ad)
176 {
177         SETTING_TRACE_BEGIN;
178         int i = 0;
179         preferred_list_item_t *list_item = NULL;
180
181         /* free data */
182         if (ad->item_check_list != NULL) {
183                 Eina_List *l = NULL;
184                 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
185                         FREE(list_item);
186                 }
187                 eina_list_free(ad->item_check_list);
188                 ad->item_check_list = NULL;
189         }
190
191         elm_genlist_clear(ad->scl_pref_del);    /* first to clear list */
192
193         check_count = 0;
194
195         ad->data_cl_select_all =
196             setting_create_Gendial_field_def(ad->gl_sel_all, &itc_sel_all,
197                                              setting_network_perferred_network_delete_mouse_up_cb,
198                                              ad, SWALLOW_Type_1CHECK, NULL,
199                                              NULL, 0, KeyStr_Select_All, NULL,
200                                              setting_network_preferred_network_delete_select_all_cb);
201         if (ad->data_cl_select_all) {
202                 ad->data_cl_select_all->userdata = ad;
203         } else {
204                 SETTING_TRACE_ERROR("ad->data_cl_select_all is NULL");
205         }
206
207         for (i = 0; i < ad->pref_list.NumOfPrefPlmns; i++) {
208                 list_item = calloc(1, sizeof(preferred_list_item_t));
209                 setting_retm_if(!list_item, "calloc failed");
210                 list_item->prefer_idx = i;
211                 list_item->is_checked = 0;
212
213                 list_item->data_Genitem =
214                     setting_create_Gendial_field_def(ad->scl_pref_del,
215                                                      &itc_cm_1text_1icon_2,
216                                                      setting_network_perferred_network_delete_mouse_up_cb,
217                                                      ad, SWALLOW_Type_1CHECK,
218                                                      NULL, NULL, 0,
219                                                      _(ad->pref_list.PrefPlmnRecord[i].network_name), NULL,
220                                                      setting_network_preferred_network_delete_check_cb);
221                 if (list_item->data_Genitem) {
222                         list_item->data_Genitem->userdata = ad;
223                 } else {
224                         SETTING_TRACE_ERROR("ad->data_Genitem is NULL");
225                 }
226
227                 ad->item_check_list =
228                     eina_list_append(ad->item_check_list, list_item);
229         }
230         return;
231 }
232
233 static void
234 setting_network_preferred_network_delete_select_all_cb(void *data,
235                                                        Evas_Object *obj,
236                                                        void *event_info)
237 {
238         SETTING_TRACE_BEGIN;
239         retm_if(data == NULL, "Data parameter is NULL");
240         Setting_GenGroupItem_Data *list_item =
241             (Setting_GenGroupItem_Data *) data;
242         SettingNetworkUG *ad = list_item->userdata;
243         setting_create_sel_info_popup(ad->sub_clear_layout,
244                                       &(ad->selInfoPop_layout),
245                                       &(ad->selInfoPop));
246         int state = list_item->chk_status = elm_check_state_get(obj);   /*  for genlist update status */
247         Eina_List *check_list = ad->item_check_list;
248         preferred_list_item_t *pre_list_item = NULL;
249
250         if (state) {
251                 while (check_list) {
252                         pre_list_item = (preferred_list_item_t *)
253                             eina_list_data_get(check_list);
254                         if (NULL == pre_list_item)
255                                 continue;
256                         elm_check_state_set(pre_list_item->
257                                             data_Genitem->eo_check, 1);
258                         pre_list_item->data_Genitem->chk_status = 1;
259                         check_list = eina_list_next(check_list);
260                 }
261                 check_count = ad->pref_list.NumOfPrefPlmns;
262
263                 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
264                 snprintf(text, sizeof(text), "%d Items Selected", check_count);
265                 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
266                                           "elm.text", text);
267         } else {
268                 while (check_list) {
269                         pre_list_item = (preferred_list_item_t *)
270                             eina_list_data_get(check_list);
271                         if (NULL == pre_list_item)
272                                 continue;
273                         elm_check_state_set(pre_list_item->
274                                             data_Genitem->eo_check, 0);
275                         pre_list_item->data_Genitem->chk_status = 0;
276                         check_list = eina_list_next(check_list);
277                 }
278                 check_count = 0;
279                 evas_object_hide(ad->selInfoPop);
280         }
281
282         SETTING_TRACE("check_count:%d", check_count);
283         return;
284 }
285
286 static void
287 setting_network_preferred_network_delete_check_cb(void *data, Evas_Object *obj,
288                                                   void *event_info)
289 {
290         retm_if(data == NULL, "Data parameter is NULL");
291         Setting_GenGroupItem_Data *list_item =
292             (Setting_GenGroupItem_Data *) data;
293         SettingNetworkUG *ad = list_item->userdata;
294         setting_create_sel_info_popup(ad->sub_clear_layout,
295                                       &(ad->selInfoPop_layout),
296                                       &(ad->selInfoPop));
297
298         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
299         if (list_item->chk_status) {
300                 check_count++;
301         } else {
302                 check_count--;
303         }
304
305         if (check_count < ad->pref_list.NumOfPrefPlmns) {
306                 elm_check_state_set(ad->data_cl_select_all->eo_check, 0);
307                 ad->data_cl_select_all->chk_status = 0;
308         } else {
309                 elm_check_state_set(ad->data_cl_select_all->eo_check, 1);
310                 ad->data_cl_select_all->chk_status = 1;
311         }
312
313         SETTING_TRACE("check count is [%d]", check_count);
314         if (!check_count) {
315                 evas_object_hide(ad->selInfoPop);
316                 return;
317         }
318
319         char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
320         snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%d %s", check_count, KeyStr_Item_Sel);
321
322
323         /*  text set and timeout set */
324         edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text",
325                                   text);
326
327 }
328
329 static void
330 setting_network_perferred_network_delete_mouse_up_cb(void *data,
331                                                      Evas_Object *obj,
332                                                      void *event_info)
333 {
334         SETTING_TRACE_BEGIN;
335         /* error check */
336         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
337
338         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
339         elm_genlist_item_selected_set(item, 0);
340         Setting_GenGroupItem_Data *list_item =
341             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
342
343         int old_status = elm_check_state_get(list_item->eo_check);
344         /* new status */
345         list_item->chk_status = !old_status;
346         elm_check_state_set(list_item->eo_check, list_item->chk_status);
347         SETTING_TRACE("list_item->keyStr:%s", list_item->keyStr);
348
349         SettingNetworkUG *ad = list_item->userdata;
350         setting_create_sel_info_popup(ad->sub_clear_layout,
351                                       &(ad->selInfoPop_layout),
352                                       &(ad->selInfoPop));
353         int state = elm_check_state_get(list_item->eo_check);   /*  for genlist update status */
354         Eina_List *check_list = ad->item_check_list;
355         preferred_list_item_t *pre_list_item = NULL;
356
357         if (0 == safeStrCmp(KeyStr_Select_All, list_item->keyStr)) {    /* if(obj == chk_sel_all) */
358                 SETTING_TRACE("Select All");
359                 if (state) {
360                         while (check_list) {
361                                 pre_list_item = (preferred_list_item_t *)
362                                     eina_list_data_get(check_list);
363                                 if (NULL == pre_list_item)
364                                         continue;
365                                 elm_check_state_set
366                                     (pre_list_item->data_Genitem->eo_check, 1);
367                                 pre_list_item->data_Genitem->chk_status = 1;
368                                 check_list = eina_list_next(check_list);
369                         }
370                         check_count = ad->pref_list.NumOfPrefPlmns;
371
372                         char text[MAX_DISPLAY_NAME_LEN_ON_UI];
373                         snprintf(text, sizeof(text), "%d Items Selected",
374                                  check_count);
375                         edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
376                                                   "elm.text", text);
377                 } else {
378                         while (check_list) {
379                                 pre_list_item = (preferred_list_item_t *)
380                                     eina_list_data_get(check_list);
381                                 if (NULL == pre_list_item)
382                                         continue;
383                                 elm_check_state_set
384                                     (pre_list_item->data_Genitem->eo_check, 0);
385                                 pre_list_item->data_Genitem->chk_status = 0;
386                                 check_list = eina_list_next(check_list);
387                         }
388                         check_count = 0;
389                         evas_object_hide(ad->selInfoPop);
390                 }
391         } else {
392                 SETTING_TRACE("Select %s", list_item->keyStr);
393                 if (state) {
394                         check_count++;
395                 } else {
396                         check_count--;
397                 }
398
399                 if (check_count < ad->pref_list.NumOfPrefPlmns) {
400                         elm_check_state_set(ad->data_cl_select_all->eo_check,
401                                             0);
402                         ad->data_cl_select_all->chk_status = 0;
403                 } else {
404                         elm_check_state_set(ad->data_cl_select_all->eo_check,
405                                             1);
406                         ad->data_cl_select_all->chk_status = 1;
407                 }
408
409                 if (!check_count) {
410                         evas_object_hide(ad->selInfoPop);
411                         return;
412                 }
413
414                 char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
415                 snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%d %s", check_count, KeyStr_Item_Sel);
416
417                 /*  text set and timeout set */
418                 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
419                                           "elm.text", text);
420         }
421         SETTING_TRACE("check_count:%d", check_count);
422 }
423
424 static bool
425 setting_network_preferred_network_delete_one(SettingNetworkUG *ad,
426                                              preferred_list_item_t *list_item)
427 {
428         retvm_if(list_item == NULL, FALSE, "list_item parameter is NULL");
429         bool ret = TRUE;
430         int tapi_ret = TAPI_API_SUCCESS;
431         TelNetworkPreferredPlmnInfo_t preff_plmn_info = { 0, };
432         memcpy(&preff_plmn_info,
433                &ad->pref_list.PrefPlmnRecord[list_item->prefer_idx],
434                sizeof(TelNetworkPreferredPlmnInfo_t));
435         SETTING_TRACE_WARNING
436             ("preff_plmn_info.network_name = %s, preff_plmn_info.Index = %d",
437              preff_plmn_info.network_name, preff_plmn_info.Index);
438         tapi_ret =
439             tel_set_network_preferred_plmn(ad->handle, TAPI_NETWORK_PREF_PLMN_DELETE,
440                                            &preff_plmn_info, setting_tapi_set_preferred_plmn_cb, ad);
441         if (tapi_ret != TAPI_API_SUCCESS) {
442                 SETTING_TRACE_DEBUG
443                     ("%s*** [ERR] tel_set_network_preferred_plmn(PLMN_DEL) err=%d ***%s",
444                      SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
445                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Delete Failed"), NULL, POPUP_INTERVAL, FALSE, FALSE);
446                 ret = FALSE;
447         }
448         return ret;
449 }
450
451 void setting_network_preferred_network_delete_ok(void *data)
452 {
453         SETTING_TRACE_BEGIN;
454         retm_if(data == NULL, "Data parameter is NULL");
455         SettingNetworkUG *ad = (SettingNetworkUG *) data;
456         bool ret = TRUE;
457         preferred_list_item_t *list_item = NULL;
458         int total_count = eina_list_count(ad->checked_data_list);
459         ad->deleted_number++;
460         if (ad->deleted_number >= total_count) {
461                 if (ad->network_ug_pop != NULL) {
462                         evas_object_del(ad->network_ug_pop);
463                         ad->network_ug_pop = NULL;
464                 }
465                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"), NULL, POPUP_INTERVAL, FALSE, FALSE);
466
467                 int tapi_ret = TAPI_API_SUCCESS;
468
469                 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
470                 if (tapi_ret != TAPI_API_SUCCESS) {
471                         SETTING_TRACE_DEBUG
472                             ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
473                              SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
474                 }
475         } else {
476                 /* update info */
477                 char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
478                 snprintf(info, sizeof(info), "%s (%d/%d)",
479                          _("IDS_COM_SK_DELETE"), ad->deleted_number,
480                          total_count);
481                 elm_object_text_set(ad->popup_label, info);
482                 /* delete next */
483                 list_item =
484                     eina_list_nth(ad->checked_data_list, ad->deleted_number);
485                 ret =
486                     setting_network_preferred_network_delete_one(ad, list_item);
487                 if (!ret) {
488                         setting_network_preferred_network_delete_failed(ad);
489                 }
490         }
491 }
492
493 void setting_network_preferred_network_delete_failed(void *data)
494 {
495         SETTING_TRACE_BEGIN;
496         retm_if(data == NULL, "Data parameter is NULL");
497         SettingNetworkUG *ad = (SettingNetworkUG *) data;
498         if (ad->network_ug_pop != NULL) {
499                 evas_object_del(ad->network_ug_pop);
500                 ad->network_ug_pop = NULL;
501         }
502         setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Failed!"), NULL, POPUP_INTERVAL, FALSE, FALSE);
503
504
505         int tapi_ret = TAPI_API_SUCCESS;
506
507         tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
508         if (tapi_ret != TAPI_API_SUCCESS) {
509                 SETTING_TRACE_DEBUG
510                     ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
511                      SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
512         }
513 }
514
515 static void setting_network_preferred_network_create_delete_pop(void *data)
516 {
517         SETTING_TRACE_BEGIN;
518         retm_if(data == NULL, "Data parameter is NULL");
519         SettingNetworkUG *ad = (SettingNetworkUG *) data;
520         if (ad->network_ug_pop != NULL) {
521                 evas_object_del(ad->network_ug_pop);
522                 ad->network_ug_pop = NULL;
523         }
524         Evas_Object *popup;
525         popup = elm_popup_add(ad->win_get);
526         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
527                                          EVAS_HINT_EXPAND);
528         Evas_Object *box, *progressbar;
529         ad->popup_label = elm_label_add(popup);
530         char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
531         snprintf(info, sizeof(info), "%s (%d/%d)", _("IDS_COM_SK_DELETE"),
532                  ad->deleted_number, eina_list_count(ad->checked_data_list));
533         elm_object_text_set(ad->popup_label, info);
534         evas_object_show(ad->popup_label);
535         box = elm_box_add(popup);
536         progressbar = elm_progressbar_add(popup);
537         elm_object_style_set(progressbar, "pending_list");
538         elm_progressbar_pulse(progressbar, EINA_TRUE);
539         evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
540         evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND,
541                                          EVAS_HINT_EXPAND);
542         elm_progressbar_pulse(progressbar, EINA_TRUE);
543         evas_object_show(progressbar);
544         elm_box_pack_end(box, ad->popup_label);
545         elm_box_pack_end(box, progressbar);
546         evas_object_show(box);
547         elm_object_content_set(popup, box);
548         evas_object_show(popup);
549         ad->network_ug_pop = popup;
550 }
551
552 /* ***************************************************
553  *
554  *call back func
555  *
556  ***************************************************/
557
558 static void setting_network_preferred_network_delete_yes_cb(void *cb)
559 {
560         SETTING_TRACE_BEGIN;
561         /* error check */
562         retm_if(cb == NULL, "Data parameter is NULL");
563
564         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
565         bool ret = TRUE;
566         if (ad->popup) {
567                 evas_object_del(ad->popup);
568                 ad->popup = NULL;
569         }
570         ad->deleted_number = 0;
571         eina_list_free(ad->checked_data_list);
572         ad->checked_data_list = NULL;
573         Eina_List *check_list = ad->item_check_list;
574         preferred_list_item_t *list_item = NULL;
575         bool isChecked = FALSE;
576         while (check_list) {
577                 list_item =
578                     (preferred_list_item_t *) eina_list_data_get(check_list);
579                 if (NULL == list_item)
580                         continue;
581                 isChecked = list_item->data_Genitem->chk_status;
582
583                 if (isChecked) {
584                         ad->checked_data_list =
585                             eina_list_prepend(ad->checked_data_list, list_item);
586                 }
587                 check_list = eina_list_next(check_list);
588         }
589         setting_network_preferred_network_create_delete_pop(ad);
590         list_item = eina_list_nth(ad->checked_data_list, ad->deleted_number);
591         ret = setting_network_preferred_network_delete_one(ad, list_item);
592         if (!ret) {
593                 setting_network_preferred_network_delete_failed(ad);
594         }
595         ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_DELETE;
596 }
597
598 static void setting_network_preferred_network_delete_no_cb(void *cb)
599 {
600         SETTING_TRACE_BEGIN;
601         /* error check */
602         retm_if(cb == NULL, "Data parameter is NULL");
603
604         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
605
606         if (ad->popup) {
607                 evas_object_del(ad->popup);
608                 ad->popup = NULL;
609         }
610 }
611
612 static void setting_preferred_network_delete_resp_cb(void *data,
613                                                      Evas_Object *obj,
614                                                      void *event_info)
615 {
616         SETTING_TRACE_BEGIN;
617         int response_type = btn_type(obj);
618         if (POPUP_RESPONSE_OK == response_type) {
619                 setting_network_preferred_network_delete_yes_cb(data);
620         } else if (POPUP_RESPONSE_CANCEL == response_type) {
621                 setting_network_preferred_network_delete_no_cb(data);
622         }
623 }
624
625 static void
626 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
627                                                                  Evas_Object *
628                                                                  obj, void
629                                                                  *event_info)
630 {
631         SETTING_TRACE_BEGIN;
632         /* error check */
633         retm_if(data == NULL, "Data parameter is NULL");
634
635         SettingNetworkUG *ad = (SettingNetworkUG *) data;
636
637         if (ad->pref_list.NumOfPrefPlmns == 1) {
638                 setting_create_simple_popup(ad, ad->win_get,
639                                             NULL, _("Do not Delete!"));
640         } else {
641                 int sel_count = 0;
642                 Eina_List *check_list = ad->item_check_list;
643                 preferred_list_item_t *list_item = NULL;
644                 while (check_list) {
645                         list_item = (preferred_list_item_t *)
646                             eina_list_data_get(check_list);
647                         if (NULL == list_item)
648                                 continue;
649                         SETTING_TRACE("item[%d]'s check flag is %d",
650                                       list_item->prefer_idx,
651                                       list_item->data_Genitem->chk_status);
652                         if (list_item->data_Genitem->chk_status) {
653                                 sel_count++;
654                         }
655                         check_list = eina_list_next(check_list);
656                 }
657
658                 if (0 == sel_count) {
659                         setting_create_simple_popup(ad, ad->win_get,
660                                                     NULL, _("Please select item(s) to process!"));
661                         return;
662                 }
663
664                 char notify_str[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
665                 if (1 == sel_count) {
666                         snprintf(notify_str, sizeof(notify_str),
667                                  "%s 1 network?", _("IDS_COM_SK_DELETE"));
668                 } else {
669                         snprintf(notify_str, sizeof(notify_str),
670                                  "%s %d networks?", _("IDS_COM_SK_DELETE"),
671                                  sel_count);
672                 }
673                 ad->popup = setting_create_popup_with_btn(ad, ad->win_get, NULL, notify_str,
674                                                  setting_preferred_network_delete_resp_cb,
675                                                  0, 2, _("IDS_COM_SK_OK"),_("IDS_COM_SK_CANCEL"));
676         }
677
678         if (ad->selInfoPop) {
679                 evas_object_del(ad->selInfoPop);
680                 ad->selInfoPop = NULL;
681         }
682 }
683
684 static void
685 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
686                                                                  Evas_Object *
687                                                                  obj, void
688                                                                  *event_info)
689 {
690         SETTING_TRACE_BEGIN;
691         /* error check */
692         retm_if(data == NULL, "Data parameter is NULL");
693
694         SettingNetworkUG *ad = (SettingNetworkUG *) data;
695         if (ad->selInfoPop) {
696                 evas_object_del(ad->selInfoPop);
697                 ad->selInfoPop = NULL;
698         }
699
700         ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_NONE;
701         setting_view_change(&setting_view_network_preferred_network_delete,
702                             &setting_view_network_preferred_network, ad);
703 }