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