3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
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-cfg.h>
18 #include <setting-reset-settings.h>
22 #define RESULT_FONT_SIZE 28//18
23 #define ITEM_NAME_FONT_SIZE 35//22
25 static int setting_reset_settings_create(void *cb);
26 static int setting_reset_settings_destroy(void *cb);
27 static int setting_reset_settings_update(void *cb);
28 static int setting_reset_settings_cleanup(void *cb);
30 setting_view setting_view_reset_settings = {
31 .create = setting_reset_settings_create,
32 .destroy = setting_reset_settings_destroy,
33 .update = setting_reset_settings_update,
34 .cleanup = setting_reset_settings_cleanup,
37 static void setting_reset_settings_click_softkey_reset_cb(void *data,
40 static void setting_reset_settings_click_softkey_cancel_cb(void *data,
44 static bool setting_reset_settings_create_password_sg(void *data);
45 static void setting_reset_settings_check_state(Setting_Done_List_Data *list_data);
46 static void setting_reset_settings_result_password_ug_cb(ui_gadget_h ug,
50 /* ***************************************************
54 ***************************************************/
55 static char *__result_gl_text_get(void *data, Evas_Object *obj,
59 Setting_GenGroupItem_Data *item_data =
60 (Setting_GenGroupItem_Data *) data;
61 //SETTING_TRACE("part:%s", part);
63 if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) { /* title */
64 char label[HELP_MSG_BUFF_SIZE + 1] = { 0, };
65 if (item_data->keyStr)
67 const char *key = setting_customize_text(_(item_data->keyStr), ITEM_NAME_FONT_SIZE, NULL, NULL);
68 safeStrNCat(label, key,HELP_MSG_BUFF_SIZE);
71 if (item_data->sub_desc)
73 char desc[SETTING_STR_SLP_LEN + 1] = { 0, };
74 snprintf(desc, SETTING_STR_SLP_LEN, ": %s", _(item_data->sub_desc));
75 const char *sub_desc = setting_customize_text(desc, RESULT_FONT_SIZE, NULL, NULL);
76 safeStrNCat(label, sub_desc,HELP_MSG_BUFF_SIZE);
79 return (char *)g_strdup(label);
83 #if SIMPLY_SUPPORT_ALL_RESET
84 static void __processing_popup_response_cb(void *data, Evas_Object *obj,
88 SettingResetUG *ad = data;
89 setting_reset_special_process(ad);
96 // key ungrab: after showing the result popup
97 Ecore_X_Display *disp = ecore_x_display_get();
98 Ecore_X_Window xwin = elm_win_xwindow_get((Evas_Object*)ug_get_window());
99 int ret = utilx_ungrab_key(disp, xwin, KEY_HOME);
101 SETTING_TRACE_ERROR("KEY_HOME ungrab error ret[%d]", ret);
104 bool __reset_all_idler(void *data)
107 retv_if(!data, FALSE);
108 SettingResetUG *ad = data;
113 const char *result_str = RESET_SUCESS_STR;
114 char ug_file[PATH_MAX + 1];
121 for (; i < setting_cfg_get_category_length(); i++) {
122 //SETTING_TRACE("group is:%s", _(setting_cfg_get_category_name(i)));
124 result_str = RESET_SUCESS_STR;
125 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
126 /*SETTING_TRACE("i:%d\tj:%d", i, j);*/
127 if (Cfg_Item_unResetable ==
128 setting_cfg_get_resetable_flag_idx(i, j))
130 //SETTING_TRACE("process %s:%s skipped",_(item_name), ug_args);
133 ug_args = setting_cfg_get_ug_args_idx(i, j);
134 item_name = setting_cfg_get_keyname_idx(i, j);
136 SETTING_TRACE(">>> process %s:%s",_(item_name), ug_args);
139 if (NULL == ug_args) /*special process*/
142 if (!safeStrCmp(KeyStr_FlightMode, item_name)) {
143 //Invoke aync API and ignore the response message
144 ret = setting_reset_flight_mode();
145 } else if (!safeStrCmp(KeyStr_Landscape, item_name)) {
146 ret = setting_reset_rotation_lock();
151 result_str = RESET_FAILED_STR;
158 path = get_ug_path_from_ug_args((void *)ug_args);
159 svc = get_bundle_from_ug_args((void *)ug_args);
161 //if (snprintf(ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH, path) < 0)
164 ret = setting_invoke_reset_function(path, svc, NULL);
165 //SETTING_TRACE("load %s[plugin_ret:%d]", ug_file, ret);
167 if (OPERATE_LIB_SUCESS > ret)
169 result_str = RESET_FAILED_STR;
173 service_destroy(svc);
175 memset(ug_file, 0, PATH_MAX);
177 SETTING_TRACE("process %s:%s %s",_(item_name), ug_args, _(result_str));
181 //list_data->cur_item_num = idx;
182 SETTING_TRACE_DEBUG("Reset totally %d items. result_str:%s", idx, result_str);
183 //setting_create_popup_with_notitle(NULL, ad->win_get, _(result_str));
184 elm_popup_desc_set(ad->notify, _(result_str));
185 elm_popup_mode_set(ad->notify, POPUP_INTERVAL);
186 elm_popup_timeout_set(ad->notify, 2);
188 if (ad->reset_all_idler) {
189 ecore_idler_del(ad->reset_all_idler);
190 ad->reset_all_idler = NULL;
195 void __reset_all_button_cb(void *data, Evas_Object *obj, void *event_info)
199 Setting_GenGroupItem_Data *item_Data = data;
200 ret_if(!item_Data->userdata);
201 SettingResetUG *ad = item_Data->userdata;
204 char pw_pass[SETTING_STR_SLP_LEN] = { 0, };
207 /* Check Password Setting status */
209 setting_get_string_slp_key(STR_SLP_LIST_PHONE_PASSWORD,
211 SETTING_TRACE("pw_pass:%s", pw_pass);
212 if (SETTING_RETURN_SUCCESS == ret && '\0' != pw_pass[0]) {
213 setting_reset_settings_create_password_sg(ad);
217 // key grab: before showing processing popup
218 Ecore_X_Display *disp = ecore_x_display_get();
219 Ecore_X_Window xwin = elm_win_xwindow_get((Evas_Object*)ug_get_window());
220 ret = utilx_grab_key(disp, xwin, KEY_HOME, TOP_POSITION_GRAB);
222 SETTING_TRACE_ERROR("KEY_HOME grab error ret[%d]", ret);
226 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_PROCESSING"), __processing_popup_response_cb, 0, 1, 1);
227 if (ad->reset_all_idler) {
228 ecore_idler_del(ad->reset_all_idler);
229 ad->reset_all_idler = NULL;
232 ad->reset_all_idler =
233 ecore_idler_add((Ecore_Task_Cb) __reset_all_idler, ad);
236 static int setting_reset_settings_create(void *cb)
240 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
242 SettingResetUG *ad = (SettingResetUG *) cb;
243 Evas_Object *scroller = NULL;
245 Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
246 elm_layout_file_set(view_layout, SETTING_THEME_EDJ_NAME,
248 evas_object_size_hint_weight_set(view_layout, EVAS_HINT_EXPAND, 0.0);
250 /* Evas_Object * win_layout, Evas_Object * win_obj */
251 Elm_Object_Item *navi_it = setting_push_layout_navi_bar(_(RESET_SETTINGS_STR),
252 _("IDS_COM_BODY_RESET"),
253 _("IDS_COM_SK_CANCEL"), NULL,
254 setting_reset_settings_click_softkey_reset_cb,
255 setting_reset_settings_click_softkey_cancel_cb,
256 NULL, ad, view_layout, ad->navi_bar,
259 /* ******************************************create frame */
260 Setting_Done_List_Data *list_data = &(ad->list_data); /* define a handle */
262 list_data->win_main = ad->win_main_layout;
263 list_data->UG_data = ad;
264 list_data->ly_parent = view_layout;
265 list_data->select_all_checked = EINA_FALSE;
266 list_data->navi_it = navi_it;
274 for (; i < setting_cfg_get_category_length(); i++) {
275 SETTING_TRACE("group is:%s", _(setting_cfg_get_category_name(i)));
277 for (j = 0; j < setting_cfg_get_menu_length(i); j++) {
278 /*SETTING_TRACE("i:%d\tj:%d", i, j);*/
279 if (Cfg_Item_unResetable ==
280 setting_cfg_get_resetable_flag_idx(i, j))
284 ug_args = setting_cfg_get_ug_args_idx(i, j);
285 if (!is_ug_installed_by_ug_args(ug_args))
290 item_name = setting_cfg_get_keyname_idx(i, j);
293 if (!safeStrCmp(KeyStr_FlightMode, item_name)) {
294 continue; /* hide Flight Mode in Emulator*/
295 } else if (!safeStrCmp(KeyStr_WiFi, item_name)) {
296 continue; /* hide WIFI in Emulator*/
297 } else if (!safeStrCmp(KeyStr_MobileAP, item_name)) {
298 continue; /* hide Tethering in Emulator*/
299 } else if (!safeStrCmp(KeyStr_WiFiDirect, item_name)) {
300 continue; /* hide WiFiDirect in Emulator*/
301 } else if (!safeStrCmp(KeyStr_Network, item_name)) {
302 continue; /* hide Network in Emulator*/
303 } else if (!safeStrCmp(KeyStr_Bluetooth, item_name)) {
304 continue; /* hide Bluetooth in Emulator*/
305 } else if (!safeStrCmp(KeyStr_DateTime, item_name)) {
306 continue; /* hide Date&Time in Emulator*/
307 } else if (!safeStrCmp(KeyStr_Security, item_name)) {
308 continue; /* hide Security in Emulator*/
309 } else if (!safeStrCmp(KeyStr_Memory, item_name)) {
310 continue; /* hide Memory in Emulator*/
311 } else if (!safeStrCmp(KeyStr_Powersaving, item_name)) {
312 continue; /* hide Powersaving in Emulator*/
313 } else if (!safeStrCmp(KeyStr_Email, item_name)) {
318 list_data->chk_items[idx].ug_args = ug_args;
319 list_data->chk_items[idx].item_name = item_name =
320 setting_cfg_get_keyname_idx(i, j);
322 SETTING_TRACE("process %s:\t%s",_(item_name), ug_args);
327 list_data->cur_item_num = idx;
328 SETTING_TRACE("list_data->cur_item_num:%d", list_data->cur_item_num);
329 scroller = setting_create_done_list(list_data);
330 elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
332 if(idx == 0 || !setting_done_list_is_some_item_selected(list_data)) {
333 Evas_Object *reset_btn = elm_object_item_part_content_get(navi_it, "toolbar_button1");
334 elm_object_disabled_set(reset_btn, EINA_TRUE);
337 ad->view_layout = view_layout;
338 ad->reset_list = elm_object_part_content_get(scroller, "search_list");
339 /* *******************************************update info */
341 setting_view_reset_settings.is_create = 1;
342 ad->itc_1text.func.text_get = __result_gl_text_get;
343 return SETTING_RETURN_SUCCESS;
346 static int setting_reset_settings_destroy(void *cb)
350 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
352 SettingResetUG *ad = (SettingResetUG *) cb;
354 if (ad->list_data.selInfoPop) {
355 evas_object_del(ad->list_data.selInfoPop);
356 ad->list_data.selInfoPop = NULL;
359 evas_object_del(ad->notify);
362 if (ad->old_notify) {
363 evas_object_del(ad->old_notify);
364 ad->old_notify = NULL;
368 evas_object_del(ad->pop);
371 if (ad->pop_progress)
373 evas_object_del(ad->pop_progress);
374 ad->pop_progress = NULL;
379 evas_object_del(ad->ask_popup);
380 ad->ask_popup = NULL;
384 ecore_animator_del(ad->animator);
388 if (ad->reset_all_idler) {
389 ecore_idler_del(ad->reset_all_idler);
390 ad->reset_all_idler = NULL;
395 elm_naviframe_item_pop(ad->navi_bar);
396 setting_view_reset_settings.is_create = 0;
398 return SETTING_RETURN_SUCCESS;
401 static int setting_reset_settings_update(void *cb)
405 return SETTING_RETURN_SUCCESS;
408 static int setting_reset_settings_cleanup(void *cb)
412 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
414 //SettingResetUG *ad = (SettingResetUG *) cb;
416 setting_reset_settings_destroy(cb);
418 return SETTING_RETURN_SUCCESS;
421 /* ***************************************************
425 ***************************************************/
426 bool __delay_reset_location(void *data)
429 retv_if(!data, FALSE);
430 Setting_GenGroupItem_Data *item_data = data;
431 int plugin_ret = setting_invoke_reset_function("setting-location-efl", NULL, NULL);
432 SETTING_TRACE("load libug-%s.so[plugin_ret:%d]", "setting-location-efl", plugin_ret);
433 const char *result_str = NULL;
434 if (LOAD_LIB_FAILED == plugin_ret) // -1
436 result_str = LOAD_LIB_FAILED_STR;
438 } else if (UNDEFINED_LIB_SYMBOL == plugin_ret) // -2
440 result_str = UNDEFINE_STR;
441 } else if (OPERATE_LIB_SUCESS > plugin_ret){ // 0
442 result_str = RESET_FAILED_STR;
448 item_data->sub_desc = (char *) g_strdup(_(result_str));
449 elm_object_item_data_set(item_data->item, item_data);
450 elm_genlist_item_update(item_data->item);
454 static void __reset_an_item(Setting_Done_List_Data *list_data,
455 const char *item_name,
458 SettingResetUG *ad = (SettingResetUG *) list_data->UG_data;
462 Evas_Object *genlist = elm_object_content_get(ad->notify);
463 Setting_GenGroupItem_Data *item_data = NULL;
464 const char *result_str = RESET_SUCESS_STR;
465 if (NULL == ug_args) /*special process*/
468 if (!safeStrCmp(KeyStr_FlightMode, item_name)) {
469 //Invoke aync API and ignore the response message
470 ret = setting_reset_flight_mode();
471 } else if (!safeStrCmp(KeyStr_Landscape, item_name)) {
472 ret = setting_reset_rotation_lock();
477 result_str = VCONF_RESET_FAILED_STR;
480 item_data = setting_create_Gendial_field_def(genlist, &(ad->itc_1text),
482 SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
485 (char *)result_str, NULL);
488 char *path = get_ug_path_from_ug_args((void *)ug_args);
489 service_h svc = get_bundle_from_ug_args((void *)ug_args);
490 int plugin_ret = OPERATE_LIB_SUCESS;
491 if (!isEmulBin() || 0 != safeStrCmp(KeyStr_Location, item_name)) //KeyStr_Location is too slow to display in emulator
493 plugin_ret = setting_invoke_reset_function(path, svc, NULL);
494 SETTING_TRACE("load libug-%s.so[plugin_ret:%d]", path, plugin_ret);
498 item_data = setting_create_Gendial_field_def(genlist, &(ad->itc_1text),
500 SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
503 (char *)result_str, NULL);
504 ecore_idler_add((Ecore_Task_Cb) __delay_reset_location, item_data);
506 service_destroy(svc);
511 if (LOAD_LIB_FAILED == plugin_ret) // -1
513 result_str = LOAD_LIB_FAILED_STR;
515 } else if (UNDEFINED_LIB_SYMBOL == plugin_ret) // -2
517 result_str = UNDEFINE_STR;
518 } else if (OPERATE_LIB_SUCESS <= plugin_ret){ // 0
519 result_str = RESET_SUCESS_STR;
522 result_str = RESET_FAILED_STR;
525 service_destroy(svc);
531 item_data = setting_create_Gendial_field_def(genlist, &(ad->itc_1text),
533 SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
536 (char *)result_str, NULL);
540 elm_genlist_item_show(item_data->item, ELM_GENLIST_ITEM_SCROLLTO_IN);//show the last item
542 SETTING_TRACE_ERROR("error : item_data is NULL");
545 static Eina_Bool __reset_animator_cb(void *data)
547 SettingResetUG *ad = (SettingResetUG *) data;
549 SETTING_TRACE("Processing the %dth of %d",
550 ad->gl_index, ad->list_data.cur_item_num);
551 if (ad->gl_index >= ad->list_data.cur_item_num) {
552 ecore_animator_del(ad->animator);
554 if (ad->pop_progress) {
555 evas_object_del(ad->pop_progress);
556 ad->pop_progress = NULL;
558 //Evas_Object *btn = elm_object_part_content_get(ad->notify, "button1");
561 setting_enable_evas_object(ad->pop_btn);
562 setting_undo_dim_evas_object(ad->pop_btn, TRUE);
565 Evas_Object *genlist = elm_object_content_get(ad->notify);
567 elm_genlist_item_show(elm_genlist_first_item_get(genlist), ELM_GENLIST_ITEM_SCROLLTO_TOP);
569 elm_genlist_item_show(elm_genlist_first_item_get(ad->reset_list), ELM_GENLIST_ITEM_SCROLLTO_TOP);
571 if(!setting_done_list_is_some_item_selected(&ad->list_data)) {
572 if (ad->list_data.navi_it) {
573 Evas_Object *button = elm_object_item_part_content_get(ad->list_data.navi_it, "toolbar_button1");
574 elm_object_disabled_set(button, EINA_TRUE);
577 return ECORE_CALLBACK_CANCEL;
579 if (ad->list_data.chk_items[ad->gl_index].data_GenItem->chk_status) {
580 elm_genlist_item_show(ad->list_data.chk_items[ad->gl_index].data_GenItem->item, ELM_GENLIST_ITEM_SCROLLTO_IN);//show the last item
581 __reset_an_item(&(ad->list_data),
582 ad->list_data.chk_items[ad->gl_index].item_name,
583 ad->list_data.chk_items[ad->gl_index].ug_args);
585 elm_check_state_set(ad->list_data.chk_items[ad->gl_index].data_GenItem->eo_check, 0);
586 ad->list_data.chk_items[ad->gl_index].data_GenItem->chk_status = 0;
590 return ECORE_CALLBACK_RENEW;
593 bool __reset_delay_idler(void *data)
596 retv_if(!data, FALSE);
597 SettingResetUG *ad = data;
599 ad->animator = ecore_animator_add(__reset_animator_cb, ad);
603 static void setting_reset_settings_check_state(Setting_Done_List_Data *list_data)
606 SETTING_TRACE_DEBUG("********resetting*******");
608 SettingResetUG *ad = (SettingResetUG *) list_data->UG_data;
609 ad->notify = elm_popup_add(ad->win_get);
610 elm_object_style_set(ad->notify,"menustyle");
611 elm_object_part_text_set(ad->notify, "title,text", _(RESET_RESULT_STR));
612 evas_object_size_hint_weight_set(ad->notify,
615 Evas_Object *btn = setting_create_button(ad->notify, _("IDS_COM_SK_OK"), NULL, setting_reset_result_popup_resp_cb, ad);
616 elm_object_part_content_set(ad->notify, "button1", btn);
617 elm_object_style_set(btn, "popup_button/default");
618 setting_disable_evas_object(btn);
619 setting_dim_evas_object(btn, TRUE);
622 Evas_Object *genlist = elm_genlist_add(ad->notify);
623 elm_object_style_set(genlist, "dialogue");
624 evas_object_size_hint_weight_set(genlist,
627 evas_object_size_hint_align_set(genlist,
631 setting_create_Gendial_field_titleItem(genlist,
636 //ad->animator = ecore_animator_add(__reset_animator_cb, ad);
637 //Don't append any item until the popup is fully showed up
638 ecore_idler_add((Ecore_Task_Cb) __reset_delay_idler, ad);
639 elm_object_content_set(ad->notify, genlist);
640 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
641 evas_object_show(ad->notify);
643 /* reset sel_all item */
644 elm_check_state_set(list_data->select_all_checkbox, 0);
645 list_data->select_all_checked = EINA_FALSE;
650 setting_reset_settings_result_password_ug_cb(ui_gadget_h ug, service_h result,
655 retm_if(priv == NULL, "Data parameter is NULL");
657 SettingResetUG *ad = (SettingResetUG *) priv;
659 char *ret_str = NULL;
661 service_get_extra_data(result, "result", &ret_str);
663 retm_if(ret_str == NULL, "result paremeter is NULL");
664 SETTING_TRACE("result:%s", ret_str);
667 if (0 == safeStrCmp("Cancel", ret_str)) {
670 else if (0 == safeStrCmp("SETTING_PW_TYPE_RESET", ret_str)) {
672 #if SIMPLY_SUPPORT_ALL_RESET
674 setting_create_popup_witout_btn(ad, ad->win_get, _("IDS_COM_POP_PROCESSING"), NULL, __processing_popup_response_cb, 0);
675 if (ad->reset_all_idler) {
676 ecore_idler_del(ad->reset_all_idler);
677 ad->reset_all_idler = NULL;
679 ad->reset_all_idler =
680 ecore_idler_add((Ecore_Task_Cb) __reset_all_idler, ad);
682 /* if return value from passwordUG, create popup for resetting. */
683 setting_reset_settings_check_state(&(ad->list_data));
690 setting_reset_settings_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
693 SettingResetUG *ad = (SettingResetUG *) priv;
700 base = (Evas_Object *) ug_get_layout(ug);
705 case UG_MODE_FULLVIEW:
706 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
708 //elm_win_resize_object_add(ad->win_get, base);
709 evas_object_show(base);
717 static void setting_reset_settings_destroy_password_ug_cb(ui_gadget_h ug,
722 SettingResetUG *ad = (SettingResetUG *) priv;
725 ad->ug_loading = NULL;
730 static bool setting_reset_settings_create_password_sg(void *data)
734 retv_if(data == NULL, FALSE);
736 SettingResetUG *ad = (SettingResetUG *) data;
738 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
741 cbs->layout_cb = setting_reset_settings_layout_ug_cb;
742 cbs->result_cb = setting_reset_settings_result_password_ug_cb;
743 cbs->destroy_cb = setting_reset_settings_destroy_password_ug_cb;
744 cbs->priv = (void *)ad;
747 if (service_create(&svc)) {
752 service_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_RESET");
755 ug_create(ad->ug, "setting-password-efl", UG_MODE_FULLVIEW, svc, cbs);
756 if (NULL == ad->ug_loading) { /* error handling */
759 service_destroy(svc);
765 /* ***************************************************
769 ***************************************************/
772 setting_reset_settings_click_softkey_cancel_cb(void *data, Evas_Object *obj,
777 retm_if(data == NULL, "Data parameter is NULL");
779 SettingResetUG *ad = (SettingResetUG *) data;
781 setting_view_change(&setting_view_reset_settings, &setting_view_reset_main, ad);
785 setting_reset_settings_click_softkey_reset_cb(void *data, Evas_Object *obj,
790 retm_if(data == NULL, "Data parameter is NULL");
792 SettingResetUG *ad = (SettingResetUG *) data;
793 //int screen_lock_type = 0;
795 //every time clicking 'Reset' button, restore following VCONFs
796 //vconf_set_bool(VCONFKEY_SETAPPL_FONT_CHANGED, FALSE);
798 if (ad->list_data.selInfoPop) {
799 evas_object_del(ad->list_data.selInfoPop);
800 ad->list_data.selInfoPop = NULL;
803 if (!setting_done_list_is_some_item_selected(&(ad->list_data))) {
804 setting_create_simple_popup(NULL, ad->win_get, NULL, "No item selected");
807 setting_reset_settings_check_state(&(ad->list_data));