This commit is contained in:
ea4k 2024-08-28 17:05:21 +02:00
parent d437202e29
commit b6c49375d8
13 changed files with 57 additions and 46 deletions

1
.gitignore vendored
View File

@ -211,3 +211,4 @@ tests/tst_callsign/moc_callsign.cpp
tests/tst_callsign/moc_predefs.h
tests/tst_callsign/target_wrapper.sh
tests/tst_callsign/tst_callsign
tests/tst_adif/moc_predefs.h

View File

@ -71,7 +71,9 @@ Callsign::Callsign(const QString &callsign, QObject *parent) : QObject{parent},
}
}
;QRegularExpression Callsign::callsignRegEx()
Callsign::~Callsign(){}
QRegularExpression Callsign::callsignRegEx()
{
return QRegularExpression(callsignRegExString(), QRegularExpression::CaseInsensitiveOption);
}
@ -89,6 +91,7 @@ Callsign::Callsign(const QString &callsign, QObject *parent) : QObject{parent},
;QString Callsign::prefixRegExString()
{
qDebug() << Q_FUNC_INFO;
// Matches prefix: "^([A-Z0-9]+[\/])?([A-Z][0-9]|[A-Z]{1,2}|[0-9][A-Z])([0-9]|[0-9]+)([A-Z]+)([\/][A-Z0-9]+)?"
// E73 prefix is not correctly matched, it is matched as EA400 so simple prefix is not OK
return QString("^((([A-Z])|([A-Z]{1,2})|([0-9][A-Z])|([A-Z][0-9]))([0-9]*))$");
@ -112,7 +115,7 @@ int Callsign::getAreaNumber()
return -1;
}
QString Callsign::getSimplePrefix()
QString Callsign::getHostPrefixWithoutNumber()
{
if (prefValid)
return hostPrefixWithoutAreaNumber;

View File

@ -43,7 +43,7 @@ class Callsign : public QObject
public:
Callsign(const QString &callsign,
QObject *parent = nullptr);
~Callsign();
static QStringList secondarySpecialSuffixes;
QString getCallsign();
@ -55,7 +55,7 @@ public:
QString getSuffix();
QString getSuffixWithDelimiter();
QString getWPXPrefix();
QString getSimplePrefix(); // The prefix without the area number
QString getHostPrefixWithoutNumber(); // The prefix without the area number
int getAreaNumber(); // Just the prefix area number
bool isValid(); // True if it is a full callsign

View File

@ -5620,7 +5620,7 @@ QList<PrimarySubdivision> DataProxy_SQLite::getPrimarySubDivisions(const int _en
if ((_pref.length()>0))
{
//qDebug() << Q_FUNC_INFO << " - Running for no pref, delivering ALL for the entity";
queryString = QString("SELECT name, shortname, cqz, ituz FROM primary_subdivisions WHERE prefix = :prefix ORDER BY shortname");
queryString = QString("SELECT dxcc, prefix, name, shortname, cqz, ituz FROM primary_subdivisions WHERE prefix = :prefix ORDER BY shortname");
query.prepare(queryString);
query.bindValue(":prefix", _pref);
}
@ -5633,7 +5633,7 @@ QList<PrimarySubdivision> DataProxy_SQLite::getPrimarySubDivisions(const int _en
//qDebug() << Q_FUNC_INFO << " - END: entity <= 0";
return list;
}
queryString = QString("SELECT name, shortname, cqz, ituz FROM primary_subdivisions WHERE dxcc = :dxcc ORDER BY shortname");
queryString = QString("SELECT dxcc, prefix, name, shortname, cqz, ituz FROM primary_subdivisions WHERE dxcc = :dxcc ORDER BY shortname");
query.prepare(queryString);
query.bindValue(":dxcc", _entity);
}
@ -5649,10 +5649,13 @@ QList<PrimarySubdivision> DataProxy_SQLite::getPrimarySubDivisions(const int _en
if (query.isValid())
{
PrimarySubdivision ps;
ps.name = (query.value(0)).toString();
ps.shortName = (query.value(1)).toString();
ps.cqz = (query.value(2)).toInt();
ps.ituz = (query.value(3)).toInt();
ps.dxcc = (query.value(0)).toInt();
ps.prefix = (query.value(1)).toString();
ps.name = (query.value(2)).toString();
ps.shortName = (query.value(3)).toString();
ps.cqz = (query.value(4)).toInt();
ps.ituz = (query.value(5)).toInt();
list.append(ps);
//qDebug() << Q_FUNC_INFO << " : " << ps.name ;
}

View File

@ -26,6 +26,8 @@
#include "mainwindowinputothers.h"
#include "../adif.h"
#include "../callsign.h"
MainWindowInputOthers::MainWindowInputOthers(DataProxy_SQLite *dp, QWidget *parent) :
QWidget(parent)
@ -774,41 +776,21 @@ void MainWindowInputOthers::updatePrimarySubDivisions(const int _n, const QStrin
//qDebug() << Q_FUNC_INFO << " - Start: " << QString::number(_n) << "/" << _qrz;
if (_n<1)
return;
Callsign callsign(_qrz);
currentInt = _n;
currentPref = _qrz;
QString mainPref = dataProxy->getEntityMainPrefix(_n);
QString mainPrefWithArea = mainPref;
int areaNumber = util->getAreaNumberFromCall(_qrz);
//qDebug() << Q_FUNC_INFO << " - AreaNumber: " << QString::number(areaNumber);
if (areaNumber>=0)
{
mainPrefWithArea.append(QString::number(areaNumber));
// mainPref = mainPref + QString::number(areaNumber);
//qDebug() << Q_FUNC_INFO << " - NEW mainPref: " << mainPrefWithArea;
}
QString mainToUse = mainPref + QString::number(callsign.getAreaNumber()); // The default is that showAll is not checked
QString prefUsed = callsign.getHostPrefix(); // The default is that showAll is not checked
QString currentPrefTMP = util->getPrefixFromCall(_qrz, !showAllCheckBox->isChecked());
//qDebug() << Q_FUNC_INFO << " - currentPref: " << QString::number(_n) << "/" << currentPrefTMP;
//qDebug() << Q_FUNC_INFO << " - mainPref: " << QString::number(_n) << "/" << mainPref;
setEntity(currentInt);
QString mainToUse, prefUsed;
if (showAllCheckBox->isChecked())
{
mainToUse = mainPref;
prefUsed = currentPrefTMP;
}
else
{
mainToUse = mainPrefWithArea;
prefUsed = currentPrefTMP;
prefUsed = callsign.getHostPrefixWithoutNumber();
}
if ((currentPrefTMP.isEmpty()) && (mainToUse.isEmpty()))
if ((mainToUse.isEmpty()) && (prefUsed.isEmpty()))
return;
QList<PrimarySubdivision> subdivisions;

View File

@ -32,9 +32,7 @@
#include <QtWidgets>
#include "../dataproxy_sqlite.h"
#include "../utilities.h"
#include "../callsign.h"
#include "../klogdefinitions.h"
#include "../adif.h"
class MainWindowInputOthers : public QWidget
{

View File

@ -62,8 +62,10 @@ struct Coordinate {
struct PrimarySubdivision { // Used to return data to MainWindow for each prefix
QString name;
QString shortName;
QString prefix;
int cqz;
int ituz;
int dxcc;
};
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 2))

View File

@ -30,8 +30,10 @@
#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include "updatesettings.h"
//#include "database.h"
#include "mainwindow.h"
#include "callsign.h"
void MainWindow::showNotWar()
{
@ -2033,7 +2035,6 @@ void MainWindow::slotQRZTextChanged(QString _qrz)
logEvent(Q_FUNC_INFO, QString("Start: %1").arg(_qrz), Debug);
//qDebug()<< Q_FUNC_INFO << " - 10" ;
Callsign callsign("EA4K");
if (_qrz.length()<1)
{
//qDebug()<< Q_FUNC_INFO << " - 11" ;

View File

@ -78,9 +78,7 @@
#include "widgets/map/mapwindowwidget.h"
#include "widgets/showkloglogwidget.h"
#include "qso.h"
#include "updatesettings.h"
#include "klogdefinitions.h"
#include "callsign.h"
#include <memory>
#include <memory>

View File

@ -102,7 +102,7 @@ void tst_Callsign::test_prefixes()
QCOMPARE(pref.isValidPrefix(), true);
QCOMPARE(pref.getHostPrefix(), fullprefix);
QCOMPARE(pref.getSimplePrefix(), prefix);
QCOMPARE(pref.getHostPrefixWithoutNumber(), prefix);
QCOMPARE(pref.getAreaNumber(), areanumber);
}

View File

@ -55,8 +55,11 @@ private slots:
void test_bands();
void test_EntityAndPrefixes(); // getEntityMainPrefix
void test_continents();
void test_subdivisions_data();
void test_primarySubdivisions();
//void test_getProgresStepForDialog();
private:
@ -120,6 +123,27 @@ void tst_DataProxy::test_modes()
}
*/
void tst_DataProxy::test_subdivisions_data()
{
//struct PrimarySubdivision is defined in klogdefinitions.h
// Data is in database/db_adif_primary_subdvisions_data.cpp
/*
QTest::addColumn<QString>("string");
QTest::addColumn<int>("dxcc");
QTest::addColumn<QString>("prefix");
QTest::addColumn<QString>("name");
QTest::addColumn<QString>("shortname");
QTest::addColumn<int>("cqz");
QTest::addColumn<int>("ituz");
QTest::newRow("EA8-GC") << 29 << "EA8" << "Las Palmas" << "GC" << "33" << "36";
QTest::newRow("EA8-TF") << 29 << "EA8" << "Tenerife" << "TF" << "33" << "36";
QTest::newRow("EA6-IB") << 21 << "EA6" << "Baleares" << "IB" << "14" << "37";
*/
}
void tst_DataProxy::test_modes_data()
{
QTest::addColumn<QString>("string");
@ -216,11 +240,6 @@ void tst_DataProxy::test_continents()
void tst_DataProxy::test_primarySubdivisions()
{
//ps.name = (query.value(0)).toString();
//ps.shortName = (query.value(1)).toString();
//ps.cqz = (query.value(2)).toInt();
//ps.ituz = (query.value(3)).toInt();
QList<PrimarySubdivision> subdivisions;
subdivisions.clear();
// Testing that the functions are working

View File

@ -24,6 +24,7 @@ HEADERS += ../../src/setupdialog.h \
../../src/awarddxmarathon.h \
../../src/awards.h \
../../src/awardswidget.h \
../../src/callsign.h \
../../src/charts/statsfieldperbandwidget.h \
../../src/charts/statsgeneralchartwidget.h \
../../src/charts/statsdxccsonsatswidget.h \
@ -123,6 +124,7 @@ SOURCES += tst_main.cpp \
../../src/awarddxmarathon.cpp \
../../src/awards.cpp \
../../src/awardswidget.cpp \
../../src/callsign.cpp \
../../src/charts/statsfieldperbandwidget.cpp \
../../src/charts/statsgeneralchartwidget.cpp \
../../src/charts/statsdxccsonsatswidget.cpp \

View File

@ -38,6 +38,7 @@ HEADERS += \
../../src/setuppages/setuppageuserdata.h \
../../src/setuppages/setuppageworldeditor.h \
../../src/aboutdialog.h \
../../src/callsign.h \
../../src/tipsdialog.h \
../../src/filemanager.h \
../../src/fileawardmanager.h \
@ -114,6 +115,7 @@ HEADERS += \
SOURCES += tst_mainwindow.cpp \
../../src/setupdialog.cpp \
../../src/aboutdialog.cpp \
../../src/callsign.cpp \
../../src/tipsdialog.cpp \
../../src/filemanager.cpp \
../../src/fileawardmanager.cpp \