/**
 * \file
 * \author Thomas Fischer
 * \date   2011-01-24
 * \brief  Definition of the StrictIntValidator class.
 *
 * \copyright
 * Copyright (c) 2013, OpenGeoSys Community (http://www.opengeosys.org)
 *            Distributed under a Modified BSD License.
 *              See accompanying file LICENSE.txt or
 *              http://www.opengeosys.org/project/license

 */

#ifndef STRICTINTVALIDATOR_H_
#define STRICTINTVALIDATOR_H_

#include <QIntValidator>

/**
 * \brief A validator for an input field which only accepts integers.
 * Source code adapted from [Qt developer fac](http://developer.qt.nokia.com/faq/answer/i_can_still_insert_numbers_outside_the_range_specified_with_a_qdoublevalida)
 */
class StrictIntValidator : public QIntValidator
{
public:
	StrictIntValidator ( int min, int max, QObject* parent = 0) :
		QIntValidator( min, max, parent)
	{}

	QValidator::State validate(QString & input, int &pos) const
	{
		if (input.isEmpty()) return Intermediate;

		if (QIntValidator::validate(input, pos) != Acceptable)
			return Invalid;
		return Acceptable;
	}
};

#endif /* STRICTINTVALIDATOR_H_ */