From 2cddb1cd3af363e4953248db5e7a5b0f0158a8de Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Wed, 6 Jan 2021 10:30:15 +0100 Subject: [PATCH] Added element for error message to FormValidatorCompareNumber. --- src/formvalidatorcomparedate.c | 10 ++++++ src/formvalidatorcomparenumber.c | 55 ++++++++++++++++++++++++++++++++ src/formvalidatorcomparenumber.h | 3 ++ 3 files changed, 68 insertions(+) diff --git a/src/formvalidatorcomparedate.c b/src/formvalidatorcomparedate.c index 83a1965..977fd62 100644 --- a/src/formvalidatorcomparedate.c +++ b/src/formvalidatorcomparedate.c @@ -144,6 +144,10 @@ zak_form_validator_compare_date_xml_parsing (ZakFormValidator *validator, xmlNod g_free (prop); g_free (prop2); + prop = (gchar *)xmlGetProp (xnode, (const xmlChar *)"element_message"); + zak_form_validator_compare_date_set_element_message ((ZakFormValidatorCompareDate *)validator, (ZakFormForm *)form, prop); + g_free (prop); + return TRUE; } @@ -455,6 +459,12 @@ zak_form_validator_compare_date_validate (ZakFormValidator *validator) zak_form_get_compare_type_stringify (priv->type), zak_form_element_get_long_name (priv->v2)); zak_form_validator_set_message (validator, msg); + + if (priv->message != NULL) + { + zak_form_element_add_message (priv->message, msg); + } + g_free (msg); } diff --git a/src/formvalidatorcomparenumber.c b/src/formvalidatorcomparenumber.c index f5d37db..007a8af 100644 --- a/src/formvalidatorcomparenumber.c +++ b/src/formvalidatorcomparenumber.c @@ -62,6 +62,8 @@ struct _ZakFormValidatorCompareNumberPrivate ZakFormElement *v1; ZakFormElement *v2; + + ZakFormElement *message; }; G_DEFINE_TYPE_WITH_PRIVATE (ZakFormValidatorCompareNumber, zak_form_validator_compare_number, ZAK_FORM_TYPE_VALIDATOR) @@ -89,6 +91,7 @@ zak_form_validator_compare_number_init (ZakFormValidatorCompareNumber *validator priv->v1 = NULL; priv->v2 = NULL; + priv->message = NULL; } /** @@ -132,6 +135,10 @@ zak_form_validator_compare_number_xml_parsing (ZakFormValidator *validator, xmlN zak_form_validator_compare_number_set_element2 ((ZakFormValidatorCompareNumber *)validator, (ZakFormForm *)form, prop); g_free (prop); + prop = (gchar *)xmlGetProp (xnode, (const xmlChar *)"element_message"); + zak_form_validator_compare_number_set_element_message ((ZakFormValidatorCompareNumber *)validator, (ZakFormForm *)form, prop); + g_free (prop); + return TRUE; } @@ -244,6 +251,46 @@ const gchar } } +/** + * zak_form_validator_compare_number_set_element_message: + * @validator: + * @element: + * + * Sets the validator element for error message. + */ +void +zak_form_validator_compare_number_set_element_message (ZakFormValidatorCompareNumber *validator, ZakFormForm *form, const gchar *element) +{ + ZakFormValidatorCompareNumberPrivate *priv = zak_form_validator_compare_number_get_instance_private (validator); + + priv->message = zak_form_form_get_element_by_id (form, element); + if (!ZAK_FORM_IS_ELEMENT (priv->message)) + { + g_warning ("Validator compare: element «%s» isn't a ZakFormElement.", element); + } +} + +/** + * zak_form_validator_compare_number_get_element_message: + * @validator: + * + * Returns: the validator element name for error message. + */ +const gchar +*zak_form_validator_compare_number_get_element_message (ZakFormValidatorCompareNumber *validator) +{ + ZakFormValidatorCompareNumberPrivate *priv = zak_form_validator_compare_number_get_instance_private (validator); + + if (ZAK_FORM_IS_ELEMENT (priv->message)) + { + return zak_form_element_get_name (priv->message); + } + else + { + return ""; + } +} + /* PRIVATE */ static void zak_form_validator_compare_number_set_property (GObject *object, @@ -354,6 +401,12 @@ zak_form_validator_compare_number_validate (ZakFormValidator *validator) zak_form_get_compare_type_stringify (priv->type), zak_form_element_get_long_name (priv->v2)); zak_form_validator_set_message (validator, msg); + + if (priv->message != NULL) + { + zak_form_element_add_message (priv->message, msg); + } + g_free (msg); } } @@ -374,4 +427,6 @@ zak_form_validator_compare_number_get_xml (ZakFormValidator *validator, xmlNode 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)); + + xmlSetProp (xnode, (const xmlChar *)"element_message", (const xmlChar *)zak_form_validator_compare_number_get_element_message (validator_compare_number)); } diff --git a/src/formvalidatorcomparenumber.h b/src/formvalidatorcomparenumber.h index 441954d..d43c119 100644 --- a/src/formvalidatorcomparenumber.h +++ b/src/formvalidatorcomparenumber.h @@ -45,6 +45,9 @@ const gchar *zak_form_validator_compare_number_get_element1 (ZakFormValidatorCom void zak_form_validator_compare_number_set_element2 (ZakFormValidatorCompareNumber *validator, ZakFormForm *form, const gchar *element2); const gchar *zak_form_validator_compare_number_get_element2 (ZakFormValidatorCompareNumber *validator); +void zak_form_validator_compare_number_set_element_message (ZakFormValidatorCompareNumber *validator, ZakFormForm *form, const gchar *element); +const gchar *zak_form_validator_compare_number_get_element_message (ZakFormValidatorCompareNumber *validator); + G_END_DECLS -- 2.49.0