fix losing config!

SVN revision: 36899
This commit is contained in:
Carsten Haitzler 2008-10-21 01:10:42 +00:00
parent 6e0c18399f
commit b170c9ffe0
3 changed files with 124 additions and 20 deletions

View File

@ -236,6 +236,10 @@ _gc_id_new(void)
static void static void
_gc_id_del(const char *id) _gc_id_del(const char *id)
{ {
/* yes - don't do this. on shutdown gadgets are deleted and this means config
* for them is deleted - that means empty config is saved. keep them around
* as if u add a gadget back it can pick up its old config again
*
Config_Item *ci; Config_Item *ci;
ci = _ibar_config_item_get(id); ci = _ibar_config_item_get(id);
@ -244,6 +248,7 @@ _gc_id_del(const char *id)
if (ci->id) eina_stringshare_del(ci->id); if (ci->id) eina_stringshare_del(ci->id);
ibar_config->items = evas_list_remove(ibar_config->items, ci); ibar_config->items = evas_list_remove(ibar_config->items, ci);
} }
*/
} }
/**/ /**/
@ -459,12 +464,17 @@ _ibar_config_item_get(const char *id)
for (l = ibar_config->items; l; l = l->next) for (l = ibar_config->items; l; l = l->next)
{ {
ci = l->data; ci = l->data;
if ((ci->id) && (ci->dir) && (!strcmp(ci->id, id))) if ((ci->id) && (!strcmp(ci->id, id)))
return ci; {
if (!ci->dir)
ci->dir = eina_stringshare_add("default");
return ci;
}
} }
} }
ci = E_NEW(Config_Item, 1); ci = E_NEW(Config_Item, 1);
ci->id = eina_stringshare_add(id); ci->id = eina_stringshare_add(id);
ci->dir = eina_stringshare_add("default");
ci->show_label = 1; ci->show_label = 1;
ci->eap_label = 0; ci->eap_label = 0;
ibar_config->items = evas_list_append(ibar_config->items, ci); ibar_config->items = evas_list_append(ibar_config->items, ci);
@ -1227,9 +1237,9 @@ e_modapi_init(E_Module *m)
Config_Item *ci; Config_Item *ci;
ibar_config = E_NEW(Config, 1); ibar_config = E_NEW(Config, 1);
ci = E_NEW(Config_Item, 1); ci = E_NEW(Config_Item, 1);
ci->id = eina_stringshare_add("0"); ci->id = eina_stringshare_add("ibar.1");
ci->dir = eina_stringshare_add("default"); ci->dir = eina_stringshare_add("default");
ci->show_label = 1; ci->show_label = 1;
ci->eap_label = 0; ci->eap_label = 0;
@ -1237,13 +1247,56 @@ e_modapi_init(E_Module *m)
} }
else else
{ {
Config_Item *ci; Evas_List *removes = NULL;
const char *p; Evas_List *l;
/* Init uuid */ for (l = ibar_config->items; l; l = l->next)
ci = evas_list_last(ibar_config->items)->data; {
p = strrchr(ci->id, '.'); Config_Item *ci = l->data;
if (p) uuid = atoi(p + 1); if (!ci->id)
removes = evas_list_append(removes, ci);
else if (!ci->dir)
removes = evas_list_append(removes, ci);
else
{
Evas_List *ll;
for (ll = l->next; ll; ll = ll->next)
{
Config_Item *ci2 = ll->data;
if ((ci2->id) && (!strcmp(ci->id, ci2->id)))
{
removes = evas_list_append(removes, ci);
break;
}
}
}
}
while (removes)
{
Config_Item *ci = removes->data;
removes = evas_list_remove_list(removes, removes);
ibar_config->items = evas_list_remove(ibar_config->items, ci);
if (ci->id) eina_stringshare_del(ci->id);
if (ci->dir) eina_stringshare_del(ci->dir);
free(ci);
}
for (l = ibar_config->items; l; l = l->next)
{
Config_Item *ci = l->data;
if (ci->id)
{
const char *p;
p = strrchr(ci->id, '.');
if (p)
{
int id;
id = atoi(p + 1);
if (id > uuid) uuid = id;
}
}
}
} }
ibar_config->module = m; ibar_config->module = m;
@ -1293,6 +1346,8 @@ e_modapi_shutdown(E_Module *m)
EAPI int EAPI int
e_modapi_save(E_Module *m) e_modapi_save(E_Module *m)
{ {
Evas_List *l;
e_config_domain_save("module.ibar", conf_edd, ibar_config); e_config_domain_save("module.ibar", conf_edd, ibar_config);
return 1; return 1;
} }

View File

@ -246,6 +246,9 @@ _gc_id_new(void)
static void static void
_gc_id_del(const char *id) _gc_id_del(const char *id)
{ {
/* yes - don't do this. on shutdown gadgets are deleted and this means config
* for them is deleted - that means empty config is saved. keep them around
* as if u add a gadget back it can pick up its old config again
Config_Item *ci; Config_Item *ci;
ci = _ibox_config_item_get(id); ci = _ibox_config_item_get(id);
@ -254,6 +257,7 @@ _gc_id_del(const char *id)
if (ci->id) eina_stringshare_del(ci->id); if (ci->id) eina_stringshare_del(ci->id);
ibox_config->items = evas_list_remove(ibox_config->items, ci); ibox_config->items = evas_list_remove(ibox_config->items, ci);
} }
*/
} }
/**/ /**/
@ -1353,7 +1357,7 @@ e_modapi_init(E_Module *m)
ibox_config = E_NEW(Config, 1); ibox_config = E_NEW(Config, 1);
ci = E_NEW(Config_Item, 1); ci = E_NEW(Config_Item, 1);
ci->id = eina_stringshare_add("0"); ci->id = eina_stringshare_add("ibox.1");
ci->show_label = 0; ci->show_label = 0;
ci->show_zone = 1; ci->show_zone = 1;
ci->show_desk = 0; ci->show_desk = 0;
@ -1362,17 +1366,57 @@ e_modapi_init(E_Module *m)
} }
else else
{ {
Config_Item *ci; Evas_List *removes = NULL;
const char *p; Evas_List *l;
/* Init uuid */ for (l = ibox_config->items; l; l = l->next)
ci = evas_list_last(ibox_config->items)->data; {
p = strrchr(ci->id, '.'); Config_Item *ci = l->data;
if (p) uuid = atoi(p + 1); if (!ci->id)
removes = evas_list_append(removes, ci);
else
{
Evas_List *ll;
for (ll = l->next; ll; ll = ll->next)
{
Config_Item *ci2 = ll->data;
if ((ci2->id) && (!strcmp(ci->id, ci2->id)))
{
removes = evas_list_append(removes, ci);
break;
}
}
}
}
while (removes)
{
Config_Item *ci = removes->data;
removes = evas_list_remove_list(removes, removes);
ibox_config->items = evas_list_remove(ibox_config->items, ci);
if (ci->id) eina_stringshare_del(ci->id);
free(ci);
}
for (l = ibox_config->items; l; l = l->next)
{
Config_Item *ci = l->data;
if (ci->id)
{
const char *p;
p = strrchr(ci->id, '.');
if (p)
{
int id;
id = atoi(p + 1);
if (id > uuid) uuid = id;
}
}
}
} }
ibox_config->module = m; ibox_config->module = m;
ibox_config->handlers = evas_list_append ibox_config->handlers = evas_list_append
(ibox_config->handlers, ecore_event_handler_add (ibox_config->handlers, ecore_event_handler_add
(E_EVENT_BORDER_ADD, _ibox_cb_event_border_add, NULL)); (E_EVENT_BORDER_ADD, _ibox_cb_event_border_add, NULL));

View File

@ -191,6 +191,10 @@ _gc_id_new(void)
static void static void
_gc_id_del(const char *id) _gc_id_del(const char *id)
{ {
/* yes - don't do this. on shutdown gadgets are deleted and this means config
* for them is deleted - that means empty config is saved. keep them around
* as if u add a gadget back it can pick up its old config again
*
Config_Face *inst; Config_Face *inst;
inst = evas_hash_find(temperature_config->faces, id); inst = evas_hash_find(temperature_config->faces, id);
@ -200,6 +204,7 @@ _gc_id_del(const char *id)
if (inst->sensor_name) eina_stringshare_del(inst->sensor_name); if (inst->sensor_name) eina_stringshare_del(inst->sensor_name);
free(inst); free(inst);
} }
*/
} }
/**/ /**/