From: Andrea Zagli Date: Wed, 27 May 2020 18:41:23 +0000 (+0200) Subject: Added ZakFormElementFilter::get_xml. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=02a4ae3430b60baa5f8e60578de0c066f2041c3f;p=zakform%2Flibzakform Added ZakFormElementFilter::get_xml. --- diff --git a/src/formelement.c b/src/formelement.c index ca0326e..f806cc9 100644 --- a/src/formelement.c +++ b/src/formelement.c @@ -1822,6 +1822,12 @@ xmlNode xmlNode *xroot; xmlNode *xnode; + GHashTable *ht; + + guint i; + + ZakFormElementPrivate *priv = zak_form_element_get_instance_private (element); + xroot = xmlNewNode (NULL, (xmlChar *)"element"); if (zak_form_element_get_name (element) != NULL) @@ -1860,20 +1866,23 @@ xmlNode xmlAddChild (xroot, xnode); } - GHashTable *ht; - ht = zak_form_element_get_format (element); if (ht != NULL) { GHashTableIter iter; gpointer key; gpointer value; + gboolean first; - xnode = xmlNewNode (NULL, (xmlChar *)"format"); - + first = TRUE; g_hash_table_iter_init (&iter, ht); while (g_hash_table_iter_next (&iter, &key, &value)) { + if (first) + { + xnode = xmlNewNode (NULL, (xmlChar *)"format"); + first = FALSE; + } if (g_strcmp0 (key, "content") == 0) { xmlNodeSetContent (xnode, (xmlChar *)value); @@ -1920,5 +1929,11 @@ xmlNode ZAK_FORM_ELEMENT_GET_CLASS (element)->get_xml (element, xroot, version); } + for (i = 0; i < priv->pa_filters->len; i++) + { + xnode = zak_form_element_filter_get_xml ((ZakFormElementFilter *)g_ptr_array_index (priv->pa_filters, i), version); + xmlAddChild (xroot, xnode); + } + return xroot; } diff --git a/src/formelementfilter.c b/src/formelementfilter.c index 43e5823..7fa8186 100644 --- a/src/formelementfilter.c +++ b/src/formelementfilter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -81,6 +81,7 @@ static void zak_form_element_filter_init (ZakFormElementFilter *zak_form_element_filter) { ZakFormElementFilterPrivate *priv = zak_form_element_filter_get_instance_private (zak_form_element_filter); + } gboolean @@ -123,6 +124,7 @@ zak_form_element_filter_set_id (ZakFormElementFilter *filter, { ZakFormElementFilterPrivate *priv = zak_form_element_filter_get_instance_private (filter); + g_free (priv->id); if (id == NULL) { priv->id = g_strdup (""); @@ -195,6 +197,34 @@ zak_form_element_filter_set_enabled (ZakFormElementFilter *filter, gboolean enab priv->enabled = enabled; } +/** + * zak_form_element_filter_get_xml + * @filter: + * @version: not used. + * + * Returns: the xml for the filter. + */ +xmlNode +*zak_form_element_filter_get_xml (ZakFormElementFilter *filter, const gchar *version) +{ + xmlNode *xnode; + + xnode = xmlNewNode (NULL, (xmlChar *)"filter"); + + if (zak_form_element_filter_get_id (filter) != NULL + && g_strcmp0 (zak_form_element_filter_get_id (filter), "") != 0) + { + xmlSetProp (xnode, (const xmlChar *)"id", (xmlChar *)zak_form_element_filter_get_id (filter)); + } + + if (ZAK_FORM_ELEMENT_FILTER_GET_CLASS (filter)->get_xml!= NULL) + { + ZAK_FORM_ELEMENT_FILTER_GET_CLASS (filter)->get_xml (filter, version, xnode); + } + + return xnode; +} + /* PRIVATE */ static void zak_form_element_filter_set_property (GObject *object, diff --git a/src/formelementfilter.h b/src/formelementfilter.h index 468c74a..35ff256 100644 --- a/src/formelementfilter.h +++ b/src/formelementfilter.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -36,6 +36,8 @@ struct _ZakFormElementFilterClass gboolean (*xml_parsing) (ZakFormElementFilter *filter, xmlNode *xnode); gchar *(*filter) (ZakFormElementFilter *self, const gchar *value); + + void (*get_xml) (ZakFormElementFilter *self, const gchar *version, xmlNode *xnode); }; gboolean zak_form_element_filter_xml_parsing (ZakFormElementFilter *filter, xmlNode *xnode); @@ -48,6 +50,8 @@ gchar *zak_form_element_filter_get_id (ZakFormElementFilter *filter); gboolean zak_form_element_filter_get_enabled (ZakFormElementFilter *filter); void zak_form_element_filter_set_enabled (ZakFormElementFilter *filter, gboolean enabled); +xmlNode *zak_form_element_filter_get_xml (ZakFormElementFilter *filter, const gchar *version); + G_END_DECLS diff --git a/src/formelementfilterluc.c b/src/formelementfilterluc.c index ee9d928..9e87073 100644 --- a/src/formelementfilterluc.c +++ b/src/formelementfilterluc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -44,6 +44,7 @@ static void zak_form_element_filter_luc_finalize (GObject *gobject); static gboolean zak_form_element_filter_luc_xml_parsing (ZakFormElementFilter *filter, xmlNode *xnode); static gchar *zak_form_element_filter_luc_filter (ZakFormElementFilter *filter_luc, const gchar *value); +static void zak_form_element_filter_luc_get_xml (ZakFormElementFilter *filter, const gchar *version, xmlNode *xnode); enum { @@ -82,6 +83,7 @@ zak_form_element_filter_luc_class_init (ZakFormElementFilterLucClass *class) parent_class->xml_parsing = zak_form_element_filter_luc_xml_parsing; parent_class->filter = zak_form_element_filter_luc_filter; + parent_class->get_xml = zak_form_element_filter_luc_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormElementFilterLucPrivate)); } @@ -244,3 +246,27 @@ static gchar return ret; } + +static void +zak_form_element_filter_luc_get_xml (ZakFormElementFilter *filter, const gchar *version, xmlNode *xnode) +{ + ZakFormElementFilterLuc *zak_form_element = ZAK_FORM_ELEMENT_FILTER_LUC (filter); + ZakFormElementFilterLucPrivate *priv = ZAK_FORM_ELEMENT_FILTER_LUC_GET_PRIVATE (zak_form_element); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_element_filter_luc"); + + switch (priv->type) + { + case LOWER: + xmlNodeSetContent (xnode, (xmlChar *)"lower"); + break; + + case UPPER: + xmlNodeSetContent (xnode, (xmlChar *)"upper"); + break; + + case CAMEL: + xmlNodeSetContent (xnode, (xmlChar *)"camel"); + break; + } +} diff --git a/src/formelementfiltertrim.c b/src/formelementfiltertrim.c index 1a891a8..e38ebf6 100644 --- a/src/formelementfiltertrim.c +++ b/src/formelementfiltertrim.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -40,6 +40,7 @@ static void zak_form_element_filter_trim_finalize (GObject *gobject); static gboolean zak_form_element_filter_trim_xml_parsing (ZakFormElementFilter *filter, xmlNode *xnode); static gchar *zak_form_element_filter_trim_filter (ZakFormElementFilter *filter_trim, const gchar *value); +static void zak_form_element_filter_trim_get_xml (ZakFormElementFilter *filter, const gchar *version, xmlNode *xnode); struct _ZakFormElementFilterTrim { @@ -71,6 +72,7 @@ zak_form_element_filter_trim_class_init (ZakFormElementFilterTrimClass *class) parent_class->xml_parsing = zak_form_element_filter_trim_xml_parsing; parent_class->filter = zak_form_element_filter_trim_filter; + parent_class->get_xml = zak_form_element_filter_trim_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormElementFilterTrimPrivate)); } @@ -187,3 +189,12 @@ static gchar return ret; } + +static void +zak_form_element_filter_trim_get_xml (ZakFormElementFilter *filter, const gchar *version, xmlNode *xnode) +{ + ZakFormElementFilterTrim *zak_form_element = ZAK_FORM_ELEMENT_FILTER_TRIM (filter); + ZakFormElementFilterTrimPrivate *priv = ZAK_FORM_ELEMENT_FILTER_TRIM_GET_PRIVATE (zak_form_element); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_element_filter_trim"); +}