Files
qt5-legatus-legacy/Lts/Common/LtsSession/lts_session_data.h
T
2026-08-13 18:33:10 +02:00

135 lines
5.1 KiB
C++
Executable File

#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