/** * @RDE_HEADER@ * Exportieren von SAAB-Dateien * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "saab_logging.h" #include "zwmssaab_export.h" #include "saab_types.h" #include #include #include #include class QXmlStreamWriter; class QXmlStreamReader; namespace LtsSession { class LtsSession; } class Ui_SAABExport; namespace saab { class ZWMSSAAB_EXPORT ExportSaab : public LtsWidgets::LtsFramelessDialog { Q_OBJECT public: explicit ExportSaab(LtsSession::LtsSession *session, const std::shared_ptr &ppmDtc, const ExerciseManagement::Exercise &exercise, QWidget *parent = nullptr); virtual ~ExportSaab(); public Q_SLOTS: void onStartExport(); void onSelectConfigFile(); void onSelectExportFile(); private: // other struct MappedPartyInfo { QString forceCode; QString echelonCode; QString symbolCode; }; enum GuidContext { GuidExercise = 1, GuidParty = 2, GuidParticipant = 3 }; private: // methods bool isValidConfigFile(); void importConfig(); SaabSymbol readSymbol(QXmlStreamReader *reader) const; SaabEchelon readEchelon(QXmlStreamReader *reader) const; SaabForce readForce(QXmlStreamReader *reader) const; void writeExercise(QXmlStreamWriter *writer) const; void writeOrbat(QXmlStreamWriter *writer); void writeFooter(QXmlStreamWriter *writer) const; SaabPlayer *toSaabPlayer(const ParticipantManagement::Party &party, QMap &remainingParticipants); SaabPlayer *toSaabPlayer(const ParticipantManagement::Participant &participant, QMap &remainingParticipants); ParticipantManagement::Participant rootParticipant(const ParticipantManagement::Participant &participant, const QMap &participants) const; QString toSaabTime(qint64 msecs) const; void mapType(const ParticipantManagement::Type &type); void mapPartyToForce(const ParticipantManagement::Party &party); private: // attributes QMap m_mapPartyToForce; QMap m_mapTypeToSaabSymbol; // QMap m_mapSymbols; QMap m_mapEchelons; QMap m_types; QMap m_parties; QMap m_mapForces; ExerciseManagement::Exercise m_currentExercise; std::shared_ptr m_ppmDtc; LtsSession::LtsSession *m_session; QFile *m_configFile; Ui_SAABExport *m_ui; saab::LOGGER_T m_logger; }; }