Skip to content

Commit

Permalink
Back to util->isValidCall
Browse files Browse the repository at this point in the history
  • Loading branch information
ea4k committed Jan 1, 2025
1 parent 8864964 commit 5d3e9a9
Show file tree
Hide file tree
Showing 13 changed files with 79 additions and 109 deletions.
13 changes: 10 additions & 3 deletions src/callsign.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
*****************************************************************************/
#include "callsign.h"

//TODO: Add support for FK/c, FO/a, FO/m, FT/g, FT/j, ... calls

Callsign::Callsign(const QString &callsign, QObject *parent) : QObject{parent}
{
Expand All @@ -42,7 +43,7 @@ Callsign::Callsign(const QString &callsign, QObject *parent) : QObject{parent}
Callsign::~Callsign(){}

void Callsign::operator()(const QString &newCallsign)
{
{// Comment
initialize(newCallsign);
}

Expand Down Expand Up @@ -303,16 +304,22 @@ QRegularExpression Callsign::prefixRegEx()
QString Callsign::callsignRegExString()
{
// This REGEX matches full callsigns including prefixes and suffixes
return QString("^((?<hostfullprefix1>((?<hostspecialprefix1>3D2|3D6|3D2C|3D2R|SV2A)(?<hostspecialareanumber1>[0-9]*))|(?<hostnormalprefix1>B|F|G|I|K|M|N|R|U|W|[A-Z][0-9]|[A-Z]{2}|[0-9][A-Z])(?<hostareanumber1>[0-9]*))\\/)?(?<homecall>(?<homefullprefix>(?<homespecialprefix>3D2|3D6|3D2C|3D2R|SV2A)(?<homespecialareanumber>[0-9]*)|(?<homenormalprefix>B|F|G|I|K|M|N|R|U|W|[A-Z][0-9]|[A-Z]{1,2}|[0-9][A-Z])(?<homeareanumber>[0-9]+))(?<homesuffix>[A-Z]+))(\\/(?<suffix>(?<hostfullprefix2>(?<hostspecialprefix2>3D2|3D6|3D2C|3D2R|SV2A)(?<hostspecialareanumber2>[0-9]*)|(?<hostnormalprefix2>B|F|G|I|K|M|N|R|U|W|[A-Z][0-9]|[A-Z]{2}|[0-9][A-Z])(?<hostareanumber2>[0-9]*))|(?<generalsuffix>[A-Z0-9]*)))?$");
QString aux = getSpecialPrefixes();
return QString("^((?<hostfullprefix1>((?<hostspecialprefix1>%1)(?<hostspecialareanumber1>[0-9]*))|(?<hostnormalprefix1>B|F|G|I|K|M|N|R|U|W|[A-Z][0-9]|[A-Z]{2}|[0-9][A-Z])(?<hostareanumber1>[0-9]*))\\/)?(?<homecall>(?<homefullprefix>(?<homespecialprefix>%2)(?<homespecialareanumber>[0-9]*)|(?<homenormalprefix>B|F|G|I|K|M|N|R|U|W|[A-Z][0-9]|[A-Z]{1,2}|[0-9][A-Z])(?<homeareanumber>[0-9]+))(?<homesuffix>[A-Z]+))(\\/(?<suffix>(?<hostfullprefix2>(?<hostspecialprefix2>%3)(?<hostspecialareanumber2>[0-9]*)|(?<hostnormalprefix2>B|F|G|I|K|M|N|R|U|W|[A-Z][0-9]|[A-Z]{2}|[0-9][A-Z])(?<hostareanumber2>[0-9]*))|(?<generalsuffix>[A-Z0-9]*)))?$").arg(aux).arg(aux).arg(aux);
}

QString Callsign::prefixRegExString()
{
//qDebug() << Q_FUNC_INFO;
// Returns a REGEX string that matches a hamradio prefix like F in F/EA4K/QRP or EA6 in EA6/EA4K
return QString("^(?<prefix>(?<specialprefix>3D2|3D6|3D2C|3D2R|SV2A)(?<specialareanumber>[0-9]*)|(?<normalprefix>B|F|G|I|K|M|N|R|U|W|[A-Z][0-9]|[A-Z]{1,2}|[0-9][A-Z])(?<areanumber>[0-9]*))$");
QString aux = getSpecialPrefixes();
return QString("^(?<prefix>(?<specialprefix>%1)(?<specialareanumber>[0-9]*)|(?<normalprefix>B|F|G|I|K|M|N|R|U|W|[A-Z][0-9]|[A-Z]{1,2}|[0-9][A-Z])(?<areanumber>[0-9]*))$").arg(aux);
}

QString Callsign::getSpecialPrefixes()
{
return QString("3D2|3D6|3D2C|3D2R|3DA|4U1I|4U1U|4U1V|KH7K|PY0F|PY0S|PY0T|R1FJ|SV2A|VK0H|VK0M|VK9C|VK9L|VK9M|VK9N|VK9W|VK9X|VP2E|VP2M|VP2V");
}
// if getHomeIfEmpty is true and no hostprefix is identified, it will return homePrefix
QString Callsign::getCallsign() {return fullCall;}
QString Callsign::getHostFullPrefix(bool getHomeIfEmpty) {if (getHomeIfEmpty && (hostFullPrefix.length()<=0)) return homeFullPrefix; else return hostFullPrefix;}
Expand Down
4 changes: 3 additions & 1 deletion src/callsign.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,14 @@ class Callsign : public QObject
void clear();

private:

static QString getSpecialPrefixes();
static QString callsignRegExString();
static QRegularExpression callsignRegEx();
static QString prefixRegExString();
static QRegularExpression prefixRegEx();

void initialize(const QString &callsign); // A helper to perform the initialization and prevent code duplication
//Returns the list of special prefixes for the REGEX

QString fullCall; // K1/EA4K/QRP
QString hostFullPrefix; // K1
Expand All @@ -98,6 +99,7 @@ class Callsign : public QObject
int homeAreaNumber; // 4
QString generalSuffix; // QRP


bool valid; // The entered string is a correct callsign
bool prefValid; // The entered string is a correct prefix

Expand Down
5 changes: 1 addition & 4 deletions src/elogqrzlog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
*****************************************************************************/

#include "elogqrzlog.h"
#include "callsign.h"
#include <QCoreApplication>
#include <QUrl>
#include <QNetworkRequest>
Expand Down Expand Up @@ -580,9 +579,7 @@ void eLogQrzLog::checkQRZ(const QString &_qrz)
{
//qDebug() << Q_FUNC_INFO << ": " + _qrz;
showDebugLog (Q_FUNC_INFO, "Start: " + _qrz);
Callsign _callsign(_qrz);
if (!_callsign.isValid())
//if (!util->isValidCall(_qrz))
if (!util->isValidCall(_qrz))
{
//qDebug()<< "eLogQrzLog::checkQRZ: CALL not valid" ;
showDebugLog (Q_FUNC_INFO, "CALL not valid");
Expand Down
35 changes: 16 additions & 19 deletions src/filemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
* *
*****************************************************************************/
#include "filemanager.h"
#include "callsign.h"
//#include <QDebug>


Expand Down Expand Up @@ -171,9 +170,8 @@ QList<int> FileManager::adifLogExportReturnList(const QString& _fileName, const
//qDebug() << Q_FUNC_INFO << ": Start)" << _fileName << "/" << _callsign << "/ " << _grid;
QList<int> qsos;
qsos.clear();
Callsign _call(_callsign);

if ((!_call.isValid()) && (_callsign != "ALL") && (_callsign !="NOT"))
if ((!util->isValidCall(_callsign)) && (_callsign != "ALL") && (_callsign !="NOT"))
{
showError(tr("The selected callsign (%1) is not valid, please check it again to export the log.").arg(_callsign));
return qsos;
Expand Down Expand Up @@ -436,8 +434,8 @@ QList<int> FileManager::adifLogExportReturnList2(const QString& _fileName, const
//qDebug() << Q_FUNC_INFO << ": Start)" << _fileName << "/" << _callsign << "/ " << _grid;
QList<int> qsos;
qsos.clear();
Callsign _call(_callsign);
if ((!_call.isValid()) && (_callsign != "ALL") && (_callsign !="NOT"))

if ((!util->isValidCall(_callsign)) && (_callsign != "ALL") && (_callsign !="NOT"))
{
showError(tr("The selected callsign (%1) is not valid, please check it again to export the log.").arg(_callsign));
return qsos;
Expand Down Expand Up @@ -975,8 +973,8 @@ int FileManager::adifLoTWReadLog2(const QString& fileName, const int logN)
if (line.contains("OWNCALL:"))
{
stationCallSign = (line.section(": ", 1, 1)).simplified();
Callsign _call(stationCallSign);
if (!_call.isValid())

if (!util->isValidCall(stationCallSign))
{
stationCallSign = QString();
}
Expand Down Expand Up @@ -1056,9 +1054,9 @@ int FileManager::adifReadLog2(const QString& tfileName, QString _stationCallsign
{
//qDebug() << Q_FUNC_INFO << QString(": EOR detected, QSO added");
qso.setLogId (logN);
Callsign _call1(_stationCallsign);
Callsign _call2(qso.getStationCallsign());
if (_call1.isValid() && (!_call2.isValid()) )

if ((util->isValidCall(_stationCallsign)) && (!util->isValidCall(qso.getStationCallsign())))

{
qso.setStationCallsign(_stationCallsign);
}
Expand Down Expand Up @@ -1299,11 +1297,10 @@ bool FileManager::getStationCallsignFromUser(const QString &_qrzDX, const QDate
{
_date = ", on "+ util->getDateSQLiteStringFromDate(_dt) ;
}
Callsign _callsign(_qrzDX);
if (_callsign.isValid())
//if (util->isValidCall(_qrzDX))

if (util->isValidCall(_qrzDX))
{
aux = tr("KLog has found one QSO without the Station Callsign defined.\n\nEnter the Station Callsign that was used to do this QSO with %1 on %2:").arg(_callsign.getCallsign()).arg(_date);
aux = tr("KLog has found one QSO without the Station Callsign defined.\n\nEnter the Station Callsign that was used to do this QSO with %1 on %2:").arg(_qrzDX).arg(_date);
text = QInputDialog::getText(this, tr("KLog - QSO without Station Callsign"),
aux, QLineEdit::Normal, "", &ok);
}
Expand All @@ -1313,8 +1310,8 @@ bool FileManager::getStationCallsignFromUser(const QString &_qrzDX, const QDate
tr("KLog has found one QSO without the Station Callsign defined.\n\nEnter the Station Callsign that was used to do this QSO on %1:").arg(_date), QLineEdit::Normal,
"", &ok);
}
Callsign call2(text);
if (ok && call2.isValid())

if (ok && util->isValidCall(text))
{
defaultStationCallsign = text.toUpper();
return true;
Expand Down Expand Up @@ -1719,11 +1716,11 @@ bool FileManager::writeBackupDate()
void FileManager::setStationCallSign(const QString& _st)
{
//qDebug() << "FileManager::setStationCallSign: " << _st;
Callsign _callsign(_st);
if (_callsign.isValid())

if (util->isValidCall(_st, true))
{
//qDebug() << "FileManager::setStationCallSign: True";
defaultStationCallsign = _callsign.getCallsign();
defaultStationCallsign = _st;
//qDebug() << "FileManager::setStationCallSign: " << defaultStationCallsign;
}
else
Expand Down
1 change: 0 additions & 1 deletion src/inputwidgets/mainwindowinputothers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -794,7 +794,6 @@ void MainWindowInputOthers::setEntityAndPrefix(const int _entity, const QString
// TODO: This function must be improved and find what shoudl be used to identify the right data



QString hostFullPrefix = callsign.getHostFullPrefix(); // The default is that showAll is not checked. Main prefix+ the area
QString hostPrefix = callsign.getHostPrefix(); // The default is that showAll is not checked

Expand Down
4 changes: 1 addition & 3 deletions src/lotwutilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,7 @@ bool LoTWUtilities::selectQuery(const int _queryId)
bool LoTWUtilities::setStationCallSign(const QString &_call)
{
//qDebug() << "LoTWUtilities::setStationCallSign: " << _call;
Callsign _callsign(_call);
if (!_callsign.isValid())
//if (!util->isValidCall(_call))
if (!util->isValidCall(_call))
{
//qDebug() << "LoTWUtilities::setStationCallSign: FALSE 1" ;
return false;
Expand Down
5 changes: 2 additions & 3 deletions src/mainqsoentrywidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -301,9 +301,8 @@ void MainQSOEntryWidget::slotQRZTextChanged()
//TODO: This validCharactersInCall may be removed?
InValidCharsInPrevCall = validCharactersInCall(qrzLineEdit->text());
//qDebug()<< "MainQSOEntryWidget::slotQRZTextChanged: checking for invalid chars 00 ";
Callsign _callsign(qrzLineEdit->text());
if (!_callsign.isValid())
//if (!util->isValidCall(qrzLineEdit->text()))

if (!util->isValidCall(qrzLineEdit->text()))
{
qrzLineEdit->setPalette(palRed);
//emit showInfoLabel(tr("Callsign not valid"));
Expand Down
71 changes: 24 additions & 47 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
#include "updatesettings.h"
//#include "database.h"
#include "mainwindow.h"
#include "callsign.h"


void MainWindow::showNotWar()
{
Expand Down Expand Up @@ -1204,11 +1204,8 @@ bool MainWindow::readQSOFromUI()
logEvent(Q_FUNC_INFO, "Start", Debug);

qso->clear ();
//QString tqrz = (mainQSOEntryWidget->getQrz()).toUpper();
Callsign _callsign(mainQSOEntryWidget->getQrz());
if (!_callsign.isValid())

//if (!util->isValidCall(tqrz))
QString tqrz = (mainQSOEntryWidget->getQrz()).toUpper();
if (!util->isValidCall(tqrz))
{
QMessageBox msgBox;
msgBox.setIcon(QMessageBox::Question);
Expand All @@ -1232,7 +1229,7 @@ bool MainWindow::readQSOFromUI()
break;
}
}
qso->setCall (_callsign.getCallsign());
qso->setCall (tqrz);
qso->setBand(mainQSOEntryWidget->getBand());
qso->setMode(dataProxy->getNameFromSubMode (mainQSOEntryWidget->getMode()));
qso->setSubmode (mainQSOEntryWidget->getMode());
Expand All @@ -1245,7 +1242,7 @@ bool MainWindow::readQSOFromUI()
qso->setRSTTX (QSOTabWidget->getRSTTX ());
qso->setRSTRX (QSOTabWidget->getRSTRX ());

int dxcc = world->getQRZARRLId(_callsign.getCallsign());
int dxcc = world->getQRZARRLId(tqrz);
//qDebug() << Q_FUNC_INFO + QString(": %1 - %2").arg(_callsign.getCallsign()).arg(dxcc);

//int dxcc2 = getDXCCFromComboBox();
Expand Down Expand Up @@ -2962,13 +2959,11 @@ QString MainWindow::selectStationCallsign()
stationCallToUse = QInputDialog::getItem(this, tr("Station Callsign:"),
msg, stationCallSigns, 0, false, &ok);

Callsign _callsign(stationCallToUse);
//if (_callsign.isValid())
if (ok && _callsign.isValid())
if (ok && util->isValidCall(stationCallToUse))
//if (ok && !stationCallToUse.isEmpty())
{
logEvent(Q_FUNC_INFO, "END-1", Debug);
return _callsign.getCallsign();
return stationCallToUse;
}
else
{
Expand All @@ -2977,13 +2972,10 @@ QString MainWindow::selectStationCallsign()
"", &ok)).toUpper();
if (ok)
{
//callsignTyped = true;
Callsign _callsign2(stationCallToUse);
if (_callsign2.isValid())
//if (util->isValidCall(stationCallToUse))
if (util->isValidCall(stationCallToUse))
{
logEvent(Q_FUNC_INFO, "END-2", Debug);
return _callsign2.getCallsign();
return stationCallToUse;
}
}
else
Expand Down Expand Up @@ -3068,9 +3060,7 @@ void MainWindow::slotReceiveQSOListToShowFromFile(QStringList _qs)
//qDebug() << Q_FUNC_INFO << " - NO valid qso list received - length: " << QString::number(_qs.length()) ;
return;
}
Callsign _callsign(_qs.at(0));
if (!_callsign.isValid())
//if (!util->isValidCall(_qs.at(0)))
if (!util->isValidCall(_qs.at(0)))
{
//qDebug() << Q_FUNC_INFO << " - NO valid QRZ received - " << _qs.at(0) ;
return;
Expand Down Expand Up @@ -4039,10 +4029,7 @@ void MainWindow::fileExportLoTW2(const QString &_call, QList<int> _qsos)
}

QMessageBox msgBox;
Callsign _callsign(_call);
if (!_callsign.isValid())

//if (!util->isValidCall(_call))
if (!util->isValidCall(_call))
{
//qDebug() << Q_FUNC_INFO << " - no valid call" ;
if (_call == "ALL")
Expand Down Expand Up @@ -4127,9 +4114,7 @@ void MainWindow::fileExportClubLog2(const QString &_call, QList<int> _qsos)
{
//qDebug() << Q_FUNC_INFO << QString(" - Start: %1 / QSOs: %2" ).arg(_call).arg(_qsos.length ());
QMessageBox msgBox;
Callsign _callsign(_call);
if (!_callsign.isValid())
//if (!util->isValidCall(_call))
if (!util->isValidCall(_call))
{
//qDebug() << Q_FUNC_INFO << " - no valid call" ;
if (_call == "ALL")
Expand Down Expand Up @@ -5375,11 +5360,9 @@ void MainWindow::slotAnalyzeDxClusterSignal(const DXSpot &_spot)


pQSO.status = awards->getQSOStatus(statusI);
Callsign _callsign(sp.getDxCall());
if (_callsign.isValid())
//if (util->isValidCall(sp.getDxCall(), true))
if (util->isValidCall(sp.getDxCall(), true))
{
pQSO.call = _callsign.getCallsign();
pQSO.call = sp.getDxCall();
dxClusterAssistant->newDXClusterSpot(pQSO);
}

Expand All @@ -5395,12 +5378,10 @@ void MainWindow::slotDXClusterSpotArrived(const DXSpot &_spot)
DXSpot sp = _spot;
if (!sp.isValid())
return;
Callsign _callsign(sp.getDxCall());
if (_callsign.isValid())
//if (util->isValidCall(sp.getDxCall(), true))
if (util->isValidCall(sp.getDxCall(), true))
{
proposedQSOs pQSO;
pQSO.call = _callsign.getCallsign();
pQSO.call = sp.getDxCall();
pQSO.status = ATNO;
pQSO.freq = sp.getFrequency();
dxClusterAssistant->newDXClusterSpot(pQSO);
Expand Down Expand Up @@ -5505,10 +5486,9 @@ void MainWindow::updateQSLRecAndSent()
QString MainWindow::findStationCallsignToUse()
{
//QString foundCall = dataProxy->getStationCallSignFromLog (currentLog);
Callsign _callsign(dataProxy->getStationCallSignFromLog (currentLog));
if (_callsign.isValid())
//if (util->isValidCall(foundCall))
return _callsign.getCallsign();
QString foundCall = dataProxy->getStationCallSignFromLog (currentLog);
if (util->isValidCall(foundCall))
return foundCall;

return mainQRZ;
}
Expand All @@ -5519,13 +5499,12 @@ void MainWindow::defineStationCallsign()
logEvent(Q_FUNC_INFO, "Start", Debug);
//QString logQRZ = findStationCallsignToUse();
//qDebug() << Q_FUNC_INFO << ": StationCallsign: " << logQRZ;
Callsign _callsign(findStationCallsignToUse());
if (!_callsign.isValid())
//if (!util->isValidCall (logQRZ))
QString logQRZ = findStationCallsignToUse();
if (!util->isValidCall (logQRZ))
{
return;
}
stationCallsign = _callsign.getCallsign();
stationCallsign = logQRZ;

//qDebug() << Q_FUNC_INFO << ": " << stationCallsign ;

Expand Down Expand Up @@ -6549,11 +6528,9 @@ bool MainWindow::loadSettings()
settings.beginGroup ("UserData");
value = settings.value ("Callsign").toString ();
//qDebug() << Q_FUNC_INFO << " stationCallSign: " << value;
Callsign _callsign(value);
if (_callsign.isValid())
//if (util->isValidCall(value))
if (util->isValidCall(value))
{
mainQRZ = _callsign.getCallsign();
mainQRZ = value;
}
// We Select the log after the mainQRZ is defined to prevent call conflicts
selectTheLog(currentLog);
Expand Down
Loading

0 comments on commit 5d3e9a9

Please sign in to comment.