more work on shelfy bits

SVN revision: 20517
This commit is contained in:
Carsten Haitzler 2006-02-16 09:27:37 +00:00
parent fce2c3b1fc
commit abab75bfa0
2 changed files with 77 additions and 9 deletions

View File

@ -85,6 +85,7 @@ e_shelf_config_init(void)
cf_es->popup, cf_es->layer);
if (es)
{
es->cfg = cf_es;
e_shelf_move_resize(es, cf_escf2->x, cf_escf2->y,
cf_escf2->w, cf_escf2->h);
e_shelf_orient(es, cf_escf2->orient);
@ -250,9 +251,66 @@ e_shelf_save(E_Shelf *es)
{
E_OBJECT_CHECK(es);
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
/* FIXME: find or create saved shelf node and then modify and queue a
* save
*/
if (es->cfg)
{
Evas_List *l;
E_Config_Shelf_Config *cf_escf = NULL;
for (l = es->cfg->configs; l; l = l->next)
{
cf_escf = l->data;
if ((cf_escf->res.w == es->zone->w) &&
(cf_escf->res.h == es->zone->h))
break;
cf_escf = NULL;
}
if (!cf_escf)
{
cf_escf = E_NEW(E_Config_Shelf_Config, 1);
if (cf_escf)
{
cf_escf->res.w = es->zone->w;
cf_escf->res.h = es->zone->h;
es->cfg->configs = evas_list_append(es->cfg->configs, cf_escf);
}
}
if (cf_escf)
{
cf_escf->x = es->x;
cf_escf->y = es->y;
cf_escf->w = es->w;
cf_escf->h = es->h;
cf_escf->orient = es->gadcon->orient;
if (cf_escf->style) evas_stringshare_del(cf_escf->style);
cf_escf->style = evas_stringshare_add(es->style);
}
}
else
{
E_Config_Shelf *cf_es;
E_Config_Shelf_Config *cf_escf = NULL;
cf_es = E_NEW(E_Config_Shelf, 1);
cf_es->name = evas_stringshare_add(es->name);
cf_es->container = es->zone->container->num;
cf_es->zone = es->zone->num;
if (es->popup) cf_es->popup = 1;
cf_es->layer = es->layer;
e_config->shelves = evas_list_append(e_config->shelves, cf_es);
es->cfg = cf_es;
cf_escf = E_NEW(E_Config_Shelf_Config, 1);
cf_escf->res.w = es->zone->w;
cf_escf->res.h = es->zone->h;
cf_escf->x = es->x;
cf_escf->y = es->y;
cf_escf->w = es->w;
cf_escf->h = es->h;
cf_escf->orient = es->gadcon->orient;
cf_escf->style = evas_stringshare_add(es->style);
cf_es->configs = evas_list_append(cf_es->configs, cf_escf);
}
e_config_save_queue();
}
EAPI void
@ -260,9 +318,21 @@ e_shelf_unsave(E_Shelf *es)
{
E_OBJECT_CHECK(es);
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
/* FIXME: find or create saved shelf node and then delete and queue a
* save
*/
if (es->cfg)
{
e_config->shelves = evas_list_remove(e_config->shelves, es->cfg);
evas_stringshare_del(es->cfg->name);
while (es->cfg->configs)
{
E_Config_Shelf_Config *cf_escf;
cf_escf = es->cfg->configs->data;
if (cf_escf->style) evas_stringshare_del(cf_escf->style);
free(cf_escf);
es->cfg->configs = evas_list_remove_list(es->cfg->configs, es->cfg->configs);
}
free(es->cfg);
}
}
EAPI void

View File

@ -24,9 +24,7 @@ struct _E_Shelf
E_Gadcon *gadcon;
char *name;
char *style;
/* FIXME: we need a more powerful sizing/placement policy rather than just
* x,y, width & height
*/
E_Config_Shelf *cfg;
};
EAPI int e_shelf_init(void);