tizen 2.3 release
[apps/home/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 #include <efl_assist.h>
23
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);
28
29 typedef struct {
30         bool is_checked;
31         Evas_Object *eo_check;
32         int prefer_idx;
33         Setting_GenGroupItem_Data *data_Genitem;
34 } preferred_list_item_t;
35
36 static int check_count = 0;
37
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,
43 };
44
45 static void setting_network_preferred_network_delete_select_all_cb(void *data,
46                                                                    Evas_Object *
47                                                                    obj, void
48                                                                    *event_info);
49 static void setting_network_preferred_network_delete_check_cb(void *data,
50                                                               Evas_Object *obj,
51                                                               void *event_info);
52 static void setting_network_perferred_network_delete_mouse_up_cb(void *data,
53                                                                  Evas_Object *
54                                                                  obj, void
55                                                                  *event_info);
56
57 static void
58 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
59                                                                  Evas_Object *
60                                                                  obj, void
61                                                                  *event_info);
62 static void
63 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
64                                                                  Evas_Object *
65                                                                  obj, void
66                                                                  *event_info);
67 static void setting_network_preferred_network_delete_no_cb(void *cb);
68 static void setting_network_preferred_network_delete_yes_cb(void *cb);
69
70 /* ***************************************************
71  *
72  *basic func
73  *
74  ***************************************************/
75
76 static int setting_network_preferred_network_delete_create(void *cb)
77 {
78         SETTING_TRACE_BEGIN;
79         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
80
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;
85
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"),
89                                          NULL,
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); */
94
95         Evas_Object *sub_layout = elm_layout_add(ad->win_main_layout);
96         elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME,
97                             "search_layout");
98         evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
99         evas_object_show(sub_layout);
100
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);
109
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);
117
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);
121
122         setting_network_preferred_network_delete_draw_network_list(ad);
123         setting_view_network_preferred_network_delete.is_create = 1;
124
125         return SETTING_RETURN_SUCCESS;
126 }
127
128 static int setting_network_preferred_network_delete_destroy(void *cb)
129 {
130         SETTING_TRACE_BEGIN;
131         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
132
133         elm_naviframe_item_pop(ad->navi_bar);
134         setting_view_network_preferred_network_delete.is_create = 0;
135
136         /* free data */
137         preferred_list_item_t *list_item;
138         if (ad->item_check_list != NULL) {
139                 Eina_List *l = NULL;
140                 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
141                         FREE(list_item);
142                 }
143                 eina_list_free(ad->item_check_list);
144                 ad->item_check_list = NULL;
145         }
146         return SETTING_RETURN_SUCCESS;
147 }
148
149 static int setting_network_preferred_network_delete_update(void *cb)
150 {
151         SETTING_TRACE_BEGIN;
152         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
153
154         setting_network_preferred_network_delete_refresh_view(ad);
155         return SETTING_RETURN_SUCCESS;
156 }
157
158 static int setting_network_preferred_network_delete_cleanup(void *cb)
159 {
160         return setting_network_preferred_network_delete_destroy(cb);
161 }
162
163 /* ***************************************************
164  *
165  *general func
166  *
167  ***************************************************/
168
169 void
170 setting_network_preferred_network_delete_refresh_view(SettingNetworkUG *ad)
171 {
172         SETTING_TRACE_BEGIN;
173         /* int i =0; */
174
175         if (ad->item_check_list) {
176                 eina_list_free(ad->item_check_list);
177                 ad->item_check_list = NULL;
178         }
179         /* create list */
180         setting_network_preferred_network_delete_draw_network_list(ad);
181
182 }
183
184 void
185 setting_network_preferred_network_delete_draw_network_list(SettingNetworkUG *
186                                                            ad)
187 {
188         SETTING_TRACE_BEGIN;
189         int i = 0;
190         preferred_list_item_t *list_item = NULL;
191
192         /* free data */
193         if (ad->item_check_list != NULL) {
194                 Eina_List *l = NULL;
195                 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
196                         FREE(list_item);
197                 }
198                 eina_list_free(ad->item_check_list);
199                 ad->item_check_list = NULL;
200         }
201
202         elm_genlist_clear(ad->scl_pref_del);    /* first to clear list */
203
204         check_count = 0;
205
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;
214         } else {
215                 SETTING_TRACE_ERROR("ad->data_cl_select_all is NULL");
216         }
217
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;
223
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,
229                                                      NULL, NULL, 0,
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;
234                 } else {
235                         SETTING_TRACE_ERROR("ad->data_Genitem is NULL");
236                 }
237
238                 ad->item_check_list =
239                     eina_list_append(ad->item_check_list, list_item);
240         }
241         return;
242 }
243
244 static void
245 setting_network_preferred_network_delete_select_all_cb(void *data,
246                                                        Evas_Object *obj,
247                                                        void *event_info)
248 {
249         SETTING_TRACE_BEGIN;
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),
256                                       &(ad->selInfoPop));
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;
260
261         if (state) {
262                 while (check_list) {
263                         pre_list_item = (preferred_list_item_t *)
264                             eina_list_data_get(check_list);
265                         if (NULL == pre_list_item)
266                                 continue;
267                         setting_update_gl_item_chk_status(pre_list_item->data_Genitem, 1);
268                         check_list = eina_list_next(check_list);
269                 }
270                 check_count = ad->pref_list.NumOfPrefPlmns;
271
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),
275                                           "elm.text", text);
276         } else {
277                 while (check_list) {
278                         pre_list_item = (preferred_list_item_t *)
279                             eina_list_data_get(check_list);
280                         if (NULL == pre_list_item)
281                                 continue;
282                         setting_update_gl_item_chk_status(pre_list_item->data_Genitem, 0);
283
284                         check_list = eina_list_next(check_list);
285                 }
286                 check_count = 0;
287                 evas_object_hide(ad->selInfoPop);
288         }
289
290         SETTING_TRACE("check_count:%d", check_count);
291         return;
292 }
293
294 static void
295 setting_network_preferred_network_delete_check_cb(void *data, Evas_Object *obj,
296                                                   void *event_info)
297 {
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),
304                                       &(ad->selInfoPop));
305
306         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
307         if (list_item->chk_status) {
308                 check_count++;
309         } else {
310                 check_count--;
311         }
312
313         if (check_count < ad->pref_list.NumOfPrefPlmns) {
314                 setting_update_gl_item_chk_status(ad->data_cl_select_all, 0);
315         } else {
316                 setting_update_gl_item_chk_status(ad->data_cl_select_all, 1);
317         }
318
319         SETTING_TRACE("check count is [%d]", check_count);
320         if (!check_count) {
321                 evas_object_hide(ad->selInfoPop);
322                 return;
323         }
324
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);
327
328
329         /*  text set and timeout set */
330         edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text",
331                                   text);
332
333 }
334
335 static void
336 setting_network_perferred_network_delete_mouse_up_cb(void *data,
337                                                      Evas_Object *obj,
338                                                      void *event_info)
339 {
340         SETTING_TRACE_BEGIN;
341         /* error check */
342         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
343
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);
348
349         setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
350         SETTING_TRACE("list_item->keyStr:%s", list_item->keyStr);
351
352         SettingNetworkUG *ad = list_item->userdata;
353         setting_create_sel_info_popup(ad->sub_clear_layout,
354                                       &(ad->selInfoPop_layout),
355                                       &(ad->selInfoPop));
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;
359
360         if (0 == safeStrCmp(KeyStr_Select_All, list_item->keyStr)) {    /* if(obj == chk_sel_all) */
361                 SETTING_TRACE("Select All");
362                 if (state) {
363                         while (check_list) {
364                                 pre_list_item = (preferred_list_item_t *)
365                                     eina_list_data_get(check_list);
366                                 if (NULL == pre_list_item)
367                                         continue;
368                                 setting_update_gl_item_chk_status(pre_list_item->data_Genitem, 1);
369                                 check_list = eina_list_next(check_list);
370                         }
371                         check_count = ad->pref_list.NumOfPrefPlmns;
372
373                         char text[MAX_DISPLAY_NAME_LEN_ON_UI];
374                         snprintf(text, sizeof(text), "%d Items Selected",
375                                  check_count);
376                         edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
377                                                   "elm.text", text);
378                 } else {
379                         while (check_list) {
380                                 pre_list_item = (preferred_list_item_t *)
381                                     eina_list_data_get(check_list);
382                                 if (NULL == pre_list_item)
383                                         continue;
384                                 setting_update_gl_item_chk_status(pre_list_item->data_Genitem, 0);
385                                 check_list = eina_list_next(check_list);
386                         }
387                         check_count = 0;
388                         evas_object_hide(ad->selInfoPop);
389                 }
390         } else {
391                 SETTING_TRACE("Select %s", list_item->keyStr);
392                 if (state) {
393                         check_count++;
394                 } else {
395                         check_count--;
396                 }
397
398                 if (check_count < ad->pref_list.NumOfPrefPlmns) {
399                         setting_update_gl_item_chk_status(ad->data_cl_select_all, 0);
400                 } else {
401                         setting_update_gl_item_chk_status(ad->data_cl_select_all, 1);
402                 }
403
404                 if (!check_count) {
405                         evas_object_hide(ad->selInfoPop);
406                         return;
407                 }
408
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);
411
412                 /*  text set and timeout set */
413                 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
414                                           "elm.text", text);
415         }
416         SETTING_TRACE("check_count:%d", check_count);
417 }
418
419 static bool
420 setting_network_preferred_network_delete_one(SettingNetworkUG *ad,
421                                              preferred_list_item_t *list_item)
422 {
423         retvm_if(list_item == NULL, FALSE, "list_item parameter is NULL");
424         bool ret = TRUE;
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);
433         tapi_ret =
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) {
437                 SETTING_TRACE_DEBUG
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);
441                 ret = FALSE;
442         }
443         return ret;
444 }
445
446 void setting_network_preferred_network_delete_ok(void *data)
447 {
448         SETTING_TRACE_BEGIN;
449         retm_if(data == NULL, "Data parameter is NULL");
450         SettingNetworkUG *ad = (SettingNetworkUG *) data;
451         bool ret = TRUE;
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;
459                 }
460                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"), NULL, POPUP_INTERVAL, FALSE, FALSE);
461
462                 int tapi_ret = TAPI_API_SUCCESS;
463
464                 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
465                 if (tapi_ret != TAPI_API_SUCCESS) {
466                         SETTING_TRACE_DEBUG
467                             ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
468                              SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
469                 }
470         } else {
471                 /* update info */
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,
475                          total_count);
476                 elm_object_text_set(ad->popup_label, info);
477                 /* delete next */
478                 list_item =
479                     eina_list_nth(ad->checked_data_list, ad->deleted_number);
480                 ret =
481                     setting_network_preferred_network_delete_one(ad, list_item);
482                 if (!ret) {
483                         setting_network_preferred_network_delete_failed(ad);
484                 }
485         }
486 }
487
488 void setting_network_preferred_network_delete_failed(void *data)
489 {
490         SETTING_TRACE_BEGIN;
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;
496         }
497         setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Failed!"), NULL, POPUP_INTERVAL, FALSE, FALSE);
498
499
500         int tapi_ret = TAPI_API_SUCCESS;
501
502         tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
503         if (tapi_ret != TAPI_API_SUCCESS) {
504                 SETTING_TRACE_DEBUG
505                     ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
506                      SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
507         }
508 }
509
510 static void setting_network_preferred_network_create_delete_pop(void *data)
511 {
512         SETTING_TRACE_BEGIN;
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;
518         }
519         Evas_Object *popup;
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,
524                                          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,
538                                          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;
547 }
548
549 /* ***************************************************
550  *
551  *call back func
552  *
553  ***************************************************/
554
555 static void setting_network_preferred_network_delete_yes_cb(void *cb)
556 {
557         SETTING_TRACE_BEGIN;
558         /* error check */
559         retm_if(cb == NULL, "Data parameter is NULL");
560
561         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
562         bool ret = TRUE;
563         if (ad->popup) {
564                 evas_object_del(ad->popup);
565                 ad->popup = NULL;
566         }
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;
573         while (check_list) {
574                 list_item =
575                     (preferred_list_item_t *) eina_list_data_get(check_list);
576                 if (NULL == list_item)
577                         continue;
578                 isChecked = list_item->data_Genitem->chk_status;
579
580                 if (isChecked) {
581                         ad->checked_data_list =
582                             eina_list_prepend(ad->checked_data_list, list_item);
583                 }
584                 check_list = eina_list_next(check_list);
585         }
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);
589         if (!ret) {
590                 setting_network_preferred_network_delete_failed(ad);
591         }
592         ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_DELETE;
593 }
594
595 static void setting_network_preferred_network_delete_no_cb(void *cb)
596 {
597         SETTING_TRACE_BEGIN;
598         /* error check */
599         retm_if(cb == NULL, "Data parameter is NULL");
600
601         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
602
603         if (ad->popup) {
604                 evas_object_del(ad->popup);
605                 ad->popup = NULL;
606         }
607 }
608
609 static void setting_preferred_network_delete_resp_cb(void *data,
610                                                      Evas_Object *obj,
611                                                      void *event_info)
612 {
613         SETTING_TRACE_BEGIN;
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);
619         }
620 }
621
622 static void
623 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
624                                                                  Evas_Object *
625                                                                  obj, void
626                                                                  *event_info)
627 {
628         SETTING_TRACE_BEGIN;
629         /* error check */
630         retm_if(data == NULL, "Data parameter is NULL");
631
632         SettingNetworkUG *ad = (SettingNetworkUG *) data;
633
634         if (ad->pref_list.NumOfPrefPlmns == 1) {
635                 setting_create_simple_popup(ad, ad->win_get,
636                                             NULL, _("Do not Delete!"));
637         } else {
638                 int sel_count = 0;
639                 Eina_List *check_list = ad->item_check_list;
640                 preferred_list_item_t *list_item = NULL;
641                 while (check_list) {
642                         list_item = (preferred_list_item_t *)
643                             eina_list_data_get(check_list);
644                         if (NULL == list_item)
645                                 continue;
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) {
650                                 sel_count++;
651                         }
652                         check_list = eina_list_next(check_list);
653                 }
654
655                 if (0 == sel_count) {
656                         setting_create_simple_popup(ad, ad->win_get,
657                                                     NULL, _("Please select item(s) to process!"));
658                         return;
659                 }
660
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"));
665                 } else {
666                         snprintf(notify_str, sizeof(notify_str),
667                                  "%s %d networks?", _("IDS_COM_SK_DELETE"),
668                                  sel_count);
669                 }
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"));
673         }
674
675         if (ad->selInfoPop) {
676                 evas_object_del(ad->selInfoPop);
677                 ad->selInfoPop = NULL;
678         }
679 }
680
681 static void
682 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
683                                                                  Evas_Object *
684                                                                  obj, void
685                                                                  *event_info)
686 {
687         SETTING_TRACE_BEGIN;
688         /* error check */
689         retm_if(data == NULL, "Data parameter is NULL");
690
691         SettingNetworkUG *ad = (SettingNetworkUG *) data;
692         if (ad->selInfoPop) {
693                 evas_object_del(ad->selInfoPop);
694                 ad->selInfoPop = NULL;
695         }
696
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);
700 }