update for beta release
[framework/uifw/e17.git] / src / modules / tasks / e_mod_config.c
1 #include <e.h>
2 #include "e_mod_main.h"
3
4 struct _E_Config_Dialog_Data
5 {
6    int show_all;
7    int minw, minh;
8 };
9
10 /* Protos */
11 static void *_create_data(E_Config_Dialog *cfd);
12 static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
13 static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
14 static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
15
16 void
17 _config_tasks_module(Config_Item *ci)
18 {
19    E_Config_Dialog *cfd;
20    E_Config_Dialog_View *v;
21    E_Container *con;
22
23    v = E_NEW(E_Config_Dialog_View, 1);
24
25    v->create_cfdata = _create_data;
26    v->free_cfdata = _free_data;
27    v->basic.apply_cfdata = _basic_apply_data;
28    v->basic.create_widgets = _basic_create_widgets;
29
30    con = e_container_current_get(e_manager_current_get());
31    cfd = e_config_dialog_new(con, _("Tasks Configuration"), "Tasks", 
32                              "_e_modules_tasks_config_dialog", NULL, 0, v, ci);
33    if (tasks_config->config_dialog)
34      e_object_del(E_OBJECT(tasks_config->config_dialog));
35    tasks_config->config_dialog = cfd;
36 }
37
38 static void
39 _fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata)
40 {
41    cfdata->show_all = ci->show_all;
42    cfdata->minw = ci->minw;
43    cfdata->minh = ci->minh;
44 }
45
46 static void *
47 _create_data(E_Config_Dialog *cfd)
48 {
49    E_Config_Dialog_Data *cfdata;
50    Config_Item *ci;
51
52    ci = cfd->data;
53    cfdata = E_NEW(E_Config_Dialog_Data, 1);
54    _fill_data(ci, cfdata);
55    return cfdata;
56 }
57
58 static void
59 _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
60 {
61    if (!tasks_config) return;
62    tasks_config->config_dialog = NULL;
63    free(cfdata);
64 }
65
66 static Evas_Object *
67 _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata)
68 {
69    Evas_Object *o, *of, *ob, *ow;
70
71    o = e_widget_list_add(evas, 0, 0);
72
73    of = e_widget_framelist_add(evas, _("Display"), 0);
74    ob = e_widget_check_add(evas, _("Show windows from all desktops"),
75                            &(cfdata->show_all));
76    e_widget_framelist_object_append(of, ob);
77    ow = e_widget_label_add(evas, _("Minimum Width"));
78    e_widget_framelist_object_append(of, ow);
79    ow = e_widget_slider_add(evas, 1, 0, _("%1.0f px"), 20, 420, 1, 0,
80                             NULL, &(cfdata->minw), 100);
81    e_widget_framelist_object_append(of, ow);
82    ow = e_widget_label_add(evas, _("Minimum Height"));
83    e_widget_framelist_object_append(of, ow);
84    ow = e_widget_slider_add(evas, 1, 0, _("%1.0f px"), 20, 420, 1, 0,
85                             NULL, &(cfdata->minh), 100);
86    e_widget_framelist_object_append(of, ow);
87    
88    e_widget_list_object_append(o, of, 1, 1, 0.5);
89    return o;
90 }
91
92 static int
93 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
94 {
95    Config_Item *ci;
96
97    ci = cfd->data;
98    ci->show_all = cfdata->show_all;
99    ci->minw = cfdata->minw;
100    ci->minh = cfdata->minh;
101    e_config_save_queue();
102    _tasks_config_updated(ci);
103    return 1;
104 }