Initialize Tizen 2.3
[apps/home/b2-clocksetting.git] / src / setting-info.c
1 /*
2  * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16 */
17 /*
18  * setting-info.c
19  *
20  *  Created on: Oct 8, 2013
21  *      Author: min-hoyun
22  */
23
24 #include <vconf.h>
25 #include <vconf-keys.h>
26
27 #include "setting-info.h"
28 #include "setting-battery.h"
29 #include "util.h"
30
31 #define _CSC_FEATURE_DEF_BOOL_SETTING_IMEI_SERIAL_ADDITION 0
32
33
34 static struct _info_menu_item info_menu_its[] = {
35         { "IDS_ST_BODY_ABOUT_GEAR_ABB",         0,       _gl_info_cb },
36 #ifndef FEATURE_SETTING_SDK
37         { "IDS_ST_HEADER_USB_DEBUGGING_ABB",    0,       _gl_usb_debug_cb },
38 #endif
39 };
40
41 static struct _info_menu_item _info_detail_menu_list[] = {
42 #ifndef FEATURE_SETTING_SDK
43                 { "IDS_ST_BODY_MODEL_NUMBER_ABB",       0,      NULL },
44 #endif
45                 { "IDS_SM_TAB4_SOFTWARE_VERSION",       1,      NULL },
46 #ifndef FEATURE_SETTING_SDK
47                 { "IDS_ST_BODY_SERIAL_NUMBER",          2,      NULL },
48                 { "Barcode Number",                     3,      NULL },
49                 { "IDS_ST_HEADER_OPEN_SOURCE_LICENCES_ABB",     4,      _info_open_src_gl_cb },
50                 { "IDS_ST_OPT_SAFETY_INFORMATION",      4,      _info_safety_inform_gl_cb }
51 #endif
52 };
53
54 static void _usb_debug_popup_cb(void *data, Evas_Object *obj, void *event_info);
55 static Eina_Bool _get_imei_serial_info( char *pszBuf, int bufSize );
56
57 static Evas_Object * g_info_genlist = NULL;
58 static int is_enable_usb_debug = 0;
59 static int kor = 0;
60
61 Eina_Bool _clear_info_cb(void *data, Elm_Object_Item *it)
62 {
63         g_info_genlist = NULL;
64         is_enable_usb_debug = 0;
65
66         return EINA_TRUE;
67 }
68
69 int get_enable_USB_debugging()
70 {
71         if (vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &is_enable_usb_debug) != 0 )
72         {
73                 DBG("Setting - USB debugging's info do not get!!!");
74         }
75         return is_enable_usb_debug;
76 }
77
78 void set_enable_USB_debugging(int is_enable)
79 {
80         if( vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, is_enable) != 0 )
81         {
82                 DBG("Setting - USB debugging do not set!!!");
83         }
84 }
85
86 void _gl_usb_debug_cb(void *data, Evas_Object *obj, void *event_info)
87 {
88         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
89
90         if( !is_enable_usb_debug )
91         {
92                 _usb_debug_popup_cb(data, obj, event_info);
93         }
94         else
95         {
96                 is_enable_usb_debug = DISABLE;
97                 set_enable_USB_debugging(is_enable_usb_debug);
98
99                 if(     g_info_genlist != NULL )
100                 {
101                         elm_genlist_realized_items_update(g_info_genlist);
102                 }
103         }
104 }
105
106 void _usb_debug_chk_changed_cb(void *data, Evas_Object *obj, void *event_info)
107 {
108         //do nothing
109 }
110
111 static void _info_gl_del(void *data, Evas_Object *obj)
112 {
113         // FIXME: Unrealized callback can be called after this.
114         // Accessing Item_Data can be dangerous on unrealized callback.
115         Info_Item_Data *id = data;
116         if (id)
117                 free(id);
118 }
119
120 char * _gl_info_title_get(void *data, Evas_Object *obj, const char *part)
121 {
122         char buf[1024];
123         Info_Item_Data *id = data;
124         int index = id->index;
125
126         if( !strcmp(part, "elm.text") )
127         {
128                 snprintf(buf, sizeof(buf)-1, "%s", _(info_menu_its[index].name));
129                 index++;
130         }
131         return strdup(buf);
132 }
133
134 Evas_Object * _gl_info_check_get(void *data, Evas_Object *obj, const char *part)
135 {
136         Evas_Object *check = NULL;
137         //appdata *ad = data;
138
139         Info_Item_Data *id = data;
140         int index = id->index;
141
142         if( !strcmp(part, "elm.icon") && index == (ITEM_COUNT-1) )
143         {
144                 check = elm_check_add(obj);
145                 elm_object_style_set(check, "list");
146                 is_enable_usb_debug = get_enable_USB_debugging();
147                 elm_check_state_set(check, (is_enable_usb_debug) ? EINA_TRUE : EINA_FALSE);
148                 evas_object_smart_callback_add(check, "changed", _usb_debug_chk_changed_cb, (void *)1);
149                 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
150                 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
151                 evas_object_propagate_events_set(check, EINA_FALSE);
152                 evas_object_repeat_events_set(check, EINA_TRUE);
153
154                 id->check = check;
155
156                 index++;
157         }
158         return check;
159 }
160
161 Evas_Object* _create_info_list(void* data)
162 {
163         appdata *ad = data;
164         if( ad == NULL )
165         {
166                 DBG("%s", "_create_info_list - appdata is null");
167                 return NULL;
168         }
169         Evas_Object *genlist  = NULL;
170         struct _info_menu_item *menu_its = NULL;
171         int idx = 0;
172
173         Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
174         itc->item_style = "1text.1icon.1";
175         itc->func.text_get = _gl_info_title_get;
176 #ifndef FEATURE_SETTING_SDK
177         itc->func.content_get = _gl_info_check_get;
178 #endif
179         itc->func.del = _info_gl_del;
180
181         Evas_Object * layout = elm_layout_add(ad->nf);
182         elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
183         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
184
185         genlist = elm_genlist_add(layout);
186         elm_genlist_block_count_set(genlist, 14);
187         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
188
189         menu_its = info_menu_its;
190
191         for (idx = 0; idx < sizeof(info_menu_its) / sizeof(struct _info_menu_item); idx++)
192         {
193                 Info_Item_Data *id = calloc(sizeof(Info_Item_Data), 1);
194                 id->index = idx;
195                 id->item = elm_genlist_item_append(
196                                 genlist,                                // genlist object
197                                 itc,                                    // item class
198                                 id,                             // data
199                                 NULL,
200                                 ELM_GENLIST_ITEM_NONE,
201                                 menu_its[ idx ].func,   // call back
202                                 ad);
203         }
204         elm_genlist_item_class_free(itc);
205
206         g_info_genlist = genlist;
207
208         elm_object_part_content_set(layout, "elm.genlist", genlist);
209
210         return layout;
211 }
212
213 static void _info_detail_gl_del(void *data, Evas_Object *obj)
214 {
215         Item_Data *id = data;
216         if (id)
217                 free(id);
218 }
219
220 char * _gl_info__detail_title_get(void *data, Evas_Object *obj, const char *part)
221 {
222         char buf[1024];
223         Item_Data *id = data;
224         int index = id->index;
225         char * device_info = NULL;
226
227         char szSerialNum[50];
228
229         if( !strcmp(part, "elm.text.1") || !strcmp(part, "elm.text") )
230         {
231                 if (_info_detail_menu_list[index].type == 3) {
232                         const char *lang = vconf_get_str(VCONFKEY_LANGSET);
233                         if (lang && !strcmp(lang, "ko_KR.UTF-8")) {
234                                 snprintf(buf, sizeof(buf)-1, "일련번호");
235                         } else {
236                                 snprintf(buf, sizeof(buf)-1, "%s", _(_info_detail_menu_list[index].name));
237                         }
238                 } else {
239                         snprintf(buf, sizeof(buf)-1, "%s", _(_info_detail_menu_list[index].name));
240                 }
241                 index++;
242         }
243         else if ( !strcmp(part, "elm.text.2") )
244         {
245                 switch( index ) {
246                 case 0:
247 #ifndef FEATURE_SETTING_SDK
248                         if( system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &device_info)
249                                         != SYSTEM_INFO_ERROR_NONE )
250                         {
251                                 DBG("Setting - Model number do not get!! error!!");
252                                 snprintf(buf, sizeof(buf)-1, "%s", "SM-V700");
253                         } else {
254                                 snprintf(buf, sizeof(buf)-1, "%s", device_info);
255                         }
256                         break;
257                 case 1:
258 #endif
259                         if( system_info_get_value_string(SYSTEM_INFO_KEY_BUILD_STRING, &device_info)
260                                         != SYSTEM_INFO_ERROR_NONE )
261                         {
262                                 DBG("Setting - Version name do not get!! error!!");
263                                 snprintf(buf, sizeof(buf)-1, "%s", "V700XXUAMJ1");
264                         } else {
265                                 snprintf(buf, sizeof(buf)-1, "%s", device_info);
266                         }
267                         break;
268 #ifndef FEATURE_SETTING_SDK
269                 case 2:
270                         memset( buf, '\0', sizeof( buf ) );
271                         if ( _get_imei_serial_info( szSerialNum, sizeof( szSerialNum ) ) == EINA_TRUE ) {
272                                 if(kor){
273                                         char *p = NULL;
274                                         p = strstr(szSerialNum, ",");
275                                         if (p) {
276                                                 *p = '\0';
277                                         }
278                                 }
279                                 if (szSerialNum && strlen(szSerialNum)) {
280                                         snprintf(buf, sizeof(buf)-1, "%s", szSerialNum);
281                                 } else {
282                                         snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
283                                 }
284                         } else {
285                                 snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
286                         }
287
288                         break;
289                 case 3:
290                         memset( buf, '\0', sizeof( buf ) );
291                         if ( _get_imei_serial_info( szSerialNum, sizeof( szSerialNum ) ) == EINA_TRUE ) {
292                                 char *p = NULL;
293                                 p = strstr(szSerialNum, ",");
294                                 if (p) {
295                                         p++;
296                                         p = strstr(p, ",");
297                                         if (p) {
298                                                 p++;
299                                         }
300                                 }
301                                 if (p && strlen(p)) {
302                                         snprintf(buf, sizeof(buf)-1, "%s", p);
303                                 } else {
304                                         snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
305                                 }
306                         } else {
307                                 snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
308                         }
309
310                         break;
311 #endif
312                 default:
313                         break;
314                 }
315         }
316         return strdup(buf);
317 }
318
319 static void open_sources_licences_lange_changed(void *data, Evas_Object *obj, void *event_info)
320 {
321         DBG("Setting - open_sources_licences_lange_changed() is called!");
322
323         char * license_str = elm_entry_utf8_to_markup(
324                         _("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"));
325
326         char buf[1024];
327
328         char * font_size_frame = "<font_size=34>%s</font_size>";
329         snprintf(buf, sizeof(buf)-1, font_size_frame, license_str);
330
331         char * frame = strdup(buf);
332         const char * file_path = "/usr/share/license.html";
333         const char * command = "sdb pull /usr/share/license.html c:\\OpenSource\\license.html";
334
335         snprintf(buf, sizeof(buf)-1, frame, file_path, command);
336
337         elm_object_text_set(obj, strdup(buf));
338         free(frame);
339         free(license_str);
340 }
341
342 void _open_source_licences_popup_cb(void *data, Evas_Object *obj, void *event_info)
343 {
344         Evas_Object *popup = NULL;
345         //Evas_Object *btn = NULL;
346         Evas_Object *scroller = NULL;
347         Evas_Object *label = NULL;
348
349         appdata *ad = (appdata *) data;
350         if( ad == NULL )
351                 return;
352
353         popup = elm_popup_add(ad->nf);
354         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
355         elm_object_translatable_part_text_set(popup, "title,text", "IDS_ST_HEADER_OPEN_SOURCE_LICENCES_ABB");
356
357         ad->popup = popup;
358
359         scroller = elm_scroller_add(popup);
360         evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
361         elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
362         elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
363         elm_object_content_set(popup, scroller);
364         elm_object_style_set(scroller, "effect");
365         evas_object_show(scroller);
366
367         label = elm_label_add(scroller);
368         elm_object_style_set(label, "popup/default");
369         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
370
371 //      char * license_str = "You can check announcements regarding open source licences by following the steps below."
372 //                                                      "<br>1. Go to Settings > Gear info."
373 //                                                      "<br>2. Select USB debugging."
374 //                                                      "<br>3. Tap OK on the USB debugging pop-up that appears on your Samsung Gear."
375 //                                                      "<br>4. Connect your Samsung Gear to your PC."
376 //                                                      "<br>5. Using sdb cmd, download the %1$s file to your PC by running cmd and entering \"%2$s\" into the input field."
377 //                                                      "<br>Please visit<br>http://developer. samsung.com/, download and install Samsung Gear SDK for using sdb.";
378
379         char * license_str = elm_entry_utf8_to_markup(
380                         _("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"));
381
382         char buf[1536];
383
384         char * font_size_frame = "<font_size=34>%s</font_size>";
385         snprintf(buf, sizeof(buf)-1, font_size_frame, license_str);
386
387         char * frame = strdup(buf);
388         const char * file_path = "/usr/share/license.html";
389         const char * command = "sdb pull /usr/share/license.html c:\\OpenSource\\license.html";
390
391         snprintf(buf, sizeof(buf)-1, frame, file_path, command);
392
393         char *txt = strdup(buf);
394
395         elm_object_text_set(label, txt);
396         free(txt);
397         free(frame);
398         free(license_str);
399
400         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
401         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
402         evas_object_smart_callback_add(label, "language,changed", open_sources_licences_lange_changed, NULL);
403         elm_object_content_set(scroller, label);
404         evas_object_show(label);
405
406         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
407
408         evas_object_show(popup);
409 }
410
411 void _info_open_src_gl_cb(void *data, Evas_Object *obj, void *event_info)
412 {
413         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
414
415         _open_source_licences_popup_cb(data, obj, event_info);
416 }
417
418 void safety_inform_lange_changed(void *data, Evas_Object *obj, void *event_info)
419 {
420         DBG("Setting - safety_inform_lange_changed() is called!");
421
422         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"));
423
424         char buf[1024];
425         snprintf(buf, sizeof(buf), "<font_size=34>%s</font_size>",safety_str);
426         elm_object_text_set(obj, strdup(buf));
427         free( safety_str );
428 }
429
430
431 void _safety_inform_popup_cb(void *data, Evas_Object *obj, void *event_info)
432 {
433         Evas_Object *popup = NULL;
434         //Evas_Object *btn = NULL;
435         Evas_Object *scroller = NULL;
436         Evas_Object *label = NULL;
437
438         appdata *ad = (appdata *) data;
439         if( ad == NULL )
440                 return;
441
442         popup = elm_popup_add(ad->nf);
443         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
444         elm_object_translatable_part_text_set(popup, "title,text", "IDS_ST_OPT_SAFETY_INFORMATION");
445
446         ad->popup = popup;
447
448         scroller = elm_scroller_add(popup);
449         evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
450         elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
451         elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
452         elm_object_content_set(popup, scroller);
453         elm_object_style_set(scroller, "effect");
454         evas_object_show(scroller);
455
456         label = elm_label_add(scroller);
457         elm_object_style_set(label, "popup/default");
458         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
459
460         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"));
461
462         char buf[1536];
463         snprintf(buf, sizeof(buf)-1, "<font_size=34>%s</font_size>", safety_str);
464
465         char *txt = strdup(buf);
466         elm_object_text_set(label, txt);
467         free(txt);
468         free(safety_str);
469         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
470         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
471         elm_object_content_set(scroller, label);
472         evas_object_smart_callback_add(label, "language,changed", safety_inform_lange_changed, NULL);
473         evas_object_show(label);
474
475         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
476
477         evas_object_show(popup);
478 }
479
480 void _info_safety_inform_gl_cb(void *data, Evas_Object *obj, void *event_info)
481 {
482         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
483
484         _safety_inform_popup_cb(data, obj, event_info);
485 }
486
487 void _gl_info_cb(void *data, Evas_Object *obj, void *event_info)
488 {
489         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
490
491         appdata *ad = data;
492         if( ad == NULL )
493         {
494                 DBG("%s", "_gl_info_cb - appdata is null");
495                 return;
496         }
497         Elm_Object_Item *nf_it = NULL;
498         Evas_Object *genlist  = NULL;
499         struct _info_menu_item *menu_its = NULL;
500         int idx = 0;
501
502         if (_CSC_FEATURE_DEF_BOOL_SETTING_IMEI_SERIAL_ADDITION) {
503                 kor = 1;
504         }
505
506         Elm_Genlist_Item_Class *itc_tmp;
507
508         Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
509         itc->item_style = "2text";
510         itc->func.text_get = _gl_info__detail_title_get;
511         itc->func.del = _info_detail_gl_del;
512
513         Elm_Genlist_Item_Class *itc_open_src_info = elm_genlist_item_class_new();
514         itc_open_src_info->item_style = "1text";
515         itc_open_src_info->func.text_get = _gl_info__detail_title_get;
516         itc_open_src_info->func.del = _info_detail_gl_del;
517
518         genlist = elm_genlist_add(ad->nf);
519         elm_genlist_block_count_set(genlist, 14);
520         elm_genlist_homogeneous_set(genlist, EINA_TRUE);
521         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
522
523         menu_its = _info_detail_menu_list;
524
525         for (idx = 0; idx < sizeof(_info_detail_menu_list) / sizeof(struct _info_menu_item); idx++)
526         {
527 #ifndef FEATURE_SETTING_SDK
528                 if( menu_its[ idx ].type == 4 )
529                 {
530                         itc_tmp = itc_open_src_info;
531                 }
532                 else
533                 {
534                         itc_tmp = itc;
535                 }
536 #else
537                 itc_tmp = itc;
538 #endif
539
540                 if (!(kor == 0 && menu_its[idx].type == 3)) {
541
542                 Item_Data *id = calloc(sizeof(Item_Data), 1);
543                 id->index = idx;
544                 id->item = elm_genlist_item_append(
545                                 genlist,                        // genlist object
546                                 itc_tmp,                        // item class
547                                 id,                         // data
548                                 NULL,
549                                 ELM_GENLIST_ITEM_NONE,
550                                 menu_its[ idx ].func,   // call back
551                                 ad);
552 #ifndef FEATURE_SETTING_SDK
553                 if (itc_tmp == itc) {
554                         elm_genlist_item_select_mode_set(id->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
555                 }
556 #else
557                 elm_genlist_item_select_mode_set(id->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
558 #endif
559                 }
560         }
561         elm_genlist_item_class_free(itc);
562         elm_genlist_item_class_free(itc_open_src_info);
563
564         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
565         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
566 }
567
568 static void _usb_debug_cancel_cb(void *data, Evas_Object *obj, void *event_info)
569 {
570         appdata *ad = (appdata *) data;
571         if( ad == NULL )
572                 return;
573
574         is_enable_usb_debug = DISABLE;
575
576         if(     g_info_genlist != NULL )
577         {
578                 elm_genlist_realized_items_update(g_info_genlist);
579         }
580
581         if (ad->popup) {
582                 evas_object_del(ad->popup);
583                 ad->popup = NULL;
584         }
585 }
586
587 static void _usb_debug_ok_cb(void *data, Evas_Object *obj, void *event_info)
588 {
589         //Elm_Object_Item* it = (Elm_Object_Item *)event_info;
590         appdata *ad = data;
591         //Evas_Object* check = NULL;
592
593         if( ad == NULL )
594         {
595                 DBG("%s", "_gl_usb_debug_cb : appdata is null");
596                 return;
597         }
598
599         if (ad->popup) {
600                 evas_object_del(ad->popup);
601                 ad->popup = NULL;
602         }
603
604         is_enable_usb_debug = ENABLE;
605
606         set_enable_USB_debugging(is_enable_usb_debug);
607
608         if(     g_info_genlist != NULL )
609         {
610                 elm_genlist_realized_items_update(g_info_genlist);
611         }
612 }
613
614 void _usb_debug_lange_changed(void *data, Evas_Object *obj, void *event_info)
615 {
616         DBG("Setting - _usb_debug_lange_changed() is called!");
617
618         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"));
619
620         char buf[1024];
621         snprintf(buf, sizeof(buf), "<font_size=34>%s</font_size>", debug_str);
622         elm_object_text_set(obj, strdup(buf));
623
624         free( debug_str );
625 }
626
627 static void _usb_debug_popup_cb(void *data, Evas_Object *obj, void *event_info)
628 {
629         Evas_Object *popup = NULL;
630         Evas_Object *btn = NULL;
631         Evas_Object *scroller = NULL;
632         Evas_Object *label = NULL;
633
634         appdata *ad = (appdata *) data;
635         if( ad == NULL )
636                 return;
637
638         popup = elm_popup_add(ad->nf);
639         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
640         elm_object_translatable_part_text_set(popup, "title,text", "IDS_ST_HEADER_USB_DEBUGGING_ABB");
641
642         ad->popup = popup;
643
644         scroller = elm_scroller_add(popup);
645         evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
646         elm_object_content_set(popup, scroller);
647         elm_object_style_set(scroller, "effect");
648         evas_object_show(scroller);
649
650         label = elm_label_add(scroller);
651         elm_object_style_set(label, "popup/default");
652         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
653
654         char buf[1024];
655
656         char * font_size_frame = "<font_size=34>%s</font_size>";
657         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"));
658
659         char *txt = strdup(buf);
660         elm_object_text_set(label, txt);
661         free(txt);
662         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
663         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
664         evas_object_smart_callback_add(label, "language,changed", _usb_debug_lange_changed, NULL);
665         elm_object_content_set(scroller, label);
666         evas_object_show(label);
667
668         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
669
670         btn = elm_button_add(popup);
671         elm_object_style_set(btn, "popup");
672         evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
673         elm_object_translatable_text_set(btn, "IDS_COM_SK_CANCEL_A");
674         elm_object_part_content_set(popup, "button1", btn);
675         evas_object_smart_callback_add(btn, "clicked", _usb_debug_cancel_cb, ad);
676
677         btn = elm_button_add(popup);
678         elm_object_style_set(btn, "popup");
679         evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
680         elm_object_translatable_text_set(btn, "IDS_WNOTI_BUTTON_OK_ABB2");
681         elm_object_part_content_set(popup, "button2", btn);
682         evas_object_smart_callback_add(btn, "clicked", _usb_debug_ok_cb, ad);
683
684         evas_object_show(popup);
685 }
686
687 /*
688  * Get IMEI Serial number
689  */
690 static Eina_Bool _get_imei_serial_info( char *pszBuf, int bufSize )
691 {
692         FILE            *pFile = NULL;
693         int                     fileReadByte = 0;
694         Eina_Bool       bResult;
695
696         pFile = fopen( "/csa/imei/serialno.dat", "r" );
697         if ( pFile == NULL )
698                 return EINA_FALSE;
699
700         memset( pszBuf, '\0', bufSize );
701
702         if ( fgets( pszBuf, bufSize, pFile )) {
703                 bResult = EINA_TRUE;
704         } else {
705                 bResult = EINA_FALSE;
706         }
707
708         fclose( pFile );
709         pFile = NULL;
710
711         return bResult;
712 }