Git init
[platform/core/uifw/e17.git] / src / modules / conf_interaction / e_int_config_mouse.c
1 #include "e.h"
2
3 static void *_create_data(E_Config_Dialog *cfd);
4 static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
5 static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
6 static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
7 static int _basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
8
9 struct _E_Config_Dialog_Data
10 {
11    E_Config_Dialog *cfd;
12
13    int mouse_hand;
14    double numerator;
15    double denominator;
16    double threshold;
17 };
18
19 E_Config_Dialog *
20 e_int_config_mouse(E_Container *con, const char *params __UNUSED__)
21 {
22    E_Config_Dialog *cfd;
23    E_Config_Dialog_View *v;
24
25    if (e_config_dialog_find("E", "keyboard_and_mouse/mouse_settings"))
26      return NULL;
27
28    v = E_NEW(E_Config_Dialog_View, 1);
29    if (!v) return NULL;
30    v->create_cfdata = _create_data;
31    v->free_cfdata = _free_data;
32    v->basic.apply_cfdata = _basic_apply_data;
33    v->basic.create_widgets = _basic_create_widgets;
34    v->basic.check_changed = _basic_check_changed;
35
36    cfd = e_config_dialog_new(con, _("Mouse Settings"), "E",
37                              "keyboard_and_mouse/mouse_settings",
38                              "preferences-desktop-mouse", 0, v, NULL);
39    return cfd;
40 }
41
42 static void
43 _fill_data(E_Config_Dialog_Data *cfdata)
44 {
45    cfdata->mouse_hand = e_config->mouse_hand;
46    cfdata->numerator = e_config->mouse_accel_numerator;
47    cfdata->denominator = e_config->mouse_accel_denominator;
48    cfdata->threshold = e_config->mouse_accel_threshold;
49 }
50
51 static void *
52 _create_data(E_Config_Dialog *cfd)
53 {
54    E_Config_Dialog_Data *cfdata;
55
56    cfdata = E_NEW(E_Config_Dialog_Data, 1);
57    cfdata->cfd = cfd;
58
59    _fill_data(cfdata);
60    return cfdata;
61 }
62
63 static int
64 _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
65 {
66    return !((cfdata->mouse_hand == e_config->mouse_hand) &&
67             (cfdata->numerator == e_config->mouse_accel_numerator) &&
68             (cfdata->denominator == e_config->mouse_accel_denominator) &&
69             (cfdata->threshold == e_config->mouse_accel_threshold));
70 }
71
72 static void
73 _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
74 {
75    E_FREE(cfdata);
76 }
77
78 /* advanced window */
79 static int
80 _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
81 {
82    e_config->mouse_hand = cfdata->mouse_hand;
83    e_config->mouse_accel_numerator = cfdata->numerator;
84    e_config->mouse_accel_denominator = cfdata->denominator;
85    e_config->mouse_accel_threshold = cfdata->threshold;
86
87    /* Apply the above settings */
88    e_mouse_update();
89
90    e_config_save_queue();
91    return 1;
92 }
93
94 static Evas_Object *
95 _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata)
96 {
97    Evas_Object *o, *of, *ob;
98    E_Radio_Group *rg;
99
100    o = e_widget_list_add(evas, 0, 0);
101
102    of = e_widget_frametable_add(evas, _("Mouse Hand"), 0);
103    rg = e_widget_radio_group_new(&(cfdata->mouse_hand));
104    ob = e_widget_radio_icon_add(evas, NULL, "preferences-desktop-mouse-right", 48, 48, E_MOUSE_HAND_LEFT, rg);
105    e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1);
106    ob = e_widget_radio_icon_add(evas, NULL, "preferences-desktop-mouse-left", 48, 48, E_MOUSE_HAND_RIGHT, rg);
107    e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1);
108    e_widget_list_object_append(o, of, 1, 0, 0.5);
109
110    of = e_widget_framelist_add(evas, _("Mouse Acceleration"), 0);
111
112    ob = e_widget_label_add(evas, _("Acceleration"));
113    e_widget_framelist_object_append(of, ob);
114    ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 1.0, 10.0, 1.0, 0,
115                             &(cfdata->numerator), NULL, 100);
116    e_widget_framelist_object_append(of, ob);
117
118    ob = e_widget_label_add(evas, _("Threshold"));
119    e_widget_framelist_object_append(of, ob);
120    ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 1.0, 10.0, 1.0, 0,
121                             &(cfdata->threshold), NULL, 100);
122    e_widget_framelist_object_append(of, ob);
123
124    e_widget_list_object_append(o, of, 1, 0, 0.5);
125
126    return o;
127 }