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