From 91577bd0a9f13e94c35ac6895b9909f2df7f91c8 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Thu, 28 May 2020 09:12:45 +0200 Subject: [PATCH] Added ZakFormValidator::get_xml (not for composite). --- src/formvalidator.c | 42 +++++++++++++++++++++++++++++++- src/formvalidator.h | 7 +++++- src/formvalidatorcompare.c | 17 +++++++++++++ src/formvalidatorcomparedate.c | 21 ++++++++++++++++ src/formvalidatorcomparenumber.c | 17 +++++++++++++ 5 files changed, 102 insertions(+), 2 deletions(-) diff --git a/src/formvalidator.c b/src/formvalidator.c index 24c1f8b..0b15726 100644 --- a/src/formvalidator.c +++ b/src/formvalidator.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 @@ -253,6 +253,46 @@ zak_form_validator_set_enabled (ZakFormValidator *validator, gboolean enabled) priv->enabled = enabled; } +/** + * zak_form_validator_get_xml + * @validator: + * @version: not used. + * + * Returns: the xml for the filter. + */ +xmlNode +*zak_form_validator_get_xml (ZakFormValidator *validator, const gchar *version) +{ + xmlNode *xnode; + + xnode = xmlNewNode (NULL, (xmlChar *)"validator"); + + if (zak_form_validator_get_id (validator) != NULL + && g_strcmp0 (zak_form_validator_get_id (validator), "") != 0) + { + xmlSetProp (xnode, (const xmlChar *)"id", (xmlChar *)zak_form_validator_get_id (validator)); + } + + if (!zak_form_validator_get_enabled (validator)) + { + xmlSetProp (xnode, (const xmlChar *)"disabled", (xmlChar *)"disabled"); + } + + if (zak_form_validator_get_message (validator) != NULL + && g_strcmp0 (zak_form_validator_get_id (validator), "") != 0 + && g_strcmp0 (zak_form_validator_get_id (validator), _("Invalid value")) != 0) + { + xmlSetProp (xnode, (const xmlChar *)"id", (xmlChar *)zak_form_validator_get_id (validator)); + } + + if (ZAK_FORM_VALIDATOR_GET_CLASS (validator)->get_xml!= NULL) + { + ZAK_FORM_VALIDATOR_GET_CLASS (validator)->get_xml (validator, version, xnode); + } + + return xnode; +} + /* PRIVATE */ static void zak_form_validator_set_property (GObject *object, diff --git a/src/formvalidator.h b/src/formvalidator.h index bdc01a1..18ab1a7 100644 --- a/src/formvalidator.h +++ b/src/formvalidator.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 @@ -37,6 +37,8 @@ struct _ZakFormValidatorClass gboolean (*xml_parsing) (ZakFormValidator *self, xmlNode *xnode, gpointer zakform); gboolean (*validate) (ZakFormValidator *self); + + void (*get_xml) (ZakFormValidator *self, const gchar *version, xmlNode *xnode); }; gboolean zak_form_validator_xml_parsing (ZakFormValidator *validator, xmlNode *xnode, gpointer zakform); @@ -53,6 +55,9 @@ gchar *zak_form_validator_get_message (ZakFormValidator *validator); gboolean zak_form_validator_get_enabled (ZakFormValidator *validator); void zak_form_validator_set_enabled (ZakFormValidator *validator, gboolean enabled); +xmlNode *zak_form_validator_get_xml (ZakFormValidator *validator, const gchar *version); + + G_END_DECLS diff --git a/src/formvalidatorcompare.c b/src/formvalidatorcompare.c index c92afd9..d847fea 100644 --- a/src/formvalidatorcompare.c +++ b/src/formvalidatorcompare.c @@ -45,6 +45,7 @@ static void zak_form_validator_compare_finalize (GObject *gobject); static gboolean zak_form_validator_compare_xml_parsing (ZakFormValidator *validator, xmlNode *xnode, gpointer form); static gboolean zak_form_validator_compare_validate (ZakFormValidator *validator_notempty); +static void zak_form_validator_compare_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode); struct _ZakFormValidatorCompare { @@ -79,6 +80,7 @@ zak_form_validator_compare_class_init (ZakFormValidatorCompareClass *class) parent_class->xml_parsing = zak_form_validator_compare_xml_parsing; parent_class->validate = zak_form_validator_compare_validate; + parent_class->get_xml = zak_form_validator_compare_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormValidatorComparePrivate)); } @@ -360,3 +362,18 @@ zak_form_validator_compare_validate (ZakFormValidator *validator) return ret; } + +static void +zak_form_validator_compare_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode) +{ + ZakFormValidatorCompare *validator_compare = ZAK_FORM_VALIDATOR_COMPARE (validator); + ZakFormValidatorComparePrivate *priv = ZAK_FORM_VALIDATOR_COMPARE_GET_PRIVATE (validator_compare); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_validator_compare"); + + xmlSetProp (xnode, (const xmlChar *)"type_comp", (const xmlChar *)zak_form_validator_compare_get_compare_type (validator_compare)); + + xmlSetProp (xnode, (const xmlChar *)"element1", (const xmlChar *)zak_form_validator_compare_get_element1 (validator_compare)); + + xmlSetProp (xnode, (const xmlChar *)"element2", (const xmlChar *)zak_form_validator_compare_get_element2 (validator_compare)); +} diff --git a/src/formvalidatorcomparedate.c b/src/formvalidatorcomparedate.c index 6e349f8..3ff8be6 100644 --- a/src/formvalidatorcomparedate.c +++ b/src/formvalidatorcomparedate.c @@ -46,6 +46,7 @@ static void zak_form_validator_compare_date_finalize (GObject *gobject); static gboolean zak_form_validator_compare_date_xml_parsing (ZakFormValidator *validator, xmlNode *xnode, gpointer form); static gboolean zak_form_validator_compare_date_validate (ZakFormValidator *validator_notempty); +static void zak_form_validator_compare_date_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode); struct _ZakFormValidatorCompareDate { @@ -83,6 +84,7 @@ zak_form_validator_compare_date_class_init (ZakFormValidatorCompareDateClass *cl parent_class->xml_parsing = zak_form_validator_compare_date_xml_parsing; parent_class->validate = zak_form_validator_compare_date_validate; + parent_class->get_xml = zak_form_validator_compare_date_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormValidatorCompareDatePrivate)); } @@ -430,3 +432,22 @@ zak_form_validator_compare_date_validate (ZakFormValidator *validator) return ret; } + +static void +zak_form_validator_compare_date_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode) +{ + ZakFormValidatorCompareDate *validator_compare_date = ZAK_FORM_VALIDATOR_COMPARE_DATE (validator_compare_date); + ZakFormValidatorCompareDatePrivate *priv = ZAK_FORM_VALIDATOR_COMPARE_DATE_GET_PRIVATE (validator_compare_date); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_validator_compare_date"); + + xmlSetProp (xnode, (const xmlChar *)"type_comp", (const xmlChar *)zak_form_validator_compare_date_get_compare_type (validator_compare_date)); + + xmlSetProp (xnode, (const xmlChar *)"element1", (const xmlChar *)zak_form_validator_compare_date_get_element1 (validator_compare_date)); + + xmlSetProp (xnode, (const xmlChar *)"format1", (const xmlChar *)zak_form_validator_compare_date_get_element1_format (validator_compare_date)); + + xmlSetProp (xnode, (const xmlChar *)"element2", (const xmlChar *)zak_form_validator_compare_date_get_element2 (validator_compare_date)); + + xmlSetProp (xnode, (const xmlChar *)"format2", (const xmlChar *)zak_form_validator_compare_date_get_element2_format (validator_compare_date)); +} diff --git a/src/formvalidatorcomparenumber.c b/src/formvalidatorcomparenumber.c index f4dd7eb..e207f14 100644 --- a/src/formvalidatorcomparenumber.c +++ b/src/formvalidatorcomparenumber.c @@ -46,6 +46,7 @@ static void zak_form_validator_compare_number_finalize (GObject *gobject); static gboolean zak_form_validator_compare_number_xml_parsing (ZakFormValidator *validator, xmlNode *xnode, gpointer form); static gboolean zak_form_validator_compare_number_validate (ZakFormValidator *validator_notempty); +static void zak_form_validator_compare_number_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode); struct _ZakFormValidatorCompareNumber { @@ -80,6 +81,7 @@ zak_form_validator_compare_number_class_init (ZakFormValidatorCompareNumberClass parent_class->xml_parsing = zak_form_validator_compare_number_xml_parsing; parent_class->validate = zak_form_validator_compare_number_validate; + parent_class->get_xml = zak_form_validator_compare_number_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormValidatorCompareNumberPrivate)); } @@ -362,3 +364,18 @@ zak_form_validator_compare_number_validate (ZakFormValidator *validator) return ret; } + +static void +zak_form_validator_compare_number_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode) +{ + ZakFormValidatorCompareNumber *validator_compare_number = ZAK_FORM_VALIDATOR_COMPARE_NUMBER (validator_compare_number); + ZakFormValidatorCompareNumberPrivate *priv = ZAK_FORM_VALIDATOR_COMPARE_NUMBER_GET_PRIVATE (validator_compare_number); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_validator_compare_number"); + + xmlSetProp (xnode, (const xmlChar *)"type_comp", (const xmlChar *)zak_form_validator_compare_number_get_compare_type (validator_compare_number)); + + xmlSetProp (xnode, (const xmlChar *)"element1", (const xmlChar *)zak_form_validator_compare_number_get_element1 (validator_compare_number)); + + xmlSetProp (xnode, (const xmlChar *)"element2", (const xmlChar *)zak_form_validator_compare_number_get_element2 (validator_compare_number)); +} -- 2.49.0