formatting. I'm going to catch whoever this is and beat them.

SVN revision: 55729
This commit is contained in:
Mike Blumenkrantz 2010-12-23 00:49:06 +00:00
parent 2e4b8b9901
commit 5020fd62b0
1 changed files with 297 additions and 262 deletions

View File

@ -1,40 +1,51 @@
#include "e.h" #include "e.h"
/** /**
* TODO: * TODO:
* Maybe use a toolbook widget instead of 2 lists ?? * Maybe use a toolbook widget instead of 2 lists ??
* Maybe add a way to restore default acpi bindings ?? * Maybe add a way to restore default acpi bindings ??
*/ */
/* local config structure */ /* local config structure */
struct _E_Config_Dialog_Data struct _E_Config_Dialog_Data
{ {
Eina_List *bindings; Eina_List *bindings;
Evas_Object *o_bindings, *o_actions, *o_params; Evas_Object *o_bindings, *o_actions, *o_params;
Evas_Object *o_add, *o_del; Evas_Object *o_add, *o_del;
const char *bindex; const char *bindex;
E_Config_Dialog *cfd; E_Config_Dialog *cfd;
}; };
/* local function prototypes */ /* local function prototypes */
static void *_create_data(E_Config_Dialog *cfd); static void *_create_data(E_Config_Dialog *cfd);
static void _fill_data(E_Config_Dialog_Data *cfdata); static void _fill_data(E_Config_Dialog_Data *cfdata);
static void _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata); static void _free_data(E_Config_Dialog *cfd __UNUSED__,
static int _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata); E_Config_Dialog_Data *cfdata);
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); static int _basic_apply(E_Config_Dialog *cfd __UNUSED__,
static void _fill_bindings(E_Config_Dialog_Data *cfdata); E_Config_Dialog_Data *cfdata);
static void _fill_actions(E_Config_Dialog_Data *cfdata); static Evas_Object *_basic_create(E_Config_Dialog *cfd,
Evas *evas,
E_Config_Dialog_Data *cfdata);
static void _fill_bindings(E_Config_Dialog_Data *cfdata);
static void _fill_actions(E_Config_Dialog_Data *cfdata);
static E_Config_Binding_Acpi *_selected_binding_get(E_Config_Dialog_Data *cfdata); static E_Config_Binding_Acpi *_selected_binding_get(E_Config_Dialog_Data *cfdata);
static E_Action_Description *_selected_action_get(E_Config_Dialog_Data *cfdata); static E_Action_Description *_selected_action_get(E_Config_Dialog_Data *cfdata);
static const char *_binding_label_get(E_Config_Binding_Acpi *bind); static const char *_binding_label_get(E_Config_Binding_Acpi *bind);
static void _cb_bindings_changed(void *data); static void _cb_bindings_changed(void *data);
static void _cb_actions_changed(void *data); static void _cb_actions_changed(void *data);
static void _cb_entry_changed(void *data, void *data2 __UNUSED__); static void _cb_entry_changed(void *data,
static void _cb_add_binding(void *data, void *data2 __UNUSED__); void *data2 __UNUSED__);
static void _cb_del_binding(void *data, void *data2 __UNUSED__); static void _cb_add_binding(void *data,
static Eina_Bool _cb_grab_key_down(void *data, int type __UNUSED__, void *event); void *data2 __UNUSED__);
static Eina_Bool _cb_acpi_event(void *data, int type, void *event); static void _cb_del_binding(void *data,
void *data2 __UNUSED__);
static Eina_Bool _cb_grab_key_down(void *data,
int type __UNUSED__,
void *event);
static Eina_Bool _cb_acpi_event(void *data,
int type,
void *event);
/* local variables */ /* local variables */
static E_Dialog *grab_dlg = NULL; static E_Dialog *grab_dlg = NULL;
@ -42,7 +53,8 @@ static Ecore_X_Window grab_win = 0;
static Eina_List *grab_hdls = NULL; static Eina_List *grab_hdls = NULL;
E_Config_Dialog * E_Config_Dialog *
e_int_config_acpibindings(E_Container *con, const char *params __UNUSED__) e_int_config_acpibindings(E_Container *con,
const char *params __UNUSED__)
{ {
E_Config_Dialog *cfd; E_Config_Dialog *cfd;
E_Config_Dialog_View *v; E_Config_Dialog_View *v;
@ -56,17 +68,17 @@ e_int_config_acpibindings(E_Container *con, const char *params __UNUSED__)
v->basic.apply_cfdata = _basic_apply; v->basic.apply_cfdata = _basic_apply;
v->basic.create_widgets = _basic_create; v->basic.create_widgets = _basic_create;
cfd = e_config_dialog_new(con, _("ACPI Bindings"), "E", cfd = e_config_dialog_new(con, _("ACPI Bindings"), "E",
"advanced/acpi_bindings", "advanced/acpi_bindings",
"preferences-system-power-management", "preferences-system-power-management",
0, v, NULL); 0, v, NULL);
return cfd; return cfd;
} }
/* local functions */ /* local functions */
static void * static void *
_create_data(E_Config_Dialog *cfd) _create_data(E_Config_Dialog *cfd)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
@ -76,88 +88,90 @@ _create_data(E_Config_Dialog *cfd)
return cfdata; return cfdata;
} }
static void static void
_fill_data(E_Config_Dialog_Data *cfdata) _fill_data(E_Config_Dialog_Data *cfdata)
{ {
Eina_List *l; Eina_List *l;
E_Config_Binding_Acpi *bind; E_Config_Binding_Acpi *bind;
EINA_LIST_FOREACH(e_config->acpi_bindings, l, bind) EINA_LIST_FOREACH(e_config->acpi_bindings, l, bind)
{ {
E_Config_Binding_Acpi *b2; E_Config_Binding_Acpi *b2;
b2 = E_NEW(E_Config_Binding_Acpi, 1); b2 = E_NEW(E_Config_Binding_Acpi, 1);
b2->context = bind->context; b2->context = bind->context;
b2->type = bind->type; b2->type = bind->type;
b2->status = bind->status; b2->status = bind->status;
b2->action = eina_stringshare_ref(bind->action); b2->action = eina_stringshare_ref(bind->action);
b2->params = eina_stringshare_ref(bind->params); b2->params = eina_stringshare_ref(bind->params);
cfdata->bindings = eina_list_append(cfdata->bindings, b2); cfdata->bindings = eina_list_append(cfdata->bindings, b2);
} }
} }
static void static void
_free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) _free_data(E_Config_Dialog *cfd __UNUSED__,
E_Config_Dialog_Data *cfdata)
{ {
E_Config_Binding_Acpi *bind; E_Config_Binding_Acpi *bind;
Ecore_Event_Handler *hdl; Ecore_Event_Handler *hdl;
EINA_LIST_FREE(cfdata->bindings, bind) EINA_LIST_FREE(cfdata->bindings, bind)
{ {
if (bind->action) eina_stringshare_del(bind->action); if (bind->action) eina_stringshare_del(bind->action);
if (bind->params) eina_stringshare_del(bind->params); if (bind->params) eina_stringshare_del(bind->params);
E_FREE(bind); E_FREE(bind);
} }
/* free the handlers */ /* free the handlers */
EINA_LIST_FREE(grab_hdls, hdl) EINA_LIST_FREE(grab_hdls, hdl)
ecore_event_handler_del(hdl); ecore_event_handler_del(hdl);
if (grab_win) if (grab_win)
{ {
e_grabinput_release(grab_win, grab_win); e_grabinput_release(grab_win, grab_win);
ecore_x_window_free(grab_win); ecore_x_window_free(grab_win);
} }
grab_win = 0; grab_win = 0;
if (grab_dlg) if (grab_dlg)
{ {
e_object_del(E_OBJECT(grab_dlg)); e_object_del(E_OBJECT(grab_dlg));
e_acpi_events_thaw(); e_acpi_events_thaw();
} }
grab_dlg = NULL; grab_dlg = NULL;
E_FREE(cfdata); E_FREE(cfdata);
} }
static int static int
_basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) _basic_apply(E_Config_Dialog *cfd __UNUSED__,
E_Config_Dialog_Data *cfdata)
{ {
E_Config_Binding_Acpi *bind, *b2; E_Config_Binding_Acpi *bind, *b2;
Eina_List *l; Eina_List *l;
EINA_LIST_FREE(e_config->acpi_bindings, bind) EINA_LIST_FREE(e_config->acpi_bindings, bind)
{ {
e_bindings_acpi_del(bind->context, bind->type, bind->status, e_bindings_acpi_del(bind->context, bind->type, bind->status,
bind->action, bind->params); bind->action, bind->params);
if (bind->action) eina_stringshare_del(bind->action); if (bind->action) eina_stringshare_del(bind->action);
if (bind->params) eina_stringshare_del(bind->params); if (bind->params) eina_stringshare_del(bind->params);
E_FREE(bind); E_FREE(bind);
} }
EINA_LIST_FOREACH(cfdata->bindings, l, bind) EINA_LIST_FOREACH(cfdata->bindings, l, bind)
{ {
b2 = E_NEW(E_Config_Binding_Acpi, 1); b2 = E_NEW(E_Config_Binding_Acpi, 1);
b2->context = bind->context; b2->context = bind->context;
b2->type = bind->type; b2->type = bind->type;
b2->status = bind->status; b2->status = bind->status;
b2->action = eina_stringshare_ref(bind->action); b2->action = eina_stringshare_ref(bind->action);
b2->params = eina_stringshare_ref(bind->params); b2->params = eina_stringshare_ref(bind->params);
e_config->acpi_bindings = e_config->acpi_bindings =
eina_list_append(e_config->acpi_bindings, b2); eina_list_append(e_config->acpi_bindings, b2);
e_bindings_acpi_add(b2->context, b2->type, b2->status, e_bindings_acpi_add(b2->context, b2->type, b2->status,
b2->action, b2->params); b2->action, b2->params);
} }
e_config_save_queue(); e_config_save_queue();
@ -165,25 +179,27 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
} }
static Evas_Object * static Evas_Object *
_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) _basic_create(E_Config_Dialog *cfd,
Evas *evas,
E_Config_Dialog_Data *cfdata)
{ {
Evas_Object *ol, *of, *ow, *ot; Evas_Object *ol, *of, *ow, *ot;
ol = e_widget_list_add(evas, 0, 1); ol = e_widget_list_add(evas, 0, 1);
of = e_widget_frametable_add(evas, _("ACPI Bindings"), 0); of = e_widget_frametable_add(evas, _("ACPI Bindings"), 0);
ow = e_widget_ilist_add(evas, (24 * e_scale), (24 * e_scale), ow = e_widget_ilist_add(evas, (24 * e_scale), (24 * e_scale),
&(cfdata->bindex)); &(cfdata->bindex));
cfdata->o_bindings = ow; cfdata->o_bindings = ow;
_fill_bindings(cfdata); _fill_bindings(cfdata);
e_widget_frametable_object_append(of, ow, 0, 0, 2, 1, 1, 1, 1, 1); e_widget_frametable_object_append(of, ow, 0, 0, 2, 1, 1, 1, 1, 1);
ow = e_widget_button_add(evas, _("Add Binding"), "list-add", ow = e_widget_button_add(evas, _("Add Binding"), "list-add",
_cb_add_binding, cfdata, NULL); _cb_add_binding, cfdata, NULL);
cfdata->o_add = ow; cfdata->o_add = ow;
e_widget_frametable_object_append(of, ow, 0, 1, 1, 1, 1, 0, 1, 0); e_widget_frametable_object_append(of, ow, 0, 1, 1, 1, 1, 0, 1, 0);
ow = e_widget_button_add(evas, _("Delete Binding"), "list-remove", ow = e_widget_button_add(evas, _("Delete Binding"), "list-remove",
_cb_del_binding, cfdata, NULL); _cb_del_binding, cfdata, NULL);
cfdata->o_del = ow; cfdata->o_del = ow;
e_widget_disabled_set(ow, EINA_TRUE); e_widget_disabled_set(ow, EINA_TRUE);
e_widget_frametable_object_append(of, ow, 1, 1, 1, 1, 1, 0, 1, 0); e_widget_frametable_object_append(of, ow, 1, 1, 1, 1, 1, 0, 1, 0);
@ -198,7 +214,7 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
e_widget_table_object_append(ot, of, 0, 0, 1, 1, 1, 1, 1, 1); e_widget_table_object_append(ot, of, 0, 0, 1, 1, 1, 1, 1, 1);
ow = e_widget_framelist_add(evas, _("Action Params"), 0); ow = e_widget_framelist_add(evas, _("Action Params"), 0);
cfdata->o_params = cfdata->o_params =
e_widget_entry_add(evas, NULL, _cb_entry_changed, cfdata, NULL); e_widget_entry_add(evas, NULL, _cb_entry_changed, cfdata, NULL);
e_widget_disabled_set(cfdata->o_params, EINA_TRUE); e_widget_disabled_set(cfdata->o_params, EINA_TRUE);
e_widget_framelist_object_append(ow, cfdata->o_params); e_widget_framelist_object_append(ow, cfdata->o_params);
@ -209,8 +225,8 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
return ol; return ol;
} }
static void static void
_fill_bindings(E_Config_Dialog_Data *cfdata) _fill_bindings(E_Config_Dialog_Data *cfdata)
{ {
Evas *evas; Evas *evas;
Eina_List *l; Eina_List *l;
@ -223,16 +239,16 @@ _fill_bindings(E_Config_Dialog_Data *cfdata)
e_widget_ilist_freeze(cfdata->o_bindings); e_widget_ilist_freeze(cfdata->o_bindings);
e_widget_ilist_clear(cfdata->o_bindings); e_widget_ilist_clear(cfdata->o_bindings);
EINA_LIST_FOREACH(cfdata->bindings, l, bind) EINA_LIST_FOREACH(cfdata->bindings, l, bind)
{ {
const char *lbl; const char *lbl;
char buff[32]; char buff[32];
i++; i++;
if (!(lbl = _binding_label_get(bind))) continue; if (!(lbl = _binding_label_get(bind))) continue;
snprintf(buff, sizeof(buff), "%d", i); snprintf(buff, sizeof(buff), "%d", i);
e_widget_ilist_append(cfdata->o_bindings, NULL, lbl, e_widget_ilist_append(cfdata->o_bindings, NULL, lbl,
_cb_bindings_changed, cfdata, buff); _cb_bindings_changed, cfdata, buff);
} }
e_widget_ilist_go(cfdata->o_bindings); e_widget_ilist_go(cfdata->o_bindings);
@ -244,8 +260,8 @@ _fill_bindings(E_Config_Dialog_Data *cfdata)
evas_event_thaw(evas); evas_event_thaw(evas);
} }
static void static void
_fill_actions(E_Config_Dialog_Data *cfdata) _fill_actions(E_Config_Dialog_Data *cfdata)
{ {
Evas *evas; Evas *evas;
Eina_List *l, *ll; Eina_List *l, *ll;
@ -259,16 +275,16 @@ _fill_actions(E_Config_Dialog_Data *cfdata)
e_widget_ilist_freeze(cfdata->o_actions); e_widget_ilist_freeze(cfdata->o_actions);
e_widget_ilist_clear(cfdata->o_actions); e_widget_ilist_clear(cfdata->o_actions);
EINA_LIST_FOREACH(e_action_groups_get(), l, grp) EINA_LIST_FOREACH(e_action_groups_get(), l, grp)
{ {
if (!grp->acts) continue; if (!grp->acts) continue;
if ((strcmp(grp->act_grp, "Acpi")) && if ((strcmp(grp->act_grp, "Acpi")) &&
(strcmp(grp->act_grp, "System")) && (strcmp(grp->act_grp, "System")) &&
(strcmp(grp->act_grp, "Launch"))) continue; (strcmp(grp->act_grp, "Launch"))) continue;
e_widget_ilist_header_append(cfdata->o_actions, NULL, grp->act_grp); e_widget_ilist_header_append(cfdata->o_actions, NULL, grp->act_grp);
EINA_LIST_FOREACH(grp->acts, ll, dsc) EINA_LIST_FOREACH(grp->acts, ll, dsc)
e_widget_ilist_append(cfdata->o_actions, NULL, dsc->act_name, e_widget_ilist_append(cfdata->o_actions, NULL, dsc->act_name,
_cb_actions_changed, cfdata, dsc->act_cmd); _cb_actions_changed, cfdata, dsc->act_cmd);
} }
e_widget_ilist_go(cfdata->o_actions); e_widget_ilist_go(cfdata->o_actions);
@ -281,18 +297,18 @@ _fill_actions(E_Config_Dialog_Data *cfdata)
} }
static E_Config_Binding_Acpi * static E_Config_Binding_Acpi *
_selected_binding_get(E_Config_Dialog_Data *cfdata) _selected_binding_get(E_Config_Dialog_Data *cfdata)
{ {
E_Config_Binding_Acpi *bind; E_Config_Binding_Acpi *bind;
if ((!cfdata) || (!cfdata->bindex)) return NULL; if ((!cfdata) || (!cfdata->bindex)) return NULL;
if (!(bind = eina_list_nth(cfdata->bindings, atoi(cfdata->bindex)))) if (!(bind = eina_list_nth(cfdata->bindings, atoi(cfdata->bindex))))
return NULL; return NULL;
return bind; return bind;
} }
static E_Action_Description * static E_Action_Description *
_selected_action_get(E_Config_Dialog_Data *cfdata) _selected_action_get(E_Config_Dialog_Data *cfdata)
{ {
E_Action_Group *grp; E_Action_Group *grp;
E_Action_Description *dsc = NULL; E_Action_Description *dsc = NULL;
@ -306,55 +322,66 @@ _selected_action_get(E_Config_Dialog_Data *cfdata)
if (!(lbl = e_widget_ilist_nth_label_get(cfdata->o_actions, sel))) if (!(lbl = e_widget_ilist_nth_label_get(cfdata->o_actions, sel)))
return NULL; return NULL;
EINA_LIST_FOREACH(e_action_groups_get(), l, grp) EINA_LIST_FOREACH(e_action_groups_get(), l, grp)
{ {
if (!grp->acts) continue; if (!grp->acts) continue;
if ((strcmp(grp->act_grp, "Acpi")) && if ((strcmp(grp->act_grp, "Acpi")) &&
(strcmp(grp->act_grp, "System")) && (strcmp(grp->act_grp, "System")) &&
(strcmp(grp->act_grp, "Launch"))) continue; (strcmp(grp->act_grp, "Launch"))) continue;
EINA_LIST_FOREACH(grp->acts, ll, dsc) EINA_LIST_FOREACH(grp->acts, ll, dsc)
{ {
if ((dsc->act_name) && (!strcmp(dsc->act_name, lbl))) if ((dsc->act_name) && (!strcmp(dsc->act_name, lbl)))
return dsc; return dsc;
} }
} }
return dsc; return dsc;
} }
static const char * static const char *
_binding_label_get(E_Config_Binding_Acpi *bind) _binding_label_get(E_Config_Binding_Acpi *bind)
{ {
char *ret; char *ret;
if (bind->type == E_ACPI_TYPE_UNKNOWN) return NULL; if (bind->type == E_ACPI_TYPE_UNKNOWN) return NULL;
else if (bind->type == E_ACPI_TYPE_AC_ADAPTER) else if (bind->type == E_ACPI_TYPE_AC_ADAPTER)
{ {
ret = _("Ac Adapter"); ret = _("Ac Adapter");
if (bind->status == 0) ret = _("AC Adapter Unplugged"); if (bind->status == 0) ret = _("AC Adapter Unplugged");
else if (bind->status == 1) ret = _("AC Adapter Plugged"); else if (bind->status == 1)
ret = _("AC Adapter Plugged");
} }
else if (bind->type == E_ACPI_TYPE_BATTERY) ret = _("Battery"); else if (bind->type == E_ACPI_TYPE_BATTERY)
else if (bind->type == E_ACPI_TYPE_BUTTON) ret = _("Button"); ret = _("Battery");
else if (bind->type == E_ACPI_TYPE_FAN) ret = _("Fan"); else if (bind->type == E_ACPI_TYPE_BUTTON)
else if (bind->type == E_ACPI_TYPE_LID) ret = _("Button");
else if (bind->type == E_ACPI_TYPE_FAN)
ret = _("Fan");
else if (bind->type == E_ACPI_TYPE_LID)
{ {
ret = _("Lid"); ret = _("Lid");
if (bind->status == 0) ret = _("Lid Closed"); if (bind->status == 0) ret = _("Lid Closed");
else if (bind->status == 1) ret = _("Lid Opened"); else if (bind->status == 1)
ret = _("Lid Opened");
} }
else if (bind->type == E_ACPI_TYPE_POWER) ret = _("Power Button"); else if (bind->type == E_ACPI_TYPE_POWER)
else if (bind->type == E_ACPI_TYPE_PROCESSOR) ret = _("Processor"); ret = _("Power Button");
else if (bind->type == E_ACPI_TYPE_SLEEP) ret = _("Sleep Button"); else if (bind->type == E_ACPI_TYPE_PROCESSOR)
else if (bind->type == E_ACPI_TYPE_THERMAL) ret = _("Thermal"); ret = _("Processor");
else if (bind->type == E_ACPI_TYPE_VIDEO) ret = _("Video"); else if (bind->type == E_ACPI_TYPE_SLEEP)
else if (bind->type == E_ACPI_TYPE_WIFI) ret = _("Wifi"); ret = _("Sleep Button");
else if (bind->type == E_ACPI_TYPE_THERMAL)
ret = _("Thermal");
else if (bind->type == E_ACPI_TYPE_VIDEO)
ret = _("Video");
else if (bind->type == E_ACPI_TYPE_WIFI)
ret = _("Wifi");
return ret; return ret;
} }
static void static void
_cb_bindings_changed(void *data) _cb_bindings_changed(void *data)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
E_Config_Binding_Acpi *bind; E_Config_Binding_Acpi *bind;
@ -363,69 +390,70 @@ _cb_bindings_changed(void *data)
int i = -1; int i = -1;
if (!(cfdata = data)) return; if (!(cfdata = data)) return;
if (!(bind = _selected_binding_get(cfdata))) if (!(bind = _selected_binding_get(cfdata)))
{ {
e_widget_entry_clear(cfdata->o_params); e_widget_entry_clear(cfdata->o_params);
e_widget_disabled_set(cfdata->o_params, EINA_TRUE); e_widget_disabled_set(cfdata->o_params, EINA_TRUE);
e_widget_disabled_set(cfdata->o_del, EINA_TRUE); e_widget_disabled_set(cfdata->o_del, EINA_TRUE);
return; return;
} }
e_widget_disabled_set(cfdata->o_del, EINA_FALSE); e_widget_disabled_set(cfdata->o_del, EINA_FALSE);
e_widget_ilist_unselect(cfdata->o_actions); e_widget_ilist_unselect(cfdata->o_actions);
EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->o_actions), items, item) EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->o_actions), items, item)
{ {
const char *val; const char *val;
i++; i++;
if (!(val = e_widget_ilist_item_value_get(item))) continue; if (!(val = e_widget_ilist_item_value_get(item))) continue;
if (strcmp(val, bind->action)) continue; if (strcmp(val, bind->action)) continue;
e_widget_ilist_selected_set(cfdata->o_actions, i); e_widget_ilist_selected_set(cfdata->o_actions, i);
break; break;
} }
} }
static void static void
_cb_actions_changed(void *data) _cb_actions_changed(void *data)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
E_Config_Binding_Acpi *bind; E_Config_Binding_Acpi *bind;
E_Action_Description *dsc; E_Action_Description *dsc;
if (!(cfdata = data)) return; if (!(cfdata = data)) return;
if (!(bind = _selected_binding_get(cfdata))) if (!(bind = _selected_binding_get(cfdata)))
{ {
e_widget_entry_clear(cfdata->o_params); e_widget_entry_clear(cfdata->o_params);
e_widget_disabled_set(cfdata->o_params, EINA_TRUE); e_widget_disabled_set(cfdata->o_params, EINA_TRUE);
e_widget_disabled_set(cfdata->o_del, EINA_TRUE); e_widget_disabled_set(cfdata->o_del, EINA_TRUE);
return; return;
} }
if (!(dsc = _selected_action_get(cfdata))) if (!(dsc = _selected_action_get(cfdata)))
{ {
e_widget_entry_clear(cfdata->o_params); e_widget_entry_clear(cfdata->o_params);
e_widget_disabled_set(cfdata->o_params, EINA_TRUE); e_widget_disabled_set(cfdata->o_params, EINA_TRUE);
return; return;
} }
eina_stringshare_replace(&bind->action, dsc->act_cmd); eina_stringshare_replace(&bind->action, dsc->act_cmd);
e_widget_disabled_set(cfdata->o_params, !(dsc->editable)); e_widget_disabled_set(cfdata->o_params, !(dsc->editable));
if ((!dsc->editable) && (dsc->act_params)) if ((!dsc->editable) && (dsc->act_params))
e_widget_entry_text_set(cfdata->o_params, dsc->act_params); e_widget_entry_text_set(cfdata->o_params, dsc->act_params);
else if (bind->params) else if (bind->params)
e_widget_entry_text_set(cfdata->o_params, bind->params); e_widget_entry_text_set(cfdata->o_params, bind->params);
else else
{ {
if ((!dsc->param_example) || (!dsc->param_example[0])) if ((!dsc->param_example) || (!dsc->param_example[0]))
e_widget_entry_text_set(cfdata->o_params, _("<None>")); e_widget_entry_text_set(cfdata->o_params, _("<None>"));
else else
e_widget_entry_text_set(cfdata->o_params, dsc->param_example); e_widget_entry_text_set(cfdata->o_params, dsc->param_example);
} }
} }
static void static void
_cb_entry_changed(void *data, void *data2 __UNUSED__) _cb_entry_changed(void *data,
void *data2 __UNUSED__)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
E_Config_Binding_Acpi *bind; E_Config_Binding_Acpi *bind;
@ -435,12 +463,13 @@ _cb_entry_changed(void *data, void *data2 __UNUSED__)
if (!(dsc = _selected_action_get(cfdata))) return; if (!(dsc = _selected_action_get(cfdata))) return;
if (!dsc->editable) return; if (!dsc->editable) return;
if (!(bind = _selected_binding_get(cfdata))) return; if (!(bind = _selected_binding_get(cfdata))) return;
eina_stringshare_replace(&bind->params, eina_stringshare_replace(&bind->params,
e_widget_entry_text_get(cfdata->o_params)); e_widget_entry_text_get(cfdata->o_params));
} }
static void static void
_cb_add_binding(void *data, void *data2 __UNUSED__) _cb_add_binding(void *data,
void *data2 __UNUSED__)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
E_Manager *man; E_Manager *man;
@ -448,14 +477,14 @@ _cb_add_binding(void *data, void *data2 __UNUSED__)
if (grab_win != 0) return; if (grab_win != 0) return;
if (!(cfdata = data)) return; if (!(cfdata = data)) return;
man = e_manager_current_get(); man = e_manager_current_get();
grab_dlg = e_dialog_new(e_container_current_get(man), "E", grab_dlg = e_dialog_new(e_container_current_get(man), "E",
"_acpibind_getbind_dialog"); "_acpibind_getbind_dialog");
if (!grab_dlg) return; if (!grab_dlg) return;
e_dialog_title_set(grab_dlg, _("ACPI Binding")); e_dialog_title_set(grab_dlg, _("ACPI Binding"));
e_dialog_icon_set(grab_dlg, "preferences-system-power-management", 48); e_dialog_icon_set(grab_dlg, "preferences-system-power-management", 48);
e_dialog_text_set(grab_dlg, e_dialog_text_set(grab_dlg,
_("Please trigger the ACPI event you wish to bind to, " _("Please trigger the ACPI event you wish to bind to, "
"<br><br>or <hilight>Escape</hilight> to abort.")); "<br><br>or <hilight>Escape</hilight> to abort."));
e_win_centered_set(grab_dlg->win, EINA_TRUE); e_win_centered_set(grab_dlg->win, EINA_TRUE);
e_win_borderless_set(grab_dlg->win, EINA_TRUE); e_win_borderless_set(grab_dlg->win, EINA_TRUE);
@ -463,53 +492,54 @@ _cb_add_binding(void *data, void *data2 __UNUSED__)
ecore_x_window_show(grab_win); ecore_x_window_show(grab_win);
e_grabinput_get(grab_win, 0, grab_win); e_grabinput_get(grab_win, 0, grab_win);
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
_cb_grab_key_down, cfdata)); _cb_grab_key_down, cfdata));
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(E_EVENT_ACPI_AC_ADAPTER, ecore_event_handler_add(E_EVENT_ACPI_AC_ADAPTER,
_cb_acpi_event, cfdata)); _cb_acpi_event, cfdata));
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(E_EVENT_ACPI_BATTERY, ecore_event_handler_add(E_EVENT_ACPI_BATTERY,
_cb_acpi_event, cfdata)); _cb_acpi_event, cfdata));
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(E_EVENT_ACPI_FAN, ecore_event_handler_add(E_EVENT_ACPI_FAN,
_cb_acpi_event, cfdata)); _cb_acpi_event, cfdata));
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(E_EVENT_ACPI_LID, ecore_event_handler_add(E_EVENT_ACPI_LID,
_cb_acpi_event, cfdata)); _cb_acpi_event, cfdata));
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(E_EVENT_ACPI_POWER, ecore_event_handler_add(E_EVENT_ACPI_POWER,
_cb_acpi_event, cfdata)); _cb_acpi_event, cfdata));
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(E_EVENT_ACPI_SLEEP, ecore_event_handler_add(E_EVENT_ACPI_SLEEP,
_cb_acpi_event, cfdata)); _cb_acpi_event, cfdata));
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(E_EVENT_ACPI_VIDEO, ecore_event_handler_add(E_EVENT_ACPI_VIDEO,
_cb_acpi_event, cfdata)); _cb_acpi_event, cfdata));
grab_hdls = grab_hdls =
eina_list_append(grab_hdls, eina_list_append(grab_hdls,
ecore_event_handler_add(E_EVENT_ACPI_WIFI, ecore_event_handler_add(E_EVENT_ACPI_WIFI,
_cb_acpi_event, cfdata)); _cb_acpi_event, cfdata));
/* freeze all incoming acpi events */ /* freeze all incoming acpi events */
e_acpi_events_freeze(); e_acpi_events_freeze();
e_dialog_show(grab_dlg); e_dialog_show(grab_dlg);
ecore_x_icccm_transient_for_set(grab_dlg->win->evas_win, ecore_x_icccm_transient_for_set(grab_dlg->win->evas_win,
cfdata->cfd->dia->win->evas_win); cfdata->cfd->dia->win->evas_win);
} }
static void static void
_cb_del_binding(void *data, void *data2 __UNUSED__) _cb_del_binding(void *data,
void *data2 __UNUSED__)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
E_Config_Binding_Acpi *bind, *bind2; E_Config_Binding_Acpi *bind, *bind2;
@ -519,47 +549,47 @@ _cb_del_binding(void *data, void *data2 __UNUSED__)
if (!(bind = _selected_binding_get(cfdata))) return; if (!(bind = _selected_binding_get(cfdata))) return;
/* delete from e_config */ /* delete from e_config */
EINA_LIST_FOREACH(e_config->acpi_bindings, l, bind2) EINA_LIST_FOREACH(e_config->acpi_bindings, l, bind2)
{ {
if ((bind->context == bind2->context) && (bind->type == bind2->type) && if ((bind->context == bind2->context) && (bind->type == bind2->type) &&
(((bind->action) && (bind2->action) && (((bind->action) && (bind2->action) &&
(!strcmp(bind->action, bind2->action))) || (!strcmp(bind->action, bind2->action))) ||
((!bind->action) && (!bind2->action))) && ((!bind->action) && (!bind2->action))) &&
(((bind->params) && (bind2->params) && (((bind->params) && (bind2->params) &&
(!strcmp(bind->params, bind2->params))) || (!strcmp(bind->params, bind2->params))) ||
((!bind->params) && (!bind2->params)))) ((!bind->params) && (!bind2->params))))
{ {
if (bind2->action) eina_stringshare_del(bind2->action); if (bind2->action) eina_stringshare_del(bind2->action);
if (bind2->params) eina_stringshare_del(bind2->params); if (bind2->params) eina_stringshare_del(bind2->params);
E_FREE(bind2); E_FREE(bind2);
e_config->acpi_bindings = e_config->acpi_bindings =
eina_list_remove_list(e_config->acpi_bindings, l); eina_list_remove_list(e_config->acpi_bindings, l);
e_config_save_queue(); e_config_save_queue();
break; break;
} }
} }
/* delete from e_bindings */ /* delete from e_bindings */
e_bindings_acpi_del(bind->context, bind->type, bind->status, e_bindings_acpi_del(bind->context, bind->type, bind->status,
bind->action, bind->params); bind->action, bind->params);
/* delete from dialog list */ /* delete from dialog list */
EINA_LIST_FOREACH(cfdata->bindings, l, bind2) EINA_LIST_FOREACH(cfdata->bindings, l, bind2)
{ {
if ((bind->context == bind2->context) && (bind->type == bind2->type) && if ((bind->context == bind2->context) && (bind->type == bind2->type) &&
(((bind->action) && (bind2->action) && (((bind->action) && (bind2->action) &&
(!strcmp(bind->action, bind2->action))) || (!strcmp(bind->action, bind2->action))) ||
((!bind->action) && (!bind2->action))) && ((!bind->action) && (!bind2->action))) &&
(((bind->params) && (bind2->params) && (((bind->params) && (bind2->params) &&
(!strcmp(bind->params, bind2->params))) || (!strcmp(bind->params, bind2->params))) ||
((!bind->params) && (!bind2->params)))) ((!bind->params) && (!bind2->params))))
{ {
if (bind2->action) eina_stringshare_del(bind2->action); if (bind2->action) eina_stringshare_del(bind2->action);
if (bind2->params) eina_stringshare_del(bind2->params); if (bind2->params) eina_stringshare_del(bind2->params);
E_FREE(bind2); E_FREE(bind2);
cfdata->bindings = eina_list_remove_list(cfdata->bindings, l); cfdata->bindings = eina_list_remove_list(cfdata->bindings, l);
break; break;
} }
} }
/* reset gui */ /* reset gui */
@ -571,7 +601,9 @@ _cb_del_binding(void *data, void *data2 __UNUSED__)
} }
static Eina_Bool static Eina_Bool
_cb_grab_key_down(void *data, int type __UNUSED__, void *event) _cb_grab_key_down(void *data,
int type __UNUSED__,
void *event)
{ {
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
Ecore_Event_Key *ev; Ecore_Event_Key *ev;
@ -579,29 +611,31 @@ _cb_grab_key_down(void *data, int type __UNUSED__, void *event)
ev = event; ev = event;
if (ev->window != grab_win) return ECORE_CALLBACK_PASS_ON; if (ev->window != grab_win) return ECORE_CALLBACK_PASS_ON;
if (!(cfdata = data)) return ECORE_CALLBACK_PASS_ON; if (!(cfdata = data)) return ECORE_CALLBACK_PASS_ON;
if (!strcmp(ev->keyname, "Escape")) if (!strcmp(ev->keyname, "Escape"))
{ {
Ecore_Event_Handler *hdl; Ecore_Event_Handler *hdl;
/* free the handlers */ /* free the handlers */
EINA_LIST_FREE(grab_hdls, hdl) EINA_LIST_FREE(grab_hdls, hdl)
ecore_event_handler_del(hdl); ecore_event_handler_del(hdl);
/* kill the dialog window */ /* kill the dialog window */
e_grabinput_release(grab_win, grab_win); e_grabinput_release(grab_win, grab_win);
ecore_x_window_free(grab_win); ecore_x_window_free(grab_win);
grab_win = 0; grab_win = 0;
e_object_del(E_OBJECT(grab_dlg)); e_object_del(E_OBJECT(grab_dlg));
grab_dlg = NULL; grab_dlg = NULL;
/* unfreeze acpi events */ /* unfreeze acpi events */
e_acpi_events_thaw(); e_acpi_events_thaw();
} }
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
} }
static Eina_Bool static Eina_Bool
_cb_acpi_event(void *data, __UNUSED__ int type, void *event) _cb_acpi_event(void *data,
__UNUSED__ int type,
void *event)
{ {
E_Event_Acpi *ev; E_Event_Acpi *ev;
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
@ -639,3 +673,4 @@ _cb_acpi_event(void *data, __UNUSED__ int type, void *event)
_fill_bindings(cfdata); _fill_bindings(cfdata);
return ECORE_CALLBACK_DONE; return ECORE_CALLBACK_DONE;
} }