Tizen 2.1 release
[platform/core/uifw/e17.git] / src / modules / conf / e_mod_config.c
1 #include "e.h"
2 #include "e_mod_main.h"
3
4 struct _E_Config_Dialog_Data
5 {
6    int menu_augmentation;
7 };
8
9 static void        *_create_data(E_Config_Dialog *cfd);
10 static void         _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
11 static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
12 static int          _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
13 static int          _basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
14
15 E_Config_Dialog *
16 e_int_config_conf_module(E_Container *con, const char *params __UNUSED__)
17 {
18    E_Config_Dialog *cfd = NULL;
19    E_Config_Dialog_View *v = NULL;
20    char buf[PATH_MAX];
21
22    /* is this config dialog already visible ? */
23    if (e_config_dialog_find("Conf", "advanced/conf")) return NULL;
24
25    v = E_NEW(E_Config_Dialog_View, 1);
26    if (!v) return NULL;
27
28    v->create_cfdata = _create_data;
29    v->free_cfdata = _free_data;
30    v->basic.create_widgets = _basic_create;
31    v->basic.apply_cfdata = _basic_apply;
32    v->basic.check_changed = _basic_check_changed;
33
34    snprintf(buf, sizeof(buf), "%s/e-module-conf.edj", conf->module->dir);
35    cfd = e_config_dialog_new(con, _("Configuration Panel"), "Conf",
36                              "advanced/conf", buf, 0, v, NULL);
37
38    conf->cfd = cfd;
39    return cfd;
40 }
41
42 static void *
43 _create_data(E_Config_Dialog *cfd __UNUSED__)
44 {
45    E_Config_Dialog_Data *cfdata = E_NEW(E_Config_Dialog_Data, 1);
46    if (!cfdata) return NULL;
47    cfdata->menu_augmentation = conf->menu_augmentation;
48    return cfdata;
49 }
50
51 static void
52 _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
53 {
54    conf->cfd = NULL;
55    E_FREE(cfdata);
56 }
57
58 static Evas_Object *
59 _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata)
60 {
61    Evas_Object *o, *ow;
62
63    o = e_widget_list_add(evas, 0, 0);
64
65    ow = e_widget_check_add(evas, _("Show configurations in menu"),
66                            &(cfdata->menu_augmentation));
67    e_widget_list_object_append(o, ow, 1, 0, 0.5);
68
69    return o;
70 }
71
72 static int
73 _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
74 {
75    conf->menu_augmentation = cfdata->menu_augmentation;
76    if (conf->aug)
77      {
78         e_int_menus_menu_augmentation_del("config/2", conf->aug);
79         conf->aug = NULL;
80      }
81
82    if (conf->menu_augmentation)
83      {
84         conf->aug =
85           e_int_menus_menu_augmentation_add
86             ("config/2", e_mod_config_menu_add, NULL, NULL, NULL);
87      }
88
89    e_config_save_queue();
90    return 1;
91 }
92
93 static int
94 _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
95 {
96    return conf->menu_augmentation != cfdata->menu_augmentation;
97 }
98