1 #include "e_mod_main.h"
2
3
4 void
e_qa_entry_bindings_cleanup(E_Quick_Access_Entry * entry)5 e_qa_entry_bindings_cleanup(E_Quick_Access_Entry *entry)
6 {
7 Eina_List *l, *ll;
8 E_Config_Binding_Key *kbi;
9 E_Config_Binding_Mouse *mbi;
10 E_Config_Binding_Edge *ebi;
11 E_Config_Binding_Wheel *wbi;
12 E_Config_Binding_Acpi *abi;
13 E_Config_Binding_Signal *sbi;
14
15 EINA_LIST_FOREACH_SAFE(e_bindings->key_bindings, l, ll, kbi)
16 {
17 if ((kbi->action == _act_toggle) && (kbi->params == entry->id))
18 {
19 DBG("removed keybind for %s", entry->id);
20 e_bindings->key_bindings = eina_list_remove_list(e_bindings->key_bindings, l);
21 eina_stringshare_del(kbi->key);
22 eina_stringshare_del(kbi->action);
23 eina_stringshare_del(kbi->params);
24 free(kbi);
25 }
26 }
27 EINA_LIST_FOREACH_SAFE(e_bindings->mouse_bindings, l, ll, mbi)
28 {
29 if ((mbi->action == _act_toggle) && (mbi->params == entry->id))
30 {
31 DBG("removed mousebind for %s", entry->id);
32 e_bindings->mouse_bindings = eina_list_remove_list(e_bindings->mouse_bindings, l);
33 eina_stringshare_del(mbi->action);
34 eina_stringshare_del(mbi->params);
35 free(mbi);
36 }
37 }
38 EINA_LIST_FOREACH_SAFE(e_bindings->edge_bindings, l, ll, ebi)
39 {
40 if ((ebi->action == _act_toggle) && (ebi->params == entry->id))
41 {
42 DBG("removed edgebind for %s", entry->id);
43 e_bindings->edge_bindings = eina_list_remove_list(e_bindings->edge_bindings, l);
44 eina_stringshare_del(ebi->action);
45 eina_stringshare_del(ebi->params);
46 free(ebi);
47 }
48 }
49 EINA_LIST_FOREACH_SAFE(e_bindings->wheel_bindings, l, ll, wbi)
50 {
51 if ((wbi->action == _act_toggle) && (wbi->params == entry->id))
52 {
53 DBG("removed wheelbind for %s", entry->id);
54 e_bindings->wheel_bindings = eina_list_remove_list(e_bindings->wheel_bindings, l);
55 eina_stringshare_del(wbi->action);
56 eina_stringshare_del(wbi->params);
57 free(wbi);
58 }
59 }
60 EINA_LIST_FOREACH_SAFE(e_bindings->acpi_bindings, l, ll, abi)
61 {
62 if ((abi->action == _act_toggle) && (abi->params == entry->id))
63 {
64 DBG("removed acpibind for %s", entry->id);
65 e_bindings->acpi_bindings = eina_list_remove_list(e_bindings->acpi_bindings, l);
66 eina_stringshare_del(abi->action);
67 eina_stringshare_del(abi->params);
68 free(abi);
69 }
70 }
71 EINA_LIST_FOREACH_SAFE(e_bindings->signal_bindings, l, ll, sbi)
72 {
73 if ((sbi->action == _act_toggle) && (sbi->params == entry->id))
74 {
75 DBG("removed signalbind for %s", entry->id);
76 e_bindings->signal_bindings = eina_list_remove_list(e_bindings->signal_bindings, l);
77 eina_stringshare_del(sbi->action);
78 eina_stringshare_del(sbi->params);
79 free(sbi);
80 }
81 }
82 }
83
84 void
e_qa_entry_bindings_rename(E_Quick_Access_Entry * entry,const char * name)85 e_qa_entry_bindings_rename(E_Quick_Access_Entry *entry, const char *name)
86 {
87 Eina_List *l;
88 E_Config_Binding_Key *kbi;
89 E_Config_Binding_Mouse *mbi;
90 E_Config_Binding_Edge *ebi;
91 E_Config_Binding_Wheel *wbi;
92 E_Config_Binding_Acpi *abi;
93 E_Config_Binding_Signal *sbi;
94
95 #define RENAME(TYPE, VAR) do {\
96 EINA_LIST_FOREACH(e_bindings->TYPE##_bindings, l, VAR) \
97 { \
98 if ((VAR->action == _act_toggle) && (VAR->params == entry->id)) \
99 { \
100 DBG("removed %sbind for %s", #TYPE, entry->id); \
101 eina_stringshare_replace(&VAR->params, name); \
102 } \
103 } \
104 } while (0)
105 RENAME(key, kbi);
106 RENAME(mouse, mbi);
107 RENAME(edge, ebi);
108 RENAME(wheel, wbi);
109 RENAME(acpi, abi);
110 RENAME(signal, sbi);
111 e_bindings_reset();
112 }
113