Initialize Tizen 2.3
[apps/home/b2-clocksetting.git] / src / setting-safety.c
1 /*
2  * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 /*
18  * setting-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         {
97                 DBG("Setting - this value was set from Setting!!");
98                 return;
99         }
100         else
101         {
102                 DBG("Setting - this value is set from WMS");
103
104                 safety_data.is_enable_emergency_mode = enable;
105                 if( g_safety_genlist )
106                 {
107                         elm_genlist_realized_items_update(g_safety_genlist);
108                 }
109         }
110 }
111
112 static void _emergency_mode_cb(void *data, Evas_Object *obj, void *event_info)
113 {
114         DBG("emergency_mode_cb() is called.");
115
116         Elm_Object_Item* it = (Elm_Object_Item *)event_info;
117         elm_genlist_item_selected_set(it, EINA_FALSE);
118
119         appdata *ad = data;
120         if( ad == NULL )
121         {
122                 DBG("%s", "_emergency_mode_cb - ad is null");
123                 return;
124         }
125
126         if(safety_data.is_enable_emergency_mode)
127         {
128                 //confirm popup ok to off to device restart
129                 _disable_emergency_popup_cb(data, obj, event_info);
130         }
131         else
132         {
133                 safety_data.is_enable_emergency_mode = !safety_data.is_enable_emergency_mode;
134                 vconf_set_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, safety_data.is_enable_emergency_mode);
135
136                 //DBG("Setting - Emergency mode is %d", safety_data.is_enable_emergency_mode);
137                 //elm_genlist_item_update(it);
138                 elm_exit();     //gonna be changed regarding freezer
139         }
140 }
141
142 static void _trauma_cb(void *data, Evas_Object *obj, void *event_info)
143 {
144         DBG("trauma_cb() is called.");
145
146         Elm_Object_Item* it = (Elm_Object_Item *)event_info;
147         elm_genlist_item_selected_set(it, EINA_FALSE);
148
149         appdata *ad = data;
150         if( ad == NULL )
151         {
152                 DBG("%s", "_emergency_mode_cb - ad is null");
153                 return;
154         }
155
156         safety_data.is_enable_trauma = !safety_data.is_enable_trauma;
157
158         elm_genlist_item_update(it);
159 }
160
161 static void _no_activity_cb(void *data, Evas_Object *obj, void *event_info)
162 {
163         DBG("_no_activity_cb() is called.");
164
165         Elm_Object_Item* it = (Elm_Object_Item *)event_info;
166         elm_genlist_item_selected_set(it, EINA_FALSE);
167
168         appdata *ad = data;
169         if( ad == NULL )
170         {
171                 DBG("%s", "_no_activity_cb - ad is null");
172                 return;
173         }
174
175         safety_data.is_enable_no_activity = !safety_data.is_enable_no_activity;
176
177         elm_genlist_item_update(it);
178 }
179
180 static void _set_interval_cb(void *data, Evas_Object *obj, void *event_info)
181 {
182         DBG("_set_interval_cb() is called.");
183
184         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
185
186         appdata *ad = data;
187         if( ad == NULL )
188         {
189                 DBG("%s", "_set_interval_cb - ad is null");
190                 return;
191         }
192
193         show_interval_list(ad);
194 }
195
196 static void _help_cb(void *data, Evas_Object *obj, void *event_info)
197 {
198         DBG("_help_cb() is called.");
199
200         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
201
202         appdata *ad = data;
203         if( ad == NULL )
204         {
205                 DBG("%s", "_help_cb - ad is null");
206                 return;
207         }
208         _help_popup_cb(data, obj, event_info);
209 }
210
211 static int _is_enable(int index)
212 {
213         int enable = DISABLE;
214         switch(index)
215         {
216         case 0:
217                 vconf_get_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, &safety_data.is_enable_emergency_mode);
218                 enable = safety_data.is_enable_emergency_mode;
219                 break;
220         case 1:
221                 enable = safety_data.is_enable_trauma;
222                 break;
223         case 2:
224                 enable = safety_data.is_enable_no_activity;
225                 break;
226         case 3:
227                 break;
228         case 4:
229                 break;
230         }
231         return enable;
232 }
233
234 static char * _gl_safety_title_get(void *data, Evas_Object *obj, const char *part)
235 {
236         char buf[1024];
237         Safety_Item_Data *id = data;
238         int index = id->index;
239
240         if( !strcmp(part, "elm.text.1") || !strcmp(part, "elm.text") )
241         {
242                 snprintf(buf, sizeof(buf)-1, "%s", _(safety_menu_list[index].name));
243         }
244         else if( !strcmp(part, "elm.text.2") )
245         {
246                 snprintf(buf, sizeof(buf)-1, "%s", _is_enable(index) ? _("IDS_EMAIL_BODY_ENABLED_M_STATUS") : _("IDS_ST_BODY_DISABLED_M_STATUS"));
247         }
248         return strdup(buf);
249 }
250
251 Evas_Object * _gl_safety_check_get(void *data, Evas_Object *obj, const char *part)
252 {
253         Evas_Object *check = NULL;
254         appdata *ad = data;
255
256         Safety_Item_Data *id = data;
257         int index = id->index;
258
259         if( !strcmp(part, "elm.icon") )
260         {
261                 check = elm_check_add(obj);
262                 elm_check_state_set(check, _is_enable(index) ? EINA_TRUE : EINA_FALSE);
263                 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
264                 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
265         }
266
267         return check;
268 }
269
270 static void _gl_safety_del(void *data, Evas_Object *obj)
271 {
272         Safety_Item_Data *id = data;
273         if (id)
274         {
275                 free(id);
276         }
277 }
278
279 Evas_Object *create_safety_list(void *data)
280 {
281         DBG("create_safety_list() is called.");
282
283         appdata *ad = data;
284         if ( ad == NULL )
285         {
286                 ERR("appdata is null!!");
287                 return NULL;
288         }
289
290         Evas_Object *genlist = NULL;
291         Evas_Object *layout = NULL;
292         Elm_Object_Item *nf_it = NULL;
293         Elm_Genlist_Item_Class *itc_temp = NULL;
294         struct _safety_menu_item *menu_list = NULL;
295         int idx = 0;
296
297         Elm_Genlist_Item_Class *itc_1text_1check = elm_genlist_item_class_new();
298         itc_1text_1check->item_style = "1text.1icon.1";
299         itc_1text_1check->func.text_get = _gl_safety_title_get;
300         itc_1text_1check->func.content_get = _gl_safety_check_get;
301         itc_1text_1check->func.del = _gl_safety_del;
302
303         Elm_Genlist_Item_Class *itc_2text_1check = elm_genlist_item_class_new();
304         itc_2text_1check->item_style = "2text.1icon.1";
305         itc_2text_1check->func.text_get = _gl_safety_title_get;
306         itc_2text_1check->func.content_get = _gl_safety_check_get;
307         itc_2text_1check->func.del = _gl_safety_del;
308
309         Elm_Genlist_Item_Class *itc_1text = elm_genlist_item_class_new();
310         itc_1text->item_style = "1text";
311         itc_1text->func.text_get = _gl_safety_title_get;
312         itc_1text->func.del = _gl_safety_del;
313
314         layout = elm_layout_add(ad->nf);
315         elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
316         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
317
318         genlist = elm_genlist_add(layout);
319         elm_genlist_block_count_set(genlist, 14);
320         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
321
322         menu_list = safety_menu_list;
323
324         int count = 0;
325         count = sizeof(safety_menu_list) / sizeof(struct _safety_menu_item);
326
327         for (idx = 0; idx < count; idx++)
328         {
329                 if( idx == 0 )
330                 {
331                         itc_temp = itc_2text_1check;
332                 }
333 #if 0
334                 else if( idx > 0 && idx < 3 )
335                 {
336                         itc_temp = itc_1text_1check;
337                 }
338 #endif
339                 else
340                 {
341                         itc_temp = itc_1text;
342                 }
343
344                 Safety_Item_Data *id = calloc(sizeof(Safety_Item_Data), 1);
345                 id->index = idx;
346                 id->item = elm_genlist_item_append(
347                                 genlist,                // genlist object
348                                 itc_temp,               // item class
349                                 id,                     // data
350                                 NULL,
351                                 ELM_GENLIST_ITEM_NONE,
352                                 menu_list[idx].func,    // call back
353                                 ad);
354                 if(idx == 0){
355                         vconf_get_bool("db/setting/support_emergency", &safety_data.is_support_emergency);
356                         //not support list for emergency mode
357                         if(!safety_data.is_support_emergency)
358                                 elm_object_item_disabled_set(id->item, EINA_TRUE);
359                 }
360         }
361
362         elm_genlist_item_class_free(itc_2text_1check);
363         elm_genlist_item_class_free(itc_1text_1check);
364         elm_genlist_item_class_free(itc_1text);
365
366         elm_object_part_content_set(layout, "elm.genlist", genlist);
367
368         return layout;
369 }
370
371 static void _trauma_interval_cb(void *data, Evas_Object *obj, void *event_info)
372 {
373         DBG("_trauma_interval_cb() is called.");
374
375         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
376
377         _show_interval_trauma_list(data);
378 }
379
380 static void _no_activity_interval_cb(void *data, Evas_Object *obj, void *event_info)
381 {
382         DBG("_no_activity_interval_cb() is called.");
383
384         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
385
386         _show_interval_no_activity_list(data);
387 }
388
389 static char * _gl_interval_title_get(void *data, Evas_Object *obj, const char *part)
390 {
391         DBG("_gl_interval_title_get() is called.");
392
393         char buf[1024];
394         Safety_Item_Data *id = data;
395         int index = id->index;
396
397         if( !strcmp(part, "elm.text.1") )
398         {
399                 snprintf(buf, sizeof(buf)-1, "%s", interval_menu_list[index].title);
400         }
401         else if( !strcmp(part, "elm.text.2") )
402         {
403                 snprintf(buf, sizeof(buf)-1, interval_menu_list[index].sub_title, "after 30 seconds");
404         }
405         return strdup(buf);
406 }
407
408 static void show_interval_list(void *data)
409 {
410         DBG("show_interval_list() is called.");
411
412         appdata *ad = data;
413         if (!ad) {
414                 ERR("appdata is null!!");
415                 return;
416         }
417
418         Evas_Object *genlist = NULL;
419         Evas_Object *layout = NULL;
420         Elm_Object_Item *nf_it = NULL;
421         struct _set_interval_menu_item *menu_list = NULL;
422         int idx = 0;
423
424         Elm_Genlist_Item_Class *itc_2text = elm_genlist_item_class_new();
425         itc_2text->item_style = "2text";
426         itc_2text->func.text_get = _gl_interval_title_get;
427         itc_2text->func.del = _gl_safety_del;
428
429         layout = elm_layout_add(ad->nf);
430         elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
431         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
432
433         genlist = elm_genlist_add(layout);
434         elm_genlist_block_count_set(genlist, 14);
435         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
436
437         menu_list = interval_menu_list;
438
439         int count = 0;
440         count = sizeof(interval_menu_list) / sizeof(struct _set_interval_menu_item);
441
442         for (idx = 0; idx < count; idx++)
443         {
444                 Safety_Item_Data *id = calloc(sizeof(Safety_Item_Data), 1);
445                 id->index = idx;
446                 id->item = elm_genlist_item_append(
447                                 genlist,                // genlist object
448                                 itc_2text,              // item class
449                                 id,                     // data
450                                 NULL,
451                                 ELM_GENLIST_ITEM_NONE,
452                                 menu_list[idx].func,    // call back
453                                 ad);
454         }
455
456         elm_genlist_item_class_free(itc_2text);
457
458         elm_object_part_content_set(layout, "elm.genlist", genlist);
459
460         nf_it = elm_naviframe_item_push( ad->nf, NULL, NULL, NULL, layout, NULL );
461         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
462 }
463
464
465 static char * _gl_interval_trauma_title_get(void *data, Evas_Object *obj, const char *part)
466 {
467         DBG("_gl_interval_trauma_title_get() is called.");
468
469         char buf[512];
470         Safety_Item_Data *id = data;
471
472         if( !strcmp(part, "elm.text") )
473         {
474                 snprintf(buf, sizeof(buf)-1, interval_trauma_time_arr[id->index].str,
475                                                                          interval_trauma_time_arr[id->index].time);
476         }
477         return strdup(buf);
478 }
479
480 static Evas_Object * _gl_interval_trauma_ridio_get(void *data, Evas_Object *obj, const char *part)
481 {
482         DBG("_gl_interval_trauma_ridio_get() is called.");
483
484         Evas_Object *radio = NULL;
485         Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
486         Safety_Item_Data *id = data;
487
488         if( !strcmp(part, "elm.icon") )
489         {
490                 radio = elm_radio_add(obj);
491                 elm_radio_state_value_set(radio, id->index);
492                 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
493                 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
494                 elm_radio_group_add(radio, radio_main);
495
496                 if( safety_data.interval_trauma == id->index )
497                 {
498                         elm_radio_value_set(radio_main, safety_data.interval_trauma);
499                 }
500         }
501         return radio;
502 }
503
504 static void _trauma_interval_radio_cb(void *data, Evas_Object *obj, void *event_info)
505 {
506         DBG("_trauma_interval_radio_cb is called!");
507
508         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
509
510         DBG("selected trauma interval : %d", (int*)data);
511
512         if( safety_data.temp_ad )
513         {
514                 elm_naviframe_item_pop(safety_data.temp_ad->nf);
515         }
516 }
517
518 static void _show_interval_trauma_list(void* data)
519 {
520         DBG("_show_interval_trauma_list() is called.");
521
522         appdata *ad = data;
523         if( ad == NULL )
524         {
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         {
546                 Safety_Item_Data *id = calloc(sizeof(Safety_Item_Data), 1);
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         ad->safety_interval_trauma_rdg = elm_radio_add(genlist);
558         elm_radio_state_value_set(ad->safety_interval_trauma_rdg, count);
559         elm_radio_value_set(ad->safety_interval_trauma_rdg, count);
560
561         evas_object_data_set(genlist, "radio_main", ad->safety_interval_trauma_rdg);
562
563         elm_genlist_item_class_free(itc);
564
565         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
566         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
567 }
568
569 static char * _gl_interval_no_activity_title_get(void *data, Evas_Object *obj, const char *part)
570 {
571         char buf[512];
572         Safety_Item_Data *id = data;
573
574         if( !strcmp(part, "elm.text") )
575         {
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         {
589                 radio = elm_radio_add(obj);
590                 elm_radio_state_value_set(radio, id->index);
591                 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
592                 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
593                 elm_radio_group_add(radio, radio_main);
594
595                 if( safety_data.interval_no_activity == id->index )
596                 {
597                         elm_radio_value_set(radio_main, safety_data.interval_no_activity);
598                 }
599         }
600         return radio;
601 }
602
603 static void _no_activity_interval_radio_cb(void *data, Evas_Object *obj, void *event_info)
604 {
605         DBG("_no_activity_interval_radio_cb is called!");
606
607         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
608
609         DBG("selected no activity interval : %d", (int*)data);
610
611         if( safety_data.temp_ad )
612         {
613                 elm_naviframe_item_pop(safety_data.temp_ad->nf);
614         }
615 }
616
617 static void _show_interval_no_activity_list(void* data)
618 {
619         DBG("_show_interval_no_activity_list() is called.");
620
621         appdata *ad = data;
622         if( ad == NULL )
623         {
624                 ERR("%s", "_show_interval_no_activity_list - appdata is null");
625                 return;
626         }
627         Evas_Object *genlist  = NULL;
628         Elm_Object_Item *nf_it = NULL;
629         int idx;
630
631         safety_data.temp_ad = ad;
632
633         Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
634         itc->item_style = "1text.1icon.1";
635         itc->func.text_get = _gl_interval_no_activity_title_get;
636         itc->func.content_get = _gl_interval_no_activity_ridio_get;
637         itc->func.del = _gl_safety_del;
638
639         genlist = elm_genlist_add(ad->nf);
640         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
641
642         const int count = sizeof(interval_no_activity_hour_arr) / sizeof(interval_no_activity_hour_arr[0]);
643         for( idx = 0; idx < count; idx++ )
644         {
645                 Safety_Item_Data *id = calloc(sizeof(Safety_Item_Data), 1);
646                 id->index = idx;
647                 id->item = elm_genlist_item_append( genlist,
648                                                                                         itc,
649                                                                                         id,
650                                                                                         NULL,
651                                                                                         ELM_GENLIST_ITEM_NONE,
652                                                                                         _no_activity_interval_radio_cb,
653                                                                                         (void*)idx );
654         }
655
656         ad->safety_interval_no_activity_rdg = elm_radio_add(genlist);
657         elm_radio_state_value_set(ad->safety_interval_no_activity_rdg, count);
658         elm_radio_value_set(ad->safety_interval_no_activity_rdg, count);
659
660         evas_object_data_set(genlist, "radio_main", ad->safety_interval_no_activity_rdg);
661
662         elm_genlist_item_class_free(itc);
663
664         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
665         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
666 }
667
668 void _help_popup_cb(void *data, Evas_Object *obj, void *event_info)
669 {
670         Evas_Object *popup = NULL;
671         Evas_Object *btn = NULL;
672         Evas_Object *scroller = NULL;
673         Evas_Object *label = NULL;
674
675         appdata *ad = (appdata *) data;
676         if( ad == NULL )
677                 return;
678
679         popup = elm_popup_add(ad->nf);
680         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
681         elm_object_part_text_set(popup, "title,text", _("IDS_ST_MBODY_HELP"));
682
683         ad->popup = popup;
684
685         scroller = elm_scroller_add(popup);
686         evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
687         elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
688         elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
689         elm_object_content_set(popup, scroller);
690         evas_object_show(scroller);
691
692         label = elm_label_add(scroller);
693         elm_object_style_set(label, "popup/default");
694         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
695         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"));
696         elm_object_text_set(label, txt);
697         free(txt);
698         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
699         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
700         elm_object_content_set(scroller, label);
701         evas_object_show(label);
702
703         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
704
705         evas_object_show(popup);
706 }
707
708 static void _disable_emergency_cancel_cb(void *data, Evas_Object *obj, void *event_info)
709 {
710         appdata *ad = (appdata *) data;
711         if( ad == NULL )
712                 return;
713
714         if (ad->popup) {
715                 evas_object_del(data);
716                 ad->popup = NULL;
717         }
718 }
719
720 static void _disable_emergency_ok_cb(void *data, Evas_Object *obj, void *event_info)
721 {
722         appdata *ad = data;
723
724         if( ad == NULL )
725         {
726                 DBG("%s", "_disable_emergency_ok_cb : appdata is null");
727                 return;
728         }
729
730         if (ad->popup) {
731                 evas_object_del(data);
732                 ad->popup = NULL;
733         }
734
735         safety_data.is_enable_emergency_mode = EINA_FALSE;
736         vconf_set_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, safety_data.is_enable_emergency_mode);
737         vconf_set_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, VCONFKEY_SYSMAN_POWER_OFF_RESTART);
738 }
739
740 void _disable_emergency_popup_cb(void *data, Evas_Object *obj, void *event_info)
741 {
742         Evas_Object *popup = NULL;
743         Evas_Object *btn = NULL;
744         Evas_Object *scroller = NULL;
745         Evas_Object *label = NULL;
746
747         appdata *ad = (appdata *) data;
748         if( ad == NULL )
749                 return;
750
751         popup = elm_popup_add(ad->nf);
752         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
753         elm_object_part_text_set(popup, "title,text", _("Disable Ultra power saving mode"));
754
755         ad->popup = popup;
756
757         scroller = elm_scroller_add(popup);
758         evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
759         elm_object_content_set(popup, scroller);
760         evas_object_show(scroller);
761
762         label = elm_label_add(scroller);
763         elm_object_style_set(label, "popup/default");
764         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
765         char *txt = elm_entry_utf8_to_markup(_("IDS_ST_POP_TO_DISABLE_ULTRA_POWER_SAVING_MODE_YOUR_DEVICE_WILL_RESTART"));
766         elm_object_text_set(label, txt);
767         free(txt);
768         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
769         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
770         elm_object_content_set(scroller, label);
771         evas_object_show(label);
772
773         ea_object_event_callback_add(popup, EA_CALLBACK_BACK, setting_popup_back_cb, ad);
774
775         btn = elm_button_add(popup);
776         elm_object_style_set(btn, "popup");
777         evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
778         elm_object_text_set(btn, _("IDS_ST_BUTTON_CANCEL_ABB2"));
779         elm_object_part_content_set(popup, "button1", btn);
780         evas_object_smart_callback_add(btn, "clicked", _disable_emergency_cancel_cb, popup);
781
782         btn = elm_button_add(popup);
783         elm_object_style_set(btn, "popup");
784         evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
785         elm_object_text_set(btn, _("IDS_WNOTI_BUTTON_OK_ABB2"));
786         elm_object_part_content_set(popup, "button2", btn);
787         evas_object_smart_callback_add(btn, "clicked", _disable_emergency_ok_cb, popup);
788
789         evas_object_show(popup);
790 }
791
792