1 #include "e_mod_main.h"
2
3 struct _E_Config_Dialog_Data
4 {
5 int disable_media_fetch;
6 int disable_video;
7 double allowed_media_size;
8 double allowed_media_fetch_size;
9 double allowed_media_age;
10
11 double mouse_out_delay;
12 double popup_size;
13 double popup_opacity;
14 };
15
16 static void *
_create_data(E_Config_Dialog * cfd EINA_UNUSED)17 _create_data(E_Config_Dialog *cfd EINA_UNUSED)
18 {
19 E_Config_Dialog_Data *cfdata;
20
21 cfdata = E_NEW(E_Config_Dialog_Data, 1);
22 #define SET(X) \
23 cfdata->X = tw_config->X
24 SET(disable_media_fetch);
25 SET(disable_video);
26 SET(allowed_media_size);
27 SET(allowed_media_fetch_size);
28 SET(allowed_media_age);
29
30 SET(mouse_out_delay);
31 SET(popup_size);
32 SET(popup_opacity);
33 #undef SET
34 return cfdata;
35 }
36
37 static void
_free_data(E_Config_Dialog * cfd EINA_UNUSED,E_Config_Dialog_Data * cfdata)38 _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
39 {
40 tw_mod->cfd = NULL;
41 free(cfdata);
42 }
43
44 static int
_basic_check_changed(E_Config_Dialog * cfd EINA_UNUSED,E_Config_Dialog_Data * cfdata)45 _basic_check_changed(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
46 {
47 #define CHECK(X) \
48 if (cfdata->X != tw_config->X) return 1
49
50 CHECK(disable_media_fetch);
51 CHECK(disable_video);
52 if (lround(cfdata->allowed_media_age) != tw_config->allowed_media_age) return 1;
53 if (lround(cfdata->allowed_media_size) != tw_config->allowed_media_size) return 1;
54 if (lround(cfdata->allowed_media_fetch_size) != tw_config->allowed_media_fetch_size) return 1;
55
56 if (fabs(cfdata->mouse_out_delay - tw_config->mouse_out_delay) > 0.45) return 1;
57
58 if (fabs(cfdata->popup_size - tw_config->popup_size) > 0.9) return 1;
59 if (fabs(cfdata->popup_opacity - tw_config->popup_opacity) > 0.9) return 1;
60
61 #undef CHECK
62 return 0;
63 }
64
65 static Evas_Object *
_basic_create_widgets(E_Config_Dialog * cfd EINA_UNUSED,Evas * evas,E_Config_Dialog_Data * cfdata)66 _basic_create_widgets(E_Config_Dialog *cfd EINA_UNUSED,
67 Evas *evas,
68 E_Config_Dialog_Data *cfdata)
69 {
70 Evas_Object *ob, *ol, *otb, *tab, *oc;
71
72 tab = e_widget_table_add(e_win_evas_win_get(evas), 0);
73
74 otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
75
76 ///////////////////////////////////////////
77
78 ol = e_widget_list_add(evas, 0, 0);
79
80 ob = e_widget_check_add(evas, _("Disable remote media fetching"), &cfdata->disable_media_fetch);
81 e_widget_list_object_append(ol, ob, 1, 0, 0.5);
82
83 oc = e_widget_label_add(evas, _("Maximum media size to fetch"));
84 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
85 oc = e_widget_slider_add(evas, 1, 0, _("%2.0f MiB"), 1, 50, 1, 0, &cfdata->allowed_media_fetch_size, NULL, 150);
86 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
87 e_widget_check_widget_disable_on_checked_add(ob, oc);
88
89 oc = e_widget_label_add(evas, _("Maximum media cache size in RAM"));
90 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
91 oc = e_widget_slider_add(evas, 1, 0, _("%4.0f MiB"), 0, 1024, 16, 0, &cfdata->allowed_media_size, NULL, 150);
92 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
93 e_widget_check_widget_disable_on_checked_add(ob, oc);
94
95 oc = e_widget_label_add(evas, _("Maximum media cache age on disk"));
96 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
97 oc = e_widget_slider_add(evas, 1, 0, _("%3.0f Days"), -1, 180, 1, 0, &cfdata->allowed_media_age, NULL, 150);
98 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
99 e_widget_check_widget_disable_on_checked_add(ob, oc);
100
101 e_widget_toolbook_page_append(otb, NULL, _("Cache"), ol, 1, 1, 1, 1, 0.5, 0.5);
102
103 ///////////////////////////////////////////
104
105 ol = e_widget_list_add(evas, 0, 0);
106
107 ob = e_widget_check_add(evas, _("Disable video previews"), &cfdata->disable_video);
108 e_widget_list_object_append(ol, ob, 1, 0, 0.5);
109
110 oc = e_widget_label_add(evas, _("Mouse-out hide delay"));
111 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
112 oc = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0, 5, 0.5, 0, &cfdata->mouse_out_delay, NULL, 150);
113 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
114 e_widget_check_widget_disable_on_checked_add(ob, oc);
115
116 oc = e_widget_label_add(evas, _("Maximum size (Percentage of screens size)"));
117 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
118 oc = e_widget_slider_add(evas, 1, 0, _("%3.0f"), 10, 100, 1, 0, &cfdata->popup_size, NULL, 150);
119 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
120 e_widget_check_widget_disable_on_checked_add(ob, oc);
121
122 oc = e_widget_label_add(evas, _("Opacity"));
123 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
124 oc = e_widget_slider_add(evas, 1, 0, _("%3.0f"), 10, 100, 1, 0, &cfdata->popup_opacity, NULL, 150);
125 e_widget_list_object_append(ol, oc, 1, 1, 0.5);
126 e_widget_check_widget_disable_on_checked_add(ob, oc);
127
128 e_widget_toolbook_page_append(otb, NULL, _("Popups"), ol, 1, 1, 1, 1, 0.5, 0.5);
129
130 e_widget_toolbook_page_show(otb, 0);
131
132 e_widget_table_object_append(tab, otb, 0, 0, 1, 1, 1, 1, 1, 1);
133 return tab;
134 }
135
136
137 static int
_basic_apply_data(E_Config_Dialog * cfd EINA_UNUSED,E_Config_Dialog_Data * cfdata)138 _basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED,
139 E_Config_Dialog_Data *cfdata)
140 {
141
142 #define SET(X) tw_config->X = cfdata->X
143 SET(disable_media_fetch);
144 SET(disable_video);
145 SET(allowed_media_size);
146 SET(allowed_media_fetch_size);
147 SET(allowed_media_age);
148
149 SET(mouse_out_delay);
150 SET(popup_size);
151 if (fabs(cfdata->popup_opacity - tw_config->popup_opacity) > 0.9)
152 {
153 SET(popup_opacity);
154 tw_popup_opacity_set();
155 }
156
157 e_config_save_queue();
158 return 1;
159 }
160
161 EINTERN E_Config_Dialog *
e_int_config_teamwork_module(Evas_Object * parent EINA_UNUSED,const char * params EINA_UNUSED)162 e_int_config_teamwork_module(Evas_Object *parent EINA_UNUSED, const char *params EINA_UNUSED)
163 {
164 E_Config_Dialog *cfd;
165 E_Config_Dialog_View *v;
166 char buf[4096];
167
168 if (tw_mod->cfd) return NULL;
169 snprintf(buf, sizeof(buf), "%s/e-module-teamwork.edj", e_module_dir_get(tw_mod->module));
170 v = E_NEW(E_Config_Dialog_View, 1);
171
172 v->create_cfdata = _create_data;
173 v->free_cfdata = _free_data;
174 v->basic.apply_cfdata = _basic_apply_data;
175 v->basic.create_widgets = _basic_create_widgets;
176 v->basic.check_changed = _basic_check_changed;
177
178 cfd = e_config_dialog_new(NULL, _("Teamwork Settings"),
179 "E", "applications/teamwork", buf, 32, v, tw_mod);
180 tw_mod->cfd = cfd;
181 return cfd;
182 }
183