Tizen 2.4 SDK Rev5
[apps/home/b2-clocksetting.git] / src / setting-safety.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-safety.c
19  *
20  *  Created on: Jan 14, 2014
21  *      Author: min-hoyun
22  */
23
24 #include "setting-safety.h"
25 #include "util.h"
26 #include "setting_debug.h"
27 #include "setting_data_vconf.h"
28
29
30 static struct _safety_menu_item safety_menu_list[] = {
31         { "IDS_ST_MBODY_ULTRA_POWER_SAVING_MODE",               NULL,   _emergency_mode_cb },
32         /*      { "Trauma",                             NULL,             _trauma_cb               }, */
33         /*      { "No activity",                NULL,             _no_activity_cb    }, */
34         /*      { "Set interval",               NULL,             _set_interval_cb   }, */
35         { "IDS_ST_MBODY_HELP",                                  NULL,             _help_cb                 }
36 };
37
38 static struct _set_interval_menu_item interval_menu_list[] = {
39         { "Trauma",             "Warning %s",           _trauma_interval_cb      },
40         { "No activity",        "Warning %s",           _no_activity_interval_cb }
41 };
42
43 static struct _interval_trauma_menu_item interval_trauma_time_arr[] = {
44         { "After %s seconds", "30" },
45         { "After %s minute" , "1"  },
46         { "After %s minutes", "5"  },
47         { "After %s minutes", "10" },
48         { "After %s minutes", "20" },
49 };
50
51 static char *interval_no_activity_hour_arr[] = {
52         "6", "12", "24", "48"
53 };
54
55
56 static Safety_Data safety_data;
57 static Evas_Object *g_safety_genlist = NULL;
58
59 /*  */
60 static void _emergency_mode_vconf_changed_cb(keynode_t *key, void *data);
61
62
63 void initialize_safety()
64 {
65         DBG("initialize safety");
66
67         safety_data.g_safety_genlist = NULL;
68         safety_data.temp_ad = NULL;
69
70         safety_data.interval_no_activity = 0;
71         safety_data.interval_trauma = 0;
72         safety_data.is_enable_no_activity = 0;
73         safety_data.is_enable_trauma = 0;
74         safety_data.is_support_emergency = 0;
75
76         vconf_get_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, &safety_data.is_enable_emergency_mode);
77         register_vconf_changing(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, _emergency_mode_vconf_changed_cb, NULL);
78 }
79
80 Eina_Bool clear_safety_cb(void *data, Elm_Object_Item *it)
81 {
82         g_safety_genlist = NULL;
83
84         unregister_vconf_changing(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, _emergency_mode_vconf_changed_cb);
85
86         return EINA_TRUE;
87 }
88
89 static void _emergency_mode_vconf_changed_cb(keynode_t *key, void *data)
90 {
91         DBG("Setting - _emergency_mode_vconf_changed_cb() is called!");
92
93         int enable = vconf_keynode_get_bool(key);
94
95         if (enable == safety_data.is_enable_emergency_mode) {
96                 DBG("Setting - this value was set from Setting!!");
97                 return;
98         } else {
99                 DBG("Setting - this value is set from WMS");
100
101                 safety_data.is_enable_emergency_mode = enable;
102                 if (g_safety_genlist) {
103                         elm_genlist_realized_items_update(g_safety_genlist);
104                 }
105         }
106 }
107
108 static void _emergency_mode_cb(void *data, Evas_Object *obj, void *event_info)
109 {
110         DBG("emergency_mode_cb() is called.");
111
112         Elm_Object_Item *it = (Elm_Object_Item *)event_info;
113         elm_genlist_item_selected_set(it, EINA_FALSE);
114
115         appdata *ad = data;
116         if (ad == NULL) {
117                 DBG("%s", "_emergency_mode_cb - ad is null");
118                 return;
119         }
120
121         if (safety_data.is_enable_emergency_mode) {
122                 /*confirm popup ok to off to device restart */
123                 _disable_emergency_popup_cb(data, obj, event_info);
124         } else {
125                 safety_data.is_enable_emergency_mode = !safety_data.is_enable_emergency_mode;
126                 vconf_set_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, safety_data.is_enable_emergency_mode);
127
128                 /*DBG("Setting - Emergency mode is %d", safety_data.is_enable_emergency_mode); */
129                 /*elm_genlist_item_update(it); */
130                 elm_exit();     /*gonna be changed regarding freezer */
131         }
132 }
133
134 static void _trauma_cb(void *data, Evas_Object *obj, void *event_info)
135 {
136         DBG("trauma_cb() is called.");
137
138         Elm_Object_Item *it = (Elm_Object_Item *)event_info;
139         elm_genlist_item_selected_set(it, EINA_FALSE);
140
141         appdata *ad = data;
142         if (ad == NULL) {
143                 DBG("%s", "_emergency_mode_cb - ad is null");
144                 return;
145         }
146
147         safety_data.is_enable_trauma = !safety_data.is_enable_trauma;
148
149         elm_genlist_item_update(it);
150 }
151
152 static void _no_activity_cb(void *data, Evas_Object *obj, void *event_info)
153 {
154         DBG("_no_activity_cb() is called.");
155
156         Elm_Object_Item *it = (Elm_Object_Item *)event_info;
157         elm_genlist_item_selected_set(it, EINA_FALSE);
158
159         appdata *ad = data;
160         if (ad == NULL) {
161                 DBG("%s", "_no_activity_cb - ad is null");
162                 return;
163         }
164
165         safety_data.is_enable_no_activity = !safety_data.is_enable_no_activity;
166
167         elm_genlist_item_update(it);
168 }
169
170 static void _set_interval_cb(void *data, Evas_Object *obj, void *event_info)
171 {
172         DBG("_set_interval_cb() is called.");
173
174         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
175
176         appdata *ad = data;
177         if (ad == NULL) {
178                 DBG("%s", "_set_interval_cb - ad is null");
179                 return;
180         }
181
182         show_interval_list(ad);
183 }
184
185 static void _help_cb(void *data, Evas_Object *obj, void *event_info)
186 {
187         DBG("_help_cb() is called.");
188
189         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
190
191         appdata *ad = data;
192         if (ad == NULL) {
193                 DBG("%s", "_help_cb - ad is null");
194                 return;
195         }
196         _help_popup_cb(data, obj, event_info);
197 }
198
199 static int _is_enable(int index)
200 {
201         int enable = DISABLE;
202         switch (index) {
203         case 0:
204                 vconf_get_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, &safety_data.is_enable_emergency_mode);
205                 enable = safety_data.is_enable_emergency_mode;
206                 break;
207         case 1:
208                 enable = safety_data.is_enable_trauma;
209                 break;
210         case 2:
211                 enable = safety_data.is_enable_no_activity;
212                 break;
213         case 3:
214                 break;
215         case 4:
216                 break;
217         }
218         return enable;
219 }
220
221 static char *_gl_safety_title_get(void *data, Evas_Object *obj, const char *part)
222 {
223         char buf[1024] = {0,};
224         Safety_Item_Data *id = data;
225         int index = id->index;
226
227         if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.text")) {
228                 snprintf(buf, sizeof(buf) - 1, "%s", _(safety_menu_list[index].name));
229         } else if (!strcmp(part, "elm.text.2")) {
230                 snprintf(buf, sizeof(buf) - 1, "%s", _is_enable(index) ? _("IDS_EMAIL_BODY_ENABLED_M_STATUS") : _("IDS_ST_BODY_DISABLED_M_STATUS"));
231         }
232         return strdup(buf);
233 }
234
235 Evas_Object *_gl_safety_check_get(void *data, Evas_Object *obj, const char *part)
236 {
237         Evas_Object *check = NULL;
238         appdata *ad = data;
239
240         Safety_Item_Data *id = data;
241         int index = id->index;
242
243         if (!strcmp(part, "elm.icon")) {
244                 check = elm_check_add(obj);
245                 elm_check_state_set(check, _is_enable(index) ? EINA_TRUE : EINA_FALSE);
246                 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
247                 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
248         }
249
250         return check;
251 }
252
253 static void _gl_safety_del(void *data, Evas_Object *obj)
254 {
255         Safety_Item_Data *id = data;
256         if (id) {
257                 free(id);
258         }
259 }
260
261 #ifdef O_TYPE
262 static char *
263 _gl_menu_title_text_get(void *data, Evas_Object *obj, const char *part)
264 {
265         char buf[1024];
266
267         snprintf(buf, 1023, "%s", "Safety");
268         return strdup(buf);
269 }
270 #endif
271 Evas_Object *create_safety_list(void *data)
272 {
273         DBG("create_safety_list() is called.");
274
275         appdata *ad = data;
276         if (ad == NULL) {
277                 ERR("appdata is null!!");
278                 return NULL;
279         }
280
281         Evas_Object *genlist = NULL;
282         Evas_Object *layout = NULL;
283         Elm_Object_Item *nf_it = NULL;
284         Elm_Genlist_Item_Class *itc_temp = NULL;
285         struct _safety_menu_item *menu_list = NULL;
286         int idx = 0;
287
288         Elm_Genlist_Item_Class *itc_1text_1check = elm_genlist_item_class_new();
289         itc_1text_1check->item_style = "1text.1icon.1";
290         itc_1text_1check->func.text_get = _gl_safety_title_get;
291         itc_1text_1check->func.content_get = _gl_safety_check_get;
292         itc_1text_1check->func.del = _gl_safety_del;
293
294         Elm_Genlist_Item_Class *itc_2text_1check = elm_genlist_item_class_new();
295         itc_2text_1check->item_style = "2text.1icon.1";
296         itc_2text_1check->func.text_get = _gl_safety_title_get;
297         itc_2text_1check->func.content_get = _gl_safety_check_get;
298         itc_2text_1check->func.del = _gl_safety_del;
299
300         Elm_Genlist_Item_Class *itc_1text = elm_genlist_item_class_new();
301         itc_1text->item_style = "1text";
302         itc_1text->func.text_get = _gl_safety_title_get;
303         itc_1text->func.del = _gl_safety_del;
304
305         layout = elm_layout_add(ad->nf);
306         elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
307         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
308
309         genlist = elm_genlist_add(layout);
310         elm_genlist_block_count_set(genlist, 14);
311         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
312
313         menu_list = safety_menu_list;
314
315 #ifdef _CIRCLE
316         Elm_Genlist_Item_Class *title_item = elm_genlist_item_class_new();
317         title_item ->func.text_get = _gl_menu_title_text_get;
318         title_item->item_style = "title";
319         title_item->func.del = _gl_safety_del;
320
321         elm_genlist_item_append(genlist, title_item, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
322
323         elm_genlist_item_class_free(title_item);
324 #endif
325         int count = 0;
326         count = sizeof(safety_menu_list) / sizeof(struct _safety_menu_item);
327
328         for (idx = 0; idx < count; idx++) {
329                 if (idx == 0) {
330                         itc_temp = itc_2text_1check;
331                 }
332 #if 0
333                 else if (idx > 0 && idx < 3) {
334                         itc_temp = itc_1text_1check;
335                 }
336 #endif
337                 else {
338                         itc_temp = itc_1text;
339                 }
340
341                 Safety_Item_Data *id = calloc(sizeof(Safety_Item_Data), 1);
342                 if (id) {
343                         id->index = idx;
344                         id->item = elm_genlist_item_append(
345                                                    genlist,             /* genlist object */
346                                                    itc_temp,            /* item class */
347                                                    id,                  /* data */
348                                                    NULL,
349                                                    ELM_GENLIST_ITEM_NONE,
350                                                    menu_list[idx].func, /* call back */
351                                                    ad);
352                         if (idx == 0) {
353                                 vconf_get_bool("db/setting/support_emergency", &safety_data.is_support_emergency);
354                                 /*not support list for emergency mode */
355                                 if (!safety_data.is_support_emergency)
356                                         elm_object_item_disabled_set(id->item, EINA_TRUE);
357                         }
358                 }
359         }
360
361         elm_genlist_item_class_free(itc_2text_1check);
362         elm_genlist_item_class_free(itc_1text_1check);
363         elm_genlist_item_class_free(itc_1text);
364
365 #ifdef _CIRCLE
366         Elm_Genlist_Item_Class *padding = elm_genlist_item_class_new();
367         padding->item_style = "padding";
368         padding->func.del = _gl_safety_del;
369
370         elm_genlist_item_append(genlist, padding, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
371         elm_genlist_item_class_free(padding);
372 #endif
373         elm_object_part_content_set(layout, "elm.genlist", genlist);
374
375         return layout;
376 }
377
378 static void _trauma_interval_cb(void *data, Evas_Object *obj, void *event_info)
379 {
380         DBG("_trauma_interval_cb() is called.");
381
382         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
383
384         _show_interval_trauma_list(data);
385 }
386
387 static void _no_activity_interval_cb(void *data, Evas_Object *obj, void *event_info)
388 {
389         DBG("_no_activity_interval_cb() is called.");
390
391         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
392
393         _show_interval_no_activity_list(data);
394 }
395
396 static char *_gl_interval_title_get(void *data, Evas_Object *obj, const char *part)
397 {
398         DBG("_gl_interval_title_get() is called.");
399
400         char buf[1024] = {0,};
401         Safety_Item_Data *id = data;
402         int index = id->index;
403
404         if (!strcmp(part, "elm.text.1")) {
405                 snprintf(buf, sizeof(buf) - 1, "%s", interval_menu_list[index].title);
406         } else if (!strcmp(part, "elm.text.2")) {
407                 snprintf(buf, sizeof(buf) - 1, interval_menu_list[index].sub_title, "after 30 seconds");
408         }
409         return strdup(buf);
410 }
411
412 static void show_interval_list(void *data)
413 {
414         DBG("show_interval_list() is called.");
415
416         appdata *ad = data;
417         if (!ad) {
418                 ERR("appdata is null!!");
419                 return;
420         }
421
422         Evas_Object *genlist = NULL;
423         Evas_Object *layout = NULL;
424         Elm_Object_Item *nf_it = NULL;
425         struct _set_interval_menu_item *menu_list = NULL;
426         int idx = 0;
427
428         Elm_Genlist_Item_Class *itc_2text = elm_genlist_item_class_new();
429         itc_2text->item_style = "2text";
430         itc_2text->func.text_get = _gl_interval_title_get;
431         itc_2text->func.del = _gl_safety_del;
432
433         layout = elm_layout_add(ad->nf);
434         elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
435         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
436
437         genlist = elm_genlist_add(layout);
438         elm_genlist_block_count_set(genlist, 14);
439         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
440
441         menu_list = interval_menu_list;
442
443         int count = 0;
444         count = sizeof(interval_menu_list) / sizeof(struct _set_interval_menu_item);
445
446         for (idx = 0; idx < count; idx++) {
447                 Safety_Item_Data *id = calloc(sizeof(Safety_Item_Data), 1);
448                 if (id) {
449                         id->index = idx;
450                         id->item = elm_genlist_item_append(
451                                                    genlist,             /* genlist object */
452                                                    itc_2text,           /* item class */
453                                                    id,                  /* data */
454                                                    NULL,
455                                                    ELM_GENLIST_ITEM_NONE,
456                                                    menu_list[idx].func, /* call back */
457                                                    ad);
458                 }
459         }
460
461         elm_genlist_item_class_free(itc_2text);
462
463         elm_object_part_content_set(layout, "elm.genlist", genlist);
464
465         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
466         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
467 }
468
469
470 static char *_gl_interval_trauma_title_get(void *data, Evas_Object *obj, const char *part)
471 {
472         DBG("_gl_interval_trauma_title_get() is called.");
473
474         char buf[512] = {0,};
475         Safety_Item_Data *id = data;
476
477         if (!strcmp(part, "elm.text")) {
478                 snprintf(buf, sizeof(buf) - 1, interval_trauma_time_arr[id->index].str,
479                                  interval_trauma_time_arr[id->index].time);
480         }
481         return strdup(buf);
482 }
483
484 static Evas_Object *_gl_interval_trauma_ridio_get(void *data, Evas_Object *obj, const char *part)
485 {
486         DBG("_gl_interval_trauma_ridio_get() is called.");
487
488         Evas_Object *radio = NULL;
489         Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
490         Safety_Item_Data *id = data;
491
492         if (!strcmp(part, "elm.icon")) {
493                 radio = elm_radio_add(obj);
494                 elm_radio_state_value_set(radio, id->index);
495                 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
496                 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
497                 elm_radio_group_add(radio, radio_main);
498
499                 if (safety_data.interval_trauma == id->index) {
500                         elm_radio_value_set(radio_main, safety_data.interval_trauma);
501                 }
502         }
503         return radio;
504 }
505
506 static void _trauma_interval_radio_cb(void *data, Evas_Object *obj, void *event_info)
507 {
508         DBG("_trauma_interval_radio_cb is called!");
509
510         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
511
512         DBG("selected trauma interval : %d", (int *)data);
513
514         if (safety_data.temp_ad) {
515                 elm_naviframe_item_pop(safety_data.temp_ad->nf);
516         }
517 }
518
519 static void _show_interval_trauma_list(void *data)
520 {
521         DBG("_show_interval_trauma_list() is called.");
522
523         appdata *ad = data;
524         if (ad == NULL) {
525                 ERR("%s", "_show_interval_trauma_list - appdata is null");
526                 return;
527         }
528         Evas_Object *genlist  = NULL;
529         Elm_Object_Item *nf_it = NULL;
530         int idx;
531
532         safety_data.temp_ad = ad;
533
534         Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
535         itc->item_style = "1text.1icon.1";
536         itc->func.text_get = _gl_interval_trauma_title_get;
537         itc->func.content_get = _gl_interval_trauma_ridio_get;
538         itc->func.del = _gl_safety_del;
539
540         genlist = elm_genlist_add(ad->nf);
541         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
542
543         const int count = sizeof(interval_trauma_time_arr) / sizeof(interval_trauma_time_arr[0]);
544         for (idx = 0; idx < count; idx++) {
545                 Safety_Item_Data *id = calloc(sizeof(Safety_Item_Data), 1);
546                 if (id) {
547                         id->index = idx;
548                         id->item = elm_genlist_item_append(genlist,
549                                                                                            itc,
550                                                                                            id,
551                                                                                            NULL,
552                                                                                            ELM_GENLIST_ITEM_NONE,
553                                                                                            _trauma_interval_radio_cb,
554                                                                                            (void *)idx);
555                 }
556         }
557
558         ad->safety_interval_trauma_rdg = elm_radio_add(genlist);
559         elm_radio_state_value_set(ad->safety_interval_trauma_rdg, count);
560         elm_radio_value_set(ad->safety_interval_trauma_rdg, count);
561
562         evas_object_data_set(genlist, "radio_main", ad->safety_interval_trauma_rdg);
563
564         elm_genlist_item_class_free(itc);
565
566         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
567         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
568 }
569
570 static char *_gl_interval_no_activity_title_get(void *data, Evas_Object *obj, const char *part)
571 {
572         char buf[512] = {0,};
573         Safety_Item_Data *id = data;
574
575         if (!strcmp(part, "elm.text")) {
576                 snprintf(buf, sizeof(buf) - 1, "After %s hours", interval_no_activity_hour_arr[id->index]);
577         }
578         return strdup(buf);
579 }
580
581 static Evas_Object *_gl_interval_no_activity_ridio_get(void *data, Evas_Object *obj, const char *part)
582 {
583         Evas_Object *radio = NULL;
584         Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
585         Safety_Item_Data *id = data;
586
587         if (!strcmp(part, "elm.icon")) {
588                 radio = elm_radio_add(obj);
589                 elm_radio_state_value_set(radio, id->index);
590                 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
591                 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
592                 elm_radio_group_add(radio, radio_main);
593
594                 if (safety_data.interval_no_activity == id->index) {
595                         elm_radio_value_set(radio_main, safety_data.interval_no_activity);
596                 }
597         }
598         return radio;
599 }
600
601 static void _no_activity_interval_radio_cb(void *data, Evas_Object *obj, void *event_info)
602 {
603         DBG("_no_activity_interval_radio_cb is called!");
604
605         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
606
607         DBG("selected no activity interval : %d", (int *)data);
608
609         if (safety_data.temp_ad) {
610                 elm_naviframe_item_pop(safety_data.temp_ad->nf);
611         }
612 }
613
614 static void _show_interval_no_activity_list(void *data)
615 {
616         DBG("_show_interval_no_activity_list() is called.");
617
618         appdata *ad = data;
619         if (ad == NULL) {
620                 ERR("%s", "_show_interval_no_activity_list - appdata is null");
621                 return;
622         }
623         Evas_Object *genlist  = NULL;
624         Elm_Object_Item *nf_it = NULL;
625         int idx;
626
627         safety_data.temp_ad = ad;
628
629         Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
630         itc->item_style = "1text.1icon.1";
631         itc->func.text_get = _gl_interval_no_activity_title_get;
632         itc->func.content_get = _gl_interval_no_activity_ridio_get;
633         itc->func.del = _gl_safety_del;
634
635         genlist = elm_genlist_add(ad->nf);
636         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
637
638         const int count = sizeof(interval_no_activity_hour_arr) / sizeof(interval_no_activity_hour_arr[0]);
639         for (idx = 0; idx < count; idx++) {
640                 Safety_Item_Data *id = calloc(sizeof(Safety_Item_Data), 1);
641                 if (id) {
642                         id->index = idx;
643                         id->item = elm_genlist_item_append(genlist,
644                                                                                            itc,
645                                                                                            id,
646                                                                                            NULL,
647                                                                                            ELM_GENLIST_ITEM_NONE,
648                                                                                            _no_activity_interval_radio_cb,
649                                                                                            (void *)idx);
650                 }
651         }
652
653         ad->safety_interval_no_activity_rdg = elm_radio_add(genlist);
654         elm_radio_state_value_set(ad->safety_interval_no_activity_rdg, count);
655         elm_radio_value_set(ad->safety_interval_no_activity_rdg, count);
656
657         evas_object_data_set(genlist, "radio_main", ad->safety_interval_no_activity_rdg);
658
659         elm_genlist_item_class_free(itc);
660
661         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
662         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
663 }
664
665 void _help_popup_cb(void *data, Evas_Object *obj, void *event_info)
666 {
667         Evas_Object *popup = NULL;
668         Evas_Object *btn = NULL;
669         Evas_Object *scroller = NULL;
670         Evas_Object *label = NULL;
671
672         appdata *ad = (appdata *) data;
673         if (ad == NULL)
674                 return;
675
676         popup = elm_popup_add(ad->nf);
677         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
678         elm_object_part_text_set(popup, "title,text", _("IDS_ST_MBODY_HELP"));
679
680         ad->popup = popup;
681
682         scroller = elm_scroller_add(popup);
683         evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
684         elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
685         elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
686         elm_object_content_set(popup, scroller);
687         evas_object_show(scroller);
688
689         label = elm_label_add(scroller);
690         elm_object_style_set(label, "popup/default");
691         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
692         char *txt = elm_entry_utf8_to_markup(_("IDS_ST_BODY_THE_HOME_SCREEN_WILL_BE_CHANGED_TO_THE_BLACK_THEME_TO_REDUCE_BATTERY_CONSUMPTION_MSG"));
693         elm_object_text_set(label, txt);
694         free(txt);
695         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
696         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
697         elm_object_content_set(scroller, label);
698         evas_object_show(label);
699
700         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
701
702         evas_object_show(popup);
703 }
704
705 static void _disable_emergency_cancel_cb(void *data, Evas_Object *obj, void *event_info)
706 {
707         appdata *ad = (appdata *) data;
708         if (ad == NULL)
709                 return;
710
711         if (ad->popup) {
712                 evas_object_del(data);
713                 ad->popup = NULL;
714         }
715 }
716
717 static void _disable_emergency_ok_cb(void *data, Evas_Object *obj, void *event_info)
718 {
719         appdata *ad = data;
720
721         if (ad == NULL) {
722                 DBG("%s", "_disable_emergency_ok_cb : appdata is null");
723                 return;
724         }
725
726         if (ad->popup) {
727                 evas_object_del(data);
728                 ad->popup = NULL;
729         }
730
731         safety_data.is_enable_emergency_mode = EINA_FALSE;
732         vconf_set_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, safety_data.is_enable_emergency_mode);
733         vconf_set_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, VCONFKEY_SYSMAN_POWER_OFF_RESTART);
734 }
735
736 void _disable_emergency_popup_cb(void *data, Evas_Object *obj, void *event_info)
737 {
738         Evas_Object *popup = NULL;
739         Evas_Object *btn = NULL;
740         Evas_Object *scroller = NULL;
741         Evas_Object *label = NULL;
742
743         appdata *ad = (appdata *) data;
744         if (ad == NULL)
745                 return;
746
747         popup = elm_popup_add(ad->nf);
748         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
749         elm_object_part_text_set(popup, "title,text", _("Disable Ultra power saving mode"));
750
751         ad->popup = popup;
752
753         scroller = elm_scroller_add(popup);
754         evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
755         elm_object_content_set(popup, scroller);
756         evas_object_show(scroller);
757
758         label = elm_label_add(scroller);
759         elm_object_style_set(label, "popup/default");
760         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
761         char *txt = elm_entry_utf8_to_markup(_("IDS_ST_POP_TO_DISABLE_ULTRA_POWER_SAVING_MODE_YOUR_DEVICE_WILL_RESTART"));
762         elm_object_text_set(label, txt);
763         free(txt);
764         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
765         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
766         elm_object_content_set(scroller, label);
767         evas_object_show(label);
768
769         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
770
771         btn = elm_button_add(popup);
772         elm_object_style_set(btn, "default");
773         evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
774         elm_object_text_set(btn, _("IDS_ST_BUTTON_CANCEL_ABB2"));
775         elm_object_part_content_set(popup, "button1", btn);
776         evas_object_smart_callback_add(btn, "clicked", _disable_emergency_cancel_cb, popup);
777
778         btn = elm_button_add(popup);
779         elm_object_style_set(btn, "default");
780         evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
781         elm_object_text_set(btn, _("IDS_WNOTI_BUTTON_OK_ABB2"));
782         elm_object_part_content_set(popup, "button2", btn);
783         evas_object_smart_callback_add(btn, "clicked", _disable_emergency_ok_cb, popup);
784
785         evas_object_show(popup);
786 }
787
788