2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://www.tizenopensource.org/license
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.
18 #include <setting-network-preferred-network-delete.h>
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);
27 Evas_Object *eo_check;
29 Setting_GenGroupItem_Data *data_Genitem;
30 } preferred_list_item_t;
32 static int check_count = 0;
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,
41 static void setting_network_preferred_network_delete_select_all_cb(void *data,
45 static void setting_network_preferred_network_delete_check_cb(void *data,
48 static void setting_network_perferred_network_delete_mouse_up_cb(void *data,
54 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
59 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
63 static void setting_network_preferred_network_delete_no_cb(void *cb);
64 static void setting_network_preferred_network_delete_yes_cb(void *cb);
66 /* ***************************************************
70 ***************************************************/
72 static int setting_network_preferred_network_delete_create(void *cb)
75 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
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;
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"),
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);
90 Evas_Object *sub_layout = elm_layout_add(ad->win_main_layout);
91 elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME,
93 evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
94 evas_object_show(sub_layout);
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);
102 ad->scl_pref_del = elm_genlist_add(ad->win_main_layout);
103 elm_genlist_clear(ad->scl_pref_del); /* first to clear list */
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);
109 setting_network_preferred_network_delete_draw_network_list(ad);
110 setting_view_network_preferred_network_delete.is_create = 1;
112 return SETTING_RETURN_SUCCESS;
115 static int setting_network_preferred_network_delete_destroy(void *cb)
118 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
120 elm_naviframe_item_pop(ad->navi_bar);
121 setting_view_network_preferred_network_delete.is_create = 0;
124 preferred_list_item_t *list_item;
125 if (ad->item_check_list != NULL) {
127 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
130 eina_list_free(ad->item_check_list);
131 ad->item_check_list = NULL;
133 return SETTING_RETURN_SUCCESS;
136 static int setting_network_preferred_network_delete_update(void *cb)
139 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
141 setting_network_preferred_network_delete_refresh_view(ad);
142 return SETTING_RETURN_SUCCESS;
145 static int setting_network_preferred_network_delete_cleanup(void *cb)
147 return setting_network_preferred_network_delete_destroy(cb);
150 /* ***************************************************
154 ***************************************************/
157 setting_network_preferred_network_delete_refresh_view(SettingNetworkUG *ad)
161 if (ad->item_check_list) {
162 eina_list_free(ad->item_check_list);
163 ad->item_check_list = NULL;
166 setting_network_preferred_network_delete_draw_network_list(ad);
171 setting_network_preferred_network_delete_draw_network_list(SettingNetworkUG *
176 preferred_list_item_t *list_item = NULL;
179 if (ad->item_check_list != NULL) {
181 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
184 eina_list_free(ad->item_check_list);
185 ad->item_check_list = NULL;
188 elm_genlist_clear(ad->scl_pref_del); /* first to clear list */
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;
201 SETTING_TRACE_ERROR("ad->data_cl_select_all is NULL");
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;
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,
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;
223 SETTING_TRACE_ERROR("ad->data_Genitem is NULL");
226 ad->item_check_list =
227 eina_list_append(ad->item_check_list, list_item);
233 setting_network_preferred_network_delete_select_all_cb(void *data,
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),
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;
251 pre_list_item = (preferred_list_item_t *)
252 eina_list_data_get(check_list);
253 if (NULL == pre_list_item)
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);
260 check_count = ad->pref_list.NumOfPreffPlmns;
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),
268 pre_list_item = (preferred_list_item_t *)
269 eina_list_data_get(check_list);
270 if (NULL == pre_list_item)
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);
278 evas_object_hide(ad->selInfoPop);
281 SETTING_TRACE("check_count:%d", check_count);
286 setting_network_preferred_network_delete_check_cb(void *data, Evas_Object *obj,
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),
297 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
298 if (list_item->chk_status) {
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;
308 elm_check_state_set(ad->data_cl_select_all->eo_check, 1);
309 ad->data_cl_select_all->chk_status = 1;
312 SETTING_TRACE("check count is [%d]", check_count);
314 evas_object_hide(ad->selInfoPop);
318 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
319 if (check_count == 1)
320 snprintf(text, sizeof(text), "%d Item Selected", check_count);
322 snprintf(text, sizeof(text), "%d Items Selected", check_count);
324 /* text set and timeout set */
325 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text",
331 setting_network_perferred_network_delete_mouse_up_cb(void *data,
337 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
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);
344 int old_status = elm_check_state_get(list_item->eo_check);
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);
350 SettingNetworkUG *ad = list_item->userdata;
351 setting_create_sel_info_popup(ad->sub_clear_layout,
352 &(ad->selInfoPop_layout),
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;
358 if (0 == safeStrCmp(KeyStr_Select_All, list_item->keyStr)) { /* if(obj == chk_sel_all) */
359 SETTING_TRACE("Select All");
362 pre_list_item = (preferred_list_item_t *)
363 eina_list_data_get(check_list);
364 if (NULL == pre_list_item)
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);
371 check_count = ad->pref_list.NumOfPreffPlmns;
373 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
374 snprintf(text, sizeof(text), "%d Items Selected",
376 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
380 pre_list_item = (preferred_list_item_t *)
381 eina_list_data_get(check_list);
382 if (NULL == pre_list_item)
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);
390 evas_object_hide(ad->selInfoPop);
393 SETTING_TRACE("Select %s", list_item->keyStr);
400 if (check_count < ad->pref_list.NumOfPreffPlmns) {
401 elm_check_state_set(ad->data_cl_select_all->eo_check,
403 ad->data_cl_select_all->chk_status = 0;
405 elm_check_state_set(ad->data_cl_select_all->eo_check,
407 ad->data_cl_select_all->chk_status = 1;
411 evas_object_hide(ad->selInfoPop);
415 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
416 if (check_count == 1)
417 snprintf(text, sizeof(text), "%d Item Selected",
420 snprintf(text, sizeof(text), "%d Items Selected",
423 /* text set and timeout set */
424 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
427 SETTING_TRACE("check_count:%d", check_count);
431 setting_network_preferred_network_delete_one(SettingNetworkUG *ad,
432 preferred_list_item_t *list_item)
434 retvm_if(list_item == NULL, FALSE, "list_item parameter is NULL");
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);
446 tel_set_network_preferred_plmn(TAPI_NETWORK_PREF_PLMN_DELETE,
447 &preff_plmn_info, &request_id);
448 if (tapi_ret != TAPI_API_SUCCESS) {
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);
458 void setting_network_preferred_network_delete_ok(void *data)
461 retm_if(data == NULL, "Data parameter is NULL");
462 SettingNetworkUG *ad = (SettingNetworkUG *) data;
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;
472 setting_network_popup_create(ad, _("IDS_COM_POP_SUCCESS"), FALSE);
475 int tapi_ret = TAPI_API_SUCCESS;
477 tapi_ret = tel_get_network_preferred_plmn(&request_id);
478 if (tapi_ret != TAPI_API_SUCCESS) {
480 ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
481 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
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,
489 elm_object_text_set(ad->popup_label, info);
492 eina_list_nth(ad->checked_data_list, ad->deleted_number);
494 setting_network_preferred_network_delete_one(ad, list_item);
496 setting_network_preferred_network_delete_failed(ad);
501 void setting_network_preferred_network_delete_failed(void *data)
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;
510 setting_network_popup_create(ad, _("Failed!"), FALSE);
513 int tapi_ret = TAPI_API_SUCCESS;
515 tapi_ret = tel_get_network_preferred_plmn(&request_id);
516 if (tapi_ret != TAPI_API_SUCCESS) {
518 ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
519 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
523 static void setting_network_preferred_network_create_delete_pop(void *data)
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;
533 popup = elm_popup_add(ad->win_get);
534 evas_object_size_hint_weight_set(popup, 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,
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;
560 /* ***************************************************
564 ***************************************************/
566 static void setting_network_preferred_network_delete_yes_cb(void *cb)
570 retm_if(cb == NULL, "Data parameter is NULL");
572 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
575 evas_object_del(ad->popup);
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;
586 (preferred_list_item_t *) eina_list_data_get(check_list);
587 if (NULL == list_item)
589 isChecked = list_item->data_Genitem->chk_status;
592 ad->checked_data_list =
593 eina_list_prepend(ad->checked_data_list, list_item);
595 check_list = eina_list_next(check_list);
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);
601 setting_network_preferred_network_delete_failed(ad);
603 ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_DELETE;
606 static void setting_network_preferred_network_delete_no_cb(void *cb)
610 retm_if(cb == NULL, "Data parameter is NULL");
612 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
615 evas_object_del(ad->popup);
620 static void setting_preferred_network_delete_resp_cb(void *data,
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);
634 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
641 retm_if(data == NULL, "Data parameter is NULL");
643 SettingNetworkUG *ad = (SettingNetworkUG *) data;
645 if (ad->pref_list.NumOfPreffPlmns == 1) {
646 setting_create_popup_without_title(ad, ad->win_get,
647 _("Do not Delete!"));
650 Eina_List *check_list = ad->item_check_list;
651 preferred_list_item_t *list_item = NULL;
653 list_item = (preferred_list_item_t *)
654 eina_list_data_get(check_list);
655 if (NULL == list_item)
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) {
663 check_list = eina_list_next(check_list);
666 if (0 == sel_count) {
667 setting_create_popup_without_title(ad, ad->win_get,
669 ("Please select item(s) to process!"));
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"));
678 snprintf(notify_str, sizeof(notify_str),
679 "%s %d networks?", _("IDS_COM_SK_DELETE"),
682 ad->popup = setting_create_popup_with_btn(ad, ad->win_get, notify_str,
684 setting_preferred_network_delete_resp_cb,
685 0, 2, _("IDS_COM_SK_OK"),_("IDS_COM_SK_CANCEL"));
688 if (ad->selInfoPop) {
689 evas_object_del(ad->selInfoPop);
690 ad->selInfoPop = NULL;
695 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
702 retm_if(data == NULL, "Data parameter is NULL");
704 SettingNetworkUG *ad = (SettingNetworkUG *) data;
705 if (ad->selInfoPop) {
706 evas_object_del(ad->selInfoPop);
707 ad->selInfoPop = NULL;
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);