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