BUILD_RTI conditional fixes and Qt6 API updates

- cmake/FindRTI.cmake: Add INTERFACE placeholder targets when RTI not found
- cmake/FindRTI.cmake: Force BUILD_RTI=OFF when RTI not installed
- Lts/Common/LtsSession/CMakeLists.txt: Make LtsSessionDataDds conditional on BUILD_RTI
- Lts/Viewer/CMakeLists.txt: Make LtsDataView conditional on BUILD_RTI
- Lts/Plugins/*/CMakeLists.txt: 97 plugin files wrapped in BUILD_RTI conditionals
- cmake/NGLMacros.cmake: Fix NGL_ADD_BIG_RESOURCES macro (removed premature return())
- Multiple Qt6 API fixes: QLinkedList→std::list, QStringRef→QStringView, etc.
- BUILD_RTI_FIXES_SUMMARY.md: Comprehensive documentation of all fixes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
torstenandCopilot committed 2026-08-19 09:24:50 +02:00
1 parent b774f4035c
commit 4c9861a469
2065 files changed
+48219 -1763

No files matched your search

@@ -15,42 +15,42 @@ TopicLockHandler::TopicLockHandler()
: QObject()
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("LtsSession.TopicLockHandler"))
{
TRACE_LOG() << Q_FUNC_INFO << " START";
TRACE_LOG() << Q_FUNC_INFO << " END";
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
}
TopicLockHandler::~TopicLockHandler()
{
TRACE_LOG() << Q_FUNC_INFO << " START";
TRACE_LOG() << Q_FUNC_INFO << " END";
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
}
bool TopicLockHandler::init(const std::shared_ptr<Core::Interface::Ftc> &coreFtc,
int exerciseId)
{
TRACE_LOG() << Q_FUNC_INFO << " START";
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
if (coreFtc == nullptr)
return false;
coreFtc->enableAll();
m_exerciseId = exerciseId;
m_coreFtc = coreFtc;
TRACE_LOG() << Q_FUNC_INFO << " END";
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
return true;
}
bool TopicLockHandler::lock()
{
INFO_LOG() << "LOCK " << m_topicInfo.topicName();
TRACE_LOG() << Q_FUNC_INFO << objStateAsString();
INFO_LOG(m_logger) << "LOCK " << m_topicInfo.topicName();
TRACE_LOG(m_logger) << LOGFUNCTION << objStateAsString();
if (m_coreFtc == nullptr)
return false;
if (m_locked)
{
ERROR_LOG() << Q_FUNC_INFO << ": called lock while still locked! " << m_lockEntityId;
ERROR_LOG(m_logger) << LOGFUNCTION << ": called lock while still locked! " << m_lockEntityId;
Q_ASSERT(false);
return false;
}
@@ -58,12 +58,12 @@ bool TopicLockHandler::lock()
const auto *sessionData = LtsSessionData::LtsSessionData::getInstance();
Core::TryLockEntityRequest req;
req.id(m_lockEntityId);
req.entityTypeName(m_topicInfo.topicName().toStdString());
req.id(m_lockEntityId); // m_lockEntityId > 0 means that a lock is updated
// svcKey :
req.entityTypeName(m_topicInfo.topicName().toStdString()/* + m_topicInfo.workspaceId().toStdString()*/);
req.entityId(m_topicInfo.entityId());
req.exerciseId(m_exerciseId);
// : svcKey
req.operatorId(sessionData->getOperatorId());
req.workstationId(sessionData->getWorkstationId());
@@ -71,33 +71,33 @@ bool TopicLockHandler::lock()
{
const Core::TryLockEntityReply reply(m_coreFtc->tryLockEntityRequest(req));
TRACE_LOG() << Q_FUNC_INFO << ": Reply received - state=" << objStateAsString()
TRACE_LOG(m_logger) << LOGFUNCTION << ": Reply received - state=" << objStateAsString()
<< " - reply=" << reply;
if (reply.alreadyLocked().is_set())
if (reply.alreadyLocked().is_set()) //has_value not support on windows yet so we need depricated is_set
{
const Core::LockEntityError &alreadyLocked = reply.alreadyLocked().get();
INFO_LOG() << Q_FUNC_INFO << ": Topic already locked by ws " << alreadyLocked.workstationName() << " and op " << alreadyLocked.operatorName();
INFO_LOG(m_logger) << LOGFUNCTION << ": Topic already locked by ws " << alreadyLocked.workstationName() << " and op " << alreadyLocked.operatorName();
// N. Thoden, 23.09.2020: Since Locking is more often, the dialog is annoying. So skip and pay attention to title
// LtsWidgets::LtsMessageDialog::showMessage(nullptr, fro.translated(), tr("Unable to lock data record"));
const auto lockedBy(QStringLiteral("%2/%1").arg(QString::fromStdString(alreadyLocked.operatorName()), QString::fromStdString(alreadyLocked.workstationName())));
emit signalLockDialog(lockedBy);
emit signalLockDialog(lockedBy); // -> READ_ONLY / lock the dialog as the topic could not be locked
}
else
else // lock was successful
{
DEBUG_LOG() << Q_FUNC_INFO << ": Topic NOT already locked";
DEBUG_LOG(m_logger) << LOGFUNCTION << ": Topic NOT already locked";
Q_ASSERT(reply.id() > 0);
m_locked = true;
m_lockEntityId = reply.id();
m_lockEntityId = reply.id(); // only set id if *new lock* was created
}
}
catch (const std::runtime_error &err)
{
ERROR_LOG() << Q_FUNC_INFO << ": Failed to lock topic! " << err.what();
ERROR_LOG(m_logger) << LOGFUNCTION << ": Failed to lock topic! " << err.what();
Q_ASSERT(false);
return false;
}
@@ -107,24 +107,24 @@ bool TopicLockHandler::lock()
bool TopicLockHandler::unlock()
{
INFO_LOG() << "UNLOCK " << m_topicInfo.topicName() << " - " << m_lockEntityId;
TRACE_LOG() << Q_FUNC_INFO << objStateAsString();
INFO_LOG(m_logger) << "UNLOCK " << m_topicInfo.topicName() << " - " << m_lockEntityId;
TRACE_LOG(m_logger) << LOGFUNCTION << objStateAsString();
if (m_coreFtc == nullptr)
return false;
if (!m_locked)
{
ERROR_LOG() << Q_FUNC_INFO << ": Tried to unlock while unlocked.. " << objStateAsString();
ERROR_LOG(m_logger) << LOGFUNCTION << ": Tried to unlock while unlocked.. " << objStateAsString();
Q_ASSERT(false);
return false;
}
Q_ASSERT(m_lockEntityId > 0);
Q_ASSERT(m_lockEntityId > 0); // if unlocking, we need an existing lock id!
const Core::TryUnlockEntityRequest req(m_lockEntityId);
// always set locked to false and remove id - so that a new call to lock is possible
m_locked = false;
m_lockEntityId = 0;
@@ -132,22 +132,22 @@ bool TopicLockHandler::unlock()
{
const auto reply(m_coreFtc->tryUnlockEntityRequest(req));
TRACE_LOG() << Q_FUNC_INFO << ": Reply received - state=" << objStateAsString()
TRACE_LOG(m_logger) << LOGFUNCTION << ": Reply received - state=" << objStateAsString()
<< " - reply=" << reply;
DEBUG_LOG() << Q_FUNC_INFO << ": Topic unlocked!";
DEBUG_LOG(m_logger) << LOGFUNCTION << ": Topic unlocked!";
}
catch (const std::runtime_error &err)
{
ERROR_LOG() << Q_FUNC_INFO << ": Failed to unlock topic! " << err.what();
ERROR_LOG(m_logger) << LOGFUNCTION << ": Failed to unlock topic! " << err.what();
return false;
}
emit signalUnlockDialog();
// success
emit signalUnlockDialog(); // -> READ_WRITE
// TODO: emit signalUnlockDialog(); // unlock the dialog (initial state /*is*/ SHOULD be locked)
return true;
}
@@ -168,45 +168,45 @@ std::string TopicLockHandler::objStateAsString() const
bool TopicLockHandler::slotUnlock()
{
TRACE_LOG() << Q_FUNC_INFO << " slotUnlock" << objStateAsString();
TRACE_LOG(m_logger) << LOGFUNCTION << " slotUnlock" << objStateAsString();
return unlock();
}
void TopicLockHandler::slotTryLock(const LtsWidgets::TopicInfo &topicInfo)
{
TRACE_LOG() << Q_FUNC_INFO << " START " << objStateAsString();
TRACE_LOG(m_logger) << LOGFUNCTION << " START " << objStateAsString();
m_topicInfo = topicInfo;
if (m_topicInfo.topicName().isEmpty() || !topicInfo.isValid())
{
DEBUG_LOG() << Q_FUNC_INFO << " no lockable topic, that's okay";
DEBUG_LOG(m_logger) << LOGFUNCTION << " no lockable topic, that's okay";
return;
}
lock();
TRACE_LOG() << Q_FUNC_INFO << " END " << objStateAsString();
TRACE_LOG(m_logger) << LOGFUNCTION << " END " << objStateAsString();
}
void TopicLockHandler::slotFinalize()
{
TRACE_LOG() << Q_FUNC_INFO << " START " << objStateAsString();
TRACE_LOG(m_logger) << LOGFUNCTION << " START " << objStateAsString();
if (m_locked)
{
slotUnlock();
slotUnlock(); // only unlock if locked
}
deleteLater();
TRACE_LOG() << Q_FUNC_INFO << " END " << objStateAsString();
TRACE_LOG(m_logger) << LOGFUNCTION << " END " << objStateAsString();
}
//******************************************************************************
// class TopicLockHanderData, used at TacticalOrganisation, OrgChart
//******************************************************************************
TopicLockHanderData::TopicLockHanderData()
: QObject()
{
@@ -225,7 +225,7 @@ void TopicLockHanderData::init(const std::shared_ptr<Core::Interface::Ftc> &core
TopicLockHanderData::~TopicLockHanderData()
{
// ensure cleanup: (must be delayed to process unlock) reply
if (m_topicLockHandler)
m_topicLockHandler->slotFinalize();
}
@@ -270,7 +270,7 @@ void TopicLockHanderData::slotTryLock(const LtsWidgets::TopicInfo &topicInfo)
void TopicLockHanderData::slotLock(const QString &lockedBy)
{
// TopicLockHanderData *sender = qobject_cast<QTcpServer *>(sender());
qDebug() << "Debugname=" << m_debugName << ": "
<< "slotLock";
@@ -287,4 +287,4 @@ void TopicLockHanderData::slotUnlock()
}
}
} // namespace LtsSession