2 * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
4 * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
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.
20 * Created on: Oct 9, 2013
24 #include "setting-bluetooth.h"
25 #include "setting_control_bt.h"
26 #include "setting_data_vconf.h"
30 static struct _bt_menu_item bt_menu_its[] = {
31 { "IDS_QP_BUTTON_BLUETOOTH", DISABLE, _blutooth_cb },
32 { "IDS_VCALL_BODY_BT_HEADSET", DISABLE, _BT_headset_cb },
33 { "IDS_ST_HEADER_DEVICE_NAME_ABB", DISABLE, _visibility_cb }, // "IDS_OP_BODY_VISIBILITY"
34 { NULL, DISABLE, NULL }
37 static char * bluetooth_enable_str[] = {
38 "IDS_ST_BODY_OFF_M_STATUS",
39 "IDS_ST_BODY_ON_M_STATUS",
40 "IDS_COM_POP_PROCESSING"
43 static char * visible_str[] = {
44 "IDS_ST_BODY_DISABLED_M_STATUS",
45 "IDS_ST_BODY_YOUR_GEAR_IS_VISIBLE_FOR_PS_ABB"
49 static Ecore_Timer *bt_timer = NULL;
50 static Ecore_Timer *vb_timer = NULL;
52 static Elm_Object_Item* bt_it = NULL;
53 static Elm_Object_Item* vb_it = NULL;
54 static Elm_Object_Item* hf_it = NULL;
56 static Evas_Object * bt_genlist = NULL;
57 static Evas_Object * g_bt_check = NULL;
59 static int is_bt_operating = BT_NON_OPERATING;
60 static int timeout_seconds = VISIBILITY_TIMEOUT;
61 static bt_adapter_visibility_mode_e visibility_mode = BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE;
62 static int origin_bt_enable;
63 static double bt_time = 0.0;
64 static int is_connected_hf = FALSE;
65 static char * g_device_name = NULL;
68 //static void bt_state_vconf_change_cb(keynode_t * key, void * data);
69 static void _init_bt_value();
70 static int is_handsfree_connected();
71 static void _bt_genlist_update();
73 static void sap_state_vconf_change_cb(keynode_t *key, void * data)
75 _update_visibility_item_view(is_handsfree_connected());
78 static void _bt_adapter_state_enabled_cb(int result, bt_adapter_state_e adapter_state, void *user_data)
80 DBG("Setting - _bt_adapter_state_enabled_cb() is called!");
82 if (adapter_state == BT_ADAPTER_ENABLED)
84 DBG("Setting - BT adapter state : BT_ADAPTER_ENABLED");
86 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = 1;
90 else if (adapter_state == BT_ADAPTER_DISABLED)
92 DBG("Setting - BT adapter state : BT_ADAPTER_ENABLED");
96 elm_genlist_item_fields_update( bt_it, "elm.text.2", ELM_GENLIST_ITEM_FIELD_TEXT);
97 edje_object_signal_emit(elm_layout_edje_get(g_bt_check), "elm,state,enabled", "elm");
98 elm_check_state_set(g_bt_check, EINA_FALSE);
101 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = 0;
102 is_connected_hf = FALSE;
103 _bt_genlist_update();
111 DBG("Setting - initialize_bt()");
113 if( bt_initialize() != BT_ERROR_NONE )
115 ERR("Setting - bt_initialize() is failed....");
118 DBG("Setting - bt_initialize() is success");
120 if(bt_adapter_set_state_changed_cb(_bt_adapter_state_enabled_cb, NULL) != BT_ERROR_NONE)
122 ERR("[%s] bt_adapter_set_state_changed_cb() failed.", __FUNCTION__);
127 DBG("bt_adapter_set_state_changed_cb() is success!");
130 bluetooth_hf_init(hf_event_handler, NULL);
132 register_vconf_changing("memory/private/sap/conn_status", sap_state_vconf_change_cb, NULL);
135 Eina_Bool _clear_bluetooth_cb(void *data, Elm_Object_Item *it)
142 static void _disable_visibility_item_view()
144 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = DISABLE;
145 timeout_seconds = VISIBILITY_TIMEOUT;
149 elm_genlist_item_update(vb_it);
153 static void hf_event_handler(int event, void *data, void *user_data)
156 case BLUETOOTH_EVENT_HF_CONNECTED:
157 DBG("Setting - BLUETOOTH_EVENT_HF_CONNECTED");
158 _update_visibility_item_view(TRUE);
161 case BLUETOOTH_EVENT_HF_DISCONNECTED:
162 DBG("Setting - BLUETOOTH_EVENT_HF_DISCONNECTED");
163 _update_visibility_item_view(is_handsfree_connected());
169 static void bt_state_vconf_change_cb(keynode_t * key, void * data)
171 DBG("Setting - bt_state_vconf_change_cb() is called!");
173 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = vconf_keynode_get_int(key);
175 if( bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable == VCONFKEY_BT_STATUS_ON )
177 DBG("Setting - bt is On");
179 _bt_genlist_update();
181 else if( bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable == VCONFKEY_BT_STATUS_OFF )
183 DBG("Setting - bt is Off");
185 is_connected_hf = FALSE;
187 _disable_visibility_item_view();
191 elm_genlist_item_fields_update( bt_it, "elm.text.2", ELM_GENLIST_ITEM_FIELD_TEXT);
193 elm_check_state_set(g_bt_check, EINA_FALSE);
197 elm_genlist_item_update(hf_it);
205 void _update_visibility_item_view(int is_hf_connected)
207 DBG("Setting - _update_view() is called!!");
211 is_connected_hf = TRUE;
215 ecore_timer_del(vb_timer);
219 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = DISABLE;
220 timeout_seconds = VISIBILITY_TIMEOUT;
224 elm_genlist_item_update(vb_it);
229 is_connected_hf = FALSE;
233 elm_genlist_item_update(vb_it);
238 void clear_bt_resource()
240 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = DISABLE;
241 is_bt_operating = BT_NON_OPERATING;
243 if ( timeout_seconds == 0 && vb_timer )
245 ecore_timer_del(vb_timer);
248 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = DISABLE;
249 timeout_seconds = VISIBILITY_TIMEOUT;
252 bluetooth_hf_deinit();
254 int ret = bt_adapter_unset_state_changed_cb();
256 if (ret != BT_ERROR_NONE)
258 ERR("Setting - bt adapter unset state changed cb is fail");
261 if (bt_deinitialize() < 0)
263 ERR("Setting - bt_deinitialize() failed.");
266 DBG("Setting - bt_deinitialize() is success");
273 /* Unregister SAP status vconf changeing callback */
274 unregister_vconf_changing("memory/private/sap/conn_status", sap_state_vconf_change_cb);
277 static void _init_bt_value()
281 timeout_seconds = VISIBILITY_TIMEOUT;
282 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = DISABLE;
283 is_bt_operating = BT_NON_OPERATING;
286 static void _alternate_bt_mode( void * data )
289 bt_adapter_state_e value;
291 //appdata * ad = data;
293 int prev_bt_enable = bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable;
294 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = 2;
297 elm_genlist_item_fields_update( bt_it, "elm.text.2", ELM_GENLIST_ITEM_FIELD_TEXT);
298 elm_check_state_set(g_bt_check, !prev_bt_enable);
299 edje_object_signal_emit(elm_layout_edje_get(g_bt_check), "elm,state,disabled", "elm");
302 if (bt_adapter_get_state(&value) != BT_ERROR_NONE)
304 ERR("Setting - bt_adapter_get_state() is failed ");
309 if( value == EINA_TRUE )
311 DBG("Setting - Current bt is on....disable...");
313 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = 0;
314 is_connected_hf = FALSE;
315 _disable_visibility_item_view();
319 elm_genlist_item_update(hf_it);
322 ret = bt_adapter_disable();
324 timeout_seconds = 0; // vb_timer stop!!
328 DBG("Setting - Current bt is off....enable...");
329 ret = bt_adapter_enable();
332 if ( ret != BT_ERROR_NONE )
334 DBG("Setting - Enalbe or Disable failed.... : %d", ret);
336 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = origin_bt_enable;
338 _bt_genlist_update();
345 static void _blutooth_cb(void *data, Evas_Object *obj, void *event_info)
347 DBG("Setting - %s", "Setting - _blutooth_cb is called");
349 Elm_Object_Item* it = (Elm_Object_Item *)event_info;
350 elm_genlist_item_selected_set(it, EINA_FALSE);
352 if (is_bt_operating == BT_OPERATING)
354 DBG("Setting - _blutooth_cb() is same status ");
358 is_bt_operating = BT_OPERATING;
363 DBG("%s", "Setting - _blutooth_cb - ad or check is null");
367 // previous state backup
368 origin_bt_enable = bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable;
370 if( vb_timer != NULL && vb_it != NULL )
372 DBG("Setting - vb_it is disabled");
374 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = DISABLE;
377 ecore_timer_del(vb_timer);
380 elm_genlist_item_update(vb_it);
383 _alternate_bt_mode(data);
386 static int is_valid_timeout(int seconds)
388 return ( (seconds > 0) && (seconds <= VISIBILITY_TIMEOUT) );
391 static void _bt_genlist_update()
395 elm_genlist_item_fields_update( bt_it, "elm.text.2", ELM_GENLIST_ITEM_FIELD_TEXT);
397 int bt_enable = bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable;
398 edje_object_signal_emit(elm_layout_edje_get(g_bt_check), "elm,state,enabled", "elm");
399 elm_check_state_set(g_bt_check, (bt_enable == 1) ? EINA_TRUE : EINA_FALSE);
403 elm_genlist_item_update(hf_it);
407 elm_genlist_item_update(vb_it);
411 static void _update_visibility_item_update(void * data)
416 DBG("Setting - ad is null.");
420 if( ad->MENU_TYPE == SETTING_BLUETOOTH )
422 DBG("Setting - update_visibility_item_update");
424 _bt_genlist_update();
428 static void _init_vb_data(void * data)
430 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = DISABLE;
431 timeout_seconds = VISIBILITY_TIMEOUT;
432 _update_visibility_item_update(data);
436 static Eina_Bool __vb_timeout(void *data)
438 if( is_valid_timeout(timeout_seconds) )
440 DBG("Setting - %d seconds", timeout_seconds);
444 _update_visibility_item_update(data);
446 return ECORE_CALLBACK_RENEW;
449 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = DISABLE;
450 _update_visibility_item_update(data);
452 DBG("Setting - visibility time is out.");
454 if( visibility_mode != BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE )
456 if( bt_adapter_set_visibility(BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE, 0) != BT_ERROR_NONE )
458 DBG("[%s] Setting - bt_adapter_set_visibility(NON) failed.", __FUNCTION__);
460 return ECORE_CALLBACK_CANCEL;
462 visibility_mode = BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE;
463 DBG("[%s] Setting - bt_adapter_set_visibility(NON) success.", __FUNCTION__);
468 return ECORE_CALLBACK_CANCEL;
471 static void _start_visibility_timer(void * data)
473 if ( vb_timer) // Timer Start
475 ecore_timer_del(vb_timer);
478 vb_timer = ecore_timer_add(1.0, (Ecore_Task_Cb) __vb_timeout, data);
481 static void _bt_visibility_mode(void * data)
483 bt_adapter_state_e bt_state;
485 if( bt_adapter_get_state(&bt_state) != BT_ERROR_NONE )
487 DBG("[%s] Setting - bt_adapter_get_state() failed.", __FUNCTION__);
492 vconf_get_int(VCONFKEY_BT_STATUS, &state);
494 DBG("Setting - bt state : %d", state);
496 if( bt_state == BT_ADAPTER_ENABLED )
498 if(bt_adapter_get_visibility(&visibility_mode, NULL) != BT_ERROR_NONE)
500 DBG("[%s] Setting - bt_adapter_get_visibility() failed.", __FUNCTION__);
504 DBG("Setting - visibility_mode : %d", visibility_mode);
506 if( visibility_mode == BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE )
508 if( bt_adapter_set_visibility(BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE, 0) != BT_ERROR_NONE )
510 DBG("[%s] Setting - bt_adapter_set_visibility(VISIBLE) failed.", __FUNCTION__);
514 visibility_mode = BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE;
515 DBG("[%s] Setting - bt_adapter_set_visibility(VISIBLE) success.", __FUNCTION__);
517 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = ENABLE;
518 timeout_seconds = VISIBILITY_TIMEOUT;
522 elm_genlist_item_update(vb_it);
525 _start_visibility_timer(data); // Timer start
528 else if( visibility_mode == BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE )
530 DBG("[%s] Setting - Visibility mode was already set as BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE.", __FUNCTION__);
532 timeout_seconds = 0; // Timer stop;
534 if( bt_adapter_set_visibility(BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE, 0) != BT_ERROR_NONE )
536 DBG("[%s] Setting - bt_adapter_set_visibility(NON) failed.", __FUNCTION__);
540 visibility_mode = BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE;
541 DBG("[%s] Setting - bt_adapter_set_visibility(NON) success.", __FUNCTION__);
547 static int is_disable_visibility_item_view()
549 return ( !bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable || is_connected_hf );
552 static void _visibility_cb(void *data, Evas_Object *obj, void *event_info)
554 DBG("%s", "Setting - _visibility_cb is called");
556 Elm_Object_Item* it = (Elm_Object_Item *)event_info;
557 elm_genlist_item_selected_set(it, EINA_FALSE);
559 if( is_disable_visibility_item_view() )
561 DBG("Setting - disable visibility!!");
568 DBG("%s", "Setting - _visibility_cb - ad or check is null");
572 _bt_visibility_mode(data);
575 static int _is_enable_BT_headset()
579 vconf_get_int(VCONFKEY_BT_STATUS, &enable);
581 return (enable != VCONFKEY_BT_STATUS_OFF) && bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable;
584 static void _BT_headset_cb(void *data, Evas_Object *obj, void *event_info)
586 DBG("%s", "Setting - _BT_headset_cb is called");
588 Elm_Object_Item* it = (Elm_Object_Item *)event_info;
589 elm_genlist_item_selected_set(it, EINA_FALSE);
591 if( !_is_enable_BT_headset() )
595 service_create(&service);
596 service_set_app_id(service, "org.tizen.bluetooth");
597 service_add_extra_data(service, "launch-type", "setting");
598 service_send_launch_request(service, NULL, NULL);
599 service_destroy(service);
602 static char * _get_device_name()
604 char *bt_adapter_name = NULL;
607 bt_adapter_state_e bt_state;
608 if( bt_adapter_get_state(&bt_state) != BT_ERROR_NONE )
610 DBG("[%s] Setting - bt_adapter_get_state() failed.", __FUNCTION__);
613 if (bt_adapter_get_name(&bt_adapter_name) != BT_ERROR_NONE)
615 ERR("%s,%d: bt get name fail", __func__, __LINE__);
619 bt_adapter_name = vconf_get_str(VCONFKEY_SETAPPL_DEVICE_NAME_STR);
621 return strdup(bt_adapter_name);
624 static char * _gl_bt_title_get(void *data, Evas_Object *obj, const char *part)
627 Bt_Item_Data *id = data;
628 int index = id->index;
631 if( !strcmp(part, "elm.text.1") || !strcmp(part, "elm.text") )
633 if( index == BT_MENU_TYPE_BT_ON_OFF )
635 snprintf(buf, sizeof(buf)-1, "%s", _(bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].name));
637 else if( index == BT_MENU_TYPE_VISIBLE_ON_OFF )
639 if( is_disable_visibility_item_view() )
641 strcpy(expression, "<font color=#515151>%s</font>");
645 strcpy(expression, "%s");
647 snprintf(buf, sizeof(buf)-1, expression, _(bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].name));
651 if( !_is_enable_BT_headset() )
653 strcpy(expression, "<font color=#515151>%s</font>");
657 strcpy(expression, "%s");
659 snprintf(buf, sizeof(buf)-1, expression, _(bt_menu_its[BT_MENU_TYPE_BT_HEADSET].name));
662 else if( !strcmp(part, "elm.text.2") )
664 if( index == BT_MENU_TYPE_BT_ON_OFF )
666 DBG("BT item subtitle updated!!");
667 int sub_title_type = bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable;
668 char * subtitle = subtitle = _(bluetooth_enable_str[sub_title_type]);
669 snprintf(buf, sizeof(buf)-1, "%s", subtitle);
671 else if( index == BT_MENU_TYPE_VISIBLE_ON_OFF )
673 if( is_disable_visibility_item_view() )
675 strcpy(expression, "<font color=#515151>%s</font>");
677 if( g_device_name == NULL )
679 g_device_name = _get_device_name();
680 if( g_device_name == NULL )
682 g_device_name = _(visible_str[bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable]);
686 snprintf(buf, sizeof(buf)-1, expression, g_device_name);
690 if( bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable )
692 int hour = timeout_seconds / 60;
693 int minutes = timeout_seconds % 60;
695 char time_buf[16] = {0,};
696 snprintf(time_buf, sizeof(time_buf)-1, "%02d:%02d", hour, minutes);
698 snprintf(buf, sizeof(buf)-1, _(visible_str[bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable]), time_buf);
702 //snprintf(buf, sizeof(buf)-1, "%s", _(visible_str[bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable]));
704 if( g_device_name == NULL )
706 g_device_name = _get_device_name();
707 if( g_device_name == NULL )
709 g_device_name = _(visible_str[bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable]);
713 snprintf(buf, sizeof(buf)-1, "%s", g_device_name);
721 static Evas_Object * _get_emtpy_layout(Evas_Object * parent)
726 Evas_Object * layout = elm_layout_add(parent);
727 elm_layout_file_set(layout, EDJE_PATH, "setting-empty/swallow");
732 static Evas_Object * _gl_bt_check_get(void *data, Evas_Object *obj, const char *part)
734 Evas_Object *layout = NULL;
735 Evas_Object *check = NULL;
736 //appdata *ad = data;
738 Bt_Item_Data *id = data;
739 int index = id->index;
741 if( !strcmp(part, "elm.icon") )
743 layout = _get_emtpy_layout(obj);
745 check = elm_check_add(obj);
746 elm_check_state_set(check, (bt_menu_its[index].is_enable == TRUE) ? EINA_TRUE : EINA_FALSE);
747 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
748 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
750 if( index == BT_MENU_TYPE_VISIBLE_ON_OFF )
752 if( is_disable_visibility_item_view() )
754 edje_object_signal_emit(elm_layout_edje_get(check), "elm,state,disabled", "elm");
762 elm_object_part_content_set(layout, "empty.swallow", check);
767 static void _bt_gl_del(void *data, Evas_Object *obj)
769 Bt_Item_Data *id = data;
774 static void init_values()
778 bt_menu_its[BT_MENU_TYPE_VISIBLE_ON_OFF].is_enable = DISABLE;
782 static int is_handsfree_connected()
785 int headset_connected = FALSE;
786 int sap_connected = FALSE;
788 vconf_get_int(VCONFKEY_BT_DEVICE, &headset_connected);
789 DBG("Heaadset connected : %x", headset_connected);
791 if ( headset_connected & VCONFKEY_BT_DEVICE_AG_CONNECTED )
793 DBG("Setting - Heaadset connected");
797 vconf_get_int("memory/private/sap/conn_status", &sap_connected);
798 DBG("Sap connected : %d", sap_connected);
801 DBG("Setting - Sap connected");
808 static int is_add_BT_headset()
811 // this code will be changed!!
815 static int is_BT_enable()
817 int enable = DISABLE;
819 if (bt_adapter_get_state(&enable) != BT_ERROR_NONE)
821 ERR("Setting - bt_adapter_get_state() is failed ");
829 Evas_Object* _create_bt_list(void* data)
834 DBG("%s", "_create_bluetooth_list - appdata is null");
838 Evas_Object *genlist = NULL;
839 struct _bt_menu_item *menu_its = NULL;
840 Elm_Genlist_Item_Class *temp_itc = NULL;
845 // get BT enable Vconf
846 //vconf_get_int(VCONFKEY_BT_STATUS, &bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable);
848 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = is_BT_enable();
850 DBG("Setting - BT status is %d", bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable);
852 if( bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable > 1 )
854 bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable = ENABLE;
857 if( bt_menu_its[BT_MENU_TYPE_BT_ON_OFF].is_enable )
859 is_connected_hf = is_handsfree_connected();
863 is_connected_hf = FALSE;
866 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
867 itc->item_style = "2text.1icon.1";
868 itc->func.text_get = _gl_bt_title_get;
869 itc->func.content_get = _gl_bt_check_get;
870 itc->func.del = _bt_gl_del;
872 Elm_Genlist_Item_Class *itc2 = elm_genlist_item_class_new();
873 itc2->item_style = "1text";
874 itc2->func.text_get = _gl_bt_title_get;
875 itc2->func.del = _bt_gl_del;
877 Evas_Object * layout = elm_layout_add(ad->nf);
878 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
879 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
881 genlist = elm_genlist_add(layout);
882 elm_genlist_block_count_set(genlist, 14);
883 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
885 menu_its = bt_menu_its;
887 for (idx = 0; idx < BT_LIST_ITEM_COUNT; idx++)
889 // if bt headset is disable, continue
890 if( idx == BT_MENU_TYPE_BT_HEADSET && !is_add_BT_headset() )
893 temp_itc = (idx == BT_MENU_TYPE_BT_HEADSET) ? itc2 : itc;
895 Bt_Item_Data *id = calloc(sizeof(Bt_Item_Data), 1);
897 id->item = elm_genlist_item_append(
898 genlist, // genlist object
899 temp_itc, // item class
902 ELM_GENLIST_ITEM_NONE,
903 menu_its[ idx ].func, // call back
906 if(idx == BT_MENU_TYPE_BT_ON_OFF)
910 else if(idx == BT_MENU_TYPE_BT_HEADSET)
919 elm_genlist_item_class_free(itc);
920 elm_genlist_item_class_free(itc2);
922 bt_genlist = genlist;
924 elm_object_part_content_set(layout, "elm.genlist", genlist);