#pragma once // STUB-HEADER: Diese Datei wird normalerweise von DDS generiert // Für die Migration erstellen wir minimale Typ-Definitionen #include #include namespace ParticipantManagement { // Forward declarations struct Participant; struct Party; struct ParticipantPosition; struct DynamicParticipantData; struct MainSchedule; // DataModification Enum - gibt Art der Datenänderung an enum class DataModification : int { eAdded = 0, eModified = 1, eRemoved = 2 }; // Participant - Basisdaten eines Teilnehmers struct Participant { int id = 0; QString internalName; QString externalName; int partyId = 0; bool isVerbund = false; // Additional fields as needed double x = 0.0; double y = 0.0; double z = 0.0; double heading = 0.0; }; // Party - Gruppe/Organisation von Teilnehmern struct Party { int id = 0; QString name; QString shortName; }; // ParticipantPosition - Position eines Teilnehmers struct ParticipantPosition { int participantId = 0; double x = 0.0; double y = 0.0; double z = 0.0; double heading = 0.0; double speed = 0.0; qint64 timestamp = 0; }; // DynamicParticipantData - Dynamische Teilnehmerdaten struct DynamicParticipantData { int participantId = 0; QString status; QString role; qint64 lastUpdate = 0; }; // MainSchedule - Stub für DDS-generierten Typ struct MainSchedule { int32_t id = 0; QString name; QString description; qint64 startTime = 0; qint64 endTime = 0; bool isActive = false; }; // Dtc - Data Transfer Component für Participant Management // DDS-generierte Klasse mit participantChanged Signal class Dtc { public: Dtc() = default; virtual ~Dtc() = default; // Teilnehmer-Liste abrufen QList participants() const { return m_participants; } // Teilnehmer hinzufügen/entfernen/ändern void addParticipant(const Participant& p) { m_participants.append(p); emit participantChanged(p, static_cast(DataModification::eAdded)); } void updateParticipant(const Participant& p) { for (auto& existing : m_participants) { if (existing.id == p.id) { existing = p; emit participantChanged(p, static_cast(DataModification::eModified)); return; } } addParticipant(p); } void removeParticipant(int id) { for (auto it = m_participants.begin(); it != m_participants.end(); ++it) { if (it->id == id) { Participant removed = *it; m_participants.erase(it); emit participantChanged(removed, static_cast(DataModification::eRemoved)); return; } } } // Signal für Teilnehmer-Änderungen (Qt6: als normale Methode, wird von Connects verwendet) void emit participantChanged(const Participant& participant, int modificationType); private: QList m_participants; }; } // namespace ParticipantManagement