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