#pragma once // STUB-HEADER: Diese Datei wird normalerweise von ddsdtc generiert // Für die Migration erstellen wir minimale Typ-Definitionen #include "gna_nasat_aircraft.h" #include "gna_nasat_aircraft_participant.h" #include "../ParticipantManagement/ppm_enums.hpp" #include "../ParticipantManagement/ppm.hpp" #include #include #include #include #include // Forward declarations namespace ExerciseManagement { namespace Interface { class Dtc; } } namespace ParticipantManagement { namespace Interface { class Dtc; class ForeignGuiComboboxInterface; } } namespace LtsSession { class LtsSession; } namespace GuezNasat { // NasatAircraftParticipant - Verbindung zwischen NASAT, Exercise und Participant struct NasatAircraftParticipant { int id = 0; int nasatAircraftId = 0; int exerciseId = 0; int participantId = 0; // Helper methods für Kompatibilität int participantId() const { return participantId; } }; // NasatAircraft - NASAT Flugzeug struct NasatAircraft { int id = 0; QString name; }; namespace Interface { // Dtc - Data Transfer Component für GuezNasat class Dtc : public QObject { Q_OBJECT public: Dtc() = default; ~Dtc() override = default; // NasatAircraftParticipant-Liste abrufen (Callback-basiert) void nasatAircraftParticipants(const std::function& callback) const { for (const auto& nap : m_nasatAircraftParticipants) { callback(nap); } } // NasatAircraftParticipant-Liste als QMap (für Model) QMap nasatAircraftParticipants() const { QMap result; for (const auto& nap : m_nasatAircraftParticipants) { result[nap.id] = nap; } return result; } // NasatAircraft-Liste abrufen (Callback-basiert) void nasatAircrafts(const std::function& callback) const { for (const auto& na : m_nasatAircrafts) { callback(na); } } // NasatAircraft-Liste als QMap QMap nasatAircrafts() const { QMap result; for (const auto& na : m_nasatAircrafts) { result[na.id] = na; } return result; } // Daten hinzufügen/entfernen/ändern void addNasatAircraftParticipant(const NasatAircraftParticipant& nap) { m_nasatAircraftParticipants.append(nap); emit nasatAircraftParticipantChanged(nap, DataModification::eAdded); } void updateNasatAircraftParticipant(const NasatAircraftParticipant& nap) { for (auto& existing : m_nasatAircraftParticipants) { if (existing.id == nap.id) { existing = nap; emit nasatAircraftParticipantChanged(nap, DataModification::eModified); return; } } addNasatAircraftParticipant(nap); } void removeNasatAircraftParticipant(int id) { for (auto it = m_nasatAircraftParticipants.begin(); it != m_nasatAircraftParticipants.end(); ++it) { if (it->id == id) { NasatAircraftParticipant removed = *it; m_nasatAircraftParticipants.erase(it); emit nasatAircraftParticipantChanged(removed, DataModification::eRemoved); return; } } } void addNasatAircraft(const NasatAircraft& na) { m_nasatAircrafts.append(na); emit nasatAircraftChanged(na, DataModification::eAdded); } void updateNasatAircraft(const NasatAircraft& na) { for (auto& existing : m_nasatAircrafts) { if (existing.id == na.id) { existing = na; emit nasatAircraftChanged(na, DataModification::eModified); return; } } addNasatAircraft(na); } void removeNasatAircraft(int id) { for (auto it = m_nasatAircrafts.begin(); it != m_nasatAircrafts.end(); ++it) { if (it->id == id) { NasatAircraft removed = *it; m_nasatAircrafts.erase(it); emit nasatAircraftChanged(removed, DataModification::eRemoved); return; } } } signals: void nasatAircraftParticipantChanged(const NasatAircraftParticipant& participant, ParticipantManagement::DataModification modificationType); void nasatAircraftChanged(const NasatAircraft& aircraft, ParticipantManagement::DataModification modificationType); private: QList m_nasatAircraftParticipants; QList m_nasatAircrafts; }; } // namespace Interface } // namespace GuezNasat