forked from enlightenment/enlightenment
parent
be64363d34
commit
4d1f37af1a
|
@ -3,14 +3,23 @@
|
||||||
/* local config structure */
|
/* local config structure */
|
||||||
struct _E_Config_Dialog_Data
|
struct _E_Config_Dialog_Data
|
||||||
{
|
{
|
||||||
|
Eina_List *bindings;
|
||||||
|
Evas_Object *o_bindings, *o_actions;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 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 _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||||
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||||
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, 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_Action_Description *_selected_action_get(E_Config_Dialog_Data *cfdata);
|
||||||
|
static const char *_binding_get_label(E_Config_Binding_Acpi *bind);
|
||||||
|
static void _cb_bindings_changed(void *data);
|
||||||
|
static void _cb_actions_changed(void *data);
|
||||||
|
|
||||||
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__)
|
||||||
|
@ -18,7 +27,7 @@ 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;
|
||||||
|
|
||||||
if (e_config_dialog_find("E", "keyboard_and_mouse/acpi_bindings"))
|
if (e_config_dialog_find("E", "system/acpi_bindings"))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
v = E_NEW(E_Config_Dialog_View, 1);
|
v = E_NEW(E_Config_Dialog_View, 1);
|
||||||
|
@ -28,8 +37,8 @@ e_int_config_acpibindings(E_Container *con, const char *params __UNUSED__)
|
||||||
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",
|
||||||
"keyboard_and_mouse/acpi_bindings",
|
"system/acpi_bindings",
|
||||||
"preferences-desktop-keyboard-shortcuts",
|
"preferences-system-power-management",
|
||||||
0, v, NULL);
|
0, v, NULL);
|
||||||
|
|
||||||
return cfd;
|
return cfd;
|
||||||
|
@ -42,18 +51,71 @@ _create_data(E_Config_Dialog *cfd)
|
||||||
E_Config_Dialog_Data *cfdata;
|
E_Config_Dialog_Data *cfdata;
|
||||||
|
|
||||||
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
||||||
|
_fill_data(cfdata);
|
||||||
return cfdata;
|
return cfdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_fill_data(E_Config_Dialog_Data *cfdata)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
E_Config_Binding_Acpi *bind;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(e_config->acpi_bindings, l, bind)
|
||||||
|
{
|
||||||
|
E_Config_Binding_Acpi *b2;
|
||||||
|
|
||||||
|
b2 = E_NEW(E_Config_Binding_Acpi, 1);
|
||||||
|
b2->context = bind->context;
|
||||||
|
b2->type = bind->type;
|
||||||
|
b2->status = bind->status;
|
||||||
|
b2->action = eina_stringshare_ref(bind->action);
|
||||||
|
b2->params = eina_stringshare_ref(bind->params);
|
||||||
|
cfdata->bindings = eina_list_append(cfdata->bindings, b2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
|
E_Config_Binding_Acpi *bind;
|
||||||
|
|
||||||
|
EINA_LIST_FREE(cfdata->bindings, bind)
|
||||||
|
{
|
||||||
|
if (bind->action) eina_stringshare_del(bind->action);
|
||||||
|
if (bind->params) eina_stringshare_del(bind->params);
|
||||||
|
E_FREE(bind);
|
||||||
|
}
|
||||||
|
|
||||||
E_FREE(cfdata);
|
E_FREE(cfdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
|
E_Config_Binding_Acpi *bind, *b2;
|
||||||
|
Eina_List *l;
|
||||||
|
|
||||||
|
EINA_LIST_FREE(e_config->acpi_bindings, bind)
|
||||||
|
e_bindings_acpi_del(bind->context, bind->type, bind->status,
|
||||||
|
bind->action, bind->params);
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(cfdata->bindings, l, bind)
|
||||||
|
{
|
||||||
|
b2 = E_NEW(E_Config_Binding_Acpi, 1);
|
||||||
|
b2->context = bind->context;
|
||||||
|
b2->type = bind->type;
|
||||||
|
b2->status = bind->status;
|
||||||
|
b2->action = eina_stringshare_ref(bind->action);
|
||||||
|
b2->params = eina_stringshare_ref(bind->params);
|
||||||
|
e_config->acpi_bindings =
|
||||||
|
eina_list_append(e_config->acpi_bindings, b2);
|
||||||
|
|
||||||
|
e_bindings_acpi_add(b2->context, b2->type, b2->status,
|
||||||
|
b2->action, b2->params);
|
||||||
|
}
|
||||||
|
e_config_save_queue();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,15 +128,203 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||||
|
|
||||||
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), NULL);
|
ow = e_widget_ilist_add(evas, (24 * e_scale), (24 * e_scale), NULL);
|
||||||
e_widget_size_min_set(ow, 200, 200);
|
cfdata->o_bindings = ow;
|
||||||
|
_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);
|
||||||
e_widget_list_object_append(ol, of, 1, 1, 0.5);
|
e_widget_list_object_append(ol, of, 1, 1, 0.5);
|
||||||
|
|
||||||
of = e_widget_framelist_add(evas, _("Action"), 0);
|
of = e_widget_framelist_add(evas, _("Actions"), 0);
|
||||||
ow = e_widget_ilist_add(evas, (24 * e_scale), (24 * e_scale), NULL);
|
ow = e_widget_ilist_add(evas, (24 * e_scale), (24 * e_scale), NULL);
|
||||||
e_widget_size_min_set(ow, 200, 200);
|
cfdata->o_actions = ow;
|
||||||
|
_fill_actions(cfdata);
|
||||||
e_widget_framelist_object_append(of, ow);
|
e_widget_framelist_object_append(of, ow);
|
||||||
e_widget_list_object_append(ol, of, 1, 1, 0.5);
|
e_widget_list_object_append(ol, of, 1, 1, 0.5);
|
||||||
|
|
||||||
return ol;
|
return ol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_fill_bindings(E_Config_Dialog_Data *cfdata)
|
||||||
|
{
|
||||||
|
Evas *evas;
|
||||||
|
Eina_List *l;
|
||||||
|
E_Config_Binding_Acpi *bind;
|
||||||
|
int i = -1, mw;
|
||||||
|
|
||||||
|
evas = evas_object_evas_get(cfdata->o_bindings);
|
||||||
|
evas_event_freeze(evas);
|
||||||
|
edje_freeze();
|
||||||
|
e_widget_ilist_freeze(cfdata->o_bindings);
|
||||||
|
e_widget_ilist_clear(cfdata->o_bindings);
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(cfdata->bindings, l, bind)
|
||||||
|
{
|
||||||
|
const char *lbl;
|
||||||
|
char buff[32];
|
||||||
|
|
||||||
|
i++;
|
||||||
|
if (!(lbl = _binding_get_label(bind))) continue;
|
||||||
|
snprintf(buff, sizeof(buff), "%d", i);
|
||||||
|
e_widget_ilist_append(cfdata->o_bindings, NULL, lbl,
|
||||||
|
_cb_bindings_changed, cfdata, buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
e_widget_ilist_go(cfdata->o_bindings);
|
||||||
|
e_widget_size_min_get(cfdata->o_bindings, &mw, NULL);
|
||||||
|
if (mw < (160 * e_scale)) mw = (160 * e_scale);
|
||||||
|
e_widget_size_min_set(cfdata->o_bindings, mw, 200);
|
||||||
|
e_widget_ilist_thaw(cfdata->o_bindings);
|
||||||
|
edje_thaw();
|
||||||
|
evas_event_thaw(evas);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_fill_actions(E_Config_Dialog_Data *cfdata)
|
||||||
|
{
|
||||||
|
Evas *evas;
|
||||||
|
Eina_List *l, *ll;
|
||||||
|
E_Action_Group *grp;
|
||||||
|
E_Action_Description *dsc;
|
||||||
|
int mw;
|
||||||
|
|
||||||
|
evas = evas_object_evas_get(cfdata->o_actions);
|
||||||
|
evas_event_freeze(evas);
|
||||||
|
edje_freeze();
|
||||||
|
e_widget_ilist_freeze(cfdata->o_actions);
|
||||||
|
e_widget_ilist_clear(cfdata->o_actions);
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(e_action_groups_get(), l, grp)
|
||||||
|
{
|
||||||
|
if (!grp->acts) continue;
|
||||||
|
if ((strcmp(grp->act_grp, "Acpi")) &&
|
||||||
|
(strcmp(grp->act_grp, "System"))) continue;
|
||||||
|
e_widget_ilist_header_append(cfdata->o_actions, NULL, grp->act_grp);
|
||||||
|
EINA_LIST_FOREACH(grp->acts, ll, dsc)
|
||||||
|
e_widget_ilist_append(cfdata->o_actions, NULL, dsc->act_name,
|
||||||
|
_cb_actions_changed, cfdata, dsc->act_cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
e_widget_ilist_go(cfdata->o_actions);
|
||||||
|
e_widget_size_min_get(cfdata->o_actions, &mw, NULL);
|
||||||
|
if (mw < (160 * e_scale)) mw = (160 * e_scale);
|
||||||
|
e_widget_size_min_set(cfdata->o_actions, mw, 200);
|
||||||
|
e_widget_ilist_thaw(cfdata->o_actions);
|
||||||
|
edje_thaw();
|
||||||
|
evas_event_thaw(evas);
|
||||||
|
}
|
||||||
|
|
||||||
|
static E_Config_Binding_Acpi *
|
||||||
|
_selected_binding_get(E_Config_Dialog_Data *cfdata)
|
||||||
|
{
|
||||||
|
E_Config_Binding_Acpi *bind;
|
||||||
|
int sel;
|
||||||
|
const char *index;
|
||||||
|
|
||||||
|
if (!cfdata) return NULL;
|
||||||
|
sel = e_widget_ilist_selected_get(cfdata->o_bindings);
|
||||||
|
if (sel < 0) return NULL;
|
||||||
|
if (!(index = e_widget_ilist_nth_value_get(cfdata->o_bindings, sel)))
|
||||||
|
return NULL;
|
||||||
|
sel = atoi(index);
|
||||||
|
if (!(bind = eina_list_nth(cfdata->bindings, sel))) return NULL;
|
||||||
|
return bind;
|
||||||
|
}
|
||||||
|
|
||||||
|
static E_Action_Description *
|
||||||
|
_selected_action_get(E_Config_Dialog_Data *cfdata)
|
||||||
|
{
|
||||||
|
E_Action_Group *grp;
|
||||||
|
E_Action_Description *dsc;
|
||||||
|
Eina_List *l, *ll;
|
||||||
|
const char *lbl;
|
||||||
|
int sel;
|
||||||
|
|
||||||
|
if (!cfdata) return NULL;
|
||||||
|
sel = e_widget_ilist_selected_get(cfdata->o_actions);
|
||||||
|
if (sel < 0) return NULL;
|
||||||
|
if (!(lbl = e_widget_ilist_nth_label_get(cfdata->o_actions, sel)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(e_action_groups_get(), l, grp)
|
||||||
|
{
|
||||||
|
if (!grp->acts) continue;
|
||||||
|
if ((strcmp(grp->act_grp, "Acpi")) &&
|
||||||
|
(strcmp(grp->act_grp, "System"))) continue;
|
||||||
|
EINA_LIST_FOREACH(grp->acts, ll, dsc)
|
||||||
|
{
|
||||||
|
if ((dsc->act_name) && (!strcmp(dsc->act_name, lbl)))
|
||||||
|
return dsc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
_binding_get_label(E_Config_Binding_Acpi *bind)
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
|
||||||
|
if (bind->type == E_ACPI_TYPE_UNKNOWN) return NULL;
|
||||||
|
else if (bind->type == E_ACPI_TYPE_AC_ADAPTER)
|
||||||
|
{
|
||||||
|
ret = _("Ac Adapter");
|
||||||
|
if (bind->status == 0) ret = _("AC Adapter Unplugged");
|
||||||
|
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_BUTTON) ret = _("Button");
|
||||||
|
else if (bind->type == E_ACPI_TYPE_FAN) ret = _("Fan");
|
||||||
|
else if (bind->type == E_ACPI_TYPE_LID)
|
||||||
|
{
|
||||||
|
ret = _("Lid");
|
||||||
|
if (bind->status == 0) ret = _("Lid Closed");
|
||||||
|
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_PROCESSOR) ret = _("Processor");
|
||||||
|
else if (bind->type == E_ACPI_TYPE_SLEEP) 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cb_bindings_changed(void *data)
|
||||||
|
{
|
||||||
|
E_Config_Dialog_Data *cfdata;
|
||||||
|
E_Config_Binding_Acpi *bind;
|
||||||
|
Eina_List *items;
|
||||||
|
const E_Ilist_Item *item;
|
||||||
|
int i = -1;
|
||||||
|
|
||||||
|
if (!(cfdata = data)) return;
|
||||||
|
if (!(bind = _selected_binding_get(cfdata))) return;
|
||||||
|
e_widget_ilist_unselect(cfdata->o_actions);
|
||||||
|
EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->o_actions), items, item)
|
||||||
|
{
|
||||||
|
const char *val;
|
||||||
|
|
||||||
|
i++;
|
||||||
|
if (!(val = e_widget_ilist_item_value_get(item))) continue;
|
||||||
|
if (strcmp(val, bind->action)) continue;
|
||||||
|
e_widget_ilist_selected_set(cfdata->o_actions, i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cb_actions_changed(void *data)
|
||||||
|
{
|
||||||
|
E_Config_Dialog_Data *cfdata;
|
||||||
|
E_Config_Binding_Acpi *bind;
|
||||||
|
E_Action_Description *dsc;
|
||||||
|
|
||||||
|
if (!(cfdata = data)) return;
|
||||||
|
if (!(bind = _selected_binding_get(cfdata))) return;
|
||||||
|
if (!(dsc = _selected_action_get(cfdata))) return;
|
||||||
|
eina_stringshare_replace(&bind->action, dsc->act_cmd);
|
||||||
|
eina_stringshare_replace(&bind->params, dsc->act_params);
|
||||||
|
}
|
||||||
|
|
|
@ -16,11 +16,11 @@ EAPI E_Module_Api e_modapi =
|
||||||
EAPI void *
|
EAPI void *
|
||||||
e_modapi_init(E_Module *m)
|
e_modapi_init(E_Module *m)
|
||||||
{
|
{
|
||||||
e_configure_registry_category_add("keyboard_and_mouse", 40,
|
e_configure_registry_category_add("system", 1000,
|
||||||
_("Input"), NULL, "preferences-behavior");
|
_("System"), NULL, "preferences-system");
|
||||||
e_configure_registry_item_add("keyboard_and_mouse/acpi_bindings", 10,
|
e_configure_registry_item_add("system/acpi_bindings", 10,
|
||||||
_("ACPI Bindings"), NULL,
|
_("ACPI Bindings"), NULL,
|
||||||
"preferences-desktop-keyboard-shortcuts",
|
"preferences-system-power-management",
|
||||||
e_int_config_acpibindings);
|
e_int_config_acpibindings);
|
||||||
conf_module = m;
|
conf_module = m;
|
||||||
e_module_delayed_set(m, 1);
|
e_module_delayed_set(m, 1);
|
||||||
|
@ -32,10 +32,10 @@ e_modapi_shutdown(E_Module *m)
|
||||||
{
|
{
|
||||||
E_Config_Dialog *cfd;
|
E_Config_Dialog *cfd;
|
||||||
|
|
||||||
if (cfd = e_config_dialog_get("E", "keyboard_and_mouse/acpi_bindings"))
|
if (cfd = e_config_dialog_get("E", "system/acpi_bindings"))
|
||||||
e_object_del(E_OBJECT(cfd));
|
e_object_del(E_OBJECT(cfd));
|
||||||
e_configure_registry_item_del("keyboard_and_mouse/acpi_bindings");
|
e_configure_registry_item_del("system/acpi_bindings");
|
||||||
e_configure_registry_category_del("keyboard_and_mouse");
|
e_configure_registry_category_del("system");
|
||||||
conf_module = NULL;
|
conf_module = NULL;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ Type=Link
|
||||||
Name=Settings - ACPI Bindings
|
Name=Settings - ACPI Bindings
|
||||||
Name[fr]=Configuration - Raccourcis ACPI
|
Name[fr]=Configuration - Raccourcis ACPI
|
||||||
Name[it]=Configurazione - Associazioni ACPI
|
Name[it]=Configurazione - Associazioni ACPI
|
||||||
Icon=preferences-desktop-keyboard-shortcuts
|
Icon=preferences-system-power-management
|
||||||
Comment=Configure your ACPI bindings here.
|
Comment=Configure your ACPI bindings here.
|
||||||
Comment[fr]=Permet de configurer vos raccourcis ACPI.
|
Comment[fr]=Permet de configurer vos raccourcis ACPI.
|
||||||
Comment[it]=Configurate qui le vostre associazioni con ACPI.
|
Comment[it]=Configurate qui le vostre associazioni con ACPI.
|
||||||
|
|
Loading…
Reference in New Issue