diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 3ad6ceb31..a8d65e62f 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -11,7 +11,7 @@ env: jobs: build_linux: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -33,7 +33,7 @@ jobs: - name: Get AppImageTool run: | - curl --silent "https://api.github.com/repos/AppImage/AppImageKit/releases/latest" | jq -r '.assets[] | select(.name == "appimagetool-x86_64.AppImage").browser_download_url' | sudo xargs curl -L -o /opt/appimagetool-x86_64.AppImage --create-dirs --url + curl --silent "https://api.github.com/repos/AppImage/AppImageKit/releases/latest" | jq -r '.assets[] | select(.name == "obsolete-appimagetool-x86_64.AppImage").browser_download_url' | sudo xargs curl -L -o /opt/appimagetool-x86_64.AppImage --create-dirs --url sudo chmod +x /opt/appimagetool-x86_64.AppImage - name: Build AppImage @@ -55,7 +55,7 @@ jobs: build_windows: - runs-on: windows-2019 + runs-on: windows-2022 defaults: run: shell: bash @@ -72,11 +72,11 @@ jobs: path: | C:/openssl/bin/libssl-1_1-x64.dll C:/openssl/bin/libcrypto-1_1-x64.dll - C:/Program Files/PostgreSQL/14/bin/libiconv-2.dll - C:/Program Files/PostgreSQL/14/bin/libintl-9.dll - C:/Program Files/PostgreSQL/14/bin/liblz4.dll - C:/Program Files/PostgreSQL/14/bin/zlib1.dll - C:/Program Files/PostgreSQL/14/bin/libpq.dll + %PGBIN%/libiconv-2.dll + %PGBIN%/libintl-9.dll + %PGBIN%/liblz4.dll + %PGBIN%/zlib1.dll + %PGBIN%/libpq.dll key: ${{ runner.os }}-Libraries - name: Get OpenSSL and PostgreSQL libraries @@ -94,6 +94,12 @@ jobs: host: 'windows' arch: 'win64_mingw81' + - name: Set up MinGW + uses: egor-tensin/setup-mingw@v2 + with: + platform: x64 + version: 8.1 + - name: Build run: | qmake.exe quickbox.pro -spec win32-g++ "CONFIG+=release" "GITHUB_ACTIONS=TRUE" diff --git a/README.md b/README.md index 4e8414f71..b17c6082e 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ The QuickBox is built upon the Qt framework, targeted for Linux and Windows and * results print and export (PDF | [IOF XML](https://github.com/international-orienteering-federation/datastandard-v3)) * export results for Liveresultat and Emma client * [Weblate localization](https://hosted.weblate.org/projects/quickbox/) - thanks to Michal Cihar and https://weblate.org/ for free localization hosting -* integration with [ORIS](https://oris.orientacnisporty.cz/) - Czech orienteering federation information system +* integration with [ORIS](https://oris.ceskyorientak.cz/) - Czech orienteering federation information system * import events * sync entries * import clubs and registrations diff --git a/quickevent/app/quickevent/plugins/Oris/src/chooseoriseventdialog.cpp b/quickevent/app/quickevent/plugins/Oris/src/chooseoriseventdialog.cpp index fb9fe6628..3eb58ca6e 100644 --- a/quickevent/app/quickevent/plugins/Oris/src/chooseoriseventdialog.cpp +++ b/quickevent/app/quickevent/plugins/Oris/src/chooseoriseventdialog.cpp @@ -44,7 +44,7 @@ void ChooseOrisEventDialog::load() //QCoreApplication::processEvents(); QDate d = QDate::currentDate(); d = d.addMonths(-1); - QUrl url("https://oris.orientacnisporty.cz/API/?format=json&method=getEventList&all=1&datefrom=" + d.toString(Qt::ISODate)); + QUrl url("https://" + OrisImporter::orisDomainName() + "/API/?format=json&method=getEventList&all=1&datefrom=" + d.toString(Qt::ISODate)); m_importer->getJsonAndProcess(url, this, [this](const QJsonDocument &jsd) { //qfWarning() << QString::fromUtf8(jsd.toJson()); OrisImporter::saveJsonBackup("EventList", jsd); diff --git a/quickevent/app/quickevent/plugins/Oris/src/orisimporter.cpp b/quickevent/app/quickevent/plugins/Oris/src/orisimporter.cpp index b91c10592..43490f91e 100644 --- a/quickevent/app/quickevent/plugins/Oris/src/orisimporter.cpp +++ b/quickevent/app/quickevent/plugins/Oris/src/orisimporter.cpp @@ -65,6 +65,12 @@ OrisImporter::OrisImporter(QObject *parent) } +QString OrisImporter::orisDomainName() +{ + static auto s = QStringLiteral("oris.ceskyorientak.cz"); + return s; +} + qf::core::network::NetworkAccessManager *OrisImporter::networkAccessManager() { if(!m_networkAccessManager) { @@ -149,7 +155,7 @@ void OrisImporter::syncRelaysEntries(int event_id, std::function succes return; } */ - QUrl url(QString("https://oris.orientacnisporty.cz/ExportPrihlasek?id=%1").arg(event_id)); + QUrl url(QString("https://" + OrisImporter::orisDomainName() + "/ExportPrihlasek?id=%1").arg(event_id)); getTextAndProcess(url, this, [=](const QByteArray &data) { qf::qmlwidgets::framework::MainWindow *fwk = qf::qmlwidgets::framework::MainWindow::frameWork(); try { @@ -331,7 +337,7 @@ static QString jsonObjectToFullName(const QJsonObject &data, const QString &fiel void OrisImporter::importEvent(int event_id, std::function success_callback) { - QUrl url(QString("https://oris.orientacnisporty.cz/API/?format=json&method=getEvent&id=%1").arg(event_id)); + QUrl url(QString("https://" + OrisImporter::orisDomainName() + "/API/?format=json&method=getEvent&id=%1").arg(event_id)); getJsonAndProcess(url, this, [=](const QJsonDocument &jsd) { qf::qmlwidgets::framework::MainWindow *fwk = qf::qmlwidgets::framework::MainWindow::frameWork(); try { @@ -454,7 +460,7 @@ void OrisImporter::syncEventEntries(int event_id, std::function success syncRelaysEntries(event_id, success_callback); return; } - QUrl url(QString("https://oris.orientacnisporty.cz/API/?format=json&method=getEventEntries&eventid=%1").arg(event_id)); + QUrl url(QString("https://" + OrisImporter::orisDomainName() + "/API/?format=json&method=getEventEntries&eventid=%1").arg(event_id)); getJsonAndProcess(url, this, [=](const QJsonDocument &jsd) { static const QString json_fn = "EventEntries"; saveJsonBackup(json_fn, jsd); @@ -747,7 +753,7 @@ void OrisImporter::importRegistrations(std::function success_callback) year = QInputDialog::getInt(nullptr, tr("Import ORIS Registrations"), tr("Year of registration:"), year, year-2, year+2, 1, &ok); if (!ok) return; - QUrl url(QString("https://oris.orientacnisporty.cz/API/?format=json&method=getRegistration&sport=%1&year=%2").arg(sport_id).arg(year)); + QUrl url(QString("https://" + OrisImporter::orisDomainName() + "/API/?format=json&method=getRegistration&sport=%1&year=%2").arg(sport_id).arg(year)); getJsonAndProcess(url, this, [=](const QJsonDocument &jsd) { saveJsonBackup("Registrations", jsd); qf::qmlwidgets::framework::MainWindow *fwk = qf::qmlwidgets::framework::MainWindow::frameWork(); @@ -807,7 +813,7 @@ void OrisImporter::importRegistrations(std::function success_callback) void OrisImporter::importClubs(std::function success_callback) { - QUrl url("https://oris.orientacnisporty.cz/API/?format=json&method=getCSOSClubList"); + QUrl url("https://" + OrisImporter::orisDomainName() + "/API/?format=json&method=getCSOSClubList"); getJsonAndProcess(url, this, [=](const QJsonDocument &jsd) { saveJsonBackup("Clubs", jsd); qf::qmlwidgets::framework::MainWindow *fwk = qf::qmlwidgets::framework::MainWindow::frameWork(); diff --git a/quickevent/app/quickevent/plugins/Oris/src/orisimporter.h b/quickevent/app/quickevent/plugins/Oris/src/orisimporter.h index 449ed68ec..e85f2956b 100644 --- a/quickevent/app/quickevent/plugins/Oris/src/orisimporter.h +++ b/quickevent/app/quickevent/plugins/Oris/src/orisimporter.h @@ -16,6 +16,8 @@ class OrisImporter : public QObject public: explicit OrisImporter(QObject *parent = nullptr); + static QString orisDomainName(); + void chooseAndImport(); void importEvent(int event_id, std::function success_callback = nullptr); void syncCurrentEventEntries(std::function success_callback = nullptr); diff --git a/quickevent/app/quickevent/plugins/Receipts/src/receiptsplugin.cpp b/quickevent/app/quickevent/plugins/Receipts/src/receiptsplugin.cpp index 6527545ca..be30f9be2 100644 --- a/quickevent/app/quickevent/plugins/Receipts/src/receiptsplugin.cpp +++ b/quickevent/app/quickevent/plugins/Receipts/src/receiptsplugin.cpp @@ -151,7 +151,7 @@ QVariantMap ReceiptsPlugin::receiptTablesData(int card_id) int course_id = checked_card.courseId(); int leg = 0; int relay_num = 0; - int current_standings = 0; + int current_standings = 1; int competitors_finished = 0; int best_time = 0; QMap best_laps; // position->time @@ -303,7 +303,7 @@ QVariantMap ReceiptsPlugin::receiptTablesData(int card_id) bool dis = q.value("dis").toBool(); int time = q.value("timeMs").toInt(); if(!dis) { - if(time <= checked_card.timeMs()) + if(time < checked_card.timeMs()) current_standings++; if(best_time == 0 || time < best_time) best_time = time;