2 * Copyright (c) 2010 Samsung Electronics, Inc.
5 * This software is a confidential and proprietary information
6 * of Samsung Electronics, Inc. ("Confidential Information"). You
7 * shall not disclose such Confidential Information and shall use
8 * it only in accordance with the terms of the license agreement
9 * you entered into with Samsung Electronics.
14 * Created on: Oct 8, 2013
19 #include <vconf-keys.h>
21 #include "setting-info.h"
22 #include "setting-battery.h"
26 static struct _info_menu_item info_menu_its[] = {
27 { "IDS_ST_BODY_ABOUT_GEAR_ABB", 0, _gl_info_cb },
28 #ifndef FEATURE_SETTING_SDK
29 { "IDS_ST_HEADER_USB_DEBUGGING_ABB", 0, _gl_usb_debug_cb },
33 static struct _info_menu_item _info_detail_menu_list[] = {
34 #ifndef FEATURE_SETTING_SDK
35 { "IDS_ST_BODY_MODEL_NUMBER_ABB", 0, NULL },
37 { "IDS_SM_TAB4_SOFTWARE_VERSION", 1, NULL },
38 #ifndef FEATURE_SETTING_SDK
39 { "IDS_ST_BODY_SERIAL_NUMBER", 2, NULL },
40 { "Barcode Number", 3, NULL },
41 { "IDS_ST_HEADER_OPEN_SOURCE_LICENCES_ABB", 4, _info_open_src_gl_cb },
42 { "IDS_ST_OPT_SAFETY_INFORMATION", 4, _info_safety_inform_gl_cb }
46 static void _usb_debug_popup_cb(void *data, Evas_Object *obj, void *event_info);
47 static Eina_Bool _get_imei_serial_info( char *pszBuf, int bufSize );
49 static Evas_Object * g_info_genlist = NULL;
50 static int is_enable_usb_debug = 0;
53 Eina_Bool _clear_info_cb(void *data, Elm_Object_Item *it)
55 g_info_genlist = NULL;
56 is_enable_usb_debug = 0;
61 int get_enable_USB_debugging()
63 if (vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &is_enable_usb_debug) != 0 )
65 DBG("Setting - USB debugging's info do not get!!!");
67 return is_enable_usb_debug;
70 void set_enable_USB_debugging(int is_enable)
72 if( vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, is_enable) != 0 )
74 DBG("Setting - USB debugging do not set!!!");
78 void _gl_usb_debug_cb(void *data, Evas_Object *obj, void *event_info)
80 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
82 if( !is_enable_usb_debug )
84 _usb_debug_popup_cb(data, obj, event_info);
88 is_enable_usb_debug = DISABLE;
89 set_enable_USB_debugging(is_enable_usb_debug);
91 if( g_info_genlist != NULL )
93 elm_genlist_realized_items_update(g_info_genlist);
98 void _usb_debug_chk_changed_cb(void *data, Evas_Object *obj, void *event_info)
103 static void _info_gl_del(void *data, Evas_Object *obj)
105 // FIXME: Unrealized callback can be called after this.
106 // Accessing Item_Data can be dangerous on unrealized callback.
107 Info_Item_Data *id = data;
112 char * _gl_info_title_get(void *data, Evas_Object *obj, const char *part)
115 Info_Item_Data *id = data;
116 int index = id->index;
118 if( !strcmp(part, "elm.text") )
120 snprintf(buf, sizeof(buf)-1, "%s", _(info_menu_its[index].name));
126 Evas_Object * _gl_info_check_get(void *data, Evas_Object *obj, const char *part)
128 Evas_Object *check = NULL;
129 //appdata *ad = data;
131 Info_Item_Data *id = data;
132 int index = id->index;
134 if( !strcmp(part, "elm.icon") && index == (ITEM_COUNT-1) )
136 check = elm_check_add(obj);
137 elm_object_style_set(check, "list");
138 is_enable_usb_debug = get_enable_USB_debugging();
139 elm_check_state_set(check, (is_enable_usb_debug) ? EINA_TRUE : EINA_FALSE);
140 evas_object_smart_callback_add(check, "changed", _usb_debug_chk_changed_cb, (void *)1);
141 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
142 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
143 evas_object_propagate_events_set(check, EINA_FALSE);
144 evas_object_repeat_events_set(check, EINA_TRUE);
153 Evas_Object* _create_info_list(void* data)
158 DBG("%s", "_create_info_list - appdata is null");
161 Evas_Object *genlist = NULL;
162 struct _info_menu_item *menu_its = NULL;
165 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
166 itc->item_style = "1text.1icon.1";
167 itc->func.text_get = _gl_info_title_get;
168 #ifndef FEATURE_SETTING_SDK
169 itc->func.content_get = _gl_info_check_get;
171 itc->func.del = _info_gl_del;
173 Evas_Object * layout = elm_layout_add(ad->nf);
174 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
175 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
177 genlist = elm_genlist_add(layout);
178 elm_genlist_block_count_set(genlist, 14);
179 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
181 menu_its = info_menu_its;
183 for (idx = 0; idx < sizeof(info_menu_its) / sizeof(struct _info_menu_item); idx++)
185 Info_Item_Data *id = calloc(sizeof(Info_Item_Data), 1);
187 id->item = elm_genlist_item_append(
188 genlist, // genlist object
192 ELM_GENLIST_ITEM_NONE,
193 menu_its[ idx ].func, // call back
196 elm_genlist_item_class_free(itc);
198 g_info_genlist = genlist;
200 elm_object_part_content_set(layout, "elm.genlist", genlist);
205 static void _info_detail_gl_del(void *data, Evas_Object *obj)
207 Item_Data *id = data;
212 char * _gl_info__detail_title_get(void *data, Evas_Object *obj, const char *part)
215 Item_Data *id = data;
216 int index = id->index;
217 char * device_info = NULL;
219 char szSerialNum[50];
221 if( !strcmp(part, "elm.text.1") || !strcmp(part, "elm.text") )
223 if (_info_detail_menu_list[index].type == 3) {
224 const char *lang = vconf_get_str(VCONFKEY_LANGSET);
225 if (lang && !strcmp(lang, "ko_KR.UTF-8")) {
226 snprintf(buf, sizeof(buf)-1, "일련번호");
228 snprintf(buf, sizeof(buf)-1, "%s", _(_info_detail_menu_list[index].name));
231 snprintf(buf, sizeof(buf)-1, "%s", _(_info_detail_menu_list[index].name));
235 else if ( !strcmp(part, "elm.text.2") )
239 #ifndef FEATURE_SETTING_SDK
240 if( system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &device_info)
241 != SYSTEM_INFO_ERROR_NONE )
243 DBG("Setting - Model number do not get!! error!!");
244 snprintf(buf, sizeof(buf)-1, "%s", "SM-V700");
246 snprintf(buf, sizeof(buf)-1, "%s", device_info);
251 if( system_info_get_value_string(SYSTEM_INFO_KEY_BUILD_STRING, &device_info)
252 != SYSTEM_INFO_ERROR_NONE )
254 DBG("Setting - Version name do not get!! error!!");
255 snprintf(buf, sizeof(buf)-1, "%s", "V700XXUAMJ1");
257 snprintf(buf, sizeof(buf)-1, "%s", device_info);
260 #ifndef FEATURE_SETTING_SDK
262 memset( buf, '\0', sizeof( buf ) );
263 if ( _get_imei_serial_info( szSerialNum, sizeof( szSerialNum ) ) == EINA_TRUE ) {
266 p = strstr(szSerialNum, ",");
271 if (szSerialNum && strlen(szSerialNum)) {
272 snprintf(buf, sizeof(buf)-1, "%s", szSerialNum);
274 snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
277 snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
282 memset( buf, '\0', sizeof( buf ) );
283 if ( _get_imei_serial_info( szSerialNum, sizeof( szSerialNum ) ) == EINA_TRUE ) {
285 p = strstr(szSerialNum, ",");
293 if (p && strlen(p)) {
294 snprintf(buf, sizeof(buf)-1, "%s", p);
296 snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
299 snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
311 static void open_sources_licences_lange_changed(void *data, Evas_Object *obj, void *event_info)
313 DBG("Setting - open_sources_licences_lange_changed() is called!");
315 char * license_str = elm_entry_utf8_to_markup(
316 _("IDS_ST_POP_YOU_CAN_CHECK_ANNOUNCEMENTS_REGARDING_OPEN_SOURCE_LICENCES_BY_FOLLOWING_THE_STEPS_BELOW_N1_GO_TO_SETTINGS_GEAR_INFO_N2_SELECT_USB_MSG"));
320 char * font_size_frame = "<font_size=34>%s</font_size>";
321 snprintf(buf, sizeof(buf)-1, font_size_frame, license_str);
323 char * frame = strdup(buf);
324 const char * file_path = "/usr/share/license.html";
325 const char * command = "sdb pull /usr/share/license.html c:\\OpenSource\\license.html";
327 snprintf(buf, sizeof(buf)-1, frame, file_path, command);
329 elm_object_text_set(obj, strdup(buf));
334 void _open_source_licences_popup_cb(void *data, Evas_Object *obj, void *event_info)
336 Evas_Object *popup = NULL;
337 //Evas_Object *btn = NULL;
338 Evas_Object *scroller = NULL;
339 Evas_Object *label = NULL;
341 appdata *ad = (appdata *) data;
345 popup = elm_popup_add(ad->nf);
346 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
347 elm_object_translatable_part_text_set(popup, "title,text", "IDS_ST_HEADER_OPEN_SOURCE_LICENCES_ABB");
351 scroller = elm_scroller_add(popup);
352 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
353 elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
354 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
355 elm_object_content_set(popup, scroller);
356 elm_object_style_set(scroller, "effect");
357 evas_object_show(scroller);
359 label = elm_label_add(scroller);
360 elm_object_style_set(label, "popup/default");
361 elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
363 // char * license_str = "You can check announcements regarding open source licences by following the steps below."
364 // "<br>1. Go to Settings > Gear info."
365 // "<br>2. Select USB debugging."
366 // "<br>3. Tap OK on the USB debugging pop-up that appears on your Samsung Gear."
367 // "<br>4. Connect your Samsung Gear to your PC."
368 // "<br>5. Using sdb cmd, download the %1$s file to your PC by running cmd and entering \"%2$s\" into the input field."
369 // "<br>Please visit<br>http://developer. samsung.com/, download and install Samsung Gear SDK for using sdb.";
371 char * license_str = elm_entry_utf8_to_markup(
372 _("IDS_ST_POP_YOU_CAN_CHECK_ANNOUNCEMENTS_REGARDING_OPEN_SOURCE_LICENCES_BY_FOLLOWING_THE_STEPS_BELOW_N1_GO_TO_SETTINGS_GEAR_INFO_N2_SELECT_USB_MSG"));
376 char * font_size_frame = "<font_size=34>%s</font_size>";
377 snprintf(buf, sizeof(buf)-1, font_size_frame, license_str);
379 char * frame = strdup(buf);
380 const char * file_path = "/usr/share/license.html";
381 const char * command = "sdb pull /usr/share/license.html c:\\OpenSource\\license.html";
383 snprintf(buf, sizeof(buf)-1, frame, file_path, command);
385 char *txt = strdup(buf);
387 elm_object_text_set(label, txt);
392 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
393 evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
394 evas_object_smart_callback_add(label, "language,changed", open_sources_licences_lange_changed, NULL);
395 elm_object_content_set(scroller, label);
396 evas_object_show(label);
398 ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
400 evas_object_show(popup);
403 void _info_open_src_gl_cb(void *data, Evas_Object *obj, void *event_info)
405 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
407 _open_source_licences_popup_cb(data, obj, event_info);
410 void safety_inform_lange_changed(void *data, Evas_Object *obj, void *event_info)
412 DBG("Setting - safety_inform_lange_changed() is called!");
414 char * safety_str = elm_entry_utf8_to_markup(_("IDS_ST_BODY_YOU_CAN_CHECK_NOTICES_REGARDING_SAFETY_INFORMATION_BY_FOLLOWING_THE_STEPS_BELOW_N_N1_GO_TO_SETTINGS_MSG"));
417 snprintf(buf, sizeof(buf), "<font_size=34>%s</font_size>",safety_str);
418 elm_object_text_set(obj, strdup(buf));
423 void _safety_inform_popup_cb(void *data, Evas_Object *obj, void *event_info)
425 Evas_Object *popup = NULL;
426 //Evas_Object *btn = NULL;
427 Evas_Object *scroller = NULL;
428 Evas_Object *label = NULL;
430 appdata *ad = (appdata *) data;
434 popup = elm_popup_add(ad->nf);
435 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
436 elm_object_translatable_part_text_set(popup, "title,text", "IDS_ST_OPT_SAFETY_INFORMATION");
440 scroller = elm_scroller_add(popup);
441 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
442 elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
443 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
444 elm_object_content_set(popup, scroller);
445 elm_object_style_set(scroller, "effect");
446 evas_object_show(scroller);
448 label = elm_label_add(scroller);
449 elm_object_style_set(label, "popup/default");
450 elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
452 char * safety_str = elm_entry_utf8_to_markup(_("IDS_ST_BODY_YOU_CAN_CHECK_NOTICES_REGARDING_SAFETY_INFORMATION_BY_FOLLOWING_THE_STEPS_BELOW_N_N1_GO_TO_SETTINGS_MSG"));
455 snprintf(buf, sizeof(buf)-1, "<font_size=34>%s</font_size>", safety_str);
457 char *txt = strdup(buf);
458 elm_object_text_set(label, txt);
461 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
462 evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
463 elm_object_content_set(scroller, label);
464 evas_object_smart_callback_add(label, "language,changed", safety_inform_lange_changed, NULL);
465 evas_object_show(label);
467 ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
469 evas_object_show(popup);
472 void _info_safety_inform_gl_cb(void *data, Evas_Object *obj, void *event_info)
474 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
476 _safety_inform_popup_cb(data, obj, event_info);
479 void _gl_info_cb(void *data, Evas_Object *obj, void *event_info)
481 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
486 DBG("%s", "_gl_info_cb - appdata is null");
489 Elm_Object_Item *nf_it = NULL;
490 Evas_Object *genlist = NULL;
491 struct _info_menu_item *menu_its = NULL;
494 Elm_Genlist_Item_Class *itc_tmp;
496 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
497 itc->item_style = "2text";
498 itc->func.text_get = _gl_info__detail_title_get;
499 itc->func.del = _info_detail_gl_del;
501 Elm_Genlist_Item_Class *itc_open_src_info = elm_genlist_item_class_new();
502 itc_open_src_info->item_style = "1text";
503 itc_open_src_info->func.text_get = _gl_info__detail_title_get;
504 itc_open_src_info->func.del = _info_detail_gl_del;
506 genlist = elm_genlist_add(ad->nf);
507 elm_genlist_block_count_set(genlist, 14);
508 elm_genlist_homogeneous_set(genlist, EINA_TRUE);
509 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
511 menu_its = _info_detail_menu_list;
513 for (idx = 0; idx < sizeof(_info_detail_menu_list) / sizeof(struct _info_menu_item); idx++)
515 #ifndef FEATURE_SETTING_SDK
516 if( menu_its[ idx ].type == 4 )
518 itc_tmp = itc_open_src_info;
528 if (!(kor == 0 && menu_its[idx].type == 3)) {
530 Item_Data *id = calloc(sizeof(Item_Data), 1);
532 id->item = elm_genlist_item_append(
533 genlist, // genlist object
534 itc_tmp, // item class
537 ELM_GENLIST_ITEM_NONE,
538 menu_its[ idx ].func, // call back
540 #ifndef FEATURE_SETTING_SDK
541 if (itc_tmp == itc) {
542 elm_genlist_item_select_mode_set(id->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
545 elm_genlist_item_select_mode_set(id->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
549 elm_genlist_item_class_free(itc);
550 elm_genlist_item_class_free(itc_open_src_info);
552 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
553 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
556 static void _usb_debug_cancel_cb(void *data, Evas_Object *obj, void *event_info)
558 appdata *ad = (appdata *) data;
562 is_enable_usb_debug = DISABLE;
564 if( g_info_genlist != NULL )
566 elm_genlist_realized_items_update(g_info_genlist);
570 evas_object_del(ad->popup);
575 static void _usb_debug_ok_cb(void *data, Evas_Object *obj, void *event_info)
577 //Elm_Object_Item* it = (Elm_Object_Item *)event_info;
579 //Evas_Object* check = NULL;
583 DBG("%s", "_gl_usb_debug_cb : appdata is null");
588 evas_object_del(ad->popup);
592 is_enable_usb_debug = ENABLE;
594 set_enable_USB_debugging(is_enable_usb_debug);
596 if( g_info_genlist != NULL )
598 elm_genlist_realized_items_update(g_info_genlist);
602 void _usb_debug_lange_changed(void *data, Evas_Object *obj, void *event_info)
604 DBG("Setting - _usb_debug_lange_changed() is called!");
606 char * debug_str = elm_entry_utf8_to_markup(_("IDS_ST_POP_ENABLING_USB_DEBUGGING_WILL_ALLOW_YOU_TO_COPY_FILES_BETWEEN_YOUR_PC_AND_YOUR_GEAR_INSTALL_APPLICATIONS_ON_YOUR_GEAR_WITHOUT_RECEIVING_MSG"));
609 snprintf(buf, sizeof(buf), "<font_size=34>%s</font_size>", debug_str);
610 elm_object_text_set(obj, strdup(buf));
615 static void _usb_debug_popup_cb(void *data, Evas_Object *obj, void *event_info)
617 Evas_Object *popup = NULL;
618 Evas_Object *btn = NULL;
619 Evas_Object *scroller = NULL;
620 Evas_Object *label = NULL;
622 appdata *ad = (appdata *) data;
626 popup = elm_popup_add(ad->nf);
627 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
628 elm_object_translatable_part_text_set(popup, "title,text", "IDS_ST_HEADER_USB_DEBUGGING_ABB");
632 scroller = elm_scroller_add(popup);
633 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
634 elm_object_content_set(popup, scroller);
635 elm_object_style_set(scroller, "effect");
636 evas_object_show(scroller);
638 label = elm_label_add(scroller);
639 elm_object_style_set(label, "popup/default");
640 elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
644 char * font_size_frame = "<font_size=34>%s</font_size>";
645 snprintf(buf, sizeof(buf)-1, font_size_frame, _("IDS_ST_POP_ENABLING_USB_DEBUGGING_WILL_ALLOW_YOU_TO_COPY_FILES_BETWEEN_YOUR_PC_AND_YOUR_GEAR_INSTALL_APPLICATIONS_ON_YOUR_GEAR_WITHOUT_RECEIVING_MSG"));
647 char *txt = strdup(buf);
648 elm_object_text_set(label, txt);
650 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
651 evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
652 evas_object_smart_callback_add(label, "language,changed", _usb_debug_lange_changed, NULL);
653 elm_object_content_set(scroller, label);
654 evas_object_show(label);
656 ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
658 btn = elm_button_add(popup);
659 elm_object_style_set(btn, "popup");
660 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
661 elm_object_translatable_text_set(btn, "IDS_COM_SK_CANCEL_A");
662 elm_object_part_content_set(popup, "button1", btn);
663 evas_object_smart_callback_add(btn, "clicked", _usb_debug_cancel_cb, ad);
665 btn = elm_button_add(popup);
666 elm_object_style_set(btn, "popup");
667 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
668 elm_object_translatable_text_set(btn, "IDS_WNOTI_BUTTON_OK_ABB2");
669 elm_object_part_content_set(popup, "button2", btn);
670 evas_object_smart_callback_add(btn, "clicked", _usb_debug_ok_cb, ad);
672 evas_object_show(popup);
676 * Get IMEI Serial number
678 static Eina_Bool _get_imei_serial_info( char *pszBuf, int bufSize )
681 int fileReadByte = 0;
684 pFile = fopen( "/csa/imei/serialno.dat", "r" );
688 memset( pszBuf, '\0', bufSize );
690 if ( fgets( pszBuf, bufSize, pFile )) {
693 bResult = EINA_FALSE;