2017-05-27 16:04:44 -04:00
|
|
|
#include "RestrictedSpinBox.hpp"
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
#include <utility>
|
|
|
|
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
QValidator::State RestrictedSpinBox::validate (QString& input, int& pos) const
|
|
|
|
{
|
|
|
|
// start by doing the standard QSpinBox validation
|
|
|
|
auto valid = HintedSpinBox::validate (input, pos);
|
|
|
|
// extra validation
|
2019-07-02 19:16:39 -04:00
|
|
|
if (QValidator::Acceptable == valid
|
2017-05-27 16:04:44 -04:00
|
|
|
&& values ().end () == std::find (values ().begin (), values ().end (), valueFromText (input)))
|
|
|
|
{
|
|
|
|
valid = QValidator::Intermediate;
|
|
|
|
}
|
|
|
|
return valid;
|
|
|
|
}
|
2019-06-25 09:35:58 -04:00
|
|
|
|
|
|
|
void RestrictedSpinBox::fixup (QString& input) const
|
|
|
|
{
|
|
|
|
auto iter = std::lower_bound (values ().begin (), values ().end (), valueFromText (input));
|
|
|
|
HintedSpinBox::fixup (input);
|
|
|
|
if (iter != values ().end ())
|
|
|
|
{
|
|
|
|
input = textFromValue (*iter);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
input = textFromValue (values ().back ());
|
|
|
|
}
|
|
|
|
}
|