4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 #include <setting-connectivity-usb.h>
23 #include <app_manager.h>
28 #define SETTING_CPU_USAGE_PKG_NAME "org.tizen.dispcpuinfo"
30 #define DIAGNOSTICS_USAGE_STR "IDS_ST_BODY_CRASH_VIEWER"
31 #define DEBUG_MODE_POPUP_TITLE "IDS_ST_HEADER_ALLOW_USB_DEBUGGING_Q_ABB"
32 #define DEBUG_MODE_POPUP_TEXT "IDS_ST_BODY_USB_DEBUGGING_IS_INTENDED_FOR_DEVELOPMENT_PURPOSES_ONLY_MSG"
33 #define DEFAULT_RENDERING_ENGINE_STR "IDS_ST_BODY_DEFAULT_RENDERING_ENGINE"
34 #define SOFTWARE_STR "IDS_ST_BODY_SOFTWARE"
35 #define HARDWARE_STR "IDS_ST_BODY_HARDWARE"
36 #define CONNECTTIVITY_SELECT_INFO_POPUP_STR "IDS_COM_BODY_USB_DEBUGGING_CONNECTED"
38 static char *bgprocess_list[] = {
39 "IDS_ST_HEADER_STANDARD_LIMIT_ABB",
40 "IDS_ST_HEADER_NO_BACKGROUND_PROCESSES_ABB",
41 "IDS_ST_HEADER_1_PROCESS_AT_MOST_ABB",
42 "IDS_ST_HEADER_2_PROCESSES_AT_MOST_ABB",
43 "IDS_ST_HEADER_3_PROCESSES_AT_MOST_ABB",
44 "IDS_ST_HEADER_4_PROCESSES_AT_MOST_ABB",
47 static int setting_connectivity_usb_create(void *cb);
48 static int setting_connectivity_usb_destroy(void *cb);
49 static int setting_connectivity_usb_update(void *cb);
50 static int setting_connectivity_usb_cleanup(void *cb);
52 static void debug_mode_change_vconf_cb(keynode_t *key, void *data);
53 static void in_mode_change_vconf_cb(keynode_t *key, void *data);
54 static void unload_popup(void *data);
55 void load_usb_connection_popup(void *data);
57 /* This is pointer to indicate progressbars*/
58 /*static button_status button[NUM_PROGRESSBAR]; */
60 /* These variables are for the popup */
62 setting_view setting_view_connectivity_usb = {
63 .create = setting_connectivity_usb_create,
64 .destroy = setting_connectivity_usb_destroy,
65 .update = setting_connectivity_usb_update,
66 .cleanup = setting_connectivity_usb_cleanup,
69 static void __setting_processes_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
73 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
74 Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
75 Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
76 elm_genlist_item_selected_set(subitem, 0);
77 Setting_GenGroupItem_Data *data_subItem =
78 elm_object_item_data_get(subitem);
79 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
80 ret_if(NULL == data_subItem || NULL == data_parentItem);
82 elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
84 setting_set_int_slp_key(data_parentItem->int_slp_setting_binded,
85 data_subItem->chk_status, &err);
86 setting_retm_if(0 != err, "Set vconf error[%d]", data_parentItem->int_slp_setting_binded);
88 data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
89 elm_object_item_data_set(data_parentItem->item, data_parentItem);
90 elm_genlist_item_update(data_parentItem->item);
91 elm_object_item_signal_emit(data_parentItem->item, "elm,state,top", "");
92 data_parentItem->group_style = SETTING_GROUP_STYLE_TOP;
93 elm_genlist_item_expanded_set(parentItem, EINA_FALSE);
96 static void __setting_devoptions_main_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
99 setting_retm_if(event_info == NULL, "Invalid argument: event info is NULL");
101 Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
102 Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
103 elm_genlist_item_selected_set(subitem, 0);
104 Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
105 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
106 ret_if(NULL == data_subItem || NULL == data_parentItem);
108 elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
110 SETTING_TRACE("data_subItem->chk_status = %d", data_subItem->chk_status);
111 if (data_subItem->chk_status == 0) { /* software */
112 elm_config_engine_set("software_x11");
113 vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_RENDERING_ENGINE_TYPE_INT, SETTING_RENDERING_ENGINE_SW);
115 } else if (data_subItem->chk_status == 1) { /* hardware */
116 elm_config_engine_set("opengl_x11");
117 vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_RENDERING_ENGINE_TYPE_INT, SETTING_RENDERING_ENGINE_HW);
121 data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
122 elm_object_item_data_set(data_parentItem->item, data_parentItem);
123 elm_genlist_item_update(data_parentItem->item);
124 elm_object_item_signal_emit(data_parentItem->item, "elm,state,top", "");
125 data_parentItem->group_style = SETTING_GROUP_STYLE_TOP;
126 elm_genlist_item_expanded_set(parentItem, EINA_FALSE);
129 static void __setting_devoptions_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
131 ret_if(NULL == data || NULL == event_info);
133 SettingConnectivityUG *ad = (SettingConnectivityUG *) data;
135 Elm_Object_Item *parentItem = event_info; /*parent item */
136 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /*parent data */
137 Evas_Object *scroller = elm_object_item_widget_get(parentItem);
141 if (data_parentItem == ad->bg_processes) {
142 /*elm_object_item_signal_emit(parentItem, "elm,state,top", ""); */
143 rgd = elm_radio_add(scroller);
144 elm_radio_value_set(rgd, -1);
146 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
148 __setting_processes_sub_list_sel_cb, ad, parentItem,
149 SWALLOW_Type_1RADIO, rgd,
150 0, _(bgprocess_list[0]),
151 NULL, SETTING_GROUP_STYLE_CENTER);
152 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
154 __setting_processes_sub_list_sel_cb, ad, parentItem,
155 SWALLOW_Type_1RADIO, rgd,
156 1, _(bgprocess_list[1]),
157 NULL, SETTING_GROUP_STYLE_CENTER);
158 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
160 __setting_processes_sub_list_sel_cb, ad, parentItem,
161 SWALLOW_Type_1RADIO, rgd,
162 2, _(bgprocess_list[2]),
163 NULL, SETTING_GROUP_STYLE_CENTER);
164 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
166 __setting_processes_sub_list_sel_cb, ad, parentItem,
167 SWALLOW_Type_1RADIO, rgd,
168 3, _(bgprocess_list[3]),
169 NULL, SETTING_GROUP_STYLE_CENTER);
170 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
172 __setting_processes_sub_list_sel_cb, ad, parentItem,
173 SWALLOW_Type_1RADIO, rgd,
174 4, _(bgprocess_list[4]),
175 NULL, SETTING_GROUP_STYLE_CENTER);
176 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
178 __setting_processes_sub_list_sel_cb, ad, parentItem,
179 SWALLOW_Type_1RADIO, rgd,
180 5, _(bgprocess_list[5]),
181 NULL, SETTING_GROUP_STYLE_BOTTOM);
183 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
184 } else if (data_parentItem == ad->gpu_render) {
185 /*elm_object_item_signal_emit(parentItem, "elm,state,top", ""); */
186 rgd = elm_radio_add(scroller);
187 elm_radio_value_set(rgd, -1);
189 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
191 __setting_devoptions_main_sub_list_sel_cb, ad, parentItem,
192 SWALLOW_Type_1RADIO, rgd,
194 NULL, SETTING_GROUP_STYLE_CENTER);
195 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
197 __setting_devoptions_main_sub_list_sel_cb, ad, parentItem,
198 SWALLOW_Type_1RADIO, rgd,
200 NULL, SETTING_GROUP_STYLE_BOTTOM);
202 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
203 const char *engine_str = NULL;
204 engine_str = elm_config_engine_get();
206 if (0 == safeStrCmp(engine_str, "software_x11")) {
207 elm_radio_value_set(rgd, 0);
208 } else if (0 == safeStrCmp(engine_str, "opengl_x11")) {
209 elm_radio_value_set(rgd, 1);
211 SETTING_TRACE_ERROR("engine_str is wrong");
214 SETTING_TRACE_ERROR("engine_str is NULL");
219 static int setting_connectivity_change_debug_mode_toggle(SettingConnectivityUG *ad)
226 ret = vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &debugMode);
228 SETTING_TRACE("FAIL: vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
231 SETTING_TRACE("debugMode: %d", debugMode);
233 setting_update_gl_item_chk_status(ad->debug_mode, EINA_FALSE);
234 if (debugMode == 0) {
235 if (USB_CONNECTED == check_usb_jack_status()) {
236 ret = vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, 1);
238 SETTING_TRACE("FAIL: vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
242 setting_create_select_info_popup(&ad->selectioninfo_popup, ad->view_layout, 3.0,
243 _(CONNECTTIVITY_SELECT_INFO_POPUP_STR), "center_text");
245 load_usb_connection_popup(ad);
248 ret = vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, 0);
250 SETTING_TRACE("FAIL: vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
254 if (ad->selectioninfo_popup) {
255 evas_object_del(ad->selectioninfo_popup);
256 ad->selectioninfo_popup = NULL;
264 static void setting_connectivity_main_chk_usb_debug_cb(void *data,
265 Evas_Object *obj, void *event_info)
268 retm_if(data == NULL, "Data parameter is NULL");
269 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
270 SettingConnectivityUG *ad = list_item->userdata;
272 if (0 > setting_connectivity_change_debug_mode_toggle(ad)) {
273 SETTING_TRACE("FAIL: setting_connectivity_change_debug_mode_toggle()");
279 static void setting_connectivity_usb_mouse_up_Gendial_list_cb(void *data,
280 Evas_Object *obj, void *event_info)
283 retm_if(data == NULL, "Invalid argument: data is NULL");
284 retm_if(event_info == NULL, "Invalid argument: event_info is NULL");
285 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
286 SettingConnectivityUG *ad = (SettingConnectivityUG *)data;
288 elm_genlist_item_selected_set(item, 0);
290 if (0 > setting_connectivity_change_debug_mode_toggle(ad)) {
291 SETTING_TRACE("FAIL: setting_connectivity_change_debug_mode_toggle()");
297 static void setting_connectivity_main_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
301 retm_if(data == NULL, "Data parameter is NULL");
303 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
305 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
307 int opposite = (list_item->chk_status == 1) ? SETTING_ON_OFF_BTN_ON : SETTING_ON_OFF_BTN_OFF;
309 SETTING_TRACE("list_item->keyStr = %s", list_item->keyStr);
310 if (!safeStrCmp("IDS_ST_MBODY_SHOW_CPU_USAGE", list_item->keyStr)) {
312 app_launcher(SETTING_CPU_USAGE_PKG_NAME);
314 bool running_flag = FALSE;
315 int ret = app_manager_is_running(SETTING_CPU_USAGE_PKG_NAME, &running_flag);
316 setting_retm_if(ret != 0, "fail to call app_manager_is_running");
318 app_context_h context = NULL;
319 ret = app_manager_get_app_context(SETTING_CPU_USAGE_PKG_NAME, &context);
320 setting_retm_if(ret != 0, "fail to call app_manager_get_app_context");
321 int ret = app_manager_terminate_app(context);
323 SETTING_TRACE("===== app_manager_terminate_app successed.");
325 SETTING_TRACE_ERROR("===== app_manager_terminate_app fail.");
332 /*app_launcher("org.tizen.dispcpuinfo"); */
335 static void setting_connectivity_usb_mouse_up_Gendial_CPU_usage_cb(void *data, Evas_Object *obj, void *event_info)
340 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
341 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
342 elm_genlist_item_selected_set(item, 0);
343 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
345 setting_retm_if(data == NULL, "Data parameter is NULL");
346 /*SettingConnectivityUG *ad = (SettingConnectivityUG *) data; */
348 setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
350 if (list_item->chk_status) {
351 vconf_set_bool("db/setting/show_cpu_info", 1);
352 app_launcher(SETTING_CPU_USAGE_PKG_NAME);
354 vconf_set_bool("db/setting/show_cpu_info", 0);
356 /*setting_create_simple_popup(NULL, ad->win_get, NULL, "NOT IMPLMENTED YET"); */
357 /*app_launcher("org.tizen.dispcpuinfo"); */
361 static void __setting_connectivity_usb_dia_usage_mouse_up_cb(void *data, Evas_Object *obj, void *event_info)
365 setting_retm_if(data == NULL, "Data parameter is NULL");
367 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
368 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
369 elm_genlist_item_selected_set(item, 0);
370 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
372 /* SettingAboutUG *ad = (SettingAboutUG *) data; */
374 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
375 app_launcher("org.tizen.crash-viewer");
378 char *get_bg_processes()
382 int ret = setting_get_int_slp_key(INT_SLP_SETTING_DEVOPTION_BGPROCESS, &value, &err);
384 SETTING_TRACE_ERROR("get vconf failed");
387 if (value >= 0 && value < sizeof(bgprocess_list) / sizeof(bgprocess_list[0]))
388 return _(bgprocess_list[value]);
390 return _(bgprocess_list[0]); /* error proc */
395 * To create the usb main view
401 static int setting_connectivity_usb_create(void *cb)
404 SETTING_TRACE("Start USB utilities\n");
406 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
408 SettingConnectivityUG *ad = (SettingConnectivityUG *) cb;
409 Evas_Object *scroller = NULL;
414 Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
415 elm_layout_file_set(view_layout, SETTING_THEME_EDJ_NAME, "selinfo_bottom");
416 evas_object_size_hint_weight_set(view_layout, EVAS_HINT_EXPAND, 0.0);
417 ad->view_layout = view_layout;
419 /* win_main of the popup */
422 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
424 KeyStr_DeveloperOption,
425 dgettext("sys_string", "IDS_COM_BODY_BACK"),
426 _("IDS_COM_BODY_HELP"),
427 setting_connectivity_usb_click_softkey_cancel_cb,
428 setting_connectivity_usb_click_softkey_set_cb,
433 setting_create_layout_navi_bar(ad->win_main_layout, ad->win_get,
434 KeyStr_DeveloperOption,
435 _("IDS_COM_BODY_BACK"), NULL, NULL,
436 setting_connectivity_usb_click_softkey_cancel_cb,
437 NULL, NULL, ad, view_layout,
438 &ad->navi_bar, NULL);
441 SETTING_TRACE("before init\n");
443 scroller = elm_genlist_add(ad->win_main_layout);
444 retvm_if(scroller == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER,
445 "Cannot set scroller object as contento of layout");
446 elm_genlist_realization_mode_set(scroller, EINA_TRUE);
447 elm_object_style_set(scroller, "dialogue");
448 elm_genlist_clear(scroller); /* first to clear list */
449 evas_object_smart_callback_add(scroller, "realized", __gl_realized_cb, NULL);
451 elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
453 /*button[SETTING_USB_DEBUG_MODE].item = NULL; */
454 /*button[SETTING_USB_DEBUG_MODE].pstate = STATE_NONE; */
455 setting_enable_expandable_genlist(scroller, ad, __setting_devoptions_main_exp_cb, NULL);
457 Elm_Object_Item *item = NULL;;
460 item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
461 ELM_GENLIST_ITEM_NONE, NULL, NULL);
462 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
464 /* [UI] USB debugging */
468 err = vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &toggle_dbg);
470 SETTING_TRACE_ERROR("FAIL: vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
471 /* set debug mode to true to find the problem*/
474 SETTING_TRACE("toggle_dbg: %d", toggle_dbg);
477 setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
478 setting_connectivity_usb_mouse_up_Gendial_list_cb,
479 ad, SWALLOW_Type_1ICON_1RADIO, NULL,
480 NULL, toggle_dbg, "IDS_ST_BODY_USB_DEBUGGING",
481 NULL, setting_connectivity_main_chk_usb_debug_cb);
483 if (ad->debug_mode) {
484 ad->debug_mode->userdata = ad;
485 __BACK_POINTER_SET(ad->debug_mode);
486 /*button[SETTING_USB_DEBUG_MODE].item = ad->debug_mode->item; */
488 SETTING_TRACE_ERROR("ad->debug_mode is NULL");
489 return SETTING_RETURN_FAIL;
492 ADD_GL_HELP(scroller, SETTING_USB_DEBUGGING_DESC);
495 SETTING_TRACE("Second item of Second group is set\n");
499 /* [UI] Show CPU Usage */
500 bool running_flag = FALSE;
501 int ret = app_manager_is_running(SETTING_CPU_USAGE_PKG_NAME, &running_flag);
502 setting_retvm_if(ret != 0, SETTING_RETURN_FAIL, "fail to call app_manager_is_running");
510 setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
511 setting_connectivity_usb_mouse_up_Gendial_CPU_usage_cb,
512 ad, SWALLOW_Type_1ICON_1RADIO, NULL,
513 NULL, vconf_val, "IDS_ST_MBODY_SHOW_CPU_USAGE",
514 NULL, setting_connectivity_main_chk_btn_cb);
516 ad->cpu_usage->userdata = ad;
517 __BACK_POINTER_SET(ad->cpu_usage);
518 /*setting_disable_genlist_item(ad->cpu_usage->item); */
520 SETTING_TRACE_ERROR("ad->cpu_usage is NULL");
521 return SETTING_RETURN_FAIL;
525 ADD_GL_HELP(scroller, "IDS_ST_BODY_SCREEN_OVERLAY_SHOWING_CURRENT_CPU_USAGE_ABB");
527 /* Get GPU Rendering state */
528 const char *engine_str = NULL;
529 engine_str = elm_config_engine_get();
530 char *render_engine = NULL;
532 SETTING_TRACE("engine_str is %s", engine_str);
533 if (0 == safeStrCmp(engine_str, "opengl_x11")) {
534 render_engine = HARDWARE_STR;
535 } else if (0 == safeStrCmp(engine_str, "software_x11")) {
536 render_engine = SOFTWARE_STR;
538 SETTING_TRACE_ERROR("engine_str is wrong");
541 SETTING_TRACE_ERROR("engine_str is NULL");
544 /* [UI] Force GPU rendering */
545 ad->gpu_render = setting_create_Gendial_exp_parent_field(scroller,
546 &(ad->itc_2text_3_parent),
547 NULL, NULL, SWALLOW_Type_INVALID,
548 DEFAULT_RENDERING_ENGINE_STR, _(render_engine),
549 SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
550 if (ad->gpu_render) {
551 __BACK_POINTER_SET(ad->gpu_render);
552 ad->gpu_render->userdata = ad;
553 /*setting_disable_genlist_item(ad->gpu_render->item); */
555 SETTING_TRACE_ERROR("ad->gpu_render is NULL");
556 return SETTING_RETURN_FAIL;
560 ADD_GL_HELP(scroller, "IDS_ST_POP_USE_2D_HARDWARE_OR_SOFTWARE_ACCELERATION_IN_APPLICATIONS");
564 /* [UI] expandble list - Automatic answering */
565 char *bgproc = get_bg_processes();
567 setting_create_Gendial_exp_parent_field(scroller,
568 &(ad->itc_2text_3_parent),
570 SWALLOW_Type_INVALID,
571 "IDS_ST_BODY_LIMIT_BACKGROUND_PROCESSES",
573 SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
575 /* [UI] Limit background processes */
576 if (ad->bg_processes) {
577 __BACK_POINTER_SET(ad->bg_processes);
578 ad->bg_processes->userdata = ad;
579 ad->bg_processes->int_slp_setting_binded = INT_SLP_SETTING_DEVOPTION_BGPROCESS;
581 SETTING_TRACE_ERROR("ad->bg_processes is NULL");
582 return SETTING_RETURN_FAIL;
585 item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
586 ELM_GENLIST_ITEM_NONE, NULL, NULL);
587 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
589 /* [UI] Diagnostics and Usage */
590 setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
591 __setting_connectivity_usb_dia_usage_mouse_up_cb,
592 ad, SWALLOW_Type_INVALID, NULL, NULL,
593 0, DIAGNOSTICS_USAGE_STR,
597 item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL,
598 ELM_GENLIST_ITEM_NONE, NULL, NULL);
599 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
601 /*---------------------------------------------------------------------------------------------- */
602 /* Registering callback function for VCONFKEY_SETAPPL_USB_MODE_INT */
603 vconf_ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL,
604 debug_mode_change_vconf_cb, ad);
605 if (vconf_ret != 0) {
606 SETTING_TRACE("FAIL: vconf_notify_key_changed(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
607 return SETTING_RETURN_FAIL;
610 /* Registering callback function for VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE */
611 vconf_ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE,
612 in_mode_change_vconf_cb, ad);
613 if (vconf_ret != 0) {
614 SETTING_TRACE("FAIL: vconf_notify_key_changed(VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE)\n");
615 return SETTING_RETURN_FAIL;
619 vconf_ret = vconf_get_int(VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE, &val);
620 if (vconf_ret == 0 && val == IN_MODE_CHANGE) {
621 SETTING_TRACE("ad->blockUI: EINA_TRUE\n");
622 ad->blockUI = EINA_TRUE;
623 } else { /* val == CHANGE_COMPLETE */
624 SETTING_TRACE("ad->blockUI: EINA_FALSE\n");
625 ad->blockUI = EINA_FALSE;
628 setting_view_connectivity_usb.is_create = 1;
629 setting_view_update(&setting_view_connectivity_usb, ad);
632 return SETTING_RETURN_SUCCESS;
636 * This callback function is called when USB-setting changes VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE
640 static void in_mode_change_vconf_cb(keynode_t *key, void *data)
643 setting_retm_if(NULL == data, "ERROR:The parameter(data) is NULL\n");
644 SettingConnectivityUG *ad = (SettingConnectivityUG *) data;
645 SETTING_TRACE("ad->blockUI: %d\n", ad->blockUI);
650 ret = vconf_get_int(VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE, &in_mode_change);
651 setting_retm_if(ret != 0, "vconf_get_int(VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE\n");
653 if (CHANGE_COMPLETE == in_mode_change) {
654 SETTING_TRACE("ad->blockUI: EINA_FALSE\n");
655 ad->blockUI = EINA_FALSE;
656 } else if (IN_MODE_CHANGE == in_mode_change) {
657 SETTING_TRACE("ad->blockUI: EINA_TRUE\n");
658 ad->blockUI = EINA_TRUE;
660 SETTING_TRACE("Getting in_mode_change failed\n");
667 * When VCONFKEY_SETAPPL_USB_MODE_INT is changed, all buttons are enabled
672 static void debug_mode_change_vconf_cb(keynode_t *key, void *data)
675 setting_retm_if(NULL == data, "ERROR:The parameter(data) is NULL\n");
676 SettingConnectivityUG *ad = (SettingConnectivityUG *)data;
681 ret = vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &debugMode);
682 setting_retm_if(ret != 0, "ERROR: vconf_get_int(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
683 SETTING_TRACE("debugMode: %d", debugMode);
685 if (debugMode == 1) {
686 setting_update_gl_item_chk_status(ad->debug_mode, EINA_TRUE);
687 } else if (debugMode == 0) {
688 setting_update_gl_item_chk_status(ad->debug_mode, EINA_FALSE);
690 SETTING_TRACE("ERROR: debugMode value is improper");
693 /* Unblock setting UI */
694 SETTING_TRACE("ad->blockUI: EINA_FALSE\n");
695 ad->blockUI = EINA_FALSE;
701 * To destory the view of usb
707 static int setting_connectivity_usb_destroy(void *cb)
711 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
713 SettingConnectivityUG *ad = (SettingConnectivityUG *) cb;
714 if (!setting_view_connectivity_usb.is_create)
715 return SETTING_RETURN_SUCCESS;
717 setting_view_connectivity_usb.is_create = 0;
721 /* Removing the popup if the popup is loaded */
724 /*if (ad->selectioninfo_popup) {
725 evas_object_del(ad->selectioninfo_popup);
726 ad->selectioninfo_popup = NULL;
730 /* Closing vconf trace */
731 vconf_ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL,
732 debug_mode_change_vconf_cb);
734 if (vconf_ret != 0) {
735 SETTING_TRACE("FAIL: vconf_ignore_key_changed(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
739 vconf_ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE, in_mode_change_vconf_cb);
741 if (vconf_ret != 0) {
742 SETTING_TRACE("FAIL: vconf_ignore_key_changed(VCONFKEY_SETAPPL_USB_MODE_INT)\n");
747 if (ad->ly_usb != NULL) {
748 evas_object_del(ad->ly_usb);
753 SETTING_TRACE("ERROR: the number of errors to destroy is %d\n", num_err);
754 return SETTING_RETURN_FAIL;
756 return SETTING_RETURN_SUCCESS;
762 * To update the view of usb
768 static int setting_connectivity_usb_update(void *cb)
772 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
773 SettingConnectivityUG *ad = (SettingConnectivityUG *) cb;
775 if (ad->ly_usb != NULL) {
776 evas_object_show(ad->ly_usb);
780 return SETTING_RETURN_SUCCESS;
784 * To cleanup the view of usb
790 static int setting_connectivity_usb_cleanup(void *cb)
794 return SETTING_RETURN_SUCCESS;
798 * Do process when clicking '<-' button
805 setting_connectivity_usb_click_softkey_cancel_cb(void *data, Evas_Object *obj,
810 setting_retm_if(data == NULL, "Data parameter is NULL");
812 SettingConnectivityUG *ad = (SettingConnectivityUG *) data;
814 /* Not to block back(->) button */
815 /* Send destroy request */
816 ug_destroy_me(ad->ug);
822 * Do process when clicking 'Help' button
830 setting_connectivity_usb_click_softkey_set_cb(void *data, Evas_Object *obj,
835 setting_retm_if(data == NULL, "Data parameter is NULL");
837 SettingConnectivityUG *ad = (SettingConnectivityUG *) data;
839 /* Send destroy request */
840 setting_view_change(&setting_view_connectivity_usb,
841 &setting_view_connectivity_usb_help, ad);
848 * Here is for loading popup
854 static void unload_popup(void *data)
857 SettingConnectivityUG *ad = (SettingConnectivityUG *)data;
861 evas_object_del(ad->pop);
864 SETTING_TRACE("ad->pop == NULL\n");
872 * Callback function to respond pushing cancel button of the usb connection popup
874 static void debug_mode_resp_cb(void *data, Evas_Object *obj, void *event_info)
877 SettingConnectivityUG *ad = (SettingConnectivityUG *)data;
879 int resp_type = btn_type(obj);
880 if (resp_type == POPUP_RESPONSE_OK) {
882 int ret = vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, 1);
884 SETTING_TRACE("FAIL: vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL)");
888 setting_create_select_info_popup(&ad->selectioninfo_popup, ad->view_layout, 3.0,
889 _(CONNECTTIVITY_SELECT_INFO_POPUP_STR), "center_text");
890 } else if (resp_type == POPUP_RESPONSE_CANCEL) {
892 /*setting_update_gl_item_chk_status(ad->debug_mode, 0); */
893 if (ad->debug_mode) {
894 ad->debug_mode->chk_status = 0;
895 elm_genlist_item_fields_update(ad->debug_mode->item, "*", ELM_GENLIST_ITEM_FIELD_CONTENT);
904 * When a button on USB utilities is pushed,
905 * this function makes a popup if USB cable is not connected
907 void load_usb_connection_popup(void *data)
910 SettingConnectivityUG *ad = (SettingConnectivityUG *)data;
913 ad->pop = setting_create_popup_with_label_and_reverse_btn(ad,
916 _(DEBUG_MODE_POPUP_TEXT),
919 _("IDS_COM_SK_CANCEL"), _("IDS_ST_BUTTON_ENABLE"));
921 if (!(ad->pop)) SETTING_TRACE("FAIL: setting_create_popup_with_btn()");