fix for applying wayland (removing X)
[apps/home/settings.git] / setting-applications / src / setting-applications-main.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-applications-main.h>
22 #include <dd-display.h>
23
24 #include <setting-common-draw-widget.h>
25
26 #define KEYSTR_SCREEN_ROTATION "IDS_ST_MBODY_SCREEN_ROTATION"
27 #define KEYSTR_TTS "TTS"
28
29 #define KEYSTR_APPLICATION_MANAGER "Application Manager"
30 #define KEYSTR_DEFAULT_APPLICATION "Default applications"
31
32
33
34 static int setting_applications_main_create(void *cb);
35 static int setting_applications_main_destroy(void *cb);
36 static int setting_applications_main_update(void *cb);
37 static int setting_applications_main_cleanup(void *cb);
38
39 setting_view setting_view_applications_main = {
40         .create = setting_applications_main_create,
41         .destroy = setting_applications_main_destroy,
42         .update = setting_applications_main_update,
43         .cleanup = setting_applications_main_cleanup,
44 };
45
46 extern const char *str_in_arr[];
47 extern const char *str_out_arr[];
48 const char *screen_capture_destination[] = {
49         KeyStr_ScreenCapture_Ask,
50         KeyStr_ScreenCapture_Gallery,
51         KeyStr_ScreenCapture_KeepIt,
52         NULL,
53 };
54
55 /* ***************************************************
56  *
57  *basic func
58  *
59  ***************************************************/
60 static void
61 __setting_applications_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
62 {
63         ret_if(NULL == data || NULL == event_info);
64         SETTING_TRACE_BEGIN;
65         SettingApplicationsUG *ad = (SettingApplicationsUG *) data;
66         Elm_Object_Item *parentItem = event_info;       /* parent item */
67         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
68         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
69
70         Evas_Object *rgd;
71
72         if (ad->data_back) {
73                 ad->data_back->sub_desc = get_pa_backlight_time_str();
74                 elm_object_item_data_set(ad->data_back->item, ad->data_back);
75                 elm_genlist_item_update(ad->data_back->item);
76         }
77         /* End */
78
79         if (data_parentItem == ad->data_back) {
80                 /* Update backlight menu for MDM update */
81                 rgd = elm_radio_add(scroller);
82                 elm_radio_value_set(rgd, -1);
83
84                 /*evas_object_smart_callback_add(scroller, "realized", __gl_realized_cb, NULL); */
85                 /*elm_object_signal_emit(scroller, "realized", ""); */
86
87                 if (isEmulBin()) {
88                         ad->data_backlight_always_on = setting_create_Gendial_exp_sub_field(scroller,
89                                                                                             &(ad->itc_1icon_1text_sub),
90                                                                                             NULL, NULL, parentItem,
91                                                                                             SWALLOW_Type_1RADIO, rgd,
92                                                                                             0,                          /* Always ON */
93                                                                                             KeyStr_Backlight_Alays_On, NULL);
94
95                         if (ad->data_backlight_always_on) {
96                                 ad->data_backlight_always_on->userdata = ad;
97                                 /*ad->data_backlight_always_on->group_style = SETTING_GROUP_STYLE_CENTER; */
98                                 setting_genlist_item_groupstyle_set(ad->data_backlight_always_on, SETTING_GROUP_STYLE_CENTER);
99                                 __BACK_POINTER_SET(ad->data_backlight_always_on);
100                         } else {
101                                 SETTING_TRACE_ERROR("ad->data_backlight_always_on is NULL");
102                         }
103
104                 }
105                 char backlight_time[MAX_DISPLAY_NAME_LEN_ON_UI] = {0, };
106                 snprintf(backlight_time, sizeof(backlight_time), "15 %s", (char *)(_("IDS_ST_BODY_SECONDS")));
107                 ad->data_backlight_15sec = setting_create_Gendial_exp_sub_field(scroller,
108                                                                                 &(ad->itc_1icon_1text_sub),
109                                                                                 NULL, NULL, parentItem,
110                                                                                 SWALLOW_Type_1RADIO, rgd,
111                                                                                 15,                             /* 15 sec */
112                                                                                 KeyStr_Backlight_15_SEC_STR, NULL);
113                 if (ad->data_backlight_15sec) {
114                         ad->data_backlight_15sec->userdata = ad;
115                         setting_genlist_item_groupstyle_set(ad->data_backlight_15sec, SETTING_GROUP_STYLE_CENTER);
116                         __BACK_POINTER_SET(ad->data_backlight_15sec);
117                 } else {
118                         SETTING_TRACE_ERROR("ad->data_backlight_15sec is NULL");
119                 }
120                 snprintf(backlight_time, sizeof(backlight_time), "30 %s", (char *)(_("IDS_ST_BODY_SECONDS")));
121                 ad->data_backlight_30sec = setting_create_Gendial_exp_sub_field(scroller,
122                                                                                 &(ad->itc_1icon_1text_sub),
123                                                                                 NULL, NULL, parentItem,
124                                                                                 SWALLOW_Type_1RADIO, rgd,
125                                                                                 30,                             /* 30 sec */
126                                                                                 KeyStr_Backlight_30_SEC_STR, NULL);
127                 if (ad->data_backlight_30sec) {
128                         ad->data_backlight_30sec->userdata = ad;
129                         setting_genlist_item_groupstyle_set(ad->data_backlight_30sec, SETTING_GROUP_STYLE_CENTER);
130                         __BACK_POINTER_SET(ad->data_backlight_30sec);
131                 } else {
132                         SETTING_TRACE_ERROR("ad->data_backlight_30sec is NULL");
133                 }
134                 snprintf(backlight_time, sizeof(backlight_time), "1 %s", (char *)(_("IDS_CLD_OPT_MINUTES_LC_ABB")));
135                 ad->data_backlight_1min = setting_create_Gendial_exp_sub_field(scroller,
136                                                                                &(ad->itc_1icon_1text_sub),
137                                                                                NULL, NULL, parentItem,
138                                                                                SWALLOW_Type_1RADIO, rgd,
139                                                                                60,                              /* 60 sec */
140                                                                                KeyStr_Backlight_1_MIN_STR, NULL);
141                 if (ad->data_backlight_1min) {
142                         ad->data_backlight_1min->userdata = ad;
143                         setting_genlist_item_groupstyle_set(ad->data_backlight_1min, SETTING_GROUP_STYLE_CENTER);
144                         __BACK_POINTER_SET(ad->data_backlight_1min);
145                 } else {
146                         SETTING_TRACE_ERROR("ad->data_backlight_1min is NULL");
147                 }
148                 snprintf(backlight_time, sizeof(backlight_time), "2 %s", (char *)(_("IDS_CLD_OPT_MINUTES_LC_ABB")));
149                 ad->data_backlight_2min = setting_create_Gendial_exp_sub_field(scroller,
150                                                                                &(ad->itc_1icon_1text_sub),
151                                                                                NULL, NULL, parentItem,
152                                                                                SWALLOW_Type_1RADIO, rgd,
153                                                                                120,                             /* 2min */
154                                                                                KeyStr_Backlight_2_MIN_STR, NULL);
155                 if (ad->data_backlight_2min) {
156                         ad->data_backlight_2min->userdata = ad;
157                         setting_genlist_item_groupstyle_set(ad->data_backlight_2min, SETTING_GROUP_STYLE_CENTER);
158                         __BACK_POINTER_SET(ad->data_backlight_2min);
159                 } else {
160                         SETTING_TRACE_ERROR("ad->data_backlight_2min is NULL");
161                 }
162                 snprintf(backlight_time, sizeof(backlight_time), "5 %s", (char *)(_("IDS_CLD_OPT_MINUTES_LC_ABB")));
163                 ad->data_backlight_5min = setting_create_Gendial_exp_sub_field(scroller,
164                                                                                &(ad->itc_1icon_1text_sub),
165                                                                                NULL, NULL, parentItem,
166                                                                                SWALLOW_Type_1RADIO, rgd,
167                                                                                300,                             /* 5min */
168                                                                                KeyStr_Backlight_5_MIN_STR, NULL);
169                 if (ad->data_backlight_5min) {
170                         ad->data_backlight_5min->userdata = ad;
171                         setting_genlist_item_groupstyle_set(ad->data_backlight_5min, SETTING_GROUP_STYLE_CENTER);
172                         __BACK_POINTER_SET(ad->data_backlight_5min);
173                 } else {
174                         SETTING_TRACE_ERROR("ad->data_backlight_5min is NULL");
175                 }
176                 snprintf(backlight_time, sizeof(backlight_time), "10 %s", (char *)(_("IDS_CLD_OPT_MINUTES_LC_ABB")));
177                 ad->data_backlight_10min = setting_create_Gendial_exp_sub_field(scroller,
178                                                                                 &(ad->itc_1icon_1text_sub),
179                                                                                 NULL, NULL, parentItem,
180                                                                                 SWALLOW_Type_1RADIO, rgd,
181                                                                                 600,                            /* 10min */
182                                                                                 KeyStr_Backlight_10_MIN_STR, NULL);
183                 if (ad->data_backlight_10min) {
184                         ad->data_backlight_10min->userdata = ad;
185                         setting_genlist_item_groupstyle_set(ad->data_backlight_10min, SETTING_GROUP_STYLE_CENTER);
186                         __BACK_POINTER_SET(ad->data_backlight_10min);
187                 } else {
188                         SETTING_TRACE_ERROR("ad->data_backlight_10min is NULL");
189                 }
190
191                 setting_update_chk_status(rgd,
192                                           data_parentItem->int_slp_setting_binded);
193
194         } else if (data_parentItem == ad->data_touchkey_light_duration) {
195                 rgd = elm_radio_add(scroller);
196                 elm_radio_value_set(rgd, -1);
197
198                 char duration[MAX_DISPLAY_NAME_LEN_ON_UI] = {0, };
199                 snprintf(duration, sizeof(duration), "1.5 %s", (char *)(_("IDS_ST_BODY_SECONDS")));
200                 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
201                                                                       &(ad->itc_1icon_1text_sub),
202                                                                       NULL, ad, parentItem,
203                                                                       SWALLOW_Type_1RADIO, rgd,
204                                                                       90, "IDS_ST_BODY_1_5_SECONDS",
205                                                                       NULL, SETTING_GROUP_STYLE_CENTER);
206
207                 snprintf(duration, sizeof(duration), "6 %s", (char *)(_("IDS_ST_BODY_SECONDS")));
208                 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
209                                                                       &(ad->itc_1icon_1text_sub),
210                                                                       NULL, ad, parentItem,
211                                                                       SWALLOW_Type_1RADIO, rgd,
212                                                                       360, "IDS_MSG_OPT_6_SECONDS",
213                                                                       NULL, SETTING_GROUP_STYLE_CENTER);
214                 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
215                                                                       &(ad->itc_1icon_1text_sub),
216                                                                       NULL, ad, parentItem,
217                                                                       SWALLOW_Type_1RADIO, rgd,
218                                                                       0, "IDS_ST_BODY_ALWAYS_OFF",
219                                                                       NULL, SETTING_GROUP_STYLE_CENTER);
220                 setting_create_Gendial_exp_sub_field_with_group_style(scroller,
221                                                                       &(ad->itc_1icon_1text_sub_touch),
222                                                                       NULL, ad, parentItem,
223                                                                       SWALLOW_Type_1RADIO, rgd,
224                                                                       -1, "IDS_ST_BODY_ALWAYS_ON",
225                                                                       NULL, SETTING_GROUP_STYLE_BOTTOM);
226
227                 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
228         }
229
230         evas_object_show(scroller);
231 }
232 #if !SUPPOR_SEPARATE_BRIGHTNESS
233 /* low battery */
234 static void setting_applications_main_lowbat_cb(keynode_t *key, void *data)
235 {
236         ret_if(data == NULL);
237         SettingApplicationsUG *ad = (SettingApplicationsUG *) data;
238         SETTING_TRACE_BEGIN;
239         ret_if(ad->data_br == NULL);
240
241         char *vconf_key = vconf_keynode_get_name(key);
242         SETTING_TRACE("the value of [ %s ] just changed", vconf_key);
243         /* VCONFKEY_SYSMAN_BATTERY_STATUS_LOW */
244
245         int battery_value;
246         vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
247         ad->low_bat = battery_value;
248
249         if (battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW) {
250                 elm_slider_value_set(ad->data_br->eo_check, 1);
251                 /* disabled */
252                 setting_disable_genlist_item(ad->data_br->item);
253         } else {
254                 setting_enable_genlist_item(ad->data_br->item);
255         }
256         return;
257 }
258 #endif
259
260 static char *___touchkey_light_duration_sub_desc()
261 {
262         SETTING_TRACE_BEGIN;
263         int value = 0;
264         vconf_get_int(VCONFKEY_SETAPPL_TOUCHKEY_LIGHT_DURATION, &value);
265         switch (value) {
266                 case 0:
267                         return g_strdup("IDS_ST_BODY_ALWAYS_OFF");
268                 case -1:
269                         return g_strdup("IDS_ST_BODY_ALWAYS_ON");
270                 case 90: {
271                                 return g_strdup("IDS_ST_BODY_1_5_SECONDS");
272                         }
273                 case 360: {
274                                 return g_strdup("IDS_MSG_OPT_6_SECONDS");
275                         }
276                 default:
277                         return g_strdup("IDS_ST_BODY_ALWAYS_ON");
278         }
279         return NULL;
280 }
281 static char *___format_touchkey_light_duration_sub_desc(char *temp)
282 {
283         /*SETTING_TRACE_BEGIN; */
284         /*SETTING_TRACE("temp:%s",temp); */
285         if (!safeStrCmp(temp, "IDS_ST_BODY_ALWAYS_OFF")) {
286                 return g_strdup(_("IDS_ST_BODY_ALWAYS_OFF"));
287         } else if (!safeStrCmp(temp, "IDS_ST_BODY_ALWAYS_ON")) {
288                 return g_strdup(_("IDS_ST_BODY_ALWAYS_ON"));
289         } else if (!safeStrCmp(temp, "1.5")) {
290                 char duration[MAX_DISPLAY_NAME_LEN_ON_UI] = {0, };
291                 snprintf(duration, sizeof(duration), "%s %s", temp, (char *)(_("IDS_ST_BODY_SECONDS")));
292                 return g_strdup(duration);
293         } else if (!safeStrCmp(temp, "6")) {
294                 char duration[MAX_DISPLAY_NAME_LEN_ON_UI] = {0, };
295                 snprintf(duration, sizeof(duration), "%s %s", temp, (char *)(_("IDS_ST_BODY_SECONDS")));
296                 return g_strdup(duration);
297         } else {
298                 return g_strdup(_("IDS_ST_BODY_ALWAYS_ON"));
299         }
300         return NULL;
301 }
302
303 char *__setting_applications_screen_capture_destination_get()
304 {
305         SETTING_TRACE_BEGIN;
306         int value = 0;
307         int ret = vconf_get_int(VCONFKEY_SETAPPL_SCREEN_CAPTURE_DESTINATION, &value);
308         if (ret != 0) {
309                 SETTING_TRACE_ERROR("get vconf failed");
310         }
311         char *temp = NULL;
312         switch (value) {
313                 case SETTING_SCREEN_CAPTURE_DESTINATION_ASK:
314                         temp = (char *)(screen_capture_destination[SETTING_SCREEN_CAPTURE_DESTINATION_ASK]);
315                         break;
316                 case SETTING_SCREEN_CAPTURE_DESTINATION_GALLERY:
317                         temp = (char *)(screen_capture_destination[SETTING_SCREEN_CAPTURE_DESTINATION_GALLERY]);
318                         break;
319                 case SETTING_SCREEN_CAPTURE_DESTINATION_KEEPIT:
320                         temp = (char *)(screen_capture_destination[SETTING_SCREEN_CAPTURE_DESTINATION_KEEPIT]);
321                         break;
322                 default:
323                         SETTING_TRACE_ERROR("incorrect screen capture destination");
324                         temp = (char *)(screen_capture_destination[SETTING_SCREEN_CAPTURE_DESTINATION_ASK]);
325                         break;
326         }
327         return temp;
328 }
329 static void
330 setting_applications_main_chk_btn_cb(void *data, Evas_Object *obj,
331                                      void *event_info)
332 {
333         /*SETTING_TRACE_BEGIN; */
334         /* error check */
335         retm_if(data == NULL, "Data parameter is NULL");
336         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
337
338         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
339         if (!safeStrCmp(KeyStr_Dynamic_Status_Bar, list_item->keyStr)) {
340                 vconf_set_bool(VCONFKEY_SETAPPL_DYNAMIC_STATUS_BAR, list_item->chk_status);
341         }
342 }
343
344 static void
345 setting_applications_main_screen_capture_edit_chk_btn_cb(void *data, Evas_Object *obj,
346                                                          void *event_info)
347 {
348         /*SETTING_TRACE_BEGIN; */
349         /* error check */
350         retm_if(data == NULL, "Data parameter is NULL");
351         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
352
353         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
354         vconf_set_bool(VCONFKEY_SETAPPL_SCREEN_CAPTURE_EDIT_AFTER_CAPTURE, list_item->chk_status);
355 }
356 char *__item_touch_duration_sub_item_text_get(void *data, Evas_Object *obj, const char *part)
357 {
358         /*SETTING_TRACE_BEGIN; */
359         setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
360         Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
361         char *ret_str = NULL;
362         if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) {
363                 if (item_data->keyStr) {
364                         ret_str = ___format_touchkey_light_duration_sub_desc(item_data->keyStr);
365                 }
366         }
367         return ret_str;
368 }
369 char *__item_touch_duration_text_get(void *data, Evas_Object *obj, const char *part)
370 {
371         /*SETTING_TRACE_BEGIN; */
372         setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
373         Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
374         char *ret_str = NULL;
375         if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) {
376                 if (item_data->keyStr) {
377                         ret_str = (char *)g_strdup(_(item_data->keyStr));
378                 }
379         } else if (!safeStrCmp(part, "elm.text.2")) {   /* bottom or right */
380                 if (item_data->sub_desc) {
381                         ret_str = ___format_touchkey_light_duration_sub_desc(item_data->sub_desc);
382                 }
383         }
384         return ret_str;
385 }
386 char *__item_backlight_sub_item_text_get(void *data, Evas_Object *obj, const char *part)
387 {
388         /*SETTING_TRACE_BEGIN; */
389         setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
390         Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
391         char *ret_str = NULL;
392         if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) {
393                 if (item_data->keyStr) {
394                         ret_str =  format_backlight_time_str(item_data->keyStr);
395                 }
396         }
397         return ret_str;
398 }
399
400
401 char *__item_backlight_text_get(void *data, Evas_Object *obj, const char *part)
402 {
403         /*SETTING_TRACE_BEGIN; */
404         setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
405         Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
406         char *ret_str = NULL;
407         if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) {
408                 if (item_data->keyStr) {
409                         ret_str = (char *)g_strdup(_(item_data->keyStr));
410                 }
411         } else if (!safeStrCmp(part, "elm.text.2")) {   /* bottom or right */
412                 if (item_data->sub_desc) {
413                         ret_str =  format_backlight_time_str(item_data->sub_desc);
414                 }
415         }
416         /*SETTING_TRACE_END; */
417         return ret_str;
418 }
419 static void setting_applications_main_vconf_change_cb(keynode_t *key, void *data)
420 {
421         ret_if(data == NULL);
422
423         SettingApplicationsUG *ad = data;
424         int status = 0;
425
426         status = vconf_keynode_get_bool(key);
427         char *vconf_name = vconf_keynode_get_name(key);
428         SETTING_TRACE("status:%d", status);
429         if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL)) {
430                 if (ad->data_auto_rotate && ad->data_auto_rotate->eo_check) {
431                         setting_update_gl_item_chk_status(ad->data_auto_rotate, status);
432                         if (status == TRUE) {
433                                 if (ad->data_smart_rotation && ad->data_smart_rotation->item) {
434                                         setting_enable_genlist_item(ad->data_smart_rotation->item);
435                                 }
436                         } else if (status == FALSE) {
437                                 if (ad->data_smart_rotation && ad->data_smart_rotation->item) {
438                                         setting_disable_genlist_item(ad->data_smart_rotation->item);
439                                 }
440                         }
441                 }
442         } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_LCD_AUTO_DISPLAY_ADJUSTMENT)) {
443                 setting_update_gl_item_chk_status(ad->data_auto_adjust_scrn_tone, status);
444         } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DYNAMIC_STATUS_BAR)) {
445                 setting_update_gl_item_chk_status(ad->data_dynamic, status);
446         } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL)) {
447                 if (ad->data_back) {
448                         G_FREE(ad->data_back->sub_desc);
449                         ad->data_back->sub_desc = get_pa_backlight_time_value_str();
450                         elm_object_item_data_set(ad->data_back->item, ad->data_back);
451                         elm_genlist_item_update(ad->data_back->item);
452                 }
453         } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_TOUCHKEY_LIGHT_DURATION)) {
454                 if (ad->data_touchkey_light_duration) {
455                         G_FREE(ad->data_touchkey_light_duration->sub_desc);
456                         ad->data_touchkey_light_duration->sub_desc = ___touchkey_light_duration_sub_desc();
457                         elm_object_item_data_set(ad->data_touchkey_light_duration->item, ad->data_touchkey_light_duration);
458                         elm_genlist_item_update(ad->data_touchkey_light_duration->item);
459                 }
460         }
461
462 }
463
464
465 static int setting_applications_main_create(void *cb)
466 {
467         SETTING_TRACE_BEGIN;
468         /* error check */
469         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
470
471         SettingApplicationsUG *ad = (SettingApplicationsUG *) cb;
472
473         Evas_Object *scroller = NULL;
474
475         int value = 0;
476         int ret = 0;
477
478         /* add basic layout */
479         char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
480         snprintf(setBtnStr, sizeof(setBtnStr), "%s",
481                  (char *)dgettext("sys_string", "IDS_ST_BUTTON_BACK"));
482
483         ad->ly_main =
484             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
485                                                    ad->win_get,
486                                                    KeyStr_Applications, setBtnStr,
487                                                    NULL,
488                                                    (setting_call_back_func)setting_applications_main_click_softkey_back_cb,
489                                                    NULL, ad, &scroller,
490                                                    &(ad->navi_bar));
491
492         ad->genlist = scroller;
493         elm_genlist_mode_set(ad->genlist, ELM_LIST_COMPRESS);
494         /*register vconf key */
495
496         setting_enable_expandable_genlist(scroller, ad, __setting_applications_main_exp_cb, NULL);
497         evas_object_smart_callback_add(ad->genlist, "realized", __gl_realized_cb, NULL);
498
499         Elm_Object_Item *item = NULL;
500
501         item =
502             elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
503                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
504         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
505
506         setting_create_Gendial_field_def(ad->genlist, &itc_1text,
507                                          setting_applications_main_mouse_up_Gendial_list_cb,
508                                          ad, SWALLOW_Type_INVALID, NULL,
509                                          NULL, 0,
510                                          KEYSTR_APPLICATION_MANAGER, NULL, NULL);
511
512         setting_create_Gendial_field_def(ad->genlist, &itc_1text,
513                                          setting_applications_main_mouse_up_Gendial_list_cb,
514                                          ad, SWALLOW_Type_INVALID, NULL,
515                                          NULL, 0,
516                                          KEYSTR_DEFAULT_APPLICATION, NULL, NULL);
517
518         setting_view_applications_main.is_create = 1;
519         return SETTING_RETURN_SUCCESS;
520 }
521
522 static int setting_applications_main_destroy(void *cb)
523 {
524         SETTING_TRACE_BEGIN;
525         /* error check */
526         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
527         retv_if(!(setting_view_applications_main.is_create), SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
528
529         SettingApplicationsUG *ad = (SettingApplicationsUG *) cb;
530
531         /*ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TOUCHKEY_LIGHT_DURATION, setting_applications_main_vconf_change_cb); */
532
533         if (ad->nf_it) {
534                 ad->nf_it = NULL;
535         }
536         if (ad->ly_main != NULL) {
537                 evas_object_del(ad->ly_main);
538                 ad->ly_main = NULL;
539                 /* if(ad->back_dialData) FREE(ad->back_dialData); */
540         }
541         setting_view_applications_main.is_create = 0;
542
543
544         return SETTING_RETURN_SUCCESS;
545 }
546
547 static int setting_applications_main_update(void *cb)
548 {
549         SETTING_TRACE_BEGIN;
550         /* error check */
551         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
552
553         SettingApplicationsUG *ad = (SettingApplicationsUG *) cb;
554
555         if (ad->ly_main != NULL) {
556                 evas_object_show(ad->ly_main);
557                 if (ad->data_br) {
558                         ad->data_br->sub_desc =
559                             (char *)g_strdup(get_brightness_mode_str());
560                         elm_object_item_data_set(ad->data_br->item, ad->data_br);
561                         elm_genlist_item_update(ad->data_br->item);
562
563                 }
564 #ifdef SUPPORT_SCREEN_MODE
565                 if (ad->data_screen_mode) {
566                         char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
567                         SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
568                         int i = 0;
569                         for (; i < SCREENMODE_MAX; i++) {
570                                 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
571                                         ad->data_screen_mode->sub_desc = (char *)g_strdup(_(str_out_arr[i]));
572                                         break;
573                                 }
574                         }
575                         FREE(curmode);
576
577                         elm_object_item_data_set(ad->data_screen_mode->item, ad->data_screen_mode);
578                         elm_genlist_item_update(ad->data_screen_mode->item);
579                 }
580 #endif
581         }
582
583         return SETTING_RETURN_SUCCESS;
584 }
585
586 static int setting_applications_main_cleanup(void *cb)
587 {
588         SETTING_TRACE_BEGIN;
589         return SETTING_RETURN_SUCCESS;
590 }
591
592 /* ***************************************************
593  *
594  *general func
595  *
596  ***************************************************/
597
598 void setting_applications_destroy_appmgr_ug_cb(ui_gadget_h ug,
599                                                void *priv)
600 {
601         ret_if(priv == NULL);
602         SettingApplicationsUG *ad = (SettingApplicationsUG *) priv;
603         if (ug) {
604                 setting_ug_destroy(ug);
605                 ad->ug_appmgr = NULL;
606         }
607         elm_genlist_realized_items_update(ad->genlist);
608 }
609
610 gboolean setting_applications_create_appmgr_ug(void *data)
611 {
612         /* error check */
613         retv_if(data == NULL, FALSE);
614
615         SettingApplicationsUG *ad = (SettingApplicationsUG *) data;     /* ad is point to data */
616
617         if (ad->ug_appmgr) {
618                 SETTING_TRACE("Font UG is already loaded.");
619                 return FALSE;
620         }
621         struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
622
623         if (!cbs) {
624                 return FALSE;
625         }
626         cbs->layout_cb = setting_applications_layout_ug_cb;
627         cbs->result_cb = NULL;
628         cbs->destroy_cb = setting_applications_destroy_appmgr_ug_cb;
629         cbs->priv = (void *)ad;
630
631         elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
632         app_control_h svc;
633         if (app_control_create(&svc)) {
634                 FREE(cbs);
635                 return FALSE;
636         }
637         app_control_add_extra_data(svc, "viewtype", "manage-applications");
638         ad->ug_appmgr = setting_ug_create(ad->ug, "setting-manage-applications-efl", UG_MODE_FULLVIEW, NULL, cbs);
639         if (NULL == ad->ug_appmgr) {    /* error handling */
640                 SETTING_TRACE_ERROR("NULL == ad->ug_appmgr");
641                 evas_object_show(ad->ly_main);
642         }
643
644         app_control_destroy(svc);
645         FREE(cbs);
646
647         return TRUE;
648 }
649
650 static void
651 setting_applications_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
652                                                    void *event_info)
653 {
654         /* error check */
655         setting_retm_if(data == NULL, "Data parameter is NULL");
656
657         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
658         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
659         elm_genlist_item_selected_set(item, 0);
660         Setting_GenGroupItem_Data *list_item =
661             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
662
663         SettingApplicationsUG *ad = (SettingApplicationsUG *) data;
664
665         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
666
667         if (!safeStrCmp(KEYSTR_APPLICATION_MANAGER, list_item->keyStr)) {
668                 setting_applications_create_appmgr_ug(ad);
669         } else if (!safeStrCmp(KEYSTR_DEFAULT_APPLICATION, list_item->keyStr)) {
670                 setting_view_change(&setting_view_applications_main,
671                                     &setting_view_applications_defaultapp, ad);
672         }
673 }
674
675 static Eina_Bool
676 setting_applications_main_click_softkey_back_cb(void *data, Evas_Object *obj,
677                                                 void *event_info)
678 {
679         SETTING_TRACE_BEGIN;
680         /* error check */
681         setting_retvm_if(data == NULL, EINA_FALSE,
682                          "[Setting > Applications] Data parameter is NULL");
683
684         SettingApplicationsUG *ad = (SettingApplicationsUG *) data;
685
686         /* Send destroy request */
687         ug_destroy_me(ad->ug);
688         SETTING_TRACE_END;
689         return EINA_FALSE;
690
691 }
692
693 static void setting_applications_main_tts_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
694 {
695         SETTING_TRACE_BEGIN;
696         /* error check */
697         retm_if(data == NULL, "Data parameter is NULL");
698         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
699         SettingApplicationsUG *ad = (SettingApplicationsUG *)list_item->userdata;
700
701         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
702         SETTING_TRACE("TTS check - clicked");
703
704         if (list_item->chk_status == 1) {
705                 /*SETTING_TRACE("TTS check - 1111111111111"); */
706                 vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, 1);
707         } else {
708                 vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, 0);
709         }
710 }
711
712
713
714 static void setting_applications_main_auto_rotate_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
715 {
716         SETTING_TRACE_BEGIN;
717         /* error check */
718         retm_if(data == NULL, "Data parameter is NULL");
719         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
720         SettingApplicationsUG *ad = (SettingApplicationsUG *)list_item->userdata;
721
722         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
723
724         if (list_item->chk_status == 1) {
725                 int angle = elm_win_rotation_get(ad->win_main_layout);
726                 elm_win_rotation_with_resize_set(ad->win_main_layout, angle);
727         } else {
728                 elm_win_rotation_with_resize_set(ad->win_main_layout, 0);
729         }
730
731         vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, list_item->chk_status);
732 }