EAPI Eina_Bool
edje_edit_group_data_add(Evas_Object *obj, const char *key, const char *value)
{
+ Edje_String *es;
+
GET_ED_OR_RETURN(EINA_FALSE);
if (!key || !ed->file || !ed->collection)
if (eina_hash_find(ed->collection->data, key))
return EINA_FALSE;
- return eina_hash_add(ed->collection->data, key, eina_stringshare_add(value));
+ es = calloc(1, sizeof(Edje_String));
+ if (!es)
+ return EINA_FALSE;
+ es->str = eina_stringshare_add(value);
+
+ if (!eina_hash_add(ed->collection->data, key, es))
+ {
+ eina_stringshare_del(es->str);
+ free(es);
+ return EINA_FALSE;
+ }
+ return EINA_TRUE;
}
EAPI Eina_Bool
edje_edit_data_add(Evas_Object *obj, const char *itemname, const char *value)
{
+ Edje_String *es;
+
GET_ED_OR_RETURN(EINA_FALSE);
if (!itemname || !ed->file)
if (eina_hash_find(ed->file->data, itemname))
return EINA_FALSE;
- eina_hash_add(ed->file->data, itemname, eina_stringshare_add(value));
+ es = calloc(1, sizeof(Edje_String));
+ if (!es)
+ return EINA_FALSE;
+ es->str = eina_stringshare_add(value);
+ if (!eina_hash_add(ed->file->data, itemname, es))
+ {
+ eina_stringshare_del(es->str);
+ free(es);
+ return EINA_FALSE;
+ }
return EINA_TRUE;
}
EAPI Eina_Bool
edje_edit_group_data_del(Evas_Object *obj, const char *key)
{
- const char *value;
+ Edje_String *value;
GET_ED_OR_RETURN(EINA_FALSE);
value = eina_hash_find(ed->collection->data, key);
if (!value) return EINA_FALSE;
- _edje_if_string_free(ed, value);
- return eina_hash_del(ed->collection->data, key, value);
+ eina_hash_del(ed->collection->data, key, value);
+ _edje_if_string_free(ed, value->str);
+ free(value);
+
+ return EINA_TRUE;
}
EAPI Eina_Bool
edje_edit_data_del(Evas_Object *obj, const char *itemname)
{
+ Edje_String *value;
+
GET_ED_OR_RETURN(EINA_FALSE);
if (!itemname || !ed->file || !ed->file->data)
return 0;
- return eina_hash_del(ed->file->data, itemname, NULL);
+ value = eina_hash_find(ed->file->data, itemname);
+ if (!value)
+ return EINA_FALSE;
+
+ eina_hash_del(ed->file->data, itemname, value);
+ _edje_if_string_free(ed, value->str);
+ free(value);
+
+ return EINA_TRUE;
}
EAPI const char *
edje_edit_group_data_value_get(Evas_Object * obj, char *key)
{
- const char *value;
+ Edje_String *value;
GET_ED_OR_RETURN(NULL);
return NULL;
value = eina_hash_find(ed->collection->data, key);
- if (value) value = eina_stringshare_add(value);
- return value;
+ if (!value)
+ return NULL;
+
+ return eina_stringshare_add(edje_string_get(value));
}
EAPI const char *
edje_edit_data_value_get(Evas_Object * obj, char *itemname)
{
+ Edje_String *value;
+
GET_ED_OR_RETURN(NULL);
if (!itemname || !ed->file || !ed->file->data)
return NULL;
- return eina_stringshare_add(eina_hash_find(ed->file->data, itemname));
+ value = eina_hash_find(ed->file->data, itemname);
+ if (!value)
+ return NULL;
+
+ return eina_stringshare_add(edje_string_get(value));
}
EAPI Eina_Bool
edje_edit_group_data_value_set(Evas_Object *obj, const char *key, const char *value)
{
- const char *old_value;
+ Edje_String *es;
GET_ED_OR_RETURN(EINA_FALSE);
if (!key || !value || !ed->file || !ed->collection)
return EINA_FALSE;
- old_value = eina_hash_find(ed->collection->data, key);
- if (old_value)
+ es = eina_hash_find(ed->collection->data, key);
+ if (es)
{
- value = eina_stringshare_add(value);
- eina_hash_modify(ed->collection->data, key, value);
- _edje_if_string_free(ed, old_value);
+ _edje_if_string_free(ed, es->str);
+ es->str = eina_stringshare_add(value);
+ es->id = 0;
return EINA_TRUE;
}
EAPI Eina_Bool
edje_edit_data_value_set(Evas_Object *obj, const char *itemname, const char *value)
{
- const char *old;
+ Edje_String *es;
GET_ED_OR_RETURN(EINA_FALSE);
if (!itemname || !value || !ed->file || !ed->file->data)
return EINA_FALSE;
- old = eina_hash_find(ed->file->data, itemname);
- if (old)
+ es = eina_hash_find(ed->file->data, itemname);
+ if (es)
{
- value = eina_stringshare_add(value);
- eina_hash_modify(ed->file->data, itemname, value);
- _edje_if_string_free(ed, old);
+ _edje_if_string_free(ed, es->str);
+ es->str = eina_stringshare_add(value);
+ es->id = 0;
return EINA_TRUE;
}
return EINA_FALSE;
EAPI Eina_Bool
edje_edit_group_data_name_set(Evas_Object *obj, const char *key, const char *new_key)
{
- const char *value;
-
GET_ED_OR_RETURN(EINA_FALSE);
if (!key || !new_key || !ed->file || !ed->collection) {
return EINA_FALSE;
}
- value = eina_hash_find(ed->collection->data, key);
- if (value)
- {
- eina_hash_del(ed->collection->data, key, value);
- return eina_hash_add(ed->collection->data, new_key, value);
- }
-
- return EINA_FALSE;
+ return eina_hash_move(ed->collection->data, key, new_key);
}
EAPI Eina_Bool
edje_edit_data_name_set(Evas_Object *obj, const char *itemname, const char *newname)
{
- const char *value;
-
GET_ED_OR_RETURN(EINA_FALSE);
if (!itemname || !newname || !ed->file || !ed->file->data)
return EINA_FALSE;
- /* Get value and prevent it's destruction */
- value = eina_hash_find(ed->file->data, itemname);
- value = eina_stringshare_add(value);
- if (!value) return EINA_FALSE;
-
- eina_hash_del(ed->file->data, itemname, NULL);
- eina_hash_add(ed->file->data, itemname, value);
-
- return EINA_TRUE;
+ return eina_hash_move(ed->file->data, itemname, newname);
}
/***********************/