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