Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Tools/WlsRandomPositions/mainwindow.cpp
T
torsten d5c13033e2 Session 022: Migrate Lts/Tools (72 submodules) to Qt6
- Copied complete Lts/Tools directory from qt5-before to qt6-after
- Updated 32 CMakeLists.txt files (Qt5:: → Qt6::)
- Tools subdirectory already included in parent Lts/CMakeLists.txt
- All 72 tool submodules now present in qt6-migrated-legatus
- Includes: Adler, ArAssets, ConfigX, DBAdministration, DBUpdate,
  DdsView, InfrastructureManagement, and 67 more tools
- C++17 standard (RTI 7.7.0 compatibility maintained)
- Tests deferred until final validation phase

Migration progress:
✅ Lts/Application (68 files)
✅ Lts/DDS (verified Qt6-ready)
✅ Lts/Plugins (60 submodules, verified)
✅ Lts/Projects (5 submodules, verified)
✅ Lts/Proxies (13 submodules, verified)
✅ Lts/Services (47 submodules, verified)
✅ Lts/Tools (72 submodules, copied + CMake updated)
✅ Lts/Viewer (LtsFileDialog, LtsReportDisplay, SituationMap)
🟡 TetraIF (partial)
🟡 Z (partial: nglwidgets, QtSingleApplication, qsql_informix, WMS_Interface)
2026-08-25 14:07:20 +02:00

154 lines
5.7 KiB
C++
Executable File

/*
* @RDE_HEADER@
* MainWindow
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, SLTE, 2022-03-29
*/
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "position_helper.h"
#include "settings.h"
#include "worker.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <LtsCoordTrans/lts_coord_trans.h>
#include <LtsCoordTrans/lts_coord_widget.h>
namespace WlsRandomPositions
{
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, m_ui(new Ui::MainWindow)
, m_worker(new Worker(this))
, m_posHelper(nullptr)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("MainWindow"))
{
m_ui->setupUi(this);
const QMap<int, Settings::TrainingArea> trainingAreas = Settings::trainingAreas();
ERROR_LOG(m_logger) << "trainingArea size: " << trainingAreas.size();
for (const auto &item : trainingAreas)
{
DEBUG_LOG(m_logger) << "ta name: " << item.name << ", id: " << item.m_id;
m_ui->cbTrainingArea->addItem(item.name, QVariant::fromValue(item));
}
connect(m_worker, &Worker::connectionStateChanged, this, &MainWindow::onConnectionStateChanged);
connect(m_worker, &Worker::telegramsIncremented, this, &MainWindow::onTelegramsIncremented);
m_ui->sbAmountPlayers->setValue(Settings::amountPlayers());
m_ui->sbEquipNo->setValue(Settings::firstEquipNo());
m_ui->sbMsecs->setValue(Settings::msecs());
m_ui->sbJitter->setValue(Settings::jitter());
m_ui->leMacAddress->setInputMask(QStringLiteral("HH:HH:HH:HH:HH:HH"));
m_ui->leMacAddress->setText(Settings::firstMacAddress());
m_ui->leServerName->setText(Settings::serverName());
m_ui->sbServerPort->setValue(Settings::serverPort());
m_ui->sbHeightMin->setValue(Settings::heightMin());
m_ui->sbHeightMax->setValue(Settings::heightMax());
m_ui->sbMaxdistance->setValue(Settings::maxDistance());
m_statusLabelConnected = new QLabel(this);
m_statusLabelConnected->setText(tr("Disconnected"));
m_statusLabelSentTelegrams = new QLabel(this);
m_statusLabelSentTelegrams->setText(tr("0 telegrams"));
m_ui->statusbar->addWidget(m_statusLabelConnected, 50);
m_ui->statusbar->addWidget(m_statusLabelSentTelegrams, 100);
connect(m_ui->actionExit, &QAction::triggered, this, &MainWindow::close);
m_ui->buttonBox->getButton(LtsWidgets::DialogButton::Load)->setText(tr("Start"));
m_ui->buttonBox->connectButton(LtsWidgets::DialogButton::Load, this, &MainWindow::onStartClicked);
m_ui->buttonBox->getButton(LtsWidgets::DialogButton::Ok)->setText(tr("Stop"));
connect(m_ui->buttonBox->getButton(LtsWidgets::DialogButton::Ok), &QPushButton::clicked, this, &MainWindow::onStopClicked);
m_ui->buttonBox->getButton(LtsWidgets::DialogButton::Close)->hide();
m_ui->sbMaxdistance->setEnabled(false);
connect(m_ui->cbMaxDistance, &QCheckBox::toggled, m_ui->sbMaxdistance, &LtsWidgets::LtsDoubleSpinBox::setEnabled);
connect(m_ui->cbTrainingArea, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MainWindow::onTrainingAreaChanged);
onTrainingAreaChanged(m_ui->cbTrainingArea->currentIndex());
}
MainWindow::~MainWindow()
{
delete m_ui;
delete m_posHelper;
}
void MainWindow::onTrainingAreaChanged(int index)
{
Settings::TrainingArea ta = m_ui->cbTrainingArea->itemData(index).value<Settings::TrainingArea>();
LtsCoordTrans::UtmCoordinate bottomLeft = LtsCoordTrans::UtmCoordinate::fromMgrs(ta.bottomLeft);
LtsCoordTrans::getMgrsSquares(QRectF(bottomLeft.geographic(0, 0), bottomLeft.geographic(ta.width, ta.height)), true, true);
delete m_ui->peTopLeft;
m_ui->peTopLeft = new LtsCoordWidget::LtsCoordWidget(m_ui->centralwidget);
m_ui->peTopLeft->setObjectName(QString::fromUtf8("peTopLeft"));
m_ui->gridLayout->addWidget(m_ui->peTopLeft, 8, 1, 1, 3);
m_ui->peTopLeft->setCoordinate(bottomLeft.geographic(0, ta.height), true);
delete m_ui->peBottomRight;
m_ui->peBottomRight = new LtsCoordWidget::LtsCoordWidget(m_ui->centralwidget);
m_ui->peBottomRight->setObjectName(QString::fromUtf8("peButtomRight"));
m_ui->gridLayout->addWidget(m_ui->peBottomRight, 9, 1, 1, 3);
m_ui->peBottomRight->setCoordinate(bottomLeft.geographic(ta.width, 0), true);
}
void MainWindow::onStartClicked()
{
m_ui->buttonBox->getButton(LtsWidgets::DialogButton::Load)->setDisabled(true);
if (!m_posHelper)
m_posHelper = new PositionHelper(m_ui->peTopLeft->coordinate(), m_ui->peBottomRight->coordinate(), m_ui->sbHeightMin->value(), m_ui->sbHeightMax->value());
else
m_posHelper->set(m_ui->peTopLeft->coordinate(), m_ui->peBottomRight->coordinate(), m_ui->sbHeightMin->value(), m_ui->sbHeightMax->value());
m_worker->connectToServer(m_ui->leServerName->text(), m_ui->sbServerPort->value());
}
void MainWindow::onConnectionStateChanged(bool connected, const QString &status)
{
m_statusLabelConnected->setText(status);
if (!connected)
{
m_ui->buttonBox->getButton(LtsWidgets::DialogButton::Load)->setDisabled(false);
return;
}
QString macAddressStr = m_ui->leMacAddress->text();
macAddressStr.remove(QLatin1Char(':'));
bool ok;
qint64 macAddress = macAddressStr.toLongLong(&ok, 16);
DEBUG_LOG(m_logger) << "MacAdress: " << macAddressStr << ", numeric: " << macAddress << ", Okay? " << ok;
double maxDistance = 0;
if (m_ui->cbMaxDistance->isChecked())
maxDistance = m_ui->sbMaxdistance->value();
m_worker->start(m_ui->sbAmountPlayers->value(), m_ui->sbEquipNo->value(), macAddress, m_ui->sbMsecs->value(), m_ui->sbJitter->value(), maxDistance);
}
void MainWindow::onStopClicked()
{
m_ui->buttonBox->getButton(LtsWidgets::DialogButton::Load)->setDisabled(false);
m_worker->stop();
}
void MainWindow::onTelegramsIncremented(int sentTelegrams)
{
m_statusLabelSentTelegrams->setText(tr("%1 telegrams sent.").arg(sentTelegrams));
}
} // Namespace WlsRandomPositions}