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