3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.1 (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
9 * http://floralicense.org/license/
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.
17 #include <setting-network-preferred-network-delete.h>
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);
26 Evas_Object *eo_check;
28 Setting_GenGroupItem_Data *data_Genitem;
29 } preferred_list_item_t;
31 static int check_count = 0;
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,
40 static void setting_network_preferred_network_delete_select_all_cb(void *data,
44 static void setting_network_preferred_network_delete_check_cb(void *data,
47 static void setting_network_perferred_network_delete_mouse_up_cb(void *data,
53 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
58 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
62 static void setting_network_preferred_network_delete_no_cb(void *cb);
63 static void setting_network_preferred_network_delete_yes_cb(void *cb);
65 /* ***************************************************
69 ***************************************************/
71 static int setting_network_preferred_network_delete_create(void *cb)
74 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
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;
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"),
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); */
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 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);
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 */
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);
111 setting_network_preferred_network_delete_draw_network_list(ad);
112 setting_view_network_preferred_network_delete.is_create = 1;
114 return SETTING_RETURN_SUCCESS;
117 static int setting_network_preferred_network_delete_destroy(void *cb)
120 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
122 elm_naviframe_item_pop(ad->navi_bar);
123 setting_view_network_preferred_network_delete.is_create = 0;
126 preferred_list_item_t *list_item;
127 if (ad->item_check_list != NULL) {
129 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
132 eina_list_free(ad->item_check_list);
133 ad->item_check_list = NULL;
135 return SETTING_RETURN_SUCCESS;
138 static int setting_network_preferred_network_delete_update(void *cb)
141 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
143 setting_network_preferred_network_delete_refresh_view(ad);
144 return SETTING_RETURN_SUCCESS;
147 static int setting_network_preferred_network_delete_cleanup(void *cb)
149 return setting_network_preferred_network_delete_destroy(cb);
152 /* ***************************************************
156 ***************************************************/
159 setting_network_preferred_network_delete_refresh_view(SettingNetworkUG *ad)
164 if (ad->item_check_list) {
165 eina_list_free(ad->item_check_list);
166 ad->item_check_list = NULL;
169 setting_network_preferred_network_delete_draw_network_list(ad);
174 setting_network_preferred_network_delete_draw_network_list(SettingNetworkUG *
179 preferred_list_item_t *list_item = NULL;
182 if (ad->item_check_list != NULL) {
184 EINA_LIST_FOREACH(ad->item_check_list, l, list_item) {
187 eina_list_free(ad->item_check_list);
188 ad->item_check_list = NULL;
191 elm_genlist_clear(ad->scl_pref_del); /* first to clear list */
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;
204 SETTING_TRACE_ERROR("ad->data_cl_select_all is NULL");
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;
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,
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;
224 SETTING_TRACE_ERROR("ad->data_Genitem is NULL");
227 ad->item_check_list =
228 eina_list_append(ad->item_check_list, list_item);
234 setting_network_preferred_network_delete_select_all_cb(void *data,
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),
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;
252 pre_list_item = (preferred_list_item_t *)
253 eina_list_data_get(check_list);
254 if (NULL == pre_list_item)
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);
261 check_count = ad->pref_list.NumOfPrefPlmns;
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),
269 pre_list_item = (preferred_list_item_t *)
270 eina_list_data_get(check_list);
271 if (NULL == pre_list_item)
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);
279 evas_object_hide(ad->selInfoPop);
282 SETTING_TRACE("check_count:%d", check_count);
287 setting_network_preferred_network_delete_check_cb(void *data, Evas_Object *obj,
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),
298 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
299 if (list_item->chk_status) {
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;
309 elm_check_state_set(ad->data_cl_select_all->eo_check, 1);
310 ad->data_cl_select_all->chk_status = 1;
313 SETTING_TRACE("check count is [%d]", check_count);
315 evas_object_hide(ad->selInfoPop);
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);
323 /* text set and timeout set */
324 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text",
330 setting_network_perferred_network_delete_mouse_up_cb(void *data,
336 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
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);
343 int old_status = elm_check_state_get(list_item->eo_check);
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);
349 SettingNetworkUG *ad = list_item->userdata;
350 setting_create_sel_info_popup(ad->sub_clear_layout,
351 &(ad->selInfoPop_layout),
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;
357 if (0 == safeStrCmp(KeyStr_Select_All, list_item->keyStr)) { /* if(obj == chk_sel_all) */
358 SETTING_TRACE("Select All");
361 pre_list_item = (preferred_list_item_t *)
362 eina_list_data_get(check_list);
363 if (NULL == pre_list_item)
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);
370 check_count = ad->pref_list.NumOfPrefPlmns;
372 char text[MAX_DISPLAY_NAME_LEN_ON_UI];
373 snprintf(text, sizeof(text), "%d Items Selected",
375 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
379 pre_list_item = (preferred_list_item_t *)
380 eina_list_data_get(check_list);
381 if (NULL == pre_list_item)
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);
389 evas_object_hide(ad->selInfoPop);
392 SETTING_TRACE("Select %s", list_item->keyStr);
399 if (check_count < ad->pref_list.NumOfPrefPlmns) {
400 elm_check_state_set(ad->data_cl_select_all->eo_check,
402 ad->data_cl_select_all->chk_status = 0;
404 elm_check_state_set(ad->data_cl_select_all->eo_check,
406 ad->data_cl_select_all->chk_status = 1;
410 evas_object_hide(ad->selInfoPop);
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);
417 /* text set and timeout set */
418 edje_object_part_text_set(_EDJ(ad->selInfoPop_layout),
421 SETTING_TRACE("check_count:%d", check_count);
425 setting_network_preferred_network_delete_one(SettingNetworkUG *ad,
426 preferred_list_item_t *list_item)
428 retvm_if(list_item == NULL, FALSE, "list_item parameter is NULL");
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);
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) {
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);
451 void setting_network_preferred_network_delete_ok(void *data)
454 retm_if(data == NULL, "Data parameter is NULL");
455 SettingNetworkUG *ad = (SettingNetworkUG *) data;
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;
465 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"), NULL, POPUP_INTERVAL, FALSE, FALSE);
467 int tapi_ret = TAPI_API_SUCCESS;
469 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
470 if (tapi_ret != TAPI_API_SUCCESS) {
472 ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
473 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
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,
481 elm_object_text_set(ad->popup_label, info);
484 eina_list_nth(ad->checked_data_list, ad->deleted_number);
486 setting_network_preferred_network_delete_one(ad, list_item);
488 setting_network_preferred_network_delete_failed(ad);
493 void setting_network_preferred_network_delete_failed(void *data)
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;
502 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Failed!"), NULL, POPUP_INTERVAL, FALSE, FALSE);
505 int tapi_ret = TAPI_API_SUCCESS;
507 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
508 if (tapi_ret != TAPI_API_SUCCESS) {
510 ("%s*** [ERR] tel_get_network_preferred_plmn. err=%d ***%s",
511 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
515 static void setting_network_preferred_network_create_delete_pop(void *data)
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;
525 popup = elm_popup_add(ad->win_get);
526 evas_object_size_hint_weight_set(popup, 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,
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;
552 /* ***************************************************
556 ***************************************************/
558 static void setting_network_preferred_network_delete_yes_cb(void *cb)
562 retm_if(cb == NULL, "Data parameter is NULL");
564 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
567 evas_object_del(ad->popup);
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;
578 (preferred_list_item_t *) eina_list_data_get(check_list);
579 if (NULL == list_item)
581 isChecked = list_item->data_Genitem->chk_status;
584 ad->checked_data_list =
585 eina_list_prepend(ad->checked_data_list, list_item);
587 check_list = eina_list_next(check_list);
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);
593 setting_network_preferred_network_delete_failed(ad);
595 ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_DELETE;
598 static void setting_network_preferred_network_delete_no_cb(void *cb)
602 retm_if(cb == NULL, "Data parameter is NULL");
604 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
607 evas_object_del(ad->popup);
612 static void setting_preferred_network_delete_resp_cb(void *data,
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);
626 setting_network_preferred_network_delete_click_softkey_delete_cb(void *data,
633 retm_if(data == NULL, "Data parameter is NULL");
635 SettingNetworkUG *ad = (SettingNetworkUG *) data;
637 if (ad->pref_list.NumOfPrefPlmns == 1) {
638 setting_create_simple_popup(ad, ad->win_get,
639 NULL, _("Do not Delete!"));
642 Eina_List *check_list = ad->item_check_list;
643 preferred_list_item_t *list_item = NULL;
645 list_item = (preferred_list_item_t *)
646 eina_list_data_get(check_list);
647 if (NULL == list_item)
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) {
655 check_list = eina_list_next(check_list);
658 if (0 == sel_count) {
659 setting_create_simple_popup(ad, ad->win_get,
660 NULL, _("Please select item(s) to process!"));
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"));
669 snprintf(notify_str, sizeof(notify_str),
670 "%s %d networks?", _("IDS_COM_SK_DELETE"),
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"));
678 if (ad->selInfoPop) {
679 evas_object_del(ad->selInfoPop);
680 ad->selInfoPop = NULL;
685 setting_network_preferred_network_delete_click_softkey_cancel_cb(void *data,
692 retm_if(data == NULL, "Data parameter is NULL");
694 SettingNetworkUG *ad = (SettingNetworkUG *) data;
695 if (ad->selInfoPop) {
696 evas_object_del(ad->selInfoPop);
697 ad->selInfoPop = NULL;
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);