tizen 2.3 release
[apps/home/b2-clocksetting.git] / src / setting.c
1 /*
2  * Copyright (c) 2010 Samsung Electronics, Inc.
3  * All rights reserved.
4  *
5  * This software is a confidential and proprietary information
6  * of Samsung Electronics, Inc. ("Confidential Information").  You
7  * shall not disclose such Confidential Information and shall use
8  * it only in accordance with the terms of the license agreement
9  * you entered into with Samsung Electronics.
10  */
11
12 #include <dlog.h>
13 #include <Ecore_X.h>            /* ecore_x_window_size_get */
14 #include <utilX.h>              /* KEY_END */
15 #include <vconf.h>
16 #include <vconf-keys.h>
17 #include <fcntl.h>
18 #include <appcore-efl.h>
19 #include <efl_assist.h>
20
21 #include "setting-sound.h"
22 #include "setting-volume.h"
23 #include "setting-clock.h"
24 #include "setting-homescreen.h"
25 #include "setting-info.h"
26 #include "setting-bluetooth.h"
27 #include "setting-motion.h"
28 #include "setting-display.h"
29 #include "setting-language.h"
30 #include "setting-reset.h"
31 #include "setting-battery.h"
32 #include "setting-privacy.h"
33 #include "setting-double.h"
34 #include "setting-safety.h"
35 #include "setting-notification.h"
36 #include "setting-profile.h"
37 #include "util.h"
38 #include "setting-common-sound.h"
39 #include "setting.h"
40 #include "setting_control_bt.h"
41 #include "setting_view_toast.h"
42 #include "setting_indicator_util.h"
43
44 #define FEATURE_SETTING_CHANGEABLE
45
46 #ifdef FEATURE_SETTING_CHANGEABLE
47 #include "setting-theme.h"
48 #endif
49
50 #if 0
51 #ifndef FEATURE_SETTING_SDK
52 #define LANGUAGE_MENU_INDEX                     10
53 #else
54 #define LANGUAGE_MENU_INDEX                     5
55 #endif
56 #endif
57
58 #define LANGUAGE_ICON_DISABLED          "b_settings_language_disabled.png"
59 #define LANGUAGE_ICON_ENABLED           "b_settings_language.png"
60
61 static struct _menu_item setting_emergency_menu_its[] = {
62 #ifdef FEATURE_SETTING_EMUL
63         { "IDS_ST_BUTTON_CLOCK",                                                        "b_settings_change_clock.png",  clock_cb                        },
64 #endif
65 //#if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
66         { "IDS_ST_OPT_SOUND_ABB2",                                                      "b_settings_volume.png",                        sound_cb                        },
67 //      { "IDS_ST_OPT_VOLUME",                          "b_settings_volume.png",                volume_cb                       },
68 //#endif
69         { "IDS_ST_MBODY_DISPLAY_ABB",                                           "b_setting_display.png",                display_cb                      },
70 #ifndef FEATURE_SETTING_EMUL
71 //      { "IDS_ST_BODY_BATTERY_ABB",                                            "b_settings_battery.png",               battery_cb                      },
72         { "IDS_QP_BUTTON_BLUETOOTH",                                            "b_settings_bluetooth.png",             bluetooth_cb            },
73 #endif
74 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
75         { "IDS_ST_MBODY_SAFETY_ABB",                    "b_settings_safety.png",       safety_cb           },
76 #endif
77         { NULL, NULL, NULL }
78 };
79
80 static struct _menu_item setting_menu_its[] = {
81         { "IDS_ST_BUTTON_CLOCK",                                                        "b_settings_change_clock.png",  clock_cb                        },
82 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
83         { "IDS_ST_BODY_WALLPAPERS",                                             "b_setting_wallpaper.png",                      homescreen_cb           },
84         { "IDS_ST_BUTTON_NOTIFICATIONS",                                        "b_settings_notifications.png", notification_cb         },
85 #endif
86 //#ifndef FEATURE_SETTING_EMUL
87         { "IDS_ST_OPT_SOUND_ABB2",                                                      "b_settings_volume.png",                        sound_cb                        },
88 //      { "IDS_ST_OPT_VOLUME",                          "b_settings_volume.png",                volume_cb                       },
89 //#endif
90         { "IDS_ST_MBODY_DISPLAY_ABB",                                           "b_setting_display.png",                display_cb                      },
91         { "IDS_ST_MBODY_TEXT_INPUT_ABB",                                        "text_input_icon.png",                  keyboard_cb                     },
92 #ifndef FEATURE_SETTING_EMUL
93 //      { "IDS_ST_BODY_BATTERY_ABB",                                            "b_settings_battery.png",               battery_cb                      },
94         { "IDS_QP_BUTTON_BLUETOOTH",                                            "b_settings_bluetooth.png",             bluetooth_cb            },
95 //      { "IDS_WMGR_HEADER_MOTIONS",                                            "b_settings_motion.png",                motion_cb                       },
96 #endif
97 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
98         { "IDS_ST_MBODY_DOUBLE_PRESS_ABB",                                      "b_setting_double-press.png",           double_pressing_cb      },
99         { "IDS_LCKSCN_BODY_PRIVACY_LOCK_ABB",                           "b_settings_lockscreen.png",    lockscreen_cb           },
100         { "IDS_HEALTH_MBODY_PROFILE",                                   "b_settings_profile.png",       profile_cb              },
101 #endif
102 //      { "IDS_ST_BUTTON_LANGUAGE",                                             "b_settings_language.png",              language_cb             },
103 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
104         //{ "Safety",                                                                           "b_settings_safety.png",                safety_cb                       },
105 #endif
106
107 // factory reset is not supported in tizen_2.3
108 #if 0
109         { "IDS_ST_BODY_RESET_GEAR_ABB",                                         "b_settings_reset.png", reset_gear_cb           },
110 #endif
111
112 #ifndef FEATURE_SETTING_EMUL
113         { "IDS_ST_BUTTON_GEAR_INFO",                                            "b_settings_info.png",                  gear_info_cb            },
114 #endif
115         { NULL, NULL, NULL }
116 };
117
118 static int is_emergency;
119 static Elm_Object_Item * lang_item = NULL;
120 static bool running = false;
121 static Ecore_Timer *running_timer = NULL;
122 static Ecore_Timer *scrl_timer = NULL;
123
124 static Evas_Object* _create_bg(Evas_Object *parent);
125 static Evas_Object* _create_conform(Evas_Object *parent);
126 static Evas_Object* _create_layout_main(Evas_Object* parent);
127 static Evas_Object* _create_naviframe_layout(Evas_Object* parent);
128 static void _create_view_layout(appdata *ad);
129 static int init_clocksetting(appdata *ad);
130 static Eina_Bool _app_ctrl_timer_cb(void *data);
131 static Eina_Bool _scroller_timer_cb(void *data);
132
133 #ifdef FEATURE_SETTING_CHANGEABLE
134
135 static Ea_Theme_Color_Table* _changeable_colors_set(void)
136 {
137         Ea_Theme_Color_Table *table;
138
139         /* Enable changeable UI */
140         ea_theme_changeable_ui_enabled_set(EINA_TRUE);
141
142         table = ea_theme_color_table_new(COLOR_INFO_TABLE);
143         ea_theme_colors_set(table, EA_THEME_STYLE_DEFAULT);
144
145         return table;
146 }
147
148 static void _changeable_colors_free(Ea_Theme_Color_Table *table)
149 {
150         // when the process is killed, you don’t need to call this
151         //ea_theme_colors_unset(table, EA_THEME_STYLE_DEFAULT);                 // This API will be removed.
152         ea_theme_color_table_free(table);
153 }
154 #endif
155
156 void clock_cb(void *data, Evas_Object *obj, void *event_info)
157 {
158         Evas_Object* layout = NULL;
159         Elm_Object_Item *nf_it = NULL;
160         appdata *ad = data;
161
162         if( ad == NULL )
163         {
164                 DBG("Setting - ad is null");
165                 return;
166         }
167
168         if(running){
169                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
170                 return;
171         }
172
173         if (is_running_clock) {
174                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
175                 return;
176         }
177
178         initialize_clock(data);
179
180         //genlist = _create_clock_list(data);
181         layout = _clock_type_cb(data);
182         if(layout == NULL)
183         {
184                 DBG("%s", "clock cb - layout is null");
185                 return;
186         }
187         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
188         evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _clear_clock_cb, ad);
189         //elm_naviframe_item_pop_cb_set(nf_it, _clear_clock_cb, ad);
190         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
191
192         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
193         is_running_clock = 1;
194
195         ad->MENU_TYPE = SETTING_CLOCK;
196 }
197
198 void notification_cb(void *data, Evas_Object *obj, void *event_info)
199 {
200         Evas_Object* genlist = NULL;
201         Elm_Object_Item *nf_it = NULL;
202         appdata *ad = data;
203
204         if( ad == NULL )
205         {
206                 DBG("Setting - ad is null");
207                 return;
208         }
209
210         if(running){
211                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
212                 return;
213         }
214
215         _initialize_noti();
216
217         genlist = _create_noti_list(data);
218         if(genlist == NULL)
219         {
220                 DBG("%s", "notification_cb - genlist is null");
221                 return;
222         }
223         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
224         elm_naviframe_item_pop_cb_set(nf_it, _clear_noti_cb, ad);
225         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
226
227         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
228
229         ad->MENU_TYPE = SETTING_NOTIFICATION;
230 }
231
232 void homescreen_cb(void *data, Evas_Object *obj, void *event_info)
233 {
234         Evas_Object* layout = NULL;
235         Elm_Object_Item *nf_it = NULL;
236         appdata *ad = data;
237
238         if( ad == NULL )
239         {
240                 DBG("Setting - ad is null");
241                 return;
242         }
243
244         if(running){
245                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
246                 return;
247         }
248
249         //layout = _create_homescreen_list(data);
250         layout = create_wallpaper_list(data);
251         if(layout == NULL)
252         {
253                 DBG("%s", "homescreen cb - layout is null");
254                 return;
255         }
256         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
257         //elm_naviframe_item_pop_cb_set(nf_it, _clear_homescreen_cb, ad);
258         evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _clear_homescreen_cb, ad);
259         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
260
261         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
262
263         ad->MENU_TYPE = SETTING_HOMESCREEN;
264 }
265
266
267 void sound_cb(void *data, Evas_Object *obj, void *event_info)
268 {
269         Evas_Object* genlist = NULL;
270         Elm_Object_Item *nf_it = NULL;
271         appdata *ad = data;
272
273         if( ad == NULL )
274         {
275                 DBG("Setting - ad is null");
276                 return;
277         }
278
279         if(running){
280                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
281                 return;
282         }
283
284         _initialize();
285
286         genlist = _create_sound_list(data);
287         if(genlist == NULL)
288         {
289                 DBG("%s", "sound cb - genlist is null");
290                 return;
291         }
292         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
293         elm_naviframe_item_pop_cb_set(nf_it, _clear_sound_cb, ad);
294         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
295
296         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
297
298         ad->MENU_TYPE = SETTING_SOUND;
299 }
300
301 void volume_cb(void *data, Evas_Object *obj, void *event_info)
302 {
303         Evas_Object* genlist = NULL;
304         Elm_Object_Item *nf_it = NULL;
305         appdata *ad = data;
306
307         if( ad == NULL )
308         {
309                 DBG("Setting - ad is null");
310                 return;
311         }
312
313         if(running){
314                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
315                 return;
316         }
317
318         _initialize_volume();
319
320         genlist = _create_volume_list(data);
321         if(genlist == NULL)
322         {
323                 DBG("%s", "volume cb - genlist is null");
324                 return;
325         }
326         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
327         //elm_naviframe_item_pop_cb_set(nf_it, _clear_volume_cb, ad);
328         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
329
330         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
331
332         ad->MENU_TYPE = SETTING_VOLUME;
333 }
334
335 void display_cb(void *data, Evas_Object *obj, void *event_info)
336 {
337         Evas_Object* genlist = NULL;
338         Elm_Object_Item *nf_it = NULL;
339         appdata *ad = data;
340
341         if( ad == NULL )
342         {
343                 DBG("Setting - ad is null");
344                 return;
345         }
346
347         if(running){
348                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
349                 return;
350         }
351
352         _init_display();
353
354         genlist = _create_display_list(data);
355         if(genlist == NULL)
356         {
357                 DBG("%s", "display cb - genlist is null");
358                 return;
359         }
360         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
361         //elm_naviframe_item_pop_cb_set(nf_it, _clear_display_cb, ad);
362         evas_object_event_callback_add(genlist, EVAS_CALLBACK_DEL, _clear_display_cb, ad);
363         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
364
365         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
366
367         ad->MENU_TYPE = SETTING_DISPLAY;
368 }
369
370 void keyboard_cb(void *data, Evas_Object *obj, void *event_info)
371 {
372         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
373
374         appdata *ad = data;
375
376         if( ad == NULL )
377         {
378                 DBG("Setting - ad is null");
379                 return;
380         }
381
382         if(running){
383                 return;
384         }
385
386         if(!running){
387                 app_control_h service;
388                 app_control_create(&service);
389                 app_control_set_package(service, "org.tizen.w-text-input-setting");
390                 app_control_send_launch_request(service, NULL, NULL);
391                 app_control_destroy(service);
392
393                 running = true;
394
395                 if(running_timer) {
396                         ecore_timer_del(running_timer);
397                         running_timer = NULL;
398                 }
399                 running_timer = ecore_timer_add(0.5, (Ecore_Task_Cb)_app_ctrl_timer_cb, NULL);
400         }
401 }
402
403 void battery_cb(void *data, Evas_Object *obj, void *event_info)
404 {
405         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
406
407         Evas_Object* layout = NULL;
408         Elm_Object_Item *nf_it = NULL;
409         appdata *ad = data;
410
411         if( ad == NULL )
412         {
413                 DBG("Setting - ad is null");
414                 return;
415         }
416
417         if(running){
418                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
419                 return;
420         }
421
422         _initialize_battery();
423         layout = _battery_status_cb(data);
424         if(layout == NULL)
425         {
426                 DBG("%s", "battery cb - layout is null");
427                 return;
428         }
429         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
430         //elm_naviframe_item_pop_cb_set(nf_it, _clear_battery_list_cb, ad);
431         evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _clear_battery_cb, ad);
432         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
433
434         ad->MENU_TYPE = SETTING_BATTERY;
435 }
436
437 void bluetooth_cb(void *data, Evas_Object *obj, void *event_info)
438 {
439         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
440
441         Evas_Object* genlist = NULL;
442         Elm_Object_Item *nf_it = NULL;
443         appdata *ad = data;
444
445         if( ad == NULL )
446         {
447                 DBG("Setting - ad is null");
448                 return;
449         }
450
451         if(running){
452                 return;
453         }
454
455         initialize_bt();
456
457         genlist = _create_bt_list(data);
458         if(genlist == NULL)
459         {
460                 DBG("%s", "bluetooth cb - genlist is null");
461                 return;
462         }
463         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
464         //elm_naviframe_item_pop_cb_set(nf_it, _clear_bluetooth_cb, ad);
465         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
466
467         ad->MENU_TYPE = SETTING_BLUETOOTH;
468 }
469
470 void motion_cb(void *data, Evas_Object *obj, void *event_info)
471 {
472         Evas_Object* genlist = NULL;
473         Elm_Object_Item *nf_it = NULL;
474         appdata *ad = data;
475
476         if( ad == NULL )
477         {
478                 DBG("Setting - ad is null");
479                 return;
480         }
481
482         if(running){
483                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
484                 return;
485         }
486
487         _initialize_motion();
488         genlist = _create_motion_list(data);
489         if(genlist == NULL)
490         {
491                 DBG("%s", "motion cb - genlist is null");
492                 return;
493         }
494         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
495         elm_naviframe_item_pop_cb_set(nf_it, _clear_motion_cb, ad);
496         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
497
498         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
499 }
500
501 void lockscreen_cb(void *data, Evas_Object *obj, void *event_info)
502 {
503         Evas_Object* layout = NULL;
504         Elm_Object_Item *nf_it = NULL;
505
506         appdata* ad = data;
507
508         if( ad == NULL )
509         {
510                 DBG("Setting - ad is null");
511                 return;
512         }
513
514         if(running){
515                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
516                 return;
517         }
518
519         layout = create_privacy_list(data);
520         if(layout == NULL)
521         {
522                 DBG("%s", "lockscreen cb - genlist is null");
523                 return;
524         }
525
526         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
527         elm_naviframe_item_pop_cb_set(nf_it, clear_privacy_cb, ad);
528         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
529
530         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
531
532         ad->MENU_TYPE = SETTING_SCREEN_LOCK;
533 }
534
535 void double_pressing_cb(void *data, Evas_Object *obj, void *event_info)
536 {
537         Evas_Object* layout = NULL;
538         Elm_Object_Item *nf_it = NULL;
539
540         appdata* ad = data;
541
542         if( ad == NULL )
543         {
544                 DBG("Setting - ad is null");
545                 return;
546         }
547
548         if(running){
549                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
550                 return;
551         }
552
553         init_double_pressing(ad);
554
555         layout = create_double_app_list(data);
556         if(layout == NULL)
557         {
558                 DBG("%s", "double cb - genlist is null");
559                 return;
560         }
561
562         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
563         evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, clear_double_app_cb, ad);
564         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
565
566         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
567
568         ad->MENU_TYPE = SETTING_DOUBLE_PRESSING;
569 }
570
571 void language_cb(void *data, Evas_Object *obj, void *event_info)
572 {
573         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
574
575         Evas_Object* genlist = NULL;
576         Elm_Object_Item *nf_it = NULL;
577         appdata *ad = data;
578
579         if( ad == NULL )
580         {
581                 DBG("Setting - ad is null");
582                 return;
583         }
584
585         if(running){
586                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
587                 return;
588         }
589
590         if( is_connected_GM() )
591         {
592                 DBG("Setting - language can not change!!");
593
594                 // automatic freed!!
595                 struct _toast_data * toast = _create_toast(ad, _("IDS_ST_TPOP_CHANGE_LANGUAGE_ON_MOBILE_DEVICE"));
596                 if( toast ) {
597                         _show_toast(ad, toast);
598                 }
599                 return;
600         }
601
602         _initialize_language(ad);
603         _set_launguage_update_cb(_update_main_menu_title);
604
605         genlist = _create_lang_list(data);
606         if(genlist == NULL)
607         {
608                 DBG("%s", "language cb - genlist is null");
609                 return;
610         }
611         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
612         elm_naviframe_item_pop_cb_set(nf_it, _clear_lang_cb, ad);
613         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
614
615         ad->MENU_TYPE = SETTING_LANGUAGE;
616 }
617
618 void safety_cb(void *data, Evas_Object *obj, void *event_info)
619 {
620         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
621
622         appdata *ad = data;
623         if( ad == NULL )
624         {
625                 DBG("Setting - ad is null");
626                 return;
627         }
628
629         if(running){
630                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
631                 return;
632         }
633
634         Evas_Object* layout = NULL;
635         Elm_Object_Item *nf_it = NULL;
636
637         layout = create_safety_list(ad);
638         if( layout == NULL )
639         {
640                 DBG("%s", "safety cb - genlist is null");
641                 return;
642         }
643
644         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
645         elm_naviframe_item_pop_cb_set(nf_it, clear_safety_cb, ad);
646         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
647
648         ad->MENU_TYPE = SETTING_SAFETY;
649 }
650
651 void reset_gear_cb(void *data, Evas_Object *obj, void *event_info)
652 {
653         appdata * ad = data;
654         if( ad == NULL )
655         {
656                 DBG("Setting - ad is null");
657                 return;
658         }
659
660         if(running){
661                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
662                 return;
663         }
664
665         _reset_popup_cb(data, obj, event_info);
666
667         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
668
669         ad->MENU_TYPE = SETTING_RESET;
670 }
671
672 void gear_info_cb(void *data, Evas_Object *obj, void *event_info)
673 {
674         Evas_Object* genlist = NULL;
675         Elm_Object_Item *nf_it = NULL;
676         appdata *ad = data;
677
678         if( ad == NULL )
679         {
680                 DBG("Setting - ad is null");
681                 return;
682         }
683
684         if(running){
685                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
686                 return;
687         }
688
689         genlist = _create_info_list(data);
690         if(genlist == NULL)
691         {
692                 DBG("%s", "info cb - genlist is null");
693                 return;
694         }
695         nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
696         elm_naviframe_item_pop_cb_set(nf_it, _clear_info_cb, ad);
697         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
698
699         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
700
701         ad->MENU_TYPE = SETTING_INFO;
702 }
703
704 static Eina_Bool _app_ctrl_timer_cb(void *data) {
705         DBG("reset flag");
706         running = false;
707         running_timer = NULL;
708         return ECORE_CALLBACK_CANCEL;
709 }
710
711 static Eina_Bool _scroller_timer_cb(void *data) {
712         DBG("hide scroller bar");
713
714         Evas_Object *genlist = data;
715
716         if (genlist)
717                 elm_layout_signal_emit(genlist, "do-hide-vbar", "");
718
719         return ECORE_CALLBACK_CANCEL;
720 }
721
722 void profile_cb(void *data, Evas_Object *obj, void *event_info)
723 {
724         DBG("profile cb");
725         appdata * ad = data;
726         if( ad == NULL )
727         {
728                 DBG("Setting - ad is null");
729                 return;
730         }
731
732         if(running){
733                 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
734                 return;
735         }
736
737         if(!running){
738                 _create_profile(data, obj, event_info);
739                 running = true;
740
741                 if(running_timer) {
742                         ecore_timer_del(running_timer);
743                         running_timer = NULL;
744                 }
745                 running_timer = ecore_timer_add(0.5, (Ecore_Task_Cb)_app_ctrl_timer_cb, NULL);
746         }
747         elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
748 }
749
750 static void _quit_cb(void *data, Evas_Object *obj, void *ei)
751 {
752         /*
753         //To make your application go to background,
754         //Call the elm_win_lower() instead
755         Evas_Object *win = (Evas_Object *) data;
756         elm_win_lower(win);
757         */
758         elm_exit();
759 }
760
761 static Eina_Bool _pop_cb(void *data, Elm_Object_Item *it)
762 {
763         // Stop timer and task
764         appdata * ad = data;
765         if(running_timer) {
766                 ecore_timer_del(running_timer);
767                 running_timer = NULL;
768         }
769         if(running)
770                 running = false;
771
772         if(scrl_timer) {
773                 ecore_timer_del(scrl_timer);
774                 scrl_timer = NULL;
775         }
776
777         if (ad && ad->win_main)
778         {
779                 elm_win_lower(ad->win_main);
780         }
781
782         return EINA_FALSE;
783 }
784
785 static Evas_Object* _create_bg(Evas_Object *parent)
786 {
787         Evas_Object *bg;
788
789         if (parent == NULL) return NULL;
790
791         bg = elm_bg_add(parent);
792         evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
793         elm_win_resize_object_add(parent, bg);
794         evas_object_show(bg);
795
796         return bg;
797 }
798
799 static Evas_Object* _create_conform(Evas_Object *parent)
800 {
801         Evas_Object *conform;
802
803         if (parent == NULL) return NULL;
804
805         conform = elm_conformant_add(parent);
806         evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
807         elm_win_resize_object_add(parent, conform);
808         evas_object_show(conform);
809
810         return conform;
811 }
812
813 static Evas_Object* _create_layout_main(Evas_Object* parent)
814 {
815         Evas_Object *layout;
816
817         if (parent == NULL) return NULL;
818
819         layout = elm_layout_add(parent);
820
821         if (layout == NULL)
822         {
823                 DBG("Failed elm_layout_add.\n");
824                 return NULL;
825         }
826
827         elm_layout_theme_set(layout, "layout", "application", "default");
828         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
829         elm_win_resize_object_add(parent, layout);
830
831         evas_object_show(layout);
832
833         return layout;
834 }
835
836 static void _lang_changed(void *data)
837 {
838         appdata * ad = data;
839         if( ad && ad->MENU_TYPE == SETTING_LANGUAGE )
840                 return;
841
842         char *locale = vconf_get_str(VCONFKEY_LANGSET);
843         if (locale)
844         {
845                 DBG("Setting - language is changed : %s", locale);
846                 elm_language_set(locale);
847                 elm_config_all_flush();
848         }
849 }
850
851 static void _window_resize_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
852 {
853         appdata *ad = (appdata *)data;
854         evas_object_geometry_get(ad->win_main, NULL, NULL, &ad->root_w, &ad->root_h);
855 }
856
857 static void init_values(appdata *ad)
858 {
859         if( ad == NULL )
860         {
861                 return;
862         }
863
864         ad->is_motion_smart_relay_on = 1;
865         ad->is_motion_wake_up_on = 1;
866 }
867
868 static int init_clocksetting(appdata *ad)
869 {
870         DBG("init_clocksetting() is called!");
871
872         if (ad == NULL)
873                 return EINA_FALSE;
874
875         ad->bg = _create_bg(ad->win_main);
876
877         // Conformant *** disable comform : lauching time issue ***
878 /*
879         ad->conform = _create_conform(ad->win_main);
880         if (ad->conform == NULL)
881                 return -1;
882 */
883         // Base Layout
884         ad->layout_main = _create_layout_main(ad->win_main);
885         if (ad->layout_main == NULL)
886                 return -1;
887
888         // Indicator
889         elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_HIDE);
890
891         // Naviframe
892         ad->nf = _create_naviframe_layout(ad->layout_main);
893
894         // Naviframe Content
895         _create_view_layout(ad);
896
897         init_values(ad);
898
899         int vibration_level = 0;
900         vconf_get_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, &vibration_level);
901
902         DBG("Setting - vibration level : %d", vibration_level);
903
904         if( vibration_level == 2 )      // wrong value!!
905         {
906                 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, VIBRATION_LEVEL_HIGH_INT);
907                 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, VIBRATION_LEVEL_HIGH_INT);
908         }
909         return EINA_TRUE;
910 }
911
912 static Evas_Object* _create_naviframe_layout(Evas_Object* parent)
913 {
914         Evas_Object *nf = NULL;
915
916         if (parent == NULL) return NULL;
917
918         nf = elm_naviframe_add(parent);
919         elm_object_part_content_set(parent, "elm.swallow.content", nf);
920
921         evas_object_show(nf);
922
923         return nf;
924 }
925
926 static char* _gl_text_get(void *data, Evas_Object *obj, const char *part)
927 {
928         char buf[512];
929         Item_Data *id = data;
930         int index = id->index;
931         /*
932         char expression[32];
933
934         if( index == LANGUAGE_MENU_INDEX ) {
935                 if( is_connected_GM() ) {
936                         strcpy(expression, "<font color=#515151>%s</font>");
937                 } else {
938                         strcpy(expression, "%s");
939                 }
940         } else {
941                 strcpy(expression, "%s");
942         }*/
943
944         if(is_emergency)
945                 snprintf(buf, sizeof(buf)-1, "%s", _(setting_emergency_menu_its[index].name));
946         else
947                 snprintf(buf, sizeof(buf)-1, "%s", _(setting_menu_its[index].name));
948
949         return strdup(buf);
950 }
951
952 static Evas_Object * _gl_icon_get(void *data, Evas_Object *obj, const char *part)
953 {
954         char buf[1024];
955         Item_Data *id = data;
956         int index = id->index;
957 /*
958         if( index == LANGUAGE_MENU_INDEX ) {
959                 if( is_connected_GM() ) {
960                         snprintf(buf, sizeof(buf)-1, "%s", LANGUAGE_ICON_DISABLED);
961                 } else {
962                         snprintf(buf, sizeof(buf)-1, "%s", LANGUAGE_ICON_ENABLED);
963                 }
964         } else {*/
965                 if(is_emergency)
966                         snprintf(buf, sizeof(buf)-1, "%s", setting_emergency_menu_its[index].icon_name);
967                 else
968                         snprintf(buf, sizeof(buf)-1, "%s", setting_menu_its[index].icon_name);
969 //      }
970
971         Evas_Object *icon = elm_image_add(obj);
972         elm_image_file_set(icon, EDJE_PATH, buf);
973         evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
974         evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
975         evas_object_size_hint_min_set(icon, 52, 52);
976
977         return icon;
978 }
979
980 static void _gl_del(void *data, Evas_Object *obj)
981 {
982         Item_Data *id = data;
983         if (id)
984                 free(id);
985 }
986
987 static Evas_Object * _gl_indicator_get(void *data, Evas_Object *obj, const char *part)
988 {
989         Evas_Object *layout = NULL;
990
991         layout = elm_layout_add(obj);
992         elm_layout_file_set(layout, EDJE_PATH, "setting/indicator");
993
994         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
995         indicator_view_update(layout);
996         evas_object_show(layout);
997         DBG("indicator get!!!!!!!!");
998
999         return layout;
1000 }
1001
1002 static Evas_Object* _create_mainlist_winset(Evas_Object* parent, appdata* ad)
1003 {
1004         Evas_Object *genlist = NULL;
1005         struct _menu_item *menu_its = NULL;
1006         int idx = 0;
1007
1008         // Create item class
1009         elm_theme_extension_add(NULL, EDJE_PATH);
1010         Elm_Genlist_Item_Class *itc_tmp = elm_genlist_item_class_new();
1011         itc_tmp->item_style = "setting_indicator";
1012         itc_tmp->func.content_get = _gl_indicator_get;
1013         itc_tmp->func.del = _gl_del;
1014
1015         Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1016         itc->item_style = "1text.1icon";
1017         itc->func.text_get = _gl_text_get;
1018         itc->func.content_get = _gl_icon_get;
1019         itc->func.del = _gl_del;
1020
1021         genlist = elm_genlist_add(ad->nf);
1022         if(genlist == NULL)
1023         {
1024                 elm_genlist_item_class_free(itc);
1025                 return NULL;
1026         }
1027         elm_genlist_realization_mode_set(genlist, EINA_TRUE);
1028         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1029
1030         Item_Data *id_indi = calloc(sizeof(Item_Data), 1);
1031         id_indi->index = idx;
1032         id_indi->item = elm_genlist_item_append(
1033                         genlist,
1034                         itc_tmp,
1035                         id_indi,
1036                         NULL,
1037                         ELM_GENLIST_ITEM_NONE,
1038                         NULL, NULL);
1039         elm_genlist_item_select_mode_set(id_indi->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1040
1041 #if 0
1042         vconf_get_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, &is_emergency);
1043 #else
1044         is_emergency = 0;
1045 #endif
1046         int item_count = 0;
1047         if(is_emergency)
1048         {
1049                 menu_its = setting_emergency_menu_its;
1050                 item_count = sizeof(setting_emergency_menu_its) / sizeof(struct _menu_item);
1051         }
1052         else
1053         {
1054                 menu_its = setting_menu_its;
1055                 item_count = sizeof(setting_menu_its) / sizeof(struct _menu_item);
1056         }
1057
1058         DBG("Setting - Main menu item count: %d", item_count);
1059
1060         //while (menu_its[ idx ].name != NULL) {
1061         for( idx = 0; idx < item_count-1; idx++ )
1062         {
1063                 Item_Data *id = calloc(sizeof(Item_Data), 1);
1064                 id->index = idx;
1065                 id->item = elm_genlist_item_append(
1066                                 genlist,                        // genlist object
1067                                 itc,                            // item class
1068                                 id,                     // data
1069                                 NULL,
1070                                 ELM_GENLIST_ITEM_NONE,
1071                                 menu_its[ idx ].func,
1072                                 ad);
1073
1074                 /*
1075                 if( !is_emergency && ( idx == LANGUAGE_MENU_INDEX ) )
1076                 {
1077                         lang_item = id->item;
1078                 }
1079                 */
1080
1081                 //++idx;
1082         }
1083         elm_genlist_item_class_free(itc);
1084         elm_genlist_item_class_free(itc_tmp);
1085
1086         ad->main_genlist = genlist;
1087
1088         indicator_set_vconf_changed_cb(ad);
1089
1090         return genlist;
1091 }
1092
1093 static void _update_main_menu_title( void * data )
1094 {
1095         DBG("_update_main_menu_title() is called");
1096
1097         appdata * ad = data;
1098         if( ad == NULL )
1099         {
1100                 DBG("appdata is NULL");
1101                 return;
1102         }
1103
1104         if( ad->main_genlist )
1105         {
1106                 elm_genlist_realized_items_update(ad->main_genlist);
1107         }
1108 }
1109
1110 static void _naviframe_back_cb(void * data, Evas_Object * obj, void * event_info)
1111 {
1112         appdata * ad = data;
1113         if( ad == NULL )
1114                 return;
1115
1116         if(ad->MENU_TYPE == SETTING_BLUETOOTH)
1117         {
1118                 clear_bt_resource();
1119                 ad->MENU_TYPE = SETTING_MAIN;
1120         }
1121         else if(ad->MENU_TYPE == SETTING_VOLUME_2_DEPTH)
1122         {
1123                 _clear_volume_resources();
1124
1125                 ad->MENU_TYPE = SETTING_VOLUME;
1126         }
1127         else if(ad->MENU_TYPE == SETTING_SOUND_RINGTONE)
1128         {
1129                 _stop_player();
1130
1131                 ad->MENU_TYPE = SETTING_SOUND;
1132         }
1133         else if(ad->MENU_TYPE == SETTING_SOUND_NOTIFICATION)
1134         {
1135                 _stop_wav_player();
1136
1137                 ad->MENU_TYPE = SETTING_SOUND;
1138         }
1139
1140         ea_naviframe_back_cb(data, obj, event_info);
1141 }
1142
1143 static void _create_view_layout(appdata *ad)
1144 {
1145         Evas_Object *genlist = NULL;
1146         Evas_Object *btn  = NULL;
1147         Elm_Object_Item *nf_it = NULL;
1148
1149         if (ad == NULL) return;
1150         if (ad->nf == NULL) return;
1151
1152         genlist = _create_mainlist_winset(ad->win_main, ad);
1153         ea_object_event_callback_add(ad->nf, EA_CALLBACK_BACK, _naviframe_back_cb, ad);
1154         ea_object_event_callback_add(ad->nf, EA_CALLBACK_MORE, ea_naviframe_more_cb, NULL);
1155
1156         nf_it = elm_naviframe_item_push(ad->nf, NULL, btn, NULL, genlist, NULL);
1157         elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1158
1159         elm_naviframe_item_pop_cb_set(nf_it, _pop_cb, ad); // ad->win_main
1160
1161         //register_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling, NULL);
1162 }
1163
1164 static Evas_Object* create_win(const char *name)
1165 {
1166         Evas_Object *eo;
1167
1168         eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
1169         if (!eo)
1170                 return NULL;
1171
1172         elm_win_title_set(eo, name);
1173         elm_win_autodel_set(eo, EINA_TRUE);
1174
1175         if (elm_win_wm_rotation_supported_get(eo)) {
1176                 int rots[4] = { 0, 90, 180, 270 };
1177                 elm_win_wm_rotation_available_rotations_set(eo, (const int*)(&rots), 4);
1178         }
1179
1180         evas_object_smart_callback_add(eo, "delete,request", _quit_cb, NULL);
1181
1182         return eo;
1183 }
1184
1185 bool app_create(void *data)
1186 {
1187         //DBG("[TIME] 3. it taked %d msec from main to setting_main_app_create ", appcore_measure_time());
1188         //appcore_measure_start();
1189
1190         DBG("Setting - app_create");
1191
1192         appdata *ad = (appdata *) data;
1193         char *locale;
1194
1195         DBG("app_create start.");
1196
1197         ecore_x_window_size_get(ecore_x_window_root_first_get(), &ad->root_w, &ad->root_h);
1198
1199         ad->win_main = create_win(PACKAGE);
1200         if (ad->win_main == NULL)
1201                 return false;
1202
1203         evas_object_resize(ad->win_main, ad->root_w, ad->root_h);
1204         //evas_object_event_callback_add(ad->win_main, EVAS_CALLBACK_RESIZE, _window_resize_cb, ad);
1205
1206         double scale = elm_config_scale_get();
1207         if(scale < 1.0)
1208         {
1209                 DBG("Setting - scale is more less than 1.0");
1210                 elm_config_scale_set(1.0);
1211         }
1212
1213         ad->evas = evas_object_evas_get(ad->win_main);
1214
1215         //appcore_set_i18n(PACKAGE, LOCALEDIR);
1216         //appcore_set_event_callback(APPCORE_EVENT_LANG_CHANGE, _lang_changed, ad);
1217
1218         locale = vconf_get_str(VCONFKEY_LANGSET);
1219         if (locale)
1220         {
1221                 elm_language_set(locale);
1222         }
1223
1224 #ifdef FEATURE_SETTING_CHANGEABLE
1225         // set color table for changeable color
1226         ad->color_table = _changeable_colors_set();
1227 #endif
1228
1229         ad->is_first_launch = 1;
1230
1231         init_clocksetting(ad);
1232
1233         DBG("app_create finish.");
1234
1235         DBG("[TIME] 4. setting_main_app_create taked %d msec ", appcore_measure_time());
1236         //appcore_measure_start();
1237
1238         evas_object_show(ad->win_main);
1239
1240         return true;
1241 }
1242
1243 void app_terminate(void *data)
1244 {
1245         DBG("Setting - app_terminate");
1246
1247         appdata *ad = data;
1248
1249         indicator_unset_vconf_changed_cb();
1250
1251         if( ad->alert_rdg )
1252         {
1253                 ad->alert_rdg = NULL;
1254         }
1255         if( ad->datetime )
1256         {
1257                 ad->datetime = NULL;
1258         }
1259         if( ad->dt_genlist_item_of_date )
1260         {
1261                 ad->dt_genlist_item_of_date = NULL;
1262         }
1263         if( ad->dt_genlist_item_of_time )
1264         {
1265                 ad->dt_genlist_item_of_time = NULL;
1266         }
1267         if( ad->pref_arm_rdg )
1268         {
1269                 ad->pref_arm_rdg = NULL;
1270         }
1271         if( ad->main_genlist )
1272         {
1273                 ad->main_genlist = NULL;
1274         }
1275         if( ad->double_rdg )
1276         {
1277                 ad->double_rdg = NULL;
1278         }
1279         if( ad->font_size_rdg )
1280         {
1281                 ad->font_size_rdg = NULL;
1282         }
1283         if( ad->language_item )
1284         {
1285                 ad->language_item = NULL;
1286         }
1287         if( ad->language_rdg )
1288         {
1289                 ad->language_rdg = NULL;
1290         }
1291
1292         /* unregister motion vconf changed callback */
1293         //unregister_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling);
1294
1295 #ifdef FEATURE_SETTING_CHANGEABLE
1296         if (ad->color_table) {
1297                 _changeable_colors_free(ad->color_table);
1298                 ad->color_table = NULL;
1299         }
1300 #endif
1301 }
1302
1303 void app_pause(void *data)
1304 {
1305         DBG("Setting - app_pause()");
1306
1307         appdata *ad = data;
1308         if( ad )
1309         {
1310                 if( ad->MENU_TYPE == SETTING_VOLUME_2_DEPTH )
1311                 {
1312                         _stop_all_volume_sound();
1313                 }
1314                 else if( ad->MENU_TYPE == SETTING_SOUND_RINGTONE ||
1315                                  ad->MENU_TYPE == SETTING_SOUND_NOTIFICATION )
1316                 {
1317                         _stop_all_sound_play();
1318                 }
1319                 else if(ad->MENU_TYPE == SETTING_BATTERY)
1320                 {
1321                         _clear_battery_cb(NULL, NULL, NULL, NULL);
1322                 }
1323                 else if( ad->MENU_TYPE == SETTING_SOUND )
1324                 {
1325                         _stop_all_sound_play();
1326                 }
1327         }
1328 }
1329
1330 void app_resume(void *data)
1331 {
1332         DBG("Setting - app_resume()");
1333
1334         appdata *ad = data;
1335
1336         if(running)
1337                 running = false;
1338 }
1339
1340 void app_reset(app_control_h service, void *data)
1341 {
1342         DBG("Setting - app_reset()");
1343
1344         appdata *ad = data;
1345
1346         char *operation = NULL;
1347         app_control_get_operation(service, &operation);
1348         DBG("operation : %s", operation);
1349         if (!ad->is_first_launch) {
1350                 if (operation && !strcmp(operation, "http://tizen.org/appcontrol/operation/main")) {
1351                         Elm_Object_Item *bottom = elm_naviframe_bottom_item_get(ad->nf);
1352                         Elm_Object_Item *top = elm_naviframe_top_item_get(ad->nf);
1353
1354                         if( ad->popup ) {
1355                                 evas_object_del(ad->popup);
1356                                 ad->popup = NULL;
1357                         }
1358
1359                         while (bottom != top) {
1360                                 elm_object_item_del(top);
1361                                 top = elm_naviframe_top_item_get(ad->nf);
1362                         }
1363
1364                         if (ad->main_genlist) {
1365                                 elm_genlist_item_show(elm_genlist_first_item_get(ad->main_genlist),
1366                                                 ELM_GENLIST_ITEM_SCROLLTO_TOP);
1367                                 elm_layout_signal_emit(ad->main_genlist, "do-show-vbar", "");
1368
1369                                 if(scrl_timer) {
1370                                         ecore_timer_del(scrl_timer);
1371                                         scrl_timer = NULL;
1372                                 }
1373                                 scrl_timer = ecore_timer_add(1, (Ecore_Task_Cb)_scroller_timer_cb, ad->main_genlist);
1374                         }
1375                 }
1376         } else {
1377                 ad->is_first_launch = 0;
1378         }
1379
1380         if (ad->win_main)
1381         {
1382                 elm_win_activate(ad->win_main);
1383         }
1384
1385         ad->MENU_TYPE = SETTING_MAIN;
1386
1387         /* Register language change vconf */
1388         //register_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling, NULL);
1389         //return TRUE;
1390 }
1391
1392 int main(int argc, char *argv[])
1393 {
1394         DBG("%s,%d", __func__, __LINE__);
1395
1396         appdata ad;
1397
1398         app_event_callback_s event_callback;
1399
1400         event_callback.create = app_create;
1401         event_callback.terminate = app_terminate;
1402         event_callback.pause = app_pause;
1403         event_callback.resume = app_resume;
1404         event_callback.app_control = app_reset;
1405         event_callback.low_memory = NULL;
1406         event_callback.low_battery = NULL;
1407         event_callback.device_orientation = NULL;
1408         event_callback.language_changed = _lang_changed;
1409         event_callback.region_format_changed = NULL;
1410
1411         memset(&ad, 0x0, sizeof(appdata));
1412
1413         return app_efl_main(&argc, &argv, &event_callback, &ad);
1414 }
1415
1416 #if 0
1417 int main(int argc, char *argv[])
1418 {
1419         appdata ad;
1420
1421         DBG("[TIME] 1. aul_launch -> main :: Setting main : %d msec ", appcore_measure_time_from("APP_START_TIME"));
1422         appcore_measure_start();
1423
1424         struct appcore_ops ops = {
1425                 .create = app_create,
1426                 .terminate = app_terminate,
1427                 .pause = app_pause,
1428                 .resume = app_resume,
1429                 .reset = app_reset,
1430         };
1431
1432         memset(&ad, 0x0, sizeof(appdata));
1433         ops.data = &ad;
1434
1435         ad.MENU_TYPE = SETTING_MAIN;
1436
1437         DBG("[TIME] 2. main : %d msec ", appcore_measure_time());
1438         appcore_measure_start();
1439
1440         return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
1441 }
1442 #endif