Пример #1
0
gboolean
purple_request_fields_all_required_filled(const PurpleRequestFields *fields)
{
	GList *l;

	g_return_val_if_fail(fields != NULL, FALSE);

	for (l = fields->required_fields; l != NULL; l = l->next)
	{
		PurpleRequestField *field = (PurpleRequestField *)l->data;

		switch (purple_request_field_get_type(field))
		{
			case PURPLE_REQUEST_FIELD_STRING:
				if (purple_request_field_string_get_value(field) == NULL ||
				    *(purple_request_field_string_get_value(field)) == '\0')
					return FALSE;

				break;

			default:
				break;
		}
	}

	return TRUE;
}
Пример #2
0
void Request::FieldsDialog::StringField::OnActivate(CppConsUI::Button& activator)
{
    CppConsUI::InputDialog *dialog
        = new CppConsUI::InputDialog(purple_request_field_get_label(field),
                                     purple_request_field_string_get_value(field));
    dialog->signal_response.connect(sigc::mem_fun(this,
                                    &StringField::ResponseHandler));
    dialog->Show();
}
Пример #3
0
void finch_request_save_in_prefs(gpointer null, PurpleRequestFields *allfields)
{
	GList *list;
	for (list = purple_request_fields_get_groups(allfields); list; list = list->next) {
		PurpleRequestFieldGroup *group = list->data;
		GList *fields = purple_request_field_group_get_fields(group);
		
		for (; fields ; fields = fields->next) {
			PurpleRequestField *field = fields->data;
			PurpleRequestFieldType type = purple_request_field_get_type(field);
			PurplePrefType pt;
			gpointer val = NULL;
			const char *id = purple_request_field_get_id(field);

			switch (type) {
				case PURPLE_REQUEST_FIELD_LIST:
					val = purple_request_field_list_get_selected(field)->data;
					break;
				case PURPLE_REQUEST_FIELD_BOOLEAN:
					val = GINT_TO_POINTER(purple_request_field_bool_get_value(field));
					break;
				case PURPLE_REQUEST_FIELD_INTEGER:
					val = GINT_TO_POINTER(purple_request_field_int_get_value(field));
					break;
				case PURPLE_REQUEST_FIELD_STRING:
					val = (gpointer)purple_request_field_string_get_value(field);
					break;
				default:
					break;
			}

			pt = purple_prefs_get_type(id);
			switch (pt) {
				case PURPLE_PREF_INT:
				{
					long int tmp = GPOINTER_TO_INT(val);
					if (type == PURPLE_REQUEST_FIELD_LIST) /* Lists always return string */
						sscanf(val, "%ld", &tmp);
					purple_prefs_set_int(id, (gint)tmp);
					break;
				}
				case PURPLE_PREF_BOOLEAN:
					purple_prefs_set_bool(id, GPOINTER_TO_INT(val));
					break;
				case PURPLE_PREF_STRING:
					purple_prefs_set_string(id, val);
					break;
				default:
					break;
			}
		}
	}
}
Пример #4
0
const char *
purple_request_fields_get_string(const PurpleRequestFields *fields, const char *id)
{
	PurpleRequestField *field;

	g_return_val_if_fail(fields != NULL, NULL);
	g_return_val_if_fail(id     != NULL, NULL);

	if ((field = purple_request_fields_get_field(fields, id)) == NULL)
		return NULL;

	return purple_request_field_string_get_value(field);
}
Пример #5
0
void Request::FieldsDialog::StringField::ResponseHandler(
    CppConsUI::InputDialog& activator,
    CppConsUI::AbstractDialog::ResponseType response)
{
    switch (response) {
    case CppConsUI::AbstractDialog::RESPONSE_OK:
        purple_request_field_string_set_value(field, activator.GetText());
        SetValue(purple_request_field_string_get_value(field));
        break;
    default:
        break;
    }
}
Пример #6
0
gboolean ggp_validator_password_equal(PurpleRequestField *field, gchar **errmsg,
	void *field2_p)
{
	const char *value1, *value2;
	PurpleRequestField *field2 = field2_p;

	g_return_val_if_fail(field != NULL, FALSE);
	g_return_val_if_fail(field2 != NULL, FALSE);
	g_return_val_if_fail(purple_request_field_get_field_type(field) ==
		PURPLE_REQUEST_FIELD_STRING, FALSE);
	g_return_val_if_fail(purple_request_field_get_field_type(field2) ==
		PURPLE_REQUEST_FIELD_STRING, FALSE);

	value1 = purple_request_field_string_get_value(field);
	value2 = purple_request_field_string_get_value(field2);

	if (g_strcmp0(value1, value2) == 0)
		return TRUE;

	if (errmsg)
		*errmsg = g_strdup(_("Passwords do not match"));
	return FALSE;
}
Пример #7
0
gboolean ggp_validator_password(PurpleRequestField *field, gchar **errmsg,
	void *user_data)
{
	const char *value;

	g_return_val_if_fail(field != NULL, FALSE);
	g_return_val_if_fail(purple_request_field_get_field_type(field) ==
		PURPLE_REQUEST_FIELD_STRING, FALSE);

	value = purple_request_field_string_get_value(field);

	if (value != NULL && ggp_password_validate(value))
		return TRUE;

	if (errmsg)
		*errmsg = g_strdup(_("Password can contain 6-15 alphanumeric characters"));
	return FALSE;
}
Пример #8
0
gboolean ggp_validator_token(PurpleRequestField *field, gchar **errmsg,
	void *token)
{
	const char *value;

	g_return_val_if_fail(field != NULL, FALSE);
	g_return_val_if_fail(purple_request_field_get_field_type(field) ==
		PURPLE_REQUEST_FIELD_STRING, FALSE);

	value = purple_request_field_string_get_value(field);

	if (value != NULL && ggp_account_token_validate(token, value))
		return TRUE;

	if (errmsg)
		*errmsg = g_strdup(_("CAPTCHA validation failed"));
	return FALSE;
}
Пример #9
0
Request::FieldsDialog::StringField::StringField(PurpleRequestField *field)
    : Button(FLAG_VALUE), field(field)
{
    g_assert(field);

    if (purple_request_field_string_is_masked(field)) {
        // TODO
    }

    char *text = g_strdup_printf("%s%s",
                                 purple_request_field_is_required(field) ? "*" : "",
                                 purple_request_field_get_label(field));
    SetText(text);
    g_free(text);

    SetValue(purple_request_field_string_get_value(field));
    signal_activate.connect(sigc::mem_fun(this, &StringField::OnActivate));
}
Пример #10
0
static void plainprpl_change_address_ok(void *ptr, PurpleRequestFields *fields)
{
	PurpleBuddy *buddy;
	plain_buddy_state *bstate;
	plain_plugin_state *pstate;
	PurpleRequestField *field;

	buddy = (PurpleBuddy *) ptr;
	bstate = purple_buddy_get_protocol_data(buddy);
	pstate = purple_connection_get_protocol_data(buddy->account->gc);

	field = purple_request_fields_get_field(fields, "addr_str");
	const char *addr_str = purple_request_field_string_get_value(field);

	purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "addr_str", addr_str);
	//resolve address again
	bstate->state = BUDDY_STATE_RESOLVE;
	bstate->state_step = 0;
	bstate->state_next = 0;
	bstate->time_recv = 0;
	bstate->time_send = 0;
	//handle now
	pstate->time_next = 0;
}