mirror of
https://github.com/JS8Call-improved/JS8Call-improved
synced 2026-08-13 17:47:36 -04:00
* User Manual as a markdown file. Minor other additions/fixes. * repo version of doxygen is too old, build our own
36 lines
966 B
C++
36 lines
966 B
C++
/**
|
|
* @file CallsignValidator.cpp
|
|
* @brief Implementation of CallsignValidator
|
|
*/
|
|
#include "CallsignValidator.h"
|
|
|
|
/**
|
|
* @brief Construct a new Callsign Validator:: Callsign Validator object
|
|
*
|
|
* @param parent
|
|
* @param allow_compound
|
|
*/
|
|
CallsignValidator::CallsignValidator(QObject *parent, bool allow_compound)
|
|
: QValidator{parent},
|
|
re_{allow_compound ? R"(^[A-Za-z0-9/]+$)" : R"(^[A-Za-z0-9]+$)"} {}
|
|
|
|
/**
|
|
* @brief Validate the callsign input
|
|
*
|
|
* @param input
|
|
* @param pos
|
|
* @return State
|
|
*/
|
|
auto CallsignValidator::validate(QString &input, int &pos) const -> State {
|
|
auto match =
|
|
re_.match(input, 0, QRegularExpression::PartialPreferCompleteMatch);
|
|
input = input.toUpper();
|
|
if (input.count(QLatin1Char('/')) > 2)
|
|
return Invalid;
|
|
if (match.hasMatch())
|
|
return Acceptable;
|
|
if (!input.size() || match.hasPartialMatch())
|
|
return Intermediate;
|
|
pos = input.size();
|
|
return Invalid;
|
|
}
|