]> saetta.ns0.it Git - zakform/libzakform/commitdiff
Added ZakFormElementFilter::get_xml.
authorAndrea Zagli <azagli@libero.it>
Wed, 27 May 2020 18:41:23 +0000 (20:41 +0200)
committerAndrea Zagli <azagli@libero.it>
Wed, 27 May 2020 18:41:23 +0000 (20:41 +0200)
src/formelement.c
src/formelementfilter.c
src/formelementfilter.h
src/formelementfilterluc.c
src/formelementfiltertrim.c

index ca0326e1c11502f976567b729d378fe3ba535326..f806cc94115672647e1a8dc14747a500511c988b 100644 (file)
@@ -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;
 }
index 43e58239eb65742f939d4ba6c10026bc50717e33..7fa81862f536623975dbddeaff8736a5e0f6c0a5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2020 Andrea Zagli <azagli@libero.it>
  *
  * 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,
index 468c74aed183588fd474a023bc5335571d11532e..35ff2560180dc86362d05a39f997088385b0c9b8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2020 Andrea Zagli <azagli@libero.it>
  *
  * 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
 
index ee9d928288436fc46c54ee0ae68d1d03c6db2e3d..9e87073d8a09a170898c24830e3ddc1b2559dac6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2020 Andrea Zagli <azagli@libero.it>
  *
  * 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;
+               }
+}
index 1a891a86313f6f3e54936085f8f0563b4ae42411..e38ebf6ea04ea92a618ca1bc5dc9e1506f99290d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2020 Andrea Zagli <azagli@libero.it>
  *
  * 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");
+}