summaryrefslogtreecommitdiff
path: root/libpurple/purplerequestfield.c
diff options
context:
space:
mode:
Diffstat (limited to 'libpurple/purplerequestfield.c')
-rw-r--r--libpurple/purplerequestfield.c205
1 files changed, 7 insertions, 198 deletions
diff --git a/libpurple/purplerequestfield.c b/libpurple/purplerequestfield.c
index 116cf2ba6a..e1dd34bf22 100644
--- a/libpurple/purplerequestfield.c
+++ b/libpurple/purplerequestfield.c
@@ -23,6 +23,7 @@
#include "glibcompat.h"
#include "request.h"
+#include "request/purplerequestfieldstring.h"
#include "debug.h"
#include "purplekeyvaluepair.h"
#include "purpleprivate.h"
@@ -41,13 +42,6 @@ typedef struct {
union {
struct {
- gboolean multiline;
- gboolean masked;
- char *default_value;
- char *value;
- } string;
-
- struct {
int default_value;
int value;
int lower_bound;
@@ -231,10 +225,7 @@ purple_request_field_finalize(GObject *obj) {
g_free(priv->type_hint);
g_free(priv->tooltip);
- if(priv->type == PURPLE_REQUEST_FIELD_STRING) {
- g_free(priv->u.string.default_value);
- g_free(priv->u.string.value);
- } else if(priv->type == PURPLE_REQUEST_FIELD_CHOICE) {
+ if(priv->type == PURPLE_REQUEST_FIELD_CHOICE) {
g_list_free_full(priv->u.choice.elements,
(GDestroyNotify)purple_key_value_pair_free);
} else if(priv->type == PURPLE_REQUEST_FIELD_LIST) {
@@ -587,14 +578,12 @@ gboolean
purple_request_field_is_filled(PurpleRequestField *field) {
g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD(field), FALSE);
- switch (purple_request_field_get_field_type(field))
- {
- case PURPLE_REQUEST_FIELD_STRING:
- return (purple_request_field_string_get_value(field) != NULL &&
- *(purple_request_field_string_get_value(field)) != '\0');
- default:
- return TRUE;
+ if(PURPLE_IS_REQUEST_FIELD_STRING(field)) {
+ PurpleRequestFieldString *sfield = PURPLE_REQUEST_FIELD_STRING(field);
+ return !purple_strempty(purple_request_field_string_get_value(sfield));
}
+
+ return TRUE;
}
void
@@ -684,117 +673,6 @@ purple_request_field_is_sensitive(PurpleRequestField *field)
}
PurpleRequestField *
-purple_request_field_string_new(const char *id, const char *text,
- const char *default_value, gboolean multiline)
-{
- PurpleRequestField *field;
- PurpleRequestFieldPrivate *priv = NULL;
-
- g_return_val_if_fail(id != NULL, NULL);
- g_return_val_if_fail(text != NULL, NULL);
-
- field = purple_request_field_new(id, text, PURPLE_REQUEST_FIELD_STRING);
- priv = purple_request_field_get_instance_private(field);
-
- priv->u.string.multiline = multiline;
-
- purple_request_field_string_set_default_value(field, default_value);
- purple_request_field_string_set_value(field, default_value);
-
- return field;
-}
-
-void
-purple_request_field_string_set_default_value(PurpleRequestField *field,
- const char *default_value)
-{
- PurpleRequestFieldPrivate *priv = NULL;
-
- g_return_if_fail(PURPLE_IS_REQUEST_FIELD(field));
-
- priv = purple_request_field_get_instance_private(field);
- g_return_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING);
-
- g_free(priv->u.string.default_value);
- priv->u.string.default_value = g_strdup(default_value);
-}
-
-void
-purple_request_field_string_set_value(PurpleRequestField *field, const char *value)
-{
- PurpleRequestFieldPrivate *priv = NULL;
-
- g_return_if_fail(PURPLE_IS_REQUEST_FIELD(field));
-
- priv = purple_request_field_get_instance_private(field);
- g_return_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING);
-
- g_free(priv->u.string.value);
- priv->u.string.value = g_strdup(value);
-}
-
-void
-purple_request_field_string_set_masked(PurpleRequestField *field, gboolean masked)
-{
- PurpleRequestFieldPrivate *priv = NULL;
-
- g_return_if_fail(PURPLE_IS_REQUEST_FIELD(field));
-
- priv = purple_request_field_get_instance_private(field);
- g_return_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING);
-
- priv->u.string.masked = masked;
-}
-
-const char *
-purple_request_field_string_get_default_value(PurpleRequestField *field) {
- PurpleRequestFieldPrivate *priv = NULL;
-
- g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD(field), NULL);
-
- priv = purple_request_field_get_instance_private(field);
- g_return_val_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING, NULL);
-
- return priv->u.string.default_value;
-}
-
-const char *
-purple_request_field_string_get_value(PurpleRequestField *field) {
- PurpleRequestFieldPrivate *priv = NULL;
-
- g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD(field), NULL);
-
- priv = purple_request_field_get_instance_private(field);
- g_return_val_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING, NULL);
-
- return priv->u.string.value;
-}
-
-gboolean
-purple_request_field_string_is_multiline(PurpleRequestField *field) {
- PurpleRequestFieldPrivate *priv = NULL;
-
- g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD(field), FALSE);
-
- priv = purple_request_field_get_instance_private(field);
- g_return_val_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING, FALSE);
-
- return priv->u.string.multiline;
-}
-
-gboolean
-purple_request_field_string_is_masked(PurpleRequestField *field) {
- PurpleRequestFieldPrivate *priv = NULL;
-
- g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD(field), FALSE);
-
- priv = purple_request_field_get_instance_private(field);
- g_return_val_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING, FALSE);
-
- return priv->u.string.masked;
-}
-
-PurpleRequestField *
purple_request_field_int_new(const char *id, const char *text,
int default_value, int lower_bound, int upper_bound)
{
@@ -1434,72 +1312,3 @@ purple_request_field_datasheet_get_sheet(PurpleRequestField *field)
return priv->u.datasheet.sheet;
}
-
-/* -- */
-
-gboolean
-purple_request_field_email_validator(PurpleRequestField *field, gchar **errmsg,
- G_GNUC_UNUSED gpointer user_data)
-{
- PurpleRequestFieldPrivate *priv = NULL;
- const char *value;
-
- g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD(field), FALSE);
-
- priv = purple_request_field_get_instance_private(field);
- g_return_val_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING, FALSE);
-
- value = purple_request_field_string_get_value(field);
-
- if (value != NULL && purple_email_is_valid(value))
- return TRUE;
-
- if (errmsg)
- *errmsg = g_strdup(_("Invalid email address"));
- return FALSE;
-}
-
-gboolean
-purple_request_field_alphanumeric_validator(PurpleRequestField *field,
- gchar **errmsg, void *allowed_characters)
-{
- PurpleRequestFieldPrivate *priv = NULL;
- const char *value;
- gchar invalid_char = '\0';
-
- g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD(field), FALSE);
-
- priv = purple_request_field_get_instance_private(field);
- g_return_val_if_fail(priv->type == PURPLE_REQUEST_FIELD_STRING, FALSE);
-
- value = purple_request_field_string_get_value(field);
-
- g_return_val_if_fail(value != NULL, FALSE);
-
- if (allowed_characters)
- {
- gchar *value_r = g_strdup(value);
- g_strcanon(value_r, allowed_characters, '\0');
- invalid_char = value[strlen(value_r)];
- g_free(value_r);
- }
- else
- {
- while (value)
- {
- if (!g_ascii_isalnum(*value))
- {
- invalid_char = *value;
- break;
- }
- value++;
- }
- }
- if (!invalid_char)
- return TRUE;
-
- if (errmsg)
- *errmsg = g_strdup_printf(_("Invalid character '%c'"),
- invalid_char);
- return FALSE;
-}