Files
qt-migration-legatus/qt5-before/dlbo/Lts/Common/LtsSession/lts_session_data.h
T
torstenandCopilot 7173785915 Qt6 Migration: Complete migration with DDS/RTI support and build validation
Major Changes:
- Merged latest Qt5 devel content from dlbo (292 files changed, 7 new dirs)
- Consolidated forward-declarations and include folders
- Removed unneeded modules per Niklas' repo check list

Build System Fixes:
- Fixed CMake VERSION_GREATER syntax in ParticipantManagement/CMakeLists.txt
- Added VLC packages (libvlc-dev, vlc-plugin-base) to docker_build.sh
- Added PostgreSQL dev packages (libpq-dev, postgresql-server-dev-all) to Dockerfile
- Fixed locale warnings (ANSI_X3.4-1968 → C.UTF-8)
- Fixed ArcGIS SDK path warnings when BUILD_ARCGIS=OFF

Code Generation Fixes:
- Fixed IDL enum collisions (PortType→CorePortType/DdsutPortType, PdmEventType)
- Fixed Grantlee template svc_translation.cpp.grantlee:
  - Changed {{ idl_enum.name }}_def:: to {{ idl_enum.name }}::
  - Fixed .underlying() calls for C++11 scoped enums (enum class)
- Removed generated files from repo (moc_*, *_dtc.h, *_ftc.h)

Validation:
- BUILD_RTI=ON: SUCCESS
- BUILD_RTI=OFF: SUCCESS
- C++17 standard maintained for RTI 7.7 compatibility
- Ubuntu 26.04 Docker environment verified

Remaining Warnings (expected):
- BgViewer, KDChart, KDReports, Poppler-Qt6 not found (optional features)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-15 18:20:26 +00:00

135 lines
5.1 KiB
C++

#pragma once
#include <LtsSession/ltssessiondata_export.h>
#include <ProjectConfig/project_defines.h>
#include <LtsAppDescriptor/lts_app_descriptor.h>
#include <QtCore/qglobal.h>
#include <QPixmap>
#include <QObject>
#include <QUrl>
#include <QSet>
#include <QVariant>
#include <QMap>
namespace LtsSessionData
{
struct PartiesByExercise
{
int exerciseId = 0;
QVector<int> visibleParties;
};
class LTSSESSIONDATA_EXPORT LtsSessionData
{
public:
static LtsSessionData *getInstance();
// Presets:
const QString &getOperatorNamePreset() const { return m_operatorNamePreset; }
const QString &getPasswordPreset() const { return m_passwordPreset; }
void setOperatorPreset(const QString &operatorName, const QString &password) { m_operatorNamePreset = operatorName; m_passwordPreset = password; }
int getDomainIdPreset() const { return m_domainIdPreset; }
void setDomainIdPreset(int domainIdPreset) { m_domainIdPreset = domainIdPreset; }
QStringList getQosFile() const {return m_qosFile; }
void setQosFile(const QStringList &qosFile) { m_qosFile = qosFile; }
int getPartitionIdPreset() const { return m_partitionIdPreset; }
IDL::PartitionType getPartitionTypePreset() const { return m_partitionTypePreset; }
void setPartitionPreset(const int partitionId, IDL::PartitionType partitionType) { m_partitionIdPreset = partitionId; m_partitionTypePreset = partitionType; }
/**
* @brief removePresets IMPORTANT: call removePresets after using a Preset, otherwise other apps / sessions will pick these old Presets up..
*/
void removePresets();
// Other:
int getScriptId() const { return m_scriptId; }
void setScriptId(int scriptId) { m_scriptId = scriptId; }
int getOperatorId() const { return m_operatorId; }
void setOperatorId(int operatorId) { m_operatorId = operatorId; }
const QString &getOperatorName() const { return m_operatorName; }
void setOperatorName(const QString &operatorName) { m_operatorName = operatorName; }
const QSet<int> &getOperatorRights() const { return m_operatorRights; }
void setOperatorRights(const QSet<int> &operatorRights) { m_operatorRights = operatorRights; } // Todo: Emit newOperatorRights() if changed?
bool hasOperatorRight(int operatorRight) const;
const QPixmap &getProfilePicture() const { return m_profilePicture; }
void setProfilePicture(const QPixmap &profilePicture) { m_profilePicture = profilePicture; }
bool isVisibleParty(int exerciseId, int partyId) const;
const QVector<PartiesByExercise> &getVisibleParties() const { return m_visibleParties; }
const QVector<int> getVisibleParties(int exerciseId) const;
void setVisibleParties(const QVector<PartiesByExercise> &visibleParties) { m_visibleParties = visibleParties; }
QUrl getTcpConnectionUrl() const { return m_tcpConnectionUrl; }
void setTcpConnectionUrl(const QUrl &tcpConnectionUrl) { m_tcpConnectionUrl = tcpConnectionUrl; }
bool getShowTerminalWindow() const { return m_showTerminalWindow; }
void setShowTerminalWindow(bool showTerminalWindow) { m_showTerminalWindow = showTerminalWindow; }
LtsAppDescriptor::App getRequestedAppId() const { return m_requestedAppId; }
void setRequestedAppId(LtsAppDescriptor::App requestedAppId) { m_requestedAppId = requestedAppId; }
int getWorkstationId() const { return m_workstationId; }
void setWorkstationId(int workstationId) { m_workstationId = workstationId; }
bool isTablet() const { return m_isTablet; }
void setAsTablet(bool isTablet = true);
bool getPlaceScriptScreens() const { return m_placeScriptScreens; }
void setPlaceScriptScreens(bool placeScriptScreens) { m_placeScriptScreens = placeScriptScreens; }
bool hasDebugFlag(const QString &debugFlag) const { return m_debugFlags.constEnd() != m_debugFlags.constFind(debugFlag); }
QVariant debugFlagValue(const QString &debugFlag) const { QVariant result; auto it = m_debugFlags.constFind(debugFlag); if (it != m_debugFlags.constEnd()) result = *it; return result; }
void setDebugFlagValue(const QString &debugFlag, const QVariant &value) { m_debugFlags.insert(debugFlag, value); }
const QMap<QString, QVariant> &debugFlags() const { return m_debugFlags; }
void removeDebugFlag(const QString &debugFlag) { m_debugFlags.remove(debugFlag); }
void clear();
void loggedOut();
private:
LtsSessionData();
~LtsSessionData() = default;
friend struct LtsSessionDataHandler;
// Presets to skip some Payloads
QString m_operatorNamePreset;
QString m_passwordPreset;
QStringList m_qosFile;
QUrl m_tcpConnectionUrl;
int m_domainIdPreset;
int m_partitionIdPreset;
IDL::PartitionType m_partitionTypePreset;
int m_operatorId;
int m_scriptId;
QString m_operatorName;
bool m_showTerminalWindow;
QSet<int> m_operatorRights;
QPixmap m_profilePicture;
QVector<PartiesByExercise> m_visibleParties;
QMap<QString, QVariant> m_debugFlags;
LtsAppDescriptor::App m_requestedAppId;
int m_workstationId;
bool m_isTablet;
bool m_placeScriptScreens;
};
static inline bool hasOperatorRight(int operatorRight)
{
auto instance = LtsSessionData::getInstance();
return instance->hasOperatorRight(operatorRight);
}
} // namespace LtsSessionData