1 #include "e_mod_main.h"
3 extern const char _e_bluez_Name[];
5 struct _E_Config_Dialog_Data
7 E_Bluez_Instance *inst;
19 /* Local Function Prototypes */
20 static void *_create_data(E_Config_Dialog *dialog);
21 static void _free_data(E_Config_Dialog *dialog,
22 E_Config_Dialog_Data *cfdata);
23 static Evas_Object *_basic_create(E_Config_Dialog *dialog,
25 E_Config_Dialog_Data *cfdata);
26 static int _basic_apply(E_Config_Dialog *dialog,
27 E_Config_Dialog_Data *cfdata);
30 e_bluez_config_dialog_new(E_Container *con,
31 E_Bluez_Instance *inst)
33 E_Config_Dialog *dialog;
34 E_Config_Dialog_View *view;
36 if (inst->conf_dialog)
37 return inst->conf_dialog;
39 view = E_NEW(E_Config_Dialog_View, 1);
43 view->create_cfdata = _create_data;
44 view->free_cfdata = _free_data;
45 view->basic.create_widgets = _basic_create;
46 view->basic.apply_cfdata = _basic_apply;
48 dialog = e_config_dialog_new(con, _("Bluetooth Settings"),
49 _e_bluez_Name, "e_bluez_config_dialog_new",
50 e_bluez_theme_path(), 0, view, inst);
56 _create_data(E_Config_Dialog *dialog)
58 E_Config_Dialog_Data *cfdata;
59 E_Bluez_Instance *inst;
61 cfdata = E_NEW(E_Config_Dialog_Data, 1);
65 cfdata->inst = dialog->data;
67 if (!e_bluez_adapter_discoverable_get(inst->adapter, &cfdata->mode))
70 if (!e_bluez_adapter_discoverable_timeout_get
71 (inst->adapter, &cfdata->timeout))
73 cfdata->timeout /= 60;
75 if (!e_bluez_adapter_name_get(inst->adapter, &cfdata->name))
78 cfdata->name = strdup(cfdata->name);
84 _free_data(E_Config_Dialog *dialog,
85 E_Config_Dialog_Data *cfdata)
87 E_Bluez_Instance *inst = dialog->data;
89 inst->conf_dialog = NULL;
94 _cb_disable_timeout(void *data,
95 Evas_Object *obj __UNUSED__)
97 E_Config_Dialog_Data *cfdata = data;
98 Eina_Bool disable = !cfdata->mode;
100 e_widget_disabled_set(cfdata->gui.label, disable);
101 e_widget_disabled_set(cfdata->gui.slider, disable);
102 e_widget_disabled_set(cfdata->gui.help, disable);
106 _basic_create(E_Config_Dialog *dialog __UNUSED__,
108 E_Config_Dialog_Data *cfdata)
115 o = e_widget_list_add(evas, 0, 0);
117 if (!e_bluez_adapter_address_get(cfdata->inst->adapter, &address))
120 ob = e_widget_label_add(evas, _("Name"));
121 e_widget_list_object_append(o, ob, 1, 1, 0.5);
123 ob = e_widget_entry_add(evas, (char **)&cfdata->name, NULL, NULL, NULL);
124 e_widget_list_object_append(o, ob, 1, 1, 0.5);
126 check = e_widget_check_add
127 (evas, _("Discoverable mode"), (int *)&cfdata->mode);
128 e_widget_list_object_append(o, check, 1, 1, 0.5);
130 ob = e_widget_label_add(evas, _("Discovarable Timeout"));
131 cfdata->gui.label = ob;
132 e_widget_list_object_append(o, ob, 1, 1, 0.5);
134 ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 0, 30, 1, 0,
135 NULL, (int *)&cfdata->timeout, 100);
136 e_widget_slider_special_value_add(ob, 0.0, 0.0, _("Forever"));
137 cfdata->gui.slider = ob;
138 e_widget_list_object_append(o, ob, 1, 1, 0.5);
140 e_widget_on_change_hook_set(check, _cb_disable_timeout, cfdata);
141 _cb_disable_timeout(cfdata, NULL);
143 snprintf(buf, sizeof(buf), _("MAC Address: %s"), address);
144 ob = e_widget_label_add(evas, buf);
145 e_widget_list_object_append(o, ob, 1, 1, 0.5);
151 _method_success_check(void *data,
152 DBusMessage *msg __UNUSED__,
155 const char *name = data;
157 if ((!error) || (!dbus_error_is_set(error)))
160 ERR("method %s() finished with error: %s %s\n",
161 name, error->name, error->message);
162 dbus_error_free(error);
166 _basic_apply(E_Config_Dialog *dialog __UNUSED__,
167 E_Config_Dialog_Data *cfdata)
169 E_Bluez_Instance *inst = cfdata->inst;
171 if (!e_bluez_adapter_discoverable_set
172 (inst->adapter, cfdata->mode,
173 _method_success_check, "e_bluez_adapter_discoverable_get"))
174 ERR("Can't set Discoverable on adapter");
176 if (!e_bluez_adapter_discoverable_timeout_set
177 (inst->adapter, cfdata->timeout * 60,
178 _method_success_check, "e_bluez_adapter_discoverable_timeout_get"))
179 ERR("Can't set DiscoverableTimeout on adapter");
181 if (!e_bluez_adapter_name_set
182 (inst->adapter, cfdata->name,
183 _method_success_check, "e_bluez_adapter_name_get"))
184 ERR("Can't set Name on adapter");