tizen 2.3 release
[apps/home/b2-clocksetting.git] / src / setting-info.c
1 /*
2  * Copyright (c) 2010 Samsung Electronics, Inc.
3  * All rights reserved.
4  *
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.
10  */
11 /*
12  * setting-info.c
13  *
14  *  Created on: Oct 8, 2013
15  *      Author: min-hoyun
16  */
17
18 #include <vconf.h>
19 #include <vconf-keys.h>
20
21 #include "setting-info.h"
22 #include "setting-battery.h"
23 #include "util.h"
24
25
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 },
30 #endif
31 };
32
33 static struct _info_menu_item _info_detail_menu_list[] = {
34 #ifndef FEATURE_SETTING_SDK
35                 { "IDS_ST_BODY_MODEL_NUMBER_ABB",       0,      NULL },
36 #endif
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 }
43 #endif
44 };
45
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 );
48
49 static Evas_Object * g_info_genlist = NULL;
50 static int is_enable_usb_debug = 0;
51 static int kor = 0;
52
53 Eina_Bool _clear_info_cb(void *data, Elm_Object_Item *it)
54 {
55         g_info_genlist = NULL;
56         is_enable_usb_debug = 0;
57
58         return EINA_TRUE;
59 }
60
61 int get_enable_USB_debugging()
62 {
63         if (vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &is_enable_usb_debug) != 0 )
64         {
65                 DBG("Setting - USB debugging's info do not get!!!");
66         }
67         return is_enable_usb_debug;
68 }
69
70 void set_enable_USB_debugging(int is_enable)
71 {
72         if( vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, is_enable) != 0 )
73         {
74                 DBG("Setting - USB debugging do not set!!!");
75         }
76 }
77
78 void _gl_usb_debug_cb(void *data, Evas_Object *obj, void *event_info)
79 {
80         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
81
82         if( !is_enable_usb_debug )
83         {
84                 _usb_debug_popup_cb(data, obj, event_info);
85         }
86         else
87         {
88                 is_enable_usb_debug = DISABLE;
89                 set_enable_USB_debugging(is_enable_usb_debug);
90
91                 if(     g_info_genlist != NULL )
92                 {
93                         elm_genlist_realized_items_update(g_info_genlist);
94                 }
95         }
96 }
97
98 void _usb_debug_chk_changed_cb(void *data, Evas_Object *obj, void *event_info)
99 {
100         //do nothing
101 }
102
103 static void _info_gl_del(void *data, Evas_Object *obj)
104 {
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;
108         if (id)
109                 free(id);
110 }
111
112 char * _gl_info_title_get(void *data, Evas_Object *obj, const char *part)
113 {
114         char buf[1024];
115         Info_Item_Data *id = data;
116         int index = id->index;
117
118         if( !strcmp(part, "elm.text") )
119         {
120                 snprintf(buf, sizeof(buf)-1, "%s", _(info_menu_its[index].name));
121                 index++;
122         }
123         return strdup(buf);
124 }
125
126 Evas_Object * _gl_info_check_get(void *data, Evas_Object *obj, const char *part)
127 {
128         Evas_Object *check = NULL;
129         //appdata *ad = data;
130
131         Info_Item_Data *id = data;
132         int index = id->index;
133
134         if( !strcmp(part, "elm.icon") && index == (ITEM_COUNT-1) )
135         {
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);
145
146                 id->check = check;
147
148                 index++;
149         }
150         return check;
151 }
152
153 Evas_Object* _create_info_list(void* data)
154 {
155         appdata *ad = data;
156         if( ad == NULL )
157         {
158                 DBG("%s", "_create_info_list - appdata is null");
159                 return NULL;
160         }
161         Evas_Object *genlist  = NULL;
162         struct _info_menu_item *menu_its = NULL;
163         int idx = 0;
164
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;
170 #endif
171         itc->func.del = _info_gl_del;
172
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);
176
177         genlist = elm_genlist_add(layout);
178         elm_genlist_block_count_set(genlist, 14);
179         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
180
181         menu_its = info_menu_its;
182
183         for (idx = 0; idx < sizeof(info_menu_its) / sizeof(struct _info_menu_item); idx++)
184         {
185                 Info_Item_Data *id = calloc(sizeof(Info_Item_Data), 1);
186                 id->index = idx;
187                 id->item = elm_genlist_item_append(
188                                 genlist,                                // genlist object
189                                 itc,                                    // item class
190                                 id,                             // data
191                                 NULL,
192                                 ELM_GENLIST_ITEM_NONE,
193                                 menu_its[ idx ].func,   // call back
194                                 ad);
195         }
196         elm_genlist_item_class_free(itc);
197
198         g_info_genlist = genlist;
199
200         elm_object_part_content_set(layout, "elm.genlist", genlist);
201
202         return layout;
203 }
204
205 static void _info_detail_gl_del(void *data, Evas_Object *obj)
206 {
207         Item_Data *id = data;
208         if (id)
209                 free(id);
210 }
211
212 char * _gl_info__detail_title_get(void *data, Evas_Object *obj, const char *part)
213 {
214         char buf[1024];
215         Item_Data *id = data;
216         int index = id->index;
217         char * device_info = NULL;
218
219         char szSerialNum[50];
220
221         if( !strcmp(part, "elm.text.1") || !strcmp(part, "elm.text") )
222         {
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, "일련번호");
227                         } else {
228                                 snprintf(buf, sizeof(buf)-1, "%s", _(_info_detail_menu_list[index].name));
229                         }
230                 } else {
231                         snprintf(buf, sizeof(buf)-1, "%s", _(_info_detail_menu_list[index].name));
232                 }
233                 index++;
234         }
235         else if ( !strcmp(part, "elm.text.2") )
236         {
237                 switch( index ) {
238                 case 0:
239 #ifndef FEATURE_SETTING_SDK
240                         if( system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &device_info)
241                                         != SYSTEM_INFO_ERROR_NONE )
242                         {
243                                 DBG("Setting - Model number do not get!! error!!");
244                                 snprintf(buf, sizeof(buf)-1, "%s", "SM-V700");
245                         } else {
246                                 snprintf(buf, sizeof(buf)-1, "%s", device_info);
247                         }
248                         break;
249                 case 1:
250 #endif
251                         if( system_info_get_value_string(SYSTEM_INFO_KEY_BUILD_STRING, &device_info)
252                                         != SYSTEM_INFO_ERROR_NONE )
253                         {
254                                 DBG("Setting - Version name do not get!! error!!");
255                                 snprintf(buf, sizeof(buf)-1, "%s", "V700XXUAMJ1");
256                         } else {
257                                 snprintf(buf, sizeof(buf)-1, "%s", device_info);
258                         }
259                         break;
260 #ifndef FEATURE_SETTING_SDK
261                 case 2:
262                         memset( buf, '\0', sizeof( buf ) );
263                         if ( _get_imei_serial_info( szSerialNum, sizeof( szSerialNum ) ) == EINA_TRUE ) {
264                                 if(kor){
265                                         char *p = NULL;
266                                         p = strstr(szSerialNum, ",");
267                                         if (p) {
268                                                 *p = '\0';
269                                         }
270                                 }
271                                 if (szSerialNum && strlen(szSerialNum)) {
272                                         snprintf(buf, sizeof(buf)-1, "%s", szSerialNum);
273                                 } else {
274                                         snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
275                                 }
276                         } else {
277                                 snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
278                         }
279
280                         break;
281                 case 3:
282                         memset( buf, '\0', sizeof( buf ) );
283                         if ( _get_imei_serial_info( szSerialNum, sizeof( szSerialNum ) ) == EINA_TRUE ) {
284                                 char *p = NULL;
285                                 p = strstr(szSerialNum, ",");
286                                 if (p) {
287                                         p++;
288                                         p = strstr(p, ",");
289                                         if (p) {
290                                                 p++;
291                                         }
292                                 }
293                                 if (p && strlen(p)) {
294                                         snprintf(buf, sizeof(buf)-1, "%s", p);
295                                 } else {
296                                         snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
297                                 }
298                         } else {
299                                 snprintf(buf, sizeof(buf)-1, "%s",_("IDS_ST_BODY_UNKNOWN"));
300                         }
301
302                         break;
303 #endif
304                 default:
305                         break;
306                 }
307         }
308         return strdup(buf);
309 }
310
311 static void open_sources_licences_lange_changed(void *data, Evas_Object *obj, void *event_info)
312 {
313         DBG("Setting - open_sources_licences_lange_changed() is called!");
314
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"));
317
318         char buf[1024];
319
320         char * font_size_frame = "<font_size=34>%s</font_size>";
321         snprintf(buf, sizeof(buf)-1, font_size_frame, license_str);
322
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";
326
327         snprintf(buf, sizeof(buf)-1, frame, file_path, command);
328
329         elm_object_text_set(obj, strdup(buf));
330         free(frame);
331         free(license_str);
332 }
333
334 void _open_source_licences_popup_cb(void *data, Evas_Object *obj, void *event_info)
335 {
336         Evas_Object *popup = NULL;
337         //Evas_Object *btn = NULL;
338         Evas_Object *scroller = NULL;
339         Evas_Object *label = NULL;
340
341         appdata *ad = (appdata *) data;
342         if( ad == NULL )
343                 return;
344
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");
348
349         ad->popup = popup;
350
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);
358
359         label = elm_label_add(scroller);
360         elm_object_style_set(label, "popup/default");
361         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
362
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.";
370
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"));
373
374         char buf[1536];
375
376         char * font_size_frame = "<font_size=34>%s</font_size>";
377         snprintf(buf, sizeof(buf)-1, font_size_frame, license_str);
378
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";
382
383         snprintf(buf, sizeof(buf)-1, frame, file_path, command);
384
385         char *txt = strdup(buf);
386
387         elm_object_text_set(label, txt);
388         free(txt);
389         free(frame);
390         free(license_str);
391
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);
397
398         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
399
400         evas_object_show(popup);
401 }
402
403 void _info_open_src_gl_cb(void *data, Evas_Object *obj, void *event_info)
404 {
405         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
406
407         _open_source_licences_popup_cb(data, obj, event_info);
408 }
409
410 void safety_inform_lange_changed(void *data, Evas_Object *obj, void *event_info)
411 {
412         DBG("Setting - safety_inform_lange_changed() is called!");
413
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"));
415
416         char buf[1024];
417         snprintf(buf, sizeof(buf), "<font_size=34>%s</font_size>",safety_str);
418         elm_object_text_set(obj, strdup(buf));
419         free( safety_str );
420 }
421
422
423 void _safety_inform_popup_cb(void *data, Evas_Object *obj, void *event_info)
424 {
425         Evas_Object *popup = NULL;
426         //Evas_Object *btn = NULL;
427         Evas_Object *scroller = NULL;
428         Evas_Object *label = NULL;
429
430         appdata *ad = (appdata *) data;
431         if( ad == NULL )
432                 return;
433
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");
437
438         ad->popup = popup;
439
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);
447
448         label = elm_label_add(scroller);
449         elm_object_style_set(label, "popup/default");
450         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
451
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"));
453
454         char buf[2048];
455         snprintf(buf, sizeof(buf)-1, "<font_size=34>%s</font_size>", safety_str);
456
457         char *txt = strdup(buf);
458         elm_object_text_set(label, txt);
459         free(txt);
460         free(safety_str);
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);
466
467         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
468
469         evas_object_show(popup);
470 }
471
472 void _info_safety_inform_gl_cb(void *data, Evas_Object *obj, void *event_info)
473 {
474         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
475
476         _safety_inform_popup_cb(data, obj, event_info);
477 }
478
479 void _gl_info_cb(void *data, Evas_Object *obj, void *event_info)
480 {
481         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
482
483         appdata *ad = data;
484         if( ad == NULL )
485         {
486                 DBG("%s", "_gl_info_cb - appdata is null");
487                 return;
488         }
489         Elm_Object_Item *nf_it = NULL;
490         Evas_Object *genlist  = NULL;
491         struct _info_menu_item *menu_its = NULL;
492         int idx = 0;
493
494         Elm_Genlist_Item_Class *itc_tmp;
495
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;
500
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;
505
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);
510
511         menu_its = _info_detail_menu_list;
512
513         for (idx = 0; idx < sizeof(_info_detail_menu_list) / sizeof(struct _info_menu_item); idx++)
514         {
515 #ifndef FEATURE_SETTING_SDK
516                 if( menu_its[ idx ].type == 4 )
517                 {
518                         itc_tmp = itc_open_src_info;
519                 }
520                 else
521                 {
522                         itc_tmp = itc;
523                 }
524 #else
525                 itc_tmp = itc;
526 #endif
527
528                 if (!(kor == 0 && menu_its[idx].type == 3)) {
529
530                 Item_Data *id = calloc(sizeof(Item_Data), 1);
531                 id->index = idx;
532                 id->item = elm_genlist_item_append(
533                                 genlist,                        // genlist object
534                                 itc_tmp,                        // item class
535                                 id,                         // data
536                                 NULL,
537                                 ELM_GENLIST_ITEM_NONE,
538                                 menu_its[ idx ].func,   // call back
539                                 ad);
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);
543                 }
544 #else
545                 elm_genlist_item_select_mode_set(id->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
546 #endif
547                 }
548         }
549         elm_genlist_item_class_free(itc);
550         elm_genlist_item_class_free(itc_open_src_info);
551
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);
554 }
555
556 static void _usb_debug_cancel_cb(void *data, Evas_Object *obj, void *event_info)
557 {
558         appdata *ad = (appdata *) data;
559         if( ad == NULL )
560                 return;
561
562         is_enable_usb_debug = DISABLE;
563
564         if(     g_info_genlist != NULL )
565         {
566                 elm_genlist_realized_items_update(g_info_genlist);
567         }
568
569         if (ad->popup) {
570                 evas_object_del(ad->popup);
571                 ad->popup = NULL;
572         }
573 }
574
575 static void _usb_debug_ok_cb(void *data, Evas_Object *obj, void *event_info)
576 {
577         //Elm_Object_Item* it = (Elm_Object_Item *)event_info;
578         appdata *ad = data;
579         //Evas_Object* check = NULL;
580
581         if( ad == NULL )
582         {
583                 DBG("%s", "_gl_usb_debug_cb : appdata is null");
584                 return;
585         }
586
587         if (ad->popup) {
588                 evas_object_del(ad->popup);
589                 ad->popup = NULL;
590         }
591
592         is_enable_usb_debug = ENABLE;
593
594         set_enable_USB_debugging(is_enable_usb_debug);
595
596         if(     g_info_genlist != NULL )
597         {
598                 elm_genlist_realized_items_update(g_info_genlist);
599         }
600 }
601
602 void _usb_debug_lange_changed(void *data, Evas_Object *obj, void *event_info)
603 {
604         DBG("Setting - _usb_debug_lange_changed() is called!");
605
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"));
607
608         char buf[1024];
609         snprintf(buf, sizeof(buf), "<font_size=34>%s</font_size>", debug_str);
610         elm_object_text_set(obj, strdup(buf));
611
612         free( debug_str );
613 }
614
615 static void _usb_debug_popup_cb(void *data, Evas_Object *obj, void *event_info)
616 {
617         Evas_Object *popup = NULL;
618         Evas_Object *btn = NULL;
619         Evas_Object *scroller = NULL;
620         Evas_Object *label = NULL;
621
622         appdata *ad = (appdata *) data;
623         if( ad == NULL )
624                 return;
625
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");
629
630         ad->popup = popup;
631
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);
637
638         label = elm_label_add(scroller);
639         elm_object_style_set(label, "popup/default");
640         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
641
642         char buf[1024];
643
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"));
646
647         char *txt = strdup(buf);
648         elm_object_text_set(label, txt);
649         free(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);
655
656         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
657
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);
664
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);
671
672         evas_object_show(popup);
673 }
674
675 /*
676  * Get IMEI Serial number
677  */
678 static Eina_Bool _get_imei_serial_info( char *pszBuf, int bufSize )
679 {
680         FILE            *pFile = NULL;
681         int                     fileReadByte = 0;
682         Eina_Bool       bResult;
683
684         pFile = fopen( "/csa/imei/serialno.dat", "r" );
685         if ( pFile == NULL )
686                 return EINA_FALSE;
687
688         memset( pszBuf, '\0', bufSize );
689
690         if ( fgets( pszBuf, bufSize, pFile )) {
691                 bResult = EINA_TRUE;
692         } else {
693                 bResult = EINA_FALSE;
694         }
695
696         fclose( pFile );
697         pFile = NULL;
698
699         return bResult;
700 }