Tizen 2.1 release
[platform/core/uifw/e17.git] / src / modules / conf_applications / e_int_config_deskenv.c
1 #include "e.h"
2
3 /* PROTOTYPES - same all the time */
4
5 static void        *_create_data(E_Config_Dialog *cfd);
6 static void         _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
7 static int          _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
8 static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
9
10 /* Actual config data we will be playing with whil the dialog is active */
11 struct _E_Config_Dialog_Data
12 {
13    int load_xrdb;
14    int load_xmodmap;
15    int load_gnome;
16    int load_kde;
17    int exe_always_single_instance;
18 };
19
20 /* a nice easy setup function that does the dirty work */
21 E_Config_Dialog *
22 e_int_config_deskenv(E_Container *con, const char *params __UNUSED__)
23 {
24    E_Config_Dialog *cfd;
25    E_Config_Dialog_View *v;
26
27    if (e_config_dialog_find("E", "windows/desktop_environments"))
28      return NULL;
29    v = E_NEW(E_Config_Dialog_View, 1);
30
31    /* methods */
32    v->create_cfdata = _create_data;
33    v->free_cfdata = _free_data;
34    v->basic.apply_cfdata = _basic_apply;
35    v->basic.create_widgets = _basic_create;
36
37    /* create config diaolg for NULL object/data */
38    cfd = e_config_dialog_new(con, _("Desktop Environments"), "E",
39                              "windows/desktop_environments",
40                              "preferences-desktop-environments", 0, v, NULL);
41    return cfd;
42 }
43
44 /**--CREATE--**/
45 static void
46 _fill_data(E_Config_Dialog_Data *cfdata)
47 {
48    cfdata->load_xrdb = e_config->deskenv.load_xrdb;
49    cfdata->load_xmodmap = e_config->deskenv.load_xmodmap;
50    cfdata->load_gnome = e_config->deskenv.load_gnome;
51    cfdata->load_kde = e_config->deskenv.load_kde;
52    cfdata->exe_always_single_instance = e_config->exe_always_single_instance;
53 }
54
55 static void *
56 _create_data(E_Config_Dialog *cfd __UNUSED__)
57 {
58    E_Config_Dialog_Data *cfdata;
59
60    cfdata = E_NEW(E_Config_Dialog_Data, 1);
61    _fill_data(cfdata);
62    return cfdata;
63 }
64
65 static void
66 _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
67 {
68    E_FREE(cfdata);
69 }
70
71 /**--APPLY--**/
72 static int
73 _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
74 {
75    e_config->deskenv.load_xrdb = cfdata->load_xrdb;
76    e_config->deskenv.load_xmodmap = cfdata->load_xmodmap;
77    e_config->deskenv.load_gnome = cfdata->load_gnome;
78    e_config->deskenv.load_kde = cfdata->load_kde;
79    e_config->exe_always_single_instance = cfdata->exe_always_single_instance;
80    e_config_save_queue();
81    return 1; /* Apply was OK */
82 }
83
84 /**--GUI--**/
85 static Evas_Object *
86 _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata)
87 {
88    /* generate the core widget layout for a basic dialog */
89    Evas_Object *o, *fr, *ob;
90
91    o = e_widget_list_add(evas, 0, 0);
92    
93    fr = e_widget_framelist_add(evas, _("Execution"), 0);
94    ob = e_widget_check_add(evas, _("Only launch single instances"),
95                            &(cfdata->exe_always_single_instance));
96    e_widget_framelist_object_append(fr, ob);
97    e_widget_list_object_append(o, fr, 1, 0, 0.0);
98    
99    fr = e_widget_framelist_add(evas, _("X11 Basics"), 0);
100    ob = e_widget_check_add(evas, _("Load X Resources"),
101                            &(cfdata->load_xrdb));
102    e_widget_framelist_object_append(fr, ob);
103    ob = e_widget_check_add(evas, _("Load X Modifier Map"),
104                            &(cfdata->load_xmodmap));
105    e_widget_framelist_object_append(fr, ob);
106    e_widget_list_object_append(o, fr, 1, 0, 0.0);
107    
108    fr = e_widget_framelist_add(evas, _("Major Desktops"), 0);
109    ob = e_widget_check_add(evas, _("Start GNOME services on login"),
110                            &(cfdata->load_gnome));
111    e_widget_framelist_object_append(fr, ob);
112    ob = e_widget_check_add(evas, _("Start KDE services on login"),
113                            &(cfdata->load_kde));
114    e_widget_framelist_object_append(fr, ob);
115    e_widget_list_object_append(o, fr, 1, 0, 0.0);
116    
117    return o;
118 }
119