QGIS/src/gui/qgsfieldvalidator.h
Alessandro Pasotti cc1625c83e [bugfix][attrtable] Convert comma to dot for floating point input
This fixes an unreported bug that without detecting an
invalid input when using a comma as a decimal separator
silently converts the entered value to NULL.

Since locale support in QGIS is in its early stages
we convert commas to dots within the validator,
this is common practice in almost all web applications
where you can enter a comma instead of a dot and
the conversion appears while you digit.

This comes with brand new tests for QgsFieldValidator.

Bonus: small fix in sipify.
2018-01-31 12:50:14 +01:00

60 lines
2.0 KiB
C++

/***************************************************************************
qgsfieldvalidator.h - description
-------------------
begin : March 2011
copyright : (C) 2011 by SunilRajKiran-kCube
email : sunilraj.kiran@kcubeconsulting.com
adapted version of QValidator for QgsField
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSFIELDVALIDATOR_H
#define QGSFIELDVALIDATOR_H
#include <QValidator>
#include <QVariant>
#include <QSettings>
#include "qgsfields.h"
#include "qgis_gui.h"
/**
* \ingroup gui
* \class QgsFieldValidator
*/
class GUI_EXPORT QgsFieldValidator : public QValidator
{
Q_OBJECT
public:
QgsFieldValidator( QObject *parent, const QgsField &field, const QString &defaultValue, const QString &dateFormat = "yyyy-MM-dd" );
~QgsFieldValidator() override;
State validate( QString &s SIP_CONSTRAINED SIP_INOUT, int &i SIP_INOUT ) const override;
void fixup( QString &s SIP_CONSTRAINED ) const override;
QString dateFormat() const { return mDateFormat; }
private:
// Disables copy constructing
Q_DISABLE_COPY( QgsFieldValidator )
QValidator *mValidator = nullptr;
QgsField mField;
QString mNullValue;
QString mDefaultValue;
QString mDateFormat;
};
// clazy:excludeall=qstring-allocations
#endif // QGSFIELDVALIDATOR_H